Remove all_type_unit_groups, unused.
[platform/upstream/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2014 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "bfd.h"
33 #include "elf-bfd.h"
34 #include "symtab.h"
35 #include "gdbtypes.h"
36 #include "objfiles.h"
37 #include "dwarf2.h"
38 #include "buildsym.h"
39 #include "demangle.h"
40 #include "gdb-demangle.h"
41 #include "expression.h"
42 #include "filenames.h"  /* for DOSish file names */
43 #include "macrotab.h"
44 #include "language.h"
45 #include "complaints.h"
46 #include "bcache.h"
47 #include "dwarf2expr.h"
48 #include "dwarf2loc.h"
49 #include "cp-support.h"
50 #include "hashtab.h"
51 #include "command.h"
52 #include "gdbcmd.h"
53 #include "block.h"
54 #include "addrmap.h"
55 #include "typeprint.h"
56 #include "jv-lang.h"
57 #include "psympriv.h"
58 #include "exceptions.h"
59 #include <sys/stat.h>
60 #include "completer.h"
61 #include "vec.h"
62 #include "c-lang.h"
63 #include "go-lang.h"
64 #include "valprint.h"
65 #include "gdbcore.h" /* for gnutarget */
66 #include "gdb/gdb-index.h"
67 #include <ctype.h>
68 #include "gdb_bfd.h"
69 #include "f-lang.h"
70 #include "source.h"
71 #include "filestuff.h"
72 #include "build-id.h"
73
74 #include <fcntl.h>
75 #include <string.h>
76 #include "gdb_assert.h"
77 #include <sys/types.h>
78
79 typedef struct symbol *symbolp;
80 DEF_VEC_P (symbolp);
81
82 /* When == 1, print basic high level tracing messages.
83    When > 1, be more verbose.
84    This is in contrast to the low level DIE reading of dwarf2_die_debug.  */
85 static unsigned int dwarf2_read_debug = 0;
86
87 /* When non-zero, dump DIEs after they are read in.  */
88 static unsigned int dwarf2_die_debug = 0;
89
90 /* When non-zero, cross-check physname against demangler.  */
91 static int check_physname = 0;
92
93 /* When non-zero, do not reject deprecated .gdb_index sections.  */
94 static int use_deprecated_index_sections = 0;
95
96 static const struct objfile_data *dwarf2_objfile_data_key;
97
98 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
99
100 static int dwarf2_locexpr_index;
101 static int dwarf2_loclist_index;
102 static int dwarf2_locexpr_block_index;
103 static int dwarf2_loclist_block_index;
104
105 /* A descriptor for dwarf sections.
106
107    S.ASECTION, SIZE are typically initialized when the objfile is first
108    scanned.  BUFFER, READIN are filled in later when the section is read.
109    If the section contained compressed data then SIZE is updated to record
110    the uncompressed size of the section.
111
112    DWP file format V2 introduces a wrinkle that is easiest to handle by
113    creating the concept of virtual sections contained within a real section.
114    In DWP V2 the sections of the input DWO files are concatenated together
115    into one section, but section offsets are kept relative to the original
116    input section.
117    If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
118    the real section this "virtual" section is contained in, and BUFFER,SIZE
119    describe the virtual section.  */
120
121 struct dwarf2_section_info
122 {
123   union
124   {
125     /* If this is a real section, the bfd section.  */
126     asection *asection;
127     /* If this is a virtual section, pointer to the containing ("real")
128        section.  */
129     struct dwarf2_section_info *containing_section;
130   } s;
131   /* Pointer to section data, only valid if readin.  */
132   const gdb_byte *buffer;
133   /* The size of the section, real or virtual.  */
134   bfd_size_type size;
135   /* If this is a virtual section, the offset in the real section.
136      Only valid if is_virtual.  */
137   bfd_size_type virtual_offset;
138   /* True if we have tried to read this section.  */
139   char readin;
140   /* True if this is a virtual section, False otherwise.
141      This specifies which of s.asection and s.containing_section to use.  */
142   char is_virtual;
143 };
144
145 typedef struct dwarf2_section_info dwarf2_section_info_def;
146 DEF_VEC_O (dwarf2_section_info_def);
147
148 /* All offsets in the index are of this type.  It must be
149    architecture-independent.  */
150 typedef uint32_t offset_type;
151
152 DEF_VEC_I (offset_type);
153
154 /* Ensure only legit values are used.  */
155 #define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
156   do { \
157     gdb_assert ((unsigned int) (value) <= 1); \
158     GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
159   } while (0)
160
161 /* Ensure only legit values are used.  */
162 #define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
163   do { \
164     gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
165                 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
166     GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
167   } while (0)
168
169 /* Ensure we don't use more than the alloted nuber of bits for the CU.  */
170 #define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
171   do { \
172     gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
173     GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
174   } while (0)
175
176 /* A description of the mapped index.  The file format is described in
177    a comment by the code that writes the index.  */
178 struct mapped_index
179 {
180   /* Index data format version.  */
181   int version;
182
183   /* The total length of the buffer.  */
184   off_t total_size;
185
186   /* A pointer to the address table data.  */
187   const gdb_byte *address_table;
188
189   /* Size of the address table data in bytes.  */
190   offset_type address_table_size;
191
192   /* The symbol table, implemented as a hash table.  */
193   const offset_type *symbol_table;
194
195   /* Size in slots, each slot is 2 offset_types.  */
196   offset_type symbol_table_slots;
197
198   /* A pointer to the constant pool.  */
199   const char *constant_pool;
200 };
201
202 typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
203 DEF_VEC_P (dwarf2_per_cu_ptr);
204
205 /* Collection of data recorded per objfile.
206    This hangs off of dwarf2_objfile_data_key.  */
207
208 struct dwarf2_per_objfile
209 {
210   struct dwarf2_section_info info;
211   struct dwarf2_section_info abbrev;
212   struct dwarf2_section_info line;
213   struct dwarf2_section_info loc;
214   struct dwarf2_section_info macinfo;
215   struct dwarf2_section_info macro;
216   struct dwarf2_section_info str;
217   struct dwarf2_section_info ranges;
218   struct dwarf2_section_info addr;
219   struct dwarf2_section_info frame;
220   struct dwarf2_section_info eh_frame;
221   struct dwarf2_section_info gdb_index;
222
223   VEC (dwarf2_section_info_def) *types;
224
225   /* Back link.  */
226   struct objfile *objfile;
227
228   /* Table of all the compilation units.  This is used to locate
229      the target compilation unit of a particular reference.  */
230   struct dwarf2_per_cu_data **all_comp_units;
231
232   /* The number of compilation units in ALL_COMP_UNITS.  */
233   int n_comp_units;
234
235   /* The number of .debug_types-related CUs.  */
236   int n_type_units;
237
238   /* The .debug_types-related CUs (TUs).
239      This is stored in malloc space because we may realloc it.  */
240   struct signatured_type **all_type_units;
241
242   /* Table of struct type_unit_group objects.
243      The hash key is the DW_AT_stmt_list value.  */
244   htab_t type_unit_groups;
245
246   /* A table mapping .debug_types signatures to its signatured_type entry.
247      This is NULL if the .debug_types section hasn't been read in yet.  */
248   htab_t signatured_types;
249
250   /* Type unit statistics, to see how well the scaling improvements
251      are doing.  */
252   struct tu_stats
253   {
254     int nr_uniq_abbrev_tables;
255     int nr_symtabs;
256     int nr_symtab_sharers;
257     int nr_stmt_less_type_units;
258   } tu_stats;
259
260   /* A chain of compilation units that are currently read in, so that
261      they can be freed later.  */
262   struct dwarf2_per_cu_data *read_in_chain;
263
264   /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
265      This is NULL if the table hasn't been allocated yet.  */
266   htab_t dwo_files;
267
268   /* Non-zero if we've check for whether there is a DWP file.  */
269   int dwp_checked;
270
271   /* The DWP file if there is one, or NULL.  */
272   struct dwp_file *dwp_file;
273
274   /* The shared '.dwz' file, if one exists.  This is used when the
275      original data was compressed using 'dwz -m'.  */
276   struct dwz_file *dwz_file;
277
278   /* A flag indicating wether this objfile has a section loaded at a
279      VMA of 0.  */
280   int has_section_at_zero;
281
282   /* True if we are using the mapped index,
283      or we are faking it for OBJF_READNOW's sake.  */
284   unsigned char using_index;
285
286   /* The mapped index, or NULL if .gdb_index is missing or not being used.  */
287   struct mapped_index *index_table;
288
289   /* When using index_table, this keeps track of all quick_file_names entries.
290      TUs typically share line table entries with a CU, so we maintain a
291      separate table of all line table entries to support the sharing.
292      Note that while there can be way more TUs than CUs, we've already
293      sorted all the TUs into "type unit groups", grouped by their
294      DW_AT_stmt_list value.  Therefore the only sharing done here is with a
295      CU and its associated TU group if there is one.  */
296   htab_t quick_file_names_table;
297
298   /* Set during partial symbol reading, to prevent queueing of full
299      symbols.  */
300   int reading_partial_symbols;
301
302   /* Table mapping type DIEs to their struct type *.
303      This is NULL if not allocated yet.
304      The mapping is done via (CU/TU + DIE offset) -> type.  */
305   htab_t die_type_hash;
306
307   /* The CUs we recently read.  */
308   VEC (dwarf2_per_cu_ptr) *just_read_cus;
309 };
310
311 static struct dwarf2_per_objfile *dwarf2_per_objfile;
312
313 /* Default names of the debugging sections.  */
314
315 /* Note that if the debugging section has been compressed, it might
316    have a name like .zdebug_info.  */
317
318 static const struct dwarf2_debug_sections dwarf2_elf_names =
319 {
320   { ".debug_info", ".zdebug_info" },
321   { ".debug_abbrev", ".zdebug_abbrev" },
322   { ".debug_line", ".zdebug_line" },
323   { ".debug_loc", ".zdebug_loc" },
324   { ".debug_macinfo", ".zdebug_macinfo" },
325   { ".debug_macro", ".zdebug_macro" },
326   { ".debug_str", ".zdebug_str" },
327   { ".debug_ranges", ".zdebug_ranges" },
328   { ".debug_types", ".zdebug_types" },
329   { ".debug_addr", ".zdebug_addr" },
330   { ".debug_frame", ".zdebug_frame" },
331   { ".eh_frame", NULL },
332   { ".gdb_index", ".zgdb_index" },
333   23
334 };
335
336 /* List of DWO/DWP sections.  */
337
338 static const struct dwop_section_names
339 {
340   struct dwarf2_section_names abbrev_dwo;
341   struct dwarf2_section_names info_dwo;
342   struct dwarf2_section_names line_dwo;
343   struct dwarf2_section_names loc_dwo;
344   struct dwarf2_section_names macinfo_dwo;
345   struct dwarf2_section_names macro_dwo;
346   struct dwarf2_section_names str_dwo;
347   struct dwarf2_section_names str_offsets_dwo;
348   struct dwarf2_section_names types_dwo;
349   struct dwarf2_section_names cu_index;
350   struct dwarf2_section_names tu_index;
351 }
352 dwop_section_names =
353 {
354   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
355   { ".debug_info.dwo", ".zdebug_info.dwo" },
356   { ".debug_line.dwo", ".zdebug_line.dwo" },
357   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
358   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
359   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
360   { ".debug_str.dwo", ".zdebug_str.dwo" },
361   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
362   { ".debug_types.dwo", ".zdebug_types.dwo" },
363   { ".debug_cu_index", ".zdebug_cu_index" },
364   { ".debug_tu_index", ".zdebug_tu_index" },
365 };
366
367 /* local data types */
368
369 /* The data in a compilation unit header, after target2host
370    translation, looks like this.  */
371 struct comp_unit_head
372 {
373   unsigned int length;
374   short version;
375   unsigned char addr_size;
376   unsigned char signed_addr_p;
377   sect_offset abbrev_offset;
378
379   /* Size of file offsets; either 4 or 8.  */
380   unsigned int offset_size;
381
382   /* Size of the length field; either 4 or 12.  */
383   unsigned int initial_length_size;
384
385   /* Offset to the first byte of this compilation unit header in the
386      .debug_info section, for resolving relative reference dies.  */
387   sect_offset offset;
388
389   /* Offset to first die in this cu from the start of the cu.
390      This will be the first byte following the compilation unit header.  */
391   cu_offset first_die_offset;
392 };
393
394 /* Type used for delaying computation of method physnames.
395    See comments for compute_delayed_physnames.  */
396 struct delayed_method_info
397 {
398   /* The type to which the method is attached, i.e., its parent class.  */
399   struct type *type;
400
401   /* The index of the method in the type's function fieldlists.  */
402   int fnfield_index;
403
404   /* The index of the method in the fieldlist.  */
405   int index;
406
407   /* The name of the DIE.  */
408   const char *name;
409
410   /*  The DIE associated with this method.  */
411   struct die_info *die;
412 };
413
414 typedef struct delayed_method_info delayed_method_info;
415 DEF_VEC_O (delayed_method_info);
416
417 /* Internal state when decoding a particular compilation unit.  */
418 struct dwarf2_cu
419 {
420   /* The objfile containing this compilation unit.  */
421   struct objfile *objfile;
422
423   /* The header of the compilation unit.  */
424   struct comp_unit_head header;
425
426   /* Base address of this compilation unit.  */
427   CORE_ADDR base_address;
428
429   /* Non-zero if base_address has been set.  */
430   int base_known;
431
432   /* The language we are debugging.  */
433   enum language language;
434   const struct language_defn *language_defn;
435
436   const char *producer;
437
438   /* The generic symbol table building routines have separate lists for
439      file scope symbols and all all other scopes (local scopes).  So
440      we need to select the right one to pass to add_symbol_to_list().
441      We do it by keeping a pointer to the correct list in list_in_scope.
442
443      FIXME: The original dwarf code just treated the file scope as the
444      first local scope, and all other local scopes as nested local
445      scopes, and worked fine.  Check to see if we really need to
446      distinguish these in buildsym.c.  */
447   struct pending **list_in_scope;
448
449   /* The abbrev table for this CU.
450      Normally this points to the abbrev table in the objfile.
451      But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file.  */
452   struct abbrev_table *abbrev_table;
453
454   /* Hash table holding all the loaded partial DIEs
455      with partial_die->offset.SECT_OFF as hash.  */
456   htab_t partial_dies;
457
458   /* Storage for things with the same lifetime as this read-in compilation
459      unit, including partial DIEs.  */
460   struct obstack comp_unit_obstack;
461
462   /* When multiple dwarf2_cu structures are living in memory, this field
463      chains them all together, so that they can be released efficiently.
464      We will probably also want a generation counter so that most-recently-used
465      compilation units are cached...  */
466   struct dwarf2_per_cu_data *read_in_chain;
467
468   /* Backlink to our per_cu entry.  */
469   struct dwarf2_per_cu_data *per_cu;
470
471   /* How many compilation units ago was this CU last referenced?  */
472   int last_used;
473
474   /* A hash table of DIE cu_offset for following references with
475      die_info->offset.sect_off as hash.  */
476   htab_t die_hash;
477
478   /* Full DIEs if read in.  */
479   struct die_info *dies;
480
481   /* A set of pointers to dwarf2_per_cu_data objects for compilation
482      units referenced by this one.  Only set during full symbol processing;
483      partial symbol tables do not have dependencies.  */
484   htab_t dependencies;
485
486   /* Header data from the line table, during full symbol processing.  */
487   struct line_header *line_header;
488
489   /* A list of methods which need to have physnames computed
490      after all type information has been read.  */
491   VEC (delayed_method_info) *method_list;
492
493   /* To be copied to symtab->call_site_htab.  */
494   htab_t call_site_htab;
495
496   /* Non-NULL if this CU came from a DWO file.
497      There is an invariant here that is important to remember:
498      Except for attributes copied from the top level DIE in the "main"
499      (or "stub") file in preparation for reading the DWO file
500      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
501      Either there isn't a DWO file (in which case this is NULL and the point
502      is moot), or there is and either we're not going to read it (in which
503      case this is NULL) or there is and we are reading it (in which case this
504      is non-NULL).  */
505   struct dwo_unit *dwo_unit;
506
507   /* The DW_AT_addr_base attribute if present, zero otherwise
508      (zero is a valid value though).
509      Note this value comes from the Fission stub CU/TU's DIE.  */
510   ULONGEST addr_base;
511
512   /* The DW_AT_ranges_base attribute if present, zero otherwise
513      (zero is a valid value though).
514      Note this value comes from the Fission stub CU/TU's DIE.
515      Also note that the value is zero in the non-DWO case so this value can
516      be used without needing to know whether DWO files are in use or not.
517      N.B. This does not apply to DW_AT_ranges appearing in
518      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
519      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
520      DW_AT_ranges_base *would* have to be applied, and we'd have to care
521      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
522   ULONGEST ranges_base;
523
524   /* Mark used when releasing cached dies.  */
525   unsigned int mark : 1;
526
527   /* This CU references .debug_loc.  See the symtab->locations_valid field.
528      This test is imperfect as there may exist optimized debug code not using
529      any location list and still facing inlining issues if handled as
530      unoptimized code.  For a future better test see GCC PR other/32998.  */
531   unsigned int has_loclist : 1;
532
533   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
534      if all the producer_is_* fields are valid.  This information is cached
535      because profiling CU expansion showed excessive time spent in
536      producer_is_gxx_lt_4_6.  */
537   unsigned int checked_producer : 1;
538   unsigned int producer_is_gxx_lt_4_6 : 1;
539   unsigned int producer_is_gcc_lt_4_3 : 1;
540   unsigned int producer_is_icc : 1;
541
542   /* When set, the file that we're processing is known to have
543      debugging info for C++ namespaces.  GCC 3.3.x did not produce
544      this information, but later versions do.  */
545
546   unsigned int processing_has_namespace_info : 1;
547 };
548
549 /* Persistent data held for a compilation unit, even when not
550    processing it.  We put a pointer to this structure in the
551    read_symtab_private field of the psymtab.  */
552
553 struct dwarf2_per_cu_data
554 {
555   /* The start offset and length of this compilation unit.
556      NOTE: Unlike comp_unit_head.length, this length includes
557      initial_length_size.
558      If the DIE refers to a DWO file, this is always of the original die,
559      not the DWO file.  */
560   sect_offset offset;
561   unsigned int length;
562
563   /* Flag indicating this compilation unit will be read in before
564      any of the current compilation units are processed.  */
565   unsigned int queued : 1;
566
567   /* This flag will be set when reading partial DIEs if we need to load
568      absolutely all DIEs for this compilation unit, instead of just the ones
569      we think are interesting.  It gets set if we look for a DIE in the
570      hash table and don't find it.  */
571   unsigned int load_all_dies : 1;
572
573   /* Non-zero if this CU is from .debug_types.
574      Struct dwarf2_per_cu_data is contained in struct signatured_type iff
575      this is non-zero.  */
576   unsigned int is_debug_types : 1;
577
578   /* Non-zero if this CU is from the .dwz file.  */
579   unsigned int is_dwz : 1;
580
581   /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
582      This flag is only valid if is_debug_types is true.
583      We can't read a CU directly from a DWO file: There are required
584      attributes in the stub.  */
585   unsigned int reading_dwo_directly : 1;
586
587   /* Non-zero if the TU has been read.
588      This is used to assist the "Stay in DWO Optimization" for Fission:
589      When reading a DWO, it's faster to read TUs from the DWO instead of
590      fetching them from random other DWOs (due to comdat folding).
591      If the TU has already been read, the optimization is unnecessary
592      (and unwise - we don't want to change where gdb thinks the TU lives
593      "midflight").
594      This flag is only valid if is_debug_types is true.  */
595   unsigned int tu_read : 1;
596
597   /* The section this CU/TU lives in.
598      If the DIE refers to a DWO file, this is always the original die,
599      not the DWO file.  */
600   struct dwarf2_section_info *section;
601
602   /* Set to non-NULL iff this CU is currently loaded.  When it gets freed out
603      of the CU cache it gets reset to NULL again.  */
604   struct dwarf2_cu *cu;
605
606   /* The corresponding objfile.
607      Normally we can get the objfile from dwarf2_per_objfile.
608      However we can enter this file with just a "per_cu" handle.  */
609   struct objfile *objfile;
610
611   /* When using partial symbol tables, the 'psymtab' field is active.
612      Otherwise the 'quick' field is active.  */
613   union
614   {
615     /* The partial symbol table associated with this compilation unit,
616        or NULL for unread partial units.  */
617     struct partial_symtab *psymtab;
618
619     /* Data needed by the "quick" functions.  */
620     struct dwarf2_per_cu_quick_data *quick;
621   } v;
622
623   /* The CUs we import using DW_TAG_imported_unit.  This is filled in
624      while reading psymtabs, used to compute the psymtab dependencies,
625      and then cleared.  Then it is filled in again while reading full
626      symbols, and only deleted when the objfile is destroyed.
627
628      This is also used to work around a difference between the way gold
629      generates .gdb_index version <=7 and the way gdb does.  Arguably this
630      is a gold bug.  For symbols coming from TUs, gold records in the index
631      the CU that includes the TU instead of the TU itself.  This breaks
632      dw2_lookup_symbol: It assumes that if the index says symbol X lives
633      in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
634      will find X.  Alas TUs live in their own symtab, so after expanding CU Y
635      we need to look in TU Z to find X.  Fortunately, this is akin to
636      DW_TAG_imported_unit, so we just use the same mechanism: For
637      .gdb_index version <=7 this also records the TUs that the CU referred
638      to.  Concurrently with this change gdb was modified to emit version 8
639      indices so we only pay a price for gold generated indices.
640      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
641   VEC (dwarf2_per_cu_ptr) *imported_symtabs;
642 };
643
644 /* Entry in the signatured_types hash table.  */
645
646 struct signatured_type
647 {
648   /* The "per_cu" object of this type.
649      This struct is used iff per_cu.is_debug_types.
650      N.B.: This is the first member so that it's easy to convert pointers
651      between them.  */
652   struct dwarf2_per_cu_data per_cu;
653
654   /* The type's signature.  */
655   ULONGEST signature;
656
657   /* Offset in the TU of the type's DIE, as read from the TU header.
658      If this TU is a DWO stub and the definition lives in a DWO file
659      (specified by DW_AT_GNU_dwo_name), this value is unusable.  */
660   cu_offset type_offset_in_tu;
661
662   /* Offset in the section of the type's DIE.
663      If the definition lives in a DWO file, this is the offset in the
664      .debug_types.dwo section.
665      The value is zero until the actual value is known.
666      Zero is otherwise not a valid section offset.  */
667   sect_offset type_offset_in_section;
668
669   /* Type units are grouped by their DW_AT_stmt_list entry so that they
670      can share them.  This points to the containing symtab.  */
671   struct type_unit_group *type_unit_group;
672
673   /* The type.
674      The first time we encounter this type we fully read it in and install it
675      in the symbol tables.  Subsequent times we only need the type.  */
676   struct type *type;
677
678   /* Containing DWO unit.
679      This field is valid iff per_cu.reading_dwo_directly.  */
680   struct dwo_unit *dwo_unit;
681 };
682
683 typedef struct signatured_type *sig_type_ptr;
684 DEF_VEC_P (sig_type_ptr);
685
686 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
687    This includes type_unit_group and quick_file_names.  */
688
689 struct stmt_list_hash
690 {
691   /* The DWO unit this table is from or NULL if there is none.  */
692   struct dwo_unit *dwo_unit;
693
694   /* Offset in .debug_line or .debug_line.dwo.  */
695   sect_offset line_offset;
696 };
697
698 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
699    an object of this type.  */
700
701 struct type_unit_group
702 {
703   /* dwarf2read.c's main "handle" on a TU symtab.
704      To simplify things we create an artificial CU that "includes" all the
705      type units using this stmt_list so that the rest of the code still has
706      a "per_cu" handle on the symtab.
707      This PER_CU is recognized by having no section.  */
708 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
709   struct dwarf2_per_cu_data per_cu;
710
711   /* The TUs that share this DW_AT_stmt_list entry.
712      This is added to while parsing type units to build partial symtabs,
713      and is deleted afterwards and not used again.  */
714   VEC (sig_type_ptr) *tus;
715
716   /* The primary symtab.
717      Type units in a group needn't all be defined in the same source file,
718      so we create an essentially anonymous symtab as the primary symtab.  */
719   struct symtab *primary_symtab;
720
721   /* The data used to construct the hash key.  */
722   struct stmt_list_hash hash;
723
724   /* The number of symtabs from the line header.
725      The value here must match line_header.num_file_names.  */
726   unsigned int num_symtabs;
727
728   /* The symbol tables for this TU (obtained from the files listed in
729      DW_AT_stmt_list).
730      WARNING: The order of entries here must match the order of entries
731      in the line header.  After the first TU using this type_unit_group, the
732      line header for the subsequent TUs is recreated from this.  This is done
733      because we need to use the same symtabs for each TU using the same
734      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
735      there's no guarantee the line header doesn't have duplicate entries.  */
736   struct symtab **symtabs;
737 };
738
739 /* These sections are what may appear in a (real or virtual) DWO file.  */
740
741 struct dwo_sections
742 {
743   struct dwarf2_section_info abbrev;
744   struct dwarf2_section_info line;
745   struct dwarf2_section_info loc;
746   struct dwarf2_section_info macinfo;
747   struct dwarf2_section_info macro;
748   struct dwarf2_section_info str;
749   struct dwarf2_section_info str_offsets;
750   /* In the case of a virtual DWO file, these two are unused.  */
751   struct dwarf2_section_info info;
752   VEC (dwarf2_section_info_def) *types;
753 };
754
755 /* CUs/TUs in DWP/DWO files.  */
756
757 struct dwo_unit
758 {
759   /* Backlink to the containing struct dwo_file.  */
760   struct dwo_file *dwo_file;
761
762   /* The "id" that distinguishes this CU/TU.
763      .debug_info calls this "dwo_id", .debug_types calls this "signature".
764      Since signatures came first, we stick with it for consistency.  */
765   ULONGEST signature;
766
767   /* The section this CU/TU lives in, in the DWO file.  */
768   struct dwarf2_section_info *section;
769
770   /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section.  */
771   sect_offset offset;
772   unsigned int length;
773
774   /* For types, offset in the type's DIE of the type defined by this TU.  */
775   cu_offset type_offset_in_tu;
776 };
777
778 /* include/dwarf2.h defines the DWP section codes.
779    It defines a max value but it doesn't define a min value, which we
780    use for error checking, so provide one.  */
781
782 enum dwp_v2_section_ids
783 {
784   DW_SECT_MIN = 1
785 };
786
787 /* Data for one DWO file.
788
789    This includes virtual DWO files (a virtual DWO file is a DWO file as it
790    appears in a DWP file).  DWP files don't really have DWO files per se -
791    comdat folding of types "loses" the DWO file they came from, and from
792    a high level view DWP files appear to contain a mass of random types.
793    However, to maintain consistency with the non-DWP case we pretend DWP
794    files contain virtual DWO files, and we assign each TU with one virtual
795    DWO file (generally based on the line and abbrev section offsets -
796    a heuristic that seems to work in practice).  */
797
798 struct dwo_file
799 {
800   /* The DW_AT_GNU_dwo_name attribute.
801      For virtual DWO files the name is constructed from the section offsets
802      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
803      from related CU+TUs.  */
804   const char *dwo_name;
805
806   /* The DW_AT_comp_dir attribute.  */
807   const char *comp_dir;
808
809   /* The bfd, when the file is open.  Otherwise this is NULL.
810      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
811   bfd *dbfd;
812
813   /* The sections that make up this DWO file.
814      Remember that for virtual DWO files in DWP V2, these are virtual
815      sections (for lack of a better name).  */
816   struct dwo_sections sections;
817
818   /* The CU in the file.
819      We only support one because having more than one requires hacking the
820      dwo_name of each to match, which is highly unlikely to happen.
821      Doing this means all TUs can share comp_dir: We also assume that
822      DW_AT_comp_dir across all TUs in a DWO file will be identical.  */
823   struct dwo_unit *cu;
824
825   /* Table of TUs in the file.
826      Each element is a struct dwo_unit.  */
827   htab_t tus;
828 };
829
830 /* These sections are what may appear in a DWP file.  */
831
832 struct dwp_sections
833 {
834   /* These are used by both DWP version 1 and 2.  */
835   struct dwarf2_section_info str;
836   struct dwarf2_section_info cu_index;
837   struct dwarf2_section_info tu_index;
838
839   /* These are only used by DWP version 2 files.
840      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
841      sections are referenced by section number, and are not recorded here.
842      In DWP version 2 there is at most one copy of all these sections, each
843      section being (effectively) comprised of the concatenation of all of the
844      individual sections that exist in the version 1 format.
845      To keep the code simple we treat each of these concatenated pieces as a
846      section itself (a virtual section?).  */
847   struct dwarf2_section_info abbrev;
848   struct dwarf2_section_info info;
849   struct dwarf2_section_info line;
850   struct dwarf2_section_info loc;
851   struct dwarf2_section_info macinfo;
852   struct dwarf2_section_info macro;
853   struct dwarf2_section_info str_offsets;
854   struct dwarf2_section_info types;
855 };
856
857 /* These sections are what may appear in a virtual DWO file in DWP version 1.
858    A virtual DWO file is a DWO file as it appears in a DWP file.  */
859
860 struct virtual_v1_dwo_sections
861 {
862   struct dwarf2_section_info abbrev;
863   struct dwarf2_section_info line;
864   struct dwarf2_section_info loc;
865   struct dwarf2_section_info macinfo;
866   struct dwarf2_section_info macro;
867   struct dwarf2_section_info str_offsets;
868   /* Each DWP hash table entry records one CU or one TU.
869      That is recorded here, and copied to dwo_unit.section.  */
870   struct dwarf2_section_info info_or_types;
871 };
872
873 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
874    In version 2, the sections of the DWO files are concatenated together
875    and stored in one section of that name.  Thus each ELF section contains
876    several "virtual" sections.  */
877
878 struct virtual_v2_dwo_sections
879 {
880   bfd_size_type abbrev_offset;
881   bfd_size_type abbrev_size;
882
883   bfd_size_type line_offset;
884   bfd_size_type line_size;
885
886   bfd_size_type loc_offset;
887   bfd_size_type loc_size;
888
889   bfd_size_type macinfo_offset;
890   bfd_size_type macinfo_size;
891
892   bfd_size_type macro_offset;
893   bfd_size_type macro_size;
894
895   bfd_size_type str_offsets_offset;
896   bfd_size_type str_offsets_size;
897
898   /* Each DWP hash table entry records one CU or one TU.
899      That is recorded here, and copied to dwo_unit.section.  */
900   bfd_size_type info_or_types_offset;
901   bfd_size_type info_or_types_size;
902 };
903
904 /* Contents of DWP hash tables.  */
905
906 struct dwp_hash_table
907 {
908   uint32_t version, nr_columns;
909   uint32_t nr_units, nr_slots;
910   const gdb_byte *hash_table, *unit_table;
911   union
912   {
913     struct
914     {
915       const gdb_byte *indices;
916     } v1;
917     struct
918     {
919       /* This is indexed by column number and gives the id of the section
920          in that column.  */
921 #define MAX_NR_V2_DWO_SECTIONS \
922   (1 /* .debug_info or .debug_types */ \
923    + 1 /* .debug_abbrev */ \
924    + 1 /* .debug_line */ \
925    + 1 /* .debug_loc */ \
926    + 1 /* .debug_str_offsets */ \
927    + 1 /* .debug_macro or .debug_macinfo */)
928       int section_ids[MAX_NR_V2_DWO_SECTIONS];
929       const gdb_byte *offsets;
930       const gdb_byte *sizes;
931     } v2;
932   } section_pool;
933 };
934
935 /* Data for one DWP file.  */
936
937 struct dwp_file
938 {
939   /* Name of the file.  */
940   const char *name;
941
942   /* File format version.  */
943   int version;
944
945   /* The bfd.  */
946   bfd *dbfd;
947
948   /* Section info for this file.  */
949   struct dwp_sections sections;
950
951   /* Table of CUs in the file.  */
952   const struct dwp_hash_table *cus;
953
954   /* Table of TUs in the file.  */
955   const struct dwp_hash_table *tus;
956
957   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
958   htab_t loaded_cus;
959   htab_t loaded_tus;
960
961   /* Table to map ELF section numbers to their sections.
962      This is only needed for the DWP V1 file format.  */
963   unsigned int num_sections;
964   asection **elf_sections;
965 };
966
967 /* This represents a '.dwz' file.  */
968
969 struct dwz_file
970 {
971   /* A dwz file can only contain a few sections.  */
972   struct dwarf2_section_info abbrev;
973   struct dwarf2_section_info info;
974   struct dwarf2_section_info str;
975   struct dwarf2_section_info line;
976   struct dwarf2_section_info macro;
977   struct dwarf2_section_info gdb_index;
978
979   /* The dwz's BFD.  */
980   bfd *dwz_bfd;
981 };
982
983 /* Struct used to pass misc. parameters to read_die_and_children, et
984    al.  which are used for both .debug_info and .debug_types dies.
985    All parameters here are unchanging for the life of the call.  This
986    struct exists to abstract away the constant parameters of die reading.  */
987
988 struct die_reader_specs
989 {
990   /* The bfd of die_section.  */
991   bfd* abfd;
992
993   /* The CU of the DIE we are parsing.  */
994   struct dwarf2_cu *cu;
995
996   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
997   struct dwo_file *dwo_file;
998
999   /* The section the die comes from.
1000      This is either .debug_info or .debug_types, or the .dwo variants.  */
1001   struct dwarf2_section_info *die_section;
1002
1003   /* die_section->buffer.  */
1004   const gdb_byte *buffer;
1005
1006   /* The end of the buffer.  */
1007   const gdb_byte *buffer_end;
1008
1009   /* The value of the DW_AT_comp_dir attribute.  */
1010   const char *comp_dir;
1011 };
1012
1013 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
1014 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
1015                                       const gdb_byte *info_ptr,
1016                                       struct die_info *comp_unit_die,
1017                                       int has_children,
1018                                       void *data);
1019
1020 /* The line number information for a compilation unit (found in the
1021    .debug_line section) begins with a "statement program header",
1022    which contains the following information.  */
1023 struct line_header
1024 {
1025   unsigned int total_length;
1026   unsigned short version;
1027   unsigned int header_length;
1028   unsigned char minimum_instruction_length;
1029   unsigned char maximum_ops_per_instruction;
1030   unsigned char default_is_stmt;
1031   int line_base;
1032   unsigned char line_range;
1033   unsigned char opcode_base;
1034
1035   /* standard_opcode_lengths[i] is the number of operands for the
1036      standard opcode whose value is i.  This means that
1037      standard_opcode_lengths[0] is unused, and the last meaningful
1038      element is standard_opcode_lengths[opcode_base - 1].  */
1039   unsigned char *standard_opcode_lengths;
1040
1041   /* The include_directories table.  NOTE!  These strings are not
1042      allocated with xmalloc; instead, they are pointers into
1043      debug_line_buffer.  If you try to free them, `free' will get
1044      indigestion.  */
1045   unsigned int num_include_dirs, include_dirs_size;
1046   const char **include_dirs;
1047
1048   /* The file_names table.  NOTE!  These strings are not allocated
1049      with xmalloc; instead, they are pointers into debug_line_buffer.
1050      Don't try to free them directly.  */
1051   unsigned int num_file_names, file_names_size;
1052   struct file_entry
1053   {
1054     const char *name;
1055     unsigned int dir_index;
1056     unsigned int mod_time;
1057     unsigned int length;
1058     int included_p; /* Non-zero if referenced by the Line Number Program.  */
1059     struct symtab *symtab; /* The associated symbol table, if any.  */
1060   } *file_names;
1061
1062   /* The start and end of the statement program following this
1063      header.  These point into dwarf2_per_objfile->line_buffer.  */
1064   const gdb_byte *statement_program_start, *statement_program_end;
1065 };
1066
1067 /* When we construct a partial symbol table entry we only
1068    need this much information.  */
1069 struct partial_die_info
1070   {
1071     /* Offset of this DIE.  */
1072     sect_offset offset;
1073
1074     /* DWARF-2 tag for this DIE.  */
1075     ENUM_BITFIELD(dwarf_tag) tag : 16;
1076
1077     /* Assorted flags describing the data found in this DIE.  */
1078     unsigned int has_children : 1;
1079     unsigned int is_external : 1;
1080     unsigned int is_declaration : 1;
1081     unsigned int has_type : 1;
1082     unsigned int has_specification : 1;
1083     unsigned int has_pc_info : 1;
1084     unsigned int may_be_inlined : 1;
1085
1086     /* Flag set if the SCOPE field of this structure has been
1087        computed.  */
1088     unsigned int scope_set : 1;
1089
1090     /* Flag set if the DIE has a byte_size attribute.  */
1091     unsigned int has_byte_size : 1;
1092
1093     /* Flag set if any of the DIE's children are template arguments.  */
1094     unsigned int has_template_arguments : 1;
1095
1096     /* Flag set if fixup_partial_die has been called on this die.  */
1097     unsigned int fixup_called : 1;
1098
1099     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1100     unsigned int is_dwz : 1;
1101
1102     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1103     unsigned int spec_is_dwz : 1;
1104
1105     /* The name of this DIE.  Normally the value of DW_AT_name, but
1106        sometimes a default name for unnamed DIEs.  */
1107     const char *name;
1108
1109     /* The linkage name, if present.  */
1110     const char *linkage_name;
1111
1112     /* The scope to prepend to our children.  This is generally
1113        allocated on the comp_unit_obstack, so will disappear
1114        when this compilation unit leaves the cache.  */
1115     const char *scope;
1116
1117     /* Some data associated with the partial DIE.  The tag determines
1118        which field is live.  */
1119     union
1120     {
1121       /* The location description associated with this DIE, if any.  */
1122       struct dwarf_block *locdesc;
1123       /* The offset of an import, for DW_TAG_imported_unit.  */
1124       sect_offset offset;
1125     } d;
1126
1127     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1128     CORE_ADDR lowpc;
1129     CORE_ADDR highpc;
1130
1131     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1132        DW_AT_sibling, if any.  */
1133     /* NOTE: This member isn't strictly necessary, read_partial_die could
1134        return DW_AT_sibling values to its caller load_partial_dies.  */
1135     const gdb_byte *sibling;
1136
1137     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1138        DW_AT_specification (or DW_AT_abstract_origin or
1139        DW_AT_extension).  */
1140     sect_offset spec_offset;
1141
1142     /* Pointers to this DIE's parent, first child, and next sibling,
1143        if any.  */
1144     struct partial_die_info *die_parent, *die_child, *die_sibling;
1145   };
1146
1147 /* This data structure holds the information of an abbrev.  */
1148 struct abbrev_info
1149   {
1150     unsigned int number;        /* number identifying abbrev */
1151     enum dwarf_tag tag;         /* dwarf tag */
1152     unsigned short has_children;                /* boolean */
1153     unsigned short num_attrs;   /* number of attributes */
1154     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1155     struct abbrev_info *next;   /* next in chain */
1156   };
1157
1158 struct attr_abbrev
1159   {
1160     ENUM_BITFIELD(dwarf_attribute) name : 16;
1161     ENUM_BITFIELD(dwarf_form) form : 16;
1162   };
1163
1164 /* Size of abbrev_table.abbrev_hash_table.  */
1165 #define ABBREV_HASH_SIZE 121
1166
1167 /* Top level data structure to contain an abbreviation table.  */
1168
1169 struct abbrev_table
1170 {
1171   /* Where the abbrev table came from.
1172      This is used as a sanity check when the table is used.  */
1173   sect_offset offset;
1174
1175   /* Storage for the abbrev table.  */
1176   struct obstack abbrev_obstack;
1177
1178   /* Hash table of abbrevs.
1179      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1180      It could be statically allocated, but the previous code didn't so we
1181      don't either.  */
1182   struct abbrev_info **abbrevs;
1183 };
1184
1185 /* Attributes have a name and a value.  */
1186 struct attribute
1187   {
1188     ENUM_BITFIELD(dwarf_attribute) name : 16;
1189     ENUM_BITFIELD(dwarf_form) form : 15;
1190
1191     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1192        field should be in u.str (existing only for DW_STRING) but it is kept
1193        here for better struct attribute alignment.  */
1194     unsigned int string_is_canonical : 1;
1195
1196     union
1197       {
1198         const char *str;
1199         struct dwarf_block *blk;
1200         ULONGEST unsnd;
1201         LONGEST snd;
1202         CORE_ADDR addr;
1203         ULONGEST signature;
1204       }
1205     u;
1206   };
1207
1208 /* This data structure holds a complete die structure.  */
1209 struct die_info
1210   {
1211     /* DWARF-2 tag for this DIE.  */
1212     ENUM_BITFIELD(dwarf_tag) tag : 16;
1213
1214     /* Number of attributes */
1215     unsigned char num_attrs;
1216
1217     /* True if we're presently building the full type name for the
1218        type derived from this DIE.  */
1219     unsigned char building_fullname : 1;
1220
1221     /* True if this die is in process.  PR 16581.  */
1222     unsigned char in_process : 1;
1223
1224     /* Abbrev number */
1225     unsigned int abbrev;
1226
1227     /* Offset in .debug_info or .debug_types section.  */
1228     sect_offset offset;
1229
1230     /* The dies in a compilation unit form an n-ary tree.  PARENT
1231        points to this die's parent; CHILD points to the first child of
1232        this node; and all the children of a given node are chained
1233        together via their SIBLING fields.  */
1234     struct die_info *child;     /* Its first child, if any.  */
1235     struct die_info *sibling;   /* Its next sibling, if any.  */
1236     struct die_info *parent;    /* Its parent, if any.  */
1237
1238     /* An array of attributes, with NUM_ATTRS elements.  There may be
1239        zero, but it's not common and zero-sized arrays are not
1240        sufficiently portable C.  */
1241     struct attribute attrs[1];
1242   };
1243
1244 /* Get at parts of an attribute structure.  */
1245
1246 #define DW_STRING(attr)    ((attr)->u.str)
1247 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1248 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1249 #define DW_BLOCK(attr)     ((attr)->u.blk)
1250 #define DW_SND(attr)       ((attr)->u.snd)
1251 #define DW_ADDR(attr)      ((attr)->u.addr)
1252 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1253
1254 /* Blocks are a bunch of untyped bytes.  */
1255 struct dwarf_block
1256   {
1257     size_t size;
1258
1259     /* Valid only if SIZE is not zero.  */
1260     const gdb_byte *data;
1261   };
1262
1263 #ifndef ATTR_ALLOC_CHUNK
1264 #define ATTR_ALLOC_CHUNK 4
1265 #endif
1266
1267 /* Allocate fields for structs, unions and enums in this size.  */
1268 #ifndef DW_FIELD_ALLOC_CHUNK
1269 #define DW_FIELD_ALLOC_CHUNK 4
1270 #endif
1271
1272 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1273    but this would require a corresponding change in unpack_field_as_long
1274    and friends.  */
1275 static int bits_per_byte = 8;
1276
1277 /* The routines that read and process dies for a C struct or C++ class
1278    pass lists of data member fields and lists of member function fields
1279    in an instance of a field_info structure, as defined below.  */
1280 struct field_info
1281   {
1282     /* List of data member and baseclasses fields.  */
1283     struct nextfield
1284       {
1285         struct nextfield *next;
1286         int accessibility;
1287         int virtuality;
1288         struct field field;
1289       }
1290      *fields, *baseclasses;
1291
1292     /* Number of fields (including baseclasses).  */
1293     int nfields;
1294
1295     /* Number of baseclasses.  */
1296     int nbaseclasses;
1297
1298     /* Set if the accesibility of one of the fields is not public.  */
1299     int non_public_fields;
1300
1301     /* Member function fields array, entries are allocated in the order they
1302        are encountered in the object file.  */
1303     struct nextfnfield
1304       {
1305         struct nextfnfield *next;
1306         struct fn_field fnfield;
1307       }
1308      *fnfields;
1309
1310     /* Member function fieldlist array, contains name of possibly overloaded
1311        member function, number of overloaded member functions and a pointer
1312        to the head of the member function field chain.  */
1313     struct fnfieldlist
1314       {
1315         const char *name;
1316         int length;
1317         struct nextfnfield *head;
1318       }
1319      *fnfieldlists;
1320
1321     /* Number of entries in the fnfieldlists array.  */
1322     int nfnfields;
1323
1324     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1325        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1326     struct typedef_field_list
1327       {
1328         struct typedef_field field;
1329         struct typedef_field_list *next;
1330       }
1331     *typedef_field_list;
1332     unsigned typedef_field_list_count;
1333   };
1334
1335 /* One item on the queue of compilation units to read in full symbols
1336    for.  */
1337 struct dwarf2_queue_item
1338 {
1339   struct dwarf2_per_cu_data *per_cu;
1340   enum language pretend_language;
1341   struct dwarf2_queue_item *next;
1342 };
1343
1344 /* The current queue.  */
1345 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1346
1347 /* Loaded secondary compilation units are kept in memory until they
1348    have not been referenced for the processing of this many
1349    compilation units.  Set this to zero to disable caching.  Cache
1350    sizes of up to at least twenty will improve startup time for
1351    typical inter-CU-reference binaries, at an obvious memory cost.  */
1352 static int dwarf2_max_cache_age = 5;
1353 static void
1354 show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
1355                            struct cmd_list_element *c, const char *value)
1356 {
1357   fprintf_filtered (file, _("The upper bound on the age of cached "
1358                             "dwarf2 compilation units is %s.\n"),
1359                     value);
1360 }
1361 \f
1362 /* local function prototypes */
1363
1364 static const char *get_section_name (const struct dwarf2_section_info *);
1365
1366 static const char *get_section_file_name (const struct dwarf2_section_info *);
1367
1368 static void dwarf2_locate_sections (bfd *, asection *, void *);
1369
1370 static void dwarf2_find_base_address (struct die_info *die,
1371                                       struct dwarf2_cu *cu);
1372
1373 static struct partial_symtab *create_partial_symtab
1374   (struct dwarf2_per_cu_data *per_cu, const char *name);
1375
1376 static void dwarf2_build_psymtabs_hard (struct objfile *);
1377
1378 static void scan_partial_symbols (struct partial_die_info *,
1379                                   CORE_ADDR *, CORE_ADDR *,
1380                                   int, struct dwarf2_cu *);
1381
1382 static void add_partial_symbol (struct partial_die_info *,
1383                                 struct dwarf2_cu *);
1384
1385 static void add_partial_namespace (struct partial_die_info *pdi,
1386                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1387                                    int need_pc, struct dwarf2_cu *cu);
1388
1389 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1390                                 CORE_ADDR *highpc, int need_pc,
1391                                 struct dwarf2_cu *cu);
1392
1393 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1394                                      struct dwarf2_cu *cu);
1395
1396 static void add_partial_subprogram (struct partial_die_info *pdi,
1397                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1398                                     int need_pc, struct dwarf2_cu *cu);
1399
1400 static void dwarf2_read_symtab (struct partial_symtab *,
1401                                 struct objfile *);
1402
1403 static void psymtab_to_symtab_1 (struct partial_symtab *);
1404
1405 static struct abbrev_info *abbrev_table_lookup_abbrev
1406   (const struct abbrev_table *, unsigned int);
1407
1408 static struct abbrev_table *abbrev_table_read_table
1409   (struct dwarf2_section_info *, sect_offset);
1410
1411 static void abbrev_table_free (struct abbrev_table *);
1412
1413 static void abbrev_table_free_cleanup (void *);
1414
1415 static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1416                                  struct dwarf2_section_info *);
1417
1418 static void dwarf2_free_abbrev_table (void *);
1419
1420 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1421
1422 static struct partial_die_info *load_partial_dies
1423   (const struct die_reader_specs *, const gdb_byte *, int);
1424
1425 static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1426                                          struct partial_die_info *,
1427                                          struct abbrev_info *,
1428                                          unsigned int,
1429                                          const gdb_byte *);
1430
1431 static struct partial_die_info *find_partial_die (sect_offset, int,
1432                                                   struct dwarf2_cu *);
1433
1434 static void fixup_partial_die (struct partial_die_info *,
1435                                struct dwarf2_cu *);
1436
1437 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1438                                        struct attribute *, struct attr_abbrev *,
1439                                        const gdb_byte *);
1440
1441 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1442
1443 static int read_1_signed_byte (bfd *, const gdb_byte *);
1444
1445 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1446
1447 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1448
1449 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1450
1451 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1452                                unsigned int *);
1453
1454 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1455
1456 static LONGEST read_checked_initial_length_and_offset
1457   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1458    unsigned int *, unsigned int *);
1459
1460 static LONGEST read_offset (bfd *, const gdb_byte *,
1461                             const struct comp_unit_head *,
1462                             unsigned int *);
1463
1464 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1465
1466 static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1467                                        sect_offset);
1468
1469 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1470
1471 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1472
1473 static const char *read_indirect_string (bfd *, const gdb_byte *,
1474                                          const struct comp_unit_head *,
1475                                          unsigned int *);
1476
1477 static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
1478
1479 static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
1480
1481 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1482
1483 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1484                                               const gdb_byte *,
1485                                               unsigned int *);
1486
1487 static const char *read_str_index (const struct die_reader_specs *reader,
1488                                    ULONGEST str_index);
1489
1490 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1491
1492 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1493                                       struct dwarf2_cu *);
1494
1495 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1496                                                 unsigned int);
1497
1498 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1499                                struct dwarf2_cu *cu);
1500
1501 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1502
1503 static struct die_info *die_specification (struct die_info *die,
1504                                            struct dwarf2_cu **);
1505
1506 static void free_line_header (struct line_header *lh);
1507
1508 static struct line_header *dwarf_decode_line_header (unsigned int offset,
1509                                                      struct dwarf2_cu *cu);
1510
1511 static void dwarf_decode_lines (struct line_header *, const char *,
1512                                 struct dwarf2_cu *, struct partial_symtab *,
1513                                 int);
1514
1515 static void dwarf2_start_subfile (const char *, const char *, const char *);
1516
1517 static void dwarf2_start_symtab (struct dwarf2_cu *,
1518                                  const char *, const char *, CORE_ADDR);
1519
1520 static struct symbol *new_symbol (struct die_info *, struct type *,
1521                                   struct dwarf2_cu *);
1522
1523 static struct symbol *new_symbol_full (struct die_info *, struct type *,
1524                                        struct dwarf2_cu *, struct symbol *);
1525
1526 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1527                                 struct dwarf2_cu *);
1528
1529 static void dwarf2_const_value_attr (const struct attribute *attr,
1530                                      struct type *type,
1531                                      const char *name,
1532                                      struct obstack *obstack,
1533                                      struct dwarf2_cu *cu, LONGEST *value,
1534                                      const gdb_byte **bytes,
1535                                      struct dwarf2_locexpr_baton **baton);
1536
1537 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1538
1539 static int need_gnat_info (struct dwarf2_cu *);
1540
1541 static struct type *die_descriptive_type (struct die_info *,
1542                                           struct dwarf2_cu *);
1543
1544 static void set_descriptive_type (struct type *, struct die_info *,
1545                                   struct dwarf2_cu *);
1546
1547 static struct type *die_containing_type (struct die_info *,
1548                                          struct dwarf2_cu *);
1549
1550 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1551                                      struct dwarf2_cu *);
1552
1553 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1554
1555 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1556
1557 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1558
1559 static char *typename_concat (struct obstack *obs, const char *prefix,
1560                               const char *suffix, int physname,
1561                               struct dwarf2_cu *cu);
1562
1563 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1564
1565 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1566
1567 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1568
1569 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1570
1571 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1572
1573 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1574                                struct dwarf2_cu *, struct partial_symtab *);
1575
1576 static int dwarf2_get_pc_bounds (struct die_info *,
1577                                  CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1578                                  struct partial_symtab *);
1579
1580 static void get_scope_pc_bounds (struct die_info *,
1581                                  CORE_ADDR *, CORE_ADDR *,
1582                                  struct dwarf2_cu *);
1583
1584 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1585                                         CORE_ADDR, struct dwarf2_cu *);
1586
1587 static void dwarf2_add_field (struct field_info *, struct die_info *,
1588                               struct dwarf2_cu *);
1589
1590 static void dwarf2_attach_fields_to_type (struct field_info *,
1591                                           struct type *, struct dwarf2_cu *);
1592
1593 static void dwarf2_add_member_fn (struct field_info *,
1594                                   struct die_info *, struct type *,
1595                                   struct dwarf2_cu *);
1596
1597 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1598                                              struct type *,
1599                                              struct dwarf2_cu *);
1600
1601 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1602
1603 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1604
1605 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1606
1607 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1608
1609 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1610
1611 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1612
1613 static struct type *read_module_type (struct die_info *die,
1614                                       struct dwarf2_cu *cu);
1615
1616 static const char *namespace_name (struct die_info *die,
1617                                    int *is_anonymous, struct dwarf2_cu *);
1618
1619 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1620
1621 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1622
1623 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1624                                                        struct dwarf2_cu *);
1625
1626 static struct die_info *read_die_and_siblings_1
1627   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1628    struct die_info *);
1629
1630 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1631                                                const gdb_byte *info_ptr,
1632                                                const gdb_byte **new_info_ptr,
1633                                                struct die_info *parent);
1634
1635 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1636                                         struct die_info **, const gdb_byte *,
1637                                         int *, int);
1638
1639 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1640                                       struct die_info **, const gdb_byte *,
1641                                       int *);
1642
1643 static void process_die (struct die_info *, struct dwarf2_cu *);
1644
1645 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1646                                              struct obstack *);
1647
1648 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1649
1650 static const char *dwarf2_full_name (const char *name,
1651                                      struct die_info *die,
1652                                      struct dwarf2_cu *cu);
1653
1654 static const char *dwarf2_physname (const char *name, struct die_info *die,
1655                                     struct dwarf2_cu *cu);
1656
1657 static struct die_info *dwarf2_extension (struct die_info *die,
1658                                           struct dwarf2_cu **);
1659
1660 static const char *dwarf_tag_name (unsigned int);
1661
1662 static const char *dwarf_attr_name (unsigned int);
1663
1664 static const char *dwarf_form_name (unsigned int);
1665
1666 static char *dwarf_bool_name (unsigned int);
1667
1668 static const char *dwarf_type_encoding_name (unsigned int);
1669
1670 static struct die_info *sibling_die (struct die_info *);
1671
1672 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1673
1674 static void dump_die_for_error (struct die_info *);
1675
1676 static void dump_die_1 (struct ui_file *, int level, int max_level,
1677                         struct die_info *);
1678
1679 /*static*/ void dump_die (struct die_info *, int max_level);
1680
1681 static void store_in_ref_table (struct die_info *,
1682                                 struct dwarf2_cu *);
1683
1684 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1685
1686 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1687
1688 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1689                                                const struct attribute *,
1690                                                struct dwarf2_cu **);
1691
1692 static struct die_info *follow_die_ref (struct die_info *,
1693                                         const struct attribute *,
1694                                         struct dwarf2_cu **);
1695
1696 static struct die_info *follow_die_sig (struct die_info *,
1697                                         const struct attribute *,
1698                                         struct dwarf2_cu **);
1699
1700 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1701                                          struct dwarf2_cu *);
1702
1703 static struct type *get_DW_AT_signature_type (struct die_info *,
1704                                               const struct attribute *,
1705                                               struct dwarf2_cu *);
1706
1707 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1708
1709 static void read_signatured_type (struct signatured_type *);
1710
1711 /* memory allocation interface */
1712
1713 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1714
1715 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1716
1717 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int,
1718                                  const char *, int);
1719
1720 static int attr_form_is_block (const struct attribute *);
1721
1722 static int attr_form_is_section_offset (const struct attribute *);
1723
1724 static int attr_form_is_constant (const struct attribute *);
1725
1726 static int attr_form_is_ref (const struct attribute *);
1727
1728 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1729                                    struct dwarf2_loclist_baton *baton,
1730                                    const struct attribute *attr);
1731
1732 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1733                                          struct symbol *sym,
1734                                          struct dwarf2_cu *cu,
1735                                          int is_block);
1736
1737 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1738                                      const gdb_byte *info_ptr,
1739                                      struct abbrev_info *abbrev);
1740
1741 static void free_stack_comp_unit (void *);
1742
1743 static hashval_t partial_die_hash (const void *item);
1744
1745 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1746
1747 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1748   (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
1749
1750 static void init_one_comp_unit (struct dwarf2_cu *cu,
1751                                 struct dwarf2_per_cu_data *per_cu);
1752
1753 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1754                                    struct die_info *comp_unit_die,
1755                                    enum language pretend_language);
1756
1757 static void free_heap_comp_unit (void *);
1758
1759 static void free_cached_comp_units (void *);
1760
1761 static void age_cached_comp_units (void);
1762
1763 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1764
1765 static struct type *set_die_type (struct die_info *, struct type *,
1766                                   struct dwarf2_cu *);
1767
1768 static void create_all_comp_units (struct objfile *);
1769
1770 static int create_all_type_units (struct objfile *);
1771
1772 static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1773                                  enum language);
1774
1775 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1776                                     enum language);
1777
1778 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1779                                     enum language);
1780
1781 static void dwarf2_add_dependence (struct dwarf2_cu *,
1782                                    struct dwarf2_per_cu_data *);
1783
1784 static void dwarf2_mark (struct dwarf2_cu *);
1785
1786 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1787
1788 static struct type *get_die_type_at_offset (sect_offset,
1789                                             struct dwarf2_per_cu_data *);
1790
1791 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1792
1793 static void dwarf2_release_queue (void *dummy);
1794
1795 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1796                              enum language pretend_language);
1797
1798 static void process_queue (void);
1799
1800 static void find_file_and_directory (struct die_info *die,
1801                                      struct dwarf2_cu *cu,
1802                                      const char **name, const char **comp_dir);
1803
1804 static char *file_full_name (int file, struct line_header *lh,
1805                              const char *comp_dir);
1806
1807 static const gdb_byte *read_and_check_comp_unit_head
1808   (struct comp_unit_head *header,
1809    struct dwarf2_section_info *section,
1810    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1811    int is_debug_types_section);
1812
1813 static void init_cutu_and_read_dies
1814   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1815    int use_existing_cu, int keep,
1816    die_reader_func_ftype *die_reader_func, void *data);
1817
1818 static void init_cutu_and_read_dies_simple
1819   (struct dwarf2_per_cu_data *this_cu,
1820    die_reader_func_ftype *die_reader_func, void *data);
1821
1822 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1823
1824 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1825
1826 static struct dwo_unit *lookup_dwo_unit_in_dwp
1827   (struct dwp_file *dwp_file, const char *comp_dir,
1828    ULONGEST signature, int is_debug_types);
1829
1830 static struct dwp_file *get_dwp_file (void);
1831
1832 static struct dwo_unit *lookup_dwo_comp_unit
1833   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1834
1835 static struct dwo_unit *lookup_dwo_type_unit
1836   (struct signatured_type *, const char *, const char *);
1837
1838 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1839
1840 static void free_dwo_file_cleanup (void *);
1841
1842 static void process_cu_includes (void);
1843
1844 static void check_producer (struct dwarf2_cu *cu);
1845 \f
1846 /* Various complaints about symbol reading that don't abort the process.  */
1847
1848 static void
1849 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1850 {
1851   complaint (&symfile_complaints,
1852              _("statement list doesn't fit in .debug_line section"));
1853 }
1854
1855 static void
1856 dwarf2_debug_line_missing_file_complaint (void)
1857 {
1858   complaint (&symfile_complaints,
1859              _(".debug_line section has line data without a file"));
1860 }
1861
1862 static void
1863 dwarf2_debug_line_missing_end_sequence_complaint (void)
1864 {
1865   complaint (&symfile_complaints,
1866              _(".debug_line section has line "
1867                "program sequence without an end"));
1868 }
1869
1870 static void
1871 dwarf2_complex_location_expr_complaint (void)
1872 {
1873   complaint (&symfile_complaints, _("location expression too complex"));
1874 }
1875
1876 static void
1877 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1878                                               int arg3)
1879 {
1880   complaint (&symfile_complaints,
1881              _("const value length mismatch for '%s', got %d, expected %d"),
1882              arg1, arg2, arg3);
1883 }
1884
1885 static void
1886 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1887 {
1888   complaint (&symfile_complaints,
1889              _("debug info runs off end of %s section"
1890                " [in module %s]"),
1891              get_section_name (section),
1892              get_section_file_name (section));
1893 }
1894
1895 static void
1896 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1897 {
1898   complaint (&symfile_complaints,
1899              _("macro debug info contains a "
1900                "malformed macro definition:\n`%s'"),
1901              arg1);
1902 }
1903
1904 static void
1905 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1906 {
1907   complaint (&symfile_complaints,
1908              _("invalid attribute class or form for '%s' in '%s'"),
1909              arg1, arg2);
1910 }
1911 \f
1912 #if WORDS_BIGENDIAN
1913
1914 /* Convert VALUE between big- and little-endian.  */
1915 static offset_type
1916 byte_swap (offset_type value)
1917 {
1918   offset_type result;
1919
1920   result = (value & 0xff) << 24;
1921   result |= (value & 0xff00) << 8;
1922   result |= (value & 0xff0000) >> 8;
1923   result |= (value & 0xff000000) >> 24;
1924   return result;
1925 }
1926
1927 #define MAYBE_SWAP(V)  byte_swap (V)
1928
1929 #else
1930 #define MAYBE_SWAP(V) (V)
1931 #endif /* WORDS_BIGENDIAN */
1932
1933 /* Read the given attribute value as an address, taking the attribute's
1934    form into account.  */
1935
1936 static CORE_ADDR
1937 attr_value_as_address (struct attribute *attr)
1938 {
1939   CORE_ADDR addr;
1940
1941   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
1942     {
1943       /* Aside from a few clearly defined exceptions, attributes that
1944          contain an address must always be in DW_FORM_addr form.
1945          Unfortunately, some compilers happen to be violating this
1946          requirement by encoding addresses using other forms, such
1947          as DW_FORM_data4 for example.  For those broken compilers,
1948          we try to do our best, without any guarantee of success,
1949          to interpret the address correctly.  It would also be nice
1950          to generate a complaint, but that would require us to maintain
1951          a list of legitimate cases where a non-address form is allowed,
1952          as well as update callers to pass in at least the CU's DWARF
1953          version.  This is more overhead than what we're willing to
1954          expand for a pretty rare case.  */
1955       addr = DW_UNSND (attr);
1956     }
1957   else
1958     addr = DW_ADDR (attr);
1959
1960   return addr;
1961 }
1962
1963 /* The suffix for an index file.  */
1964 #define INDEX_SUFFIX ".gdb-index"
1965
1966 /* Try to locate the sections we need for DWARF 2 debugging
1967    information and return true if we have enough to do something.
1968    NAMES points to the dwarf2 section names, or is NULL if the standard
1969    ELF names are used.  */
1970
1971 int
1972 dwarf2_has_info (struct objfile *objfile,
1973                  const struct dwarf2_debug_sections *names)
1974 {
1975   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
1976   if (!dwarf2_per_objfile)
1977     {
1978       /* Initialize per-objfile state.  */
1979       struct dwarf2_per_objfile *data
1980         = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1981
1982       memset (data, 0, sizeof (*data));
1983       set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1984       dwarf2_per_objfile = data;
1985
1986       bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
1987                              (void *) names);
1988       dwarf2_per_objfile->objfile = objfile;
1989     }
1990   return (!dwarf2_per_objfile->info.is_virtual
1991           && dwarf2_per_objfile->info.s.asection != NULL
1992           && !dwarf2_per_objfile->abbrev.is_virtual
1993           && dwarf2_per_objfile->abbrev.s.asection != NULL);
1994 }
1995
1996 /* Return the containing section of virtual section SECTION.  */
1997
1998 static struct dwarf2_section_info *
1999 get_containing_section (const struct dwarf2_section_info *section)
2000 {
2001   gdb_assert (section->is_virtual);
2002   return section->s.containing_section;
2003 }
2004
2005 /* Return the bfd owner of SECTION.  */
2006
2007 static struct bfd *
2008 get_section_bfd_owner (const struct dwarf2_section_info *section)
2009 {
2010   if (section->is_virtual)
2011     {
2012       section = get_containing_section (section);
2013       gdb_assert (!section->is_virtual);
2014     }
2015   return section->s.asection->owner;
2016 }
2017
2018 /* Return the bfd section of SECTION.
2019    Returns NULL if the section is not present.  */
2020
2021 static asection *
2022 get_section_bfd_section (const struct dwarf2_section_info *section)
2023 {
2024   if (section->is_virtual)
2025     {
2026       section = get_containing_section (section);
2027       gdb_assert (!section->is_virtual);
2028     }
2029   return section->s.asection;
2030 }
2031
2032 /* Return the name of SECTION.  */
2033
2034 static const char *
2035 get_section_name (const struct dwarf2_section_info *section)
2036 {
2037   asection *sectp = get_section_bfd_section (section);
2038
2039   gdb_assert (sectp != NULL);
2040   return bfd_section_name (get_section_bfd_owner (section), sectp);
2041 }
2042
2043 /* Return the name of the file SECTION is in.  */
2044
2045 static const char *
2046 get_section_file_name (const struct dwarf2_section_info *section)
2047 {
2048   bfd *abfd = get_section_bfd_owner (section);
2049
2050   return bfd_get_filename (abfd);
2051 }
2052
2053 /* Return the id of SECTION.
2054    Returns 0 if SECTION doesn't exist.  */
2055
2056 static int
2057 get_section_id (const struct dwarf2_section_info *section)
2058 {
2059   asection *sectp = get_section_bfd_section (section);
2060
2061   if (sectp == NULL)
2062     return 0;
2063   return sectp->id;
2064 }
2065
2066 /* Return the flags of SECTION.
2067    SECTION (or containing section if this is a virtual section) must exist.  */
2068
2069 static int
2070 get_section_flags (const struct dwarf2_section_info *section)
2071 {
2072   asection *sectp = get_section_bfd_section (section);
2073
2074   gdb_assert (sectp != NULL);
2075   return bfd_get_section_flags (sectp->owner, sectp);
2076 }
2077
2078 /* When loading sections, we look either for uncompressed section or for
2079    compressed section names.  */
2080
2081 static int
2082 section_is_p (const char *section_name,
2083               const struct dwarf2_section_names *names)
2084 {
2085   if (names->normal != NULL
2086       && strcmp (section_name, names->normal) == 0)
2087     return 1;
2088   if (names->compressed != NULL
2089       && strcmp (section_name, names->compressed) == 0)
2090     return 1;
2091   return 0;
2092 }
2093
2094 /* This function is mapped across the sections and remembers the
2095    offset and size of each of the debugging sections we are interested
2096    in.  */
2097
2098 static void
2099 dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
2100 {
2101   const struct dwarf2_debug_sections *names;
2102   flagword aflag = bfd_get_section_flags (abfd, sectp);
2103
2104   if (vnames == NULL)
2105     names = &dwarf2_elf_names;
2106   else
2107     names = (const struct dwarf2_debug_sections *) vnames;
2108
2109   if ((aflag & SEC_HAS_CONTENTS) == 0)
2110     {
2111     }
2112   else if (section_is_p (sectp->name, &names->info))
2113     {
2114       dwarf2_per_objfile->info.s.asection = sectp;
2115       dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
2116     }
2117   else if (section_is_p (sectp->name, &names->abbrev))
2118     {
2119       dwarf2_per_objfile->abbrev.s.asection = sectp;
2120       dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
2121     }
2122   else if (section_is_p (sectp->name, &names->line))
2123     {
2124       dwarf2_per_objfile->line.s.asection = sectp;
2125       dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
2126     }
2127   else if (section_is_p (sectp->name, &names->loc))
2128     {
2129       dwarf2_per_objfile->loc.s.asection = sectp;
2130       dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
2131     }
2132   else if (section_is_p (sectp->name, &names->macinfo))
2133     {
2134       dwarf2_per_objfile->macinfo.s.asection = sectp;
2135       dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
2136     }
2137   else if (section_is_p (sectp->name, &names->macro))
2138     {
2139       dwarf2_per_objfile->macro.s.asection = sectp;
2140       dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2141     }
2142   else if (section_is_p (sectp->name, &names->str))
2143     {
2144       dwarf2_per_objfile->str.s.asection = sectp;
2145       dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
2146     }
2147   else if (section_is_p (sectp->name, &names->addr))
2148     {
2149       dwarf2_per_objfile->addr.s.asection = sectp;
2150       dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2151     }
2152   else if (section_is_p (sectp->name, &names->frame))
2153     {
2154       dwarf2_per_objfile->frame.s.asection = sectp;
2155       dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
2156     }
2157   else if (section_is_p (sectp->name, &names->eh_frame))
2158     {
2159       dwarf2_per_objfile->eh_frame.s.asection = sectp;
2160       dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
2161     }
2162   else if (section_is_p (sectp->name, &names->ranges))
2163     {
2164       dwarf2_per_objfile->ranges.s.asection = sectp;
2165       dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
2166     }
2167   else if (section_is_p (sectp->name, &names->types))
2168     {
2169       struct dwarf2_section_info type_section;
2170
2171       memset (&type_section, 0, sizeof (type_section));
2172       type_section.s.asection = sectp;
2173       type_section.size = bfd_get_section_size (sectp);
2174
2175       VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2176                      &type_section);
2177     }
2178   else if (section_is_p (sectp->name, &names->gdb_index))
2179     {
2180       dwarf2_per_objfile->gdb_index.s.asection = sectp;
2181       dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2182     }
2183
2184   if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2185       && bfd_section_vma (abfd, sectp) == 0)
2186     dwarf2_per_objfile->has_section_at_zero = 1;
2187 }
2188
2189 /* A helper function that decides whether a section is empty,
2190    or not present.  */
2191
2192 static int
2193 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2194 {
2195   if (section->is_virtual)
2196     return section->size == 0;
2197   return section->s.asection == NULL || section->size == 0;
2198 }
2199
2200 /* Read the contents of the section INFO.
2201    OBJFILE is the main object file, but not necessarily the file where
2202    the section comes from.  E.g., for DWO files the bfd of INFO is the bfd
2203    of the DWO file.
2204    If the section is compressed, uncompress it before returning.  */
2205
2206 static void
2207 dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
2208 {
2209   asection *sectp;
2210   bfd *abfd;
2211   gdb_byte *buf, *retbuf;
2212
2213   if (info->readin)
2214     return;
2215   info->buffer = NULL;
2216   info->readin = 1;
2217
2218   if (dwarf2_section_empty_p (info))
2219     return;
2220
2221   sectp = get_section_bfd_section (info);
2222
2223   /* If this is a virtual section we need to read in the real one first.  */
2224   if (info->is_virtual)
2225     {
2226       struct dwarf2_section_info *containing_section =
2227         get_containing_section (info);
2228
2229       gdb_assert (sectp != NULL);
2230       if ((sectp->flags & SEC_RELOC) != 0)
2231         {
2232           error (_("Dwarf Error: DWP format V2 with relocations is not"
2233                    " supported in section %s [in module %s]"),
2234                  get_section_name (info), get_section_file_name (info));
2235         }
2236       dwarf2_read_section (objfile, containing_section);
2237       /* Other code should have already caught virtual sections that don't
2238          fit.  */
2239       gdb_assert (info->virtual_offset + info->size
2240                   <= containing_section->size);
2241       /* If the real section is empty or there was a problem reading the
2242          section we shouldn't get here.  */
2243       gdb_assert (containing_section->buffer != NULL);
2244       info->buffer = containing_section->buffer + info->virtual_offset;
2245       return;
2246     }
2247
2248   /* If the section has relocations, we must read it ourselves.
2249      Otherwise we attach it to the BFD.  */
2250   if ((sectp->flags & SEC_RELOC) == 0)
2251     {
2252       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2253       return;
2254     }
2255
2256   buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2257   info->buffer = buf;
2258
2259   /* When debugging .o files, we may need to apply relocations; see
2260      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2261      We never compress sections in .o files, so we only need to
2262      try this when the section is not compressed.  */
2263   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2264   if (retbuf != NULL)
2265     {
2266       info->buffer = retbuf;
2267       return;
2268     }
2269
2270   abfd = get_section_bfd_owner (info);
2271   gdb_assert (abfd != NULL);
2272
2273   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2274       || bfd_bread (buf, info->size, abfd) != info->size)
2275     {
2276       error (_("Dwarf Error: Can't read DWARF data"
2277                " in section %s [in module %s]"),
2278              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2279     }
2280 }
2281
2282 /* A helper function that returns the size of a section in a safe way.
2283    If you are positive that the section has been read before using the
2284    size, then it is safe to refer to the dwarf2_section_info object's
2285    "size" field directly.  In other cases, you must call this
2286    function, because for compressed sections the size field is not set
2287    correctly until the section has been read.  */
2288
2289 static bfd_size_type
2290 dwarf2_section_size (struct objfile *objfile,
2291                      struct dwarf2_section_info *info)
2292 {
2293   if (!info->readin)
2294     dwarf2_read_section (objfile, info);
2295   return info->size;
2296 }
2297
2298 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2299    SECTION_NAME.  */
2300
2301 void
2302 dwarf2_get_section_info (struct objfile *objfile,
2303                          enum dwarf2_section_enum sect,
2304                          asection **sectp, const gdb_byte **bufp,
2305                          bfd_size_type *sizep)
2306 {
2307   struct dwarf2_per_objfile *data
2308     = objfile_data (objfile, dwarf2_objfile_data_key);
2309   struct dwarf2_section_info *info;
2310
2311   /* We may see an objfile without any DWARF, in which case we just
2312      return nothing.  */
2313   if (data == NULL)
2314     {
2315       *sectp = NULL;
2316       *bufp = NULL;
2317       *sizep = 0;
2318       return;
2319     }
2320   switch (sect)
2321     {
2322     case DWARF2_DEBUG_FRAME:
2323       info = &data->frame;
2324       break;
2325     case DWARF2_EH_FRAME:
2326       info = &data->eh_frame;
2327       break;
2328     default:
2329       gdb_assert_not_reached ("unexpected section");
2330     }
2331
2332   dwarf2_read_section (objfile, info);
2333
2334   *sectp = get_section_bfd_section (info);
2335   *bufp = info->buffer;
2336   *sizep = info->size;
2337 }
2338
2339 /* A helper function to find the sections for a .dwz file.  */
2340
2341 static void
2342 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2343 {
2344   struct dwz_file *dwz_file = arg;
2345
2346   /* Note that we only support the standard ELF names, because .dwz
2347      is ELF-only (at the time of writing).  */
2348   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2349     {
2350       dwz_file->abbrev.s.asection = sectp;
2351       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2352     }
2353   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2354     {
2355       dwz_file->info.s.asection = sectp;
2356       dwz_file->info.size = bfd_get_section_size (sectp);
2357     }
2358   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2359     {
2360       dwz_file->str.s.asection = sectp;
2361       dwz_file->str.size = bfd_get_section_size (sectp);
2362     }
2363   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2364     {
2365       dwz_file->line.s.asection = sectp;
2366       dwz_file->line.size = bfd_get_section_size (sectp);
2367     }
2368   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2369     {
2370       dwz_file->macro.s.asection = sectp;
2371       dwz_file->macro.size = bfd_get_section_size (sectp);
2372     }
2373   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2374     {
2375       dwz_file->gdb_index.s.asection = sectp;
2376       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2377     }
2378 }
2379
2380 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2381    there is no .gnu_debugaltlink section in the file.  Error if there
2382    is such a section but the file cannot be found.  */
2383
2384 static struct dwz_file *
2385 dwarf2_get_dwz_file (void)
2386 {
2387   bfd *dwz_bfd;
2388   char *data;
2389   struct cleanup *cleanup;
2390   const char *filename;
2391   struct dwz_file *result;
2392   bfd_size_type buildid_len_arg;
2393   size_t buildid_len;
2394   bfd_byte *buildid;
2395
2396   if (dwarf2_per_objfile->dwz_file != NULL)
2397     return dwarf2_per_objfile->dwz_file;
2398
2399   bfd_set_error (bfd_error_no_error);
2400   data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2401                                       &buildid_len_arg, &buildid);
2402   if (data == NULL)
2403     {
2404       if (bfd_get_error () == bfd_error_no_error)
2405         return NULL;
2406       error (_("could not read '.gnu_debugaltlink' section: %s"),
2407              bfd_errmsg (bfd_get_error ()));
2408     }
2409   cleanup = make_cleanup (xfree, data);
2410   make_cleanup (xfree, buildid);
2411
2412   buildid_len = (size_t) buildid_len_arg;
2413
2414   filename = (const char *) data;
2415   if (!IS_ABSOLUTE_PATH (filename))
2416     {
2417       char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2418       char *rel;
2419
2420       make_cleanup (xfree, abs);
2421       abs = ldirname (abs);
2422       make_cleanup (xfree, abs);
2423
2424       rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2425       make_cleanup (xfree, rel);
2426       filename = rel;
2427     }
2428
2429   /* First try the file name given in the section.  If that doesn't
2430      work, try to use the build-id instead.  */
2431   dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
2432   if (dwz_bfd != NULL)
2433     {
2434       if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2435         {
2436           gdb_bfd_unref (dwz_bfd);
2437           dwz_bfd = NULL;
2438         }
2439     }
2440
2441   if (dwz_bfd == NULL)
2442     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2443
2444   if (dwz_bfd == NULL)
2445     error (_("could not find '.gnu_debugaltlink' file for %s"),
2446            objfile_name (dwarf2_per_objfile->objfile));
2447
2448   result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2449                            struct dwz_file);
2450   result->dwz_bfd = dwz_bfd;
2451
2452   bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2453
2454   do_cleanups (cleanup);
2455
2456   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
2457   dwarf2_per_objfile->dwz_file = result;
2458   return result;
2459 }
2460 \f
2461 /* DWARF quick_symbols_functions support.  */
2462
2463 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2464    unique line tables, so we maintain a separate table of all .debug_line
2465    derived entries to support the sharing.
2466    All the quick functions need is the list of file names.  We discard the
2467    line_header when we're done and don't need to record it here.  */
2468 struct quick_file_names
2469 {
2470   /* The data used to construct the hash key.  */
2471   struct stmt_list_hash hash;
2472
2473   /* The number of entries in file_names, real_names.  */
2474   unsigned int num_file_names;
2475
2476   /* The file names from the line table, after being run through
2477      file_full_name.  */
2478   const char **file_names;
2479
2480   /* The file names from the line table after being run through
2481      gdb_realpath.  These are computed lazily.  */
2482   const char **real_names;
2483 };
2484
2485 /* When using the index (and thus not using psymtabs), each CU has an
2486    object of this type.  This is used to hold information needed by
2487    the various "quick" methods.  */
2488 struct dwarf2_per_cu_quick_data
2489 {
2490   /* The file table.  This can be NULL if there was no file table
2491      or it's currently not read in.
2492      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2493   struct quick_file_names *file_names;
2494
2495   /* The corresponding symbol table.  This is NULL if symbols for this
2496      CU have not yet been read.  */
2497   struct symtab *symtab;
2498
2499   /* A temporary mark bit used when iterating over all CUs in
2500      expand_symtabs_matching.  */
2501   unsigned int mark : 1;
2502
2503   /* True if we've tried to read the file table and found there isn't one.
2504      There will be no point in trying to read it again next time.  */
2505   unsigned int no_file_data : 1;
2506 };
2507
2508 /* Utility hash function for a stmt_list_hash.  */
2509
2510 static hashval_t
2511 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2512 {
2513   hashval_t v = 0;
2514
2515   if (stmt_list_hash->dwo_unit != NULL)
2516     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2517   v += stmt_list_hash->line_offset.sect_off;
2518   return v;
2519 }
2520
2521 /* Utility equality function for a stmt_list_hash.  */
2522
2523 static int
2524 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2525                     const struct stmt_list_hash *rhs)
2526 {
2527   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2528     return 0;
2529   if (lhs->dwo_unit != NULL
2530       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2531     return 0;
2532
2533   return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2534 }
2535
2536 /* Hash function for a quick_file_names.  */
2537
2538 static hashval_t
2539 hash_file_name_entry (const void *e)
2540 {
2541   const struct quick_file_names *file_data = e;
2542
2543   return hash_stmt_list_entry (&file_data->hash);
2544 }
2545
2546 /* Equality function for a quick_file_names.  */
2547
2548 static int
2549 eq_file_name_entry (const void *a, const void *b)
2550 {
2551   const struct quick_file_names *ea = a;
2552   const struct quick_file_names *eb = b;
2553
2554   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2555 }
2556
2557 /* Delete function for a quick_file_names.  */
2558
2559 static void
2560 delete_file_name_entry (void *e)
2561 {
2562   struct quick_file_names *file_data = e;
2563   int i;
2564
2565   for (i = 0; i < file_data->num_file_names; ++i)
2566     {
2567       xfree ((void*) file_data->file_names[i]);
2568       if (file_data->real_names)
2569         xfree ((void*) file_data->real_names[i]);
2570     }
2571
2572   /* The space for the struct itself lives on objfile_obstack,
2573      so we don't free it here.  */
2574 }
2575
2576 /* Create a quick_file_names hash table.  */
2577
2578 static htab_t
2579 create_quick_file_names_table (unsigned int nr_initial_entries)
2580 {
2581   return htab_create_alloc (nr_initial_entries,
2582                             hash_file_name_entry, eq_file_name_entry,
2583                             delete_file_name_entry, xcalloc, xfree);
2584 }
2585
2586 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2587    have to be created afterwards.  You should call age_cached_comp_units after
2588    processing PER_CU->CU.  dw2_setup must have been already called.  */
2589
2590 static void
2591 load_cu (struct dwarf2_per_cu_data *per_cu)
2592 {
2593   if (per_cu->is_debug_types)
2594     load_full_type_unit (per_cu);
2595   else
2596     load_full_comp_unit (per_cu, language_minimal);
2597
2598   gdb_assert (per_cu->cu != NULL);
2599
2600   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2601 }
2602
2603 /* Read in the symbols for PER_CU.  */
2604
2605 static void
2606 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2607 {
2608   struct cleanup *back_to;
2609
2610   /* Skip type_unit_groups, reading the type units they contain
2611      is handled elsewhere.  */
2612   if (IS_TYPE_UNIT_GROUP (per_cu))
2613     return;
2614
2615   back_to = make_cleanup (dwarf2_release_queue, NULL);
2616
2617   if (dwarf2_per_objfile->using_index
2618       ? per_cu->v.quick->symtab == NULL
2619       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2620     {
2621       queue_comp_unit (per_cu, language_minimal);
2622       load_cu (per_cu);
2623
2624       /* If we just loaded a CU from a DWO, and we're working with an index
2625          that may badly handle TUs, load all the TUs in that DWO as well.
2626          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2627       if (!per_cu->is_debug_types
2628           && per_cu->cu->dwo_unit != NULL
2629           && dwarf2_per_objfile->index_table != NULL
2630           && dwarf2_per_objfile->index_table->version <= 7
2631           /* DWP files aren't supported yet.  */
2632           && get_dwp_file () == NULL)
2633         queue_and_load_all_dwo_tus (per_cu);
2634     }
2635
2636   process_queue ();
2637
2638   /* Age the cache, releasing compilation units that have not
2639      been used recently.  */
2640   age_cached_comp_units ();
2641
2642   do_cleanups (back_to);
2643 }
2644
2645 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2646    the objfile from which this CU came.  Returns the resulting symbol
2647    table.  */
2648
2649 static struct symtab *
2650 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
2651 {
2652   gdb_assert (dwarf2_per_objfile->using_index);
2653   if (!per_cu->v.quick->symtab)
2654     {
2655       struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2656       increment_reading_symtab ();
2657       dw2_do_instantiate_symtab (per_cu);
2658       process_cu_includes ();
2659       do_cleanups (back_to);
2660     }
2661   return per_cu->v.quick->symtab;
2662 }
2663
2664 /* Return the CU/TU given its index.
2665
2666    This is intended for loops like:
2667
2668    for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2669                     + dwarf2_per_objfile->n_type_units); ++i)
2670      {
2671        struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
2672
2673        ...;
2674      }
2675 */
2676
2677 static struct dwarf2_per_cu_data *
2678 dw2_get_cutu (int index)
2679 {
2680   if (index >= dwarf2_per_objfile->n_comp_units)
2681     {
2682       index -= dwarf2_per_objfile->n_comp_units;
2683       gdb_assert (index < dwarf2_per_objfile->n_type_units);
2684       return &dwarf2_per_objfile->all_type_units[index]->per_cu;
2685     }
2686
2687   return dwarf2_per_objfile->all_comp_units[index];
2688 }
2689
2690 /* Return the CU given its index.
2691    This differs from dw2_get_cutu in that it's for when you know INDEX
2692    refers to a CU.  */
2693
2694 static struct dwarf2_per_cu_data *
2695 dw2_get_cu (int index)
2696 {
2697   gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
2698
2699   return dwarf2_per_objfile->all_comp_units[index];
2700 }
2701
2702 /* A helper for create_cus_from_index that handles a given list of
2703    CUs.  */
2704
2705 static void
2706 create_cus_from_index_list (struct objfile *objfile,
2707                             const gdb_byte *cu_list, offset_type n_elements,
2708                             struct dwarf2_section_info *section,
2709                             int is_dwz,
2710                             int base_offset)
2711 {
2712   offset_type i;
2713
2714   for (i = 0; i < n_elements; i += 2)
2715     {
2716       struct dwarf2_per_cu_data *the_cu;
2717       ULONGEST offset, length;
2718
2719       gdb_static_assert (sizeof (ULONGEST) >= 8);
2720       offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2721       length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2722       cu_list += 2 * 8;
2723
2724       the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2725                                struct dwarf2_per_cu_data);
2726       the_cu->offset.sect_off = offset;
2727       the_cu->length = length;
2728       the_cu->objfile = objfile;
2729       the_cu->section = section;
2730       the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2731                                         struct dwarf2_per_cu_quick_data);
2732       the_cu->is_dwz = is_dwz;
2733       dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
2734     }
2735 }
2736
2737 /* Read the CU list from the mapped index, and use it to create all
2738    the CU objects for this objfile.  */
2739
2740 static void
2741 create_cus_from_index (struct objfile *objfile,
2742                        const gdb_byte *cu_list, offset_type cu_list_elements,
2743                        const gdb_byte *dwz_list, offset_type dwz_elements)
2744 {
2745   struct dwz_file *dwz;
2746
2747   dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2748   dwarf2_per_objfile->all_comp_units
2749     = obstack_alloc (&objfile->objfile_obstack,
2750                      dwarf2_per_objfile->n_comp_units
2751                      * sizeof (struct dwarf2_per_cu_data *));
2752
2753   create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2754                               &dwarf2_per_objfile->info, 0, 0);
2755
2756   if (dwz_elements == 0)
2757     return;
2758
2759   dwz = dwarf2_get_dwz_file ();
2760   create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2761                               cu_list_elements / 2);
2762 }
2763
2764 /* Create the signatured type hash table from the index.  */
2765
2766 static void
2767 create_signatured_type_table_from_index (struct objfile *objfile,
2768                                          struct dwarf2_section_info *section,
2769                                          const gdb_byte *bytes,
2770                                          offset_type elements)
2771 {
2772   offset_type i;
2773   htab_t sig_types_hash;
2774
2775   dwarf2_per_objfile->n_type_units = elements / 3;
2776   dwarf2_per_objfile->all_type_units
2777     = xmalloc (dwarf2_per_objfile->n_type_units
2778                * sizeof (struct signatured_type *));
2779
2780   sig_types_hash = allocate_signatured_type_table (objfile);
2781
2782   for (i = 0; i < elements; i += 3)
2783     {
2784       struct signatured_type *sig_type;
2785       ULONGEST offset, type_offset_in_tu, signature;
2786       void **slot;
2787
2788       gdb_static_assert (sizeof (ULONGEST) >= 8);
2789       offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2790       type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2791                                                     BFD_ENDIAN_LITTLE);
2792       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2793       bytes += 3 * 8;
2794
2795       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2796                                  struct signatured_type);
2797       sig_type->signature = signature;
2798       sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2799       sig_type->per_cu.is_debug_types = 1;
2800       sig_type->per_cu.section = section;
2801       sig_type->per_cu.offset.sect_off = offset;
2802       sig_type->per_cu.objfile = objfile;
2803       sig_type->per_cu.v.quick
2804         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2805                           struct dwarf2_per_cu_quick_data);
2806
2807       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2808       *slot = sig_type;
2809
2810       dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
2811     }
2812
2813   dwarf2_per_objfile->signatured_types = sig_types_hash;
2814 }
2815
2816 /* Read the address map data from the mapped index, and use it to
2817    populate the objfile's psymtabs_addrmap.  */
2818
2819 static void
2820 create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2821 {
2822   const gdb_byte *iter, *end;
2823   struct obstack temp_obstack;
2824   struct addrmap *mutable_map;
2825   struct cleanup *cleanup;
2826   CORE_ADDR baseaddr;
2827
2828   obstack_init (&temp_obstack);
2829   cleanup = make_cleanup_obstack_free (&temp_obstack);
2830   mutable_map = addrmap_create_mutable (&temp_obstack);
2831
2832   iter = index->address_table;
2833   end = iter + index->address_table_size;
2834
2835   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2836
2837   while (iter < end)
2838     {
2839       ULONGEST hi, lo, cu_index;
2840       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2841       iter += 8;
2842       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2843       iter += 8;
2844       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2845       iter += 4;
2846
2847       if (lo > hi)
2848         {
2849           complaint (&symfile_complaints,
2850                      _(".gdb_index address table has invalid range (%s - %s)"),
2851                      hex_string (lo), hex_string (hi));
2852           continue;
2853         }
2854
2855       if (cu_index >= dwarf2_per_objfile->n_comp_units)
2856         {
2857           complaint (&symfile_complaints,
2858                      _(".gdb_index address table has invalid CU number %u"),
2859                      (unsigned) cu_index);
2860           continue;
2861         }
2862
2863       addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1,
2864                          dw2_get_cutu (cu_index));
2865     }
2866
2867   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2868                                                     &objfile->objfile_obstack);
2869   do_cleanups (cleanup);
2870 }
2871
2872 /* The hash function for strings in the mapped index.  This is the same as
2873    SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2874    implementation.  This is necessary because the hash function is tied to the
2875    format of the mapped index file.  The hash values do not have to match with
2876    SYMBOL_HASH_NEXT.
2877    
2878    Use INT_MAX for INDEX_VERSION if you generate the current index format.  */
2879
2880 static hashval_t
2881 mapped_index_string_hash (int index_version, const void *p)
2882 {
2883   const unsigned char *str = (const unsigned char *) p;
2884   hashval_t r = 0;
2885   unsigned char c;
2886
2887   while ((c = *str++) != 0)
2888     {
2889       if (index_version >= 5)
2890         c = tolower (c);
2891       r = r * 67 + c - 113;
2892     }
2893
2894   return r;
2895 }
2896
2897 /* Find a slot in the mapped index INDEX for the object named NAME.
2898    If NAME is found, set *VEC_OUT to point to the CU vector in the
2899    constant pool and return 1.  If NAME cannot be found, return 0.  */
2900
2901 static int
2902 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2903                           offset_type **vec_out)
2904 {
2905   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2906   offset_type hash;
2907   offset_type slot, step;
2908   int (*cmp) (const char *, const char *);
2909
2910   if (current_language->la_language == language_cplus
2911       || current_language->la_language == language_java
2912       || current_language->la_language == language_fortran)
2913     {
2914       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
2915          not contain any.  */
2916       const char *paren = strchr (name, '(');
2917
2918       if (paren)
2919         {
2920           char *dup;
2921
2922           dup = xmalloc (paren - name + 1);
2923           memcpy (dup, name, paren - name);
2924           dup[paren - name] = 0;
2925
2926           make_cleanup (xfree, dup);
2927           name = dup;
2928         }
2929     }
2930
2931   /* Index version 4 did not support case insensitive searches.  But the
2932      indices for case insensitive languages are built in lowercase, therefore
2933      simulate our NAME being searched is also lowercased.  */
2934   hash = mapped_index_string_hash ((index->version == 4
2935                                     && case_sensitivity == case_sensitive_off
2936                                     ? 5 : index->version),
2937                                    name);
2938
2939   slot = hash & (index->symbol_table_slots - 1);
2940   step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
2941   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2942
2943   for (;;)
2944     {
2945       /* Convert a slot number to an offset into the table.  */
2946       offset_type i = 2 * slot;
2947       const char *str;
2948       if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
2949         {
2950           do_cleanups (back_to);
2951           return 0;
2952         }
2953
2954       str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
2955       if (!cmp (name, str))
2956         {
2957           *vec_out = (offset_type *) (index->constant_pool
2958                                       + MAYBE_SWAP (index->symbol_table[i + 1]));
2959           do_cleanups (back_to);
2960           return 1;
2961         }
2962
2963       slot = (slot + step) & (index->symbol_table_slots - 1);
2964     }
2965 }
2966
2967 /* A helper function that reads the .gdb_index from SECTION and fills
2968    in MAP.  FILENAME is the name of the file containing the section;
2969    it is used for error reporting.  DEPRECATED_OK is nonzero if it is
2970    ok to use deprecated sections.
2971
2972    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
2973    out parameters that are filled in with information about the CU and
2974    TU lists in the section.
2975
2976    Returns 1 if all went well, 0 otherwise.  */
2977
2978 static int
2979 read_index_from_section (struct objfile *objfile,
2980                          const char *filename,
2981                          int deprecated_ok,
2982                          struct dwarf2_section_info *section,
2983                          struct mapped_index *map,
2984                          const gdb_byte **cu_list,
2985                          offset_type *cu_list_elements,
2986                          const gdb_byte **types_list,
2987                          offset_type *types_list_elements)
2988 {
2989   const gdb_byte *addr;
2990   offset_type version;
2991   offset_type *metadata;
2992   int i;
2993
2994   if (dwarf2_section_empty_p (section))
2995     return 0;
2996
2997   /* Older elfutils strip versions could keep the section in the main
2998      executable while splitting it for the separate debug info file.  */
2999   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
3000     return 0;
3001
3002   dwarf2_read_section (objfile, section);
3003
3004   addr = section->buffer;
3005   /* Version check.  */
3006   version = MAYBE_SWAP (*(offset_type *) addr);
3007   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3008      causes the index to behave very poorly for certain requests.  Version 3
3009      contained incomplete addrmap.  So, it seems better to just ignore such
3010      indices.  */
3011   if (version < 4)
3012     {
3013       static int warning_printed = 0;
3014       if (!warning_printed)
3015         {
3016           warning (_("Skipping obsolete .gdb_index section in %s."),
3017                    filename);
3018           warning_printed = 1;
3019         }
3020       return 0;
3021     }
3022   /* Index version 4 uses a different hash function than index version
3023      5 and later.
3024
3025      Versions earlier than 6 did not emit psymbols for inlined
3026      functions.  Using these files will cause GDB not to be able to
3027      set breakpoints on inlined functions by name, so we ignore these
3028      indices unless the user has done
3029      "set use-deprecated-index-sections on".  */
3030   if (version < 6 && !deprecated_ok)
3031     {
3032       static int warning_printed = 0;
3033       if (!warning_printed)
3034         {
3035           warning (_("\
3036 Skipping deprecated .gdb_index section in %s.\n\
3037 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3038 to use the section anyway."),
3039                    filename);
3040           warning_printed = 1;
3041         }
3042       return 0;
3043     }
3044   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3045      of the TU (for symbols coming from TUs),
3046      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3047      Plus gold-generated indices can have duplicate entries for global symbols,
3048      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3049      These are just performance bugs, and we can't distinguish gdb-generated
3050      indices from gold-generated ones, so issue no warning here.  */
3051
3052   /* Indexes with higher version than the one supported by GDB may be no
3053      longer backward compatible.  */
3054   if (version > 8)
3055     return 0;
3056
3057   map->version = version;
3058   map->total_size = section->size;
3059
3060   metadata = (offset_type *) (addr + sizeof (offset_type));
3061
3062   i = 0;
3063   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3064   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3065                        / 8);
3066   ++i;
3067
3068   *types_list = addr + MAYBE_SWAP (metadata[i]);
3069   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3070                            - MAYBE_SWAP (metadata[i]))
3071                           / 8);
3072   ++i;
3073
3074   map->address_table = addr + MAYBE_SWAP (metadata[i]);
3075   map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3076                              - MAYBE_SWAP (metadata[i]));
3077   ++i;
3078
3079   map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3080   map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3081                               - MAYBE_SWAP (metadata[i]))
3082                              / (2 * sizeof (offset_type)));
3083   ++i;
3084
3085   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3086
3087   return 1;
3088 }
3089
3090
3091 /* Read the index file.  If everything went ok, initialize the "quick"
3092    elements of all the CUs and return 1.  Otherwise, return 0.  */
3093
3094 static int
3095 dwarf2_read_index (struct objfile *objfile)
3096 {
3097   struct mapped_index local_map, *map;
3098   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3099   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3100   struct dwz_file *dwz;
3101
3102   if (!read_index_from_section (objfile, objfile_name (objfile),
3103                                 use_deprecated_index_sections,
3104                                 &dwarf2_per_objfile->gdb_index, &local_map,
3105                                 &cu_list, &cu_list_elements,
3106                                 &types_list, &types_list_elements))
3107     return 0;
3108
3109   /* Don't use the index if it's empty.  */
3110   if (local_map.symbol_table_slots == 0)
3111     return 0;
3112
3113   /* If there is a .dwz file, read it so we can get its CU list as
3114      well.  */
3115   dwz = dwarf2_get_dwz_file ();
3116   if (dwz != NULL)
3117     {
3118       struct mapped_index dwz_map;
3119       const gdb_byte *dwz_types_ignore;
3120       offset_type dwz_types_elements_ignore;
3121
3122       if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3123                                     1,
3124                                     &dwz->gdb_index, &dwz_map,
3125                                     &dwz_list, &dwz_list_elements,
3126                                     &dwz_types_ignore,
3127                                     &dwz_types_elements_ignore))
3128         {
3129           warning (_("could not read '.gdb_index' section from %s; skipping"),
3130                    bfd_get_filename (dwz->dwz_bfd));
3131           return 0;
3132         }
3133     }
3134
3135   create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3136                          dwz_list_elements);
3137
3138   if (types_list_elements)
3139     {
3140       struct dwarf2_section_info *section;
3141
3142       /* We can only handle a single .debug_types when we have an
3143          index.  */
3144       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3145         return 0;
3146
3147       section = VEC_index (dwarf2_section_info_def,
3148                            dwarf2_per_objfile->types, 0);
3149
3150       create_signatured_type_table_from_index (objfile, section, types_list,
3151                                                types_list_elements);
3152     }
3153
3154   create_addrmap_from_index (objfile, &local_map);
3155
3156   map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3157   *map = local_map;
3158
3159   dwarf2_per_objfile->index_table = map;
3160   dwarf2_per_objfile->using_index = 1;
3161   dwarf2_per_objfile->quick_file_names_table =
3162     create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
3163
3164   return 1;
3165 }
3166
3167 /* A helper for the "quick" functions which sets the global
3168    dwarf2_per_objfile according to OBJFILE.  */
3169
3170 static void
3171 dw2_setup (struct objfile *objfile)
3172 {
3173   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3174   gdb_assert (dwarf2_per_objfile);
3175 }
3176
3177 /* die_reader_func for dw2_get_file_names.  */
3178
3179 static void
3180 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3181                            const gdb_byte *info_ptr,
3182                            struct die_info *comp_unit_die,
3183                            int has_children,
3184                            void *data)
3185 {
3186   struct dwarf2_cu *cu = reader->cu;
3187   struct dwarf2_per_cu_data *this_cu = cu->per_cu;  
3188   struct objfile *objfile = dwarf2_per_objfile->objfile;
3189   struct dwarf2_per_cu_data *lh_cu;
3190   struct line_header *lh;
3191   struct attribute *attr;
3192   int i;
3193   const char *name, *comp_dir;
3194   void **slot;
3195   struct quick_file_names *qfn;
3196   unsigned int line_offset;
3197
3198   gdb_assert (! this_cu->is_debug_types);
3199
3200   /* Our callers never want to match partial units -- instead they
3201      will match the enclosing full CU.  */
3202   if (comp_unit_die->tag == DW_TAG_partial_unit)
3203     {
3204       this_cu->v.quick->no_file_data = 1;
3205       return;
3206     }
3207
3208   lh_cu = this_cu;
3209   lh = NULL;
3210   slot = NULL;
3211   line_offset = 0;
3212
3213   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3214   if (attr)
3215     {
3216       struct quick_file_names find_entry;
3217
3218       line_offset = DW_UNSND (attr);
3219
3220       /* We may have already read in this line header (TU line header sharing).
3221          If we have we're done.  */
3222       find_entry.hash.dwo_unit = cu->dwo_unit;
3223       find_entry.hash.line_offset.sect_off = line_offset;
3224       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3225                              &find_entry, INSERT);
3226       if (*slot != NULL)
3227         {
3228           lh_cu->v.quick->file_names = *slot;
3229           return;
3230         }
3231
3232       lh = dwarf_decode_line_header (line_offset, cu);
3233     }
3234   if (lh == NULL)
3235     {
3236       lh_cu->v.quick->no_file_data = 1;
3237       return;
3238     }
3239
3240   qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
3241   qfn->hash.dwo_unit = cu->dwo_unit;
3242   qfn->hash.line_offset.sect_off = line_offset;
3243   gdb_assert (slot != NULL);
3244   *slot = qfn;
3245
3246   find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
3247
3248   qfn->num_file_names = lh->num_file_names;
3249   qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3250                                    lh->num_file_names * sizeof (char *));
3251   for (i = 0; i < lh->num_file_names; ++i)
3252     qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3253   qfn->real_names = NULL;
3254
3255   free_line_header (lh);
3256
3257   lh_cu->v.quick->file_names = qfn;
3258 }
3259
3260 /* A helper for the "quick" functions which attempts to read the line
3261    table for THIS_CU.  */
3262
3263 static struct quick_file_names *
3264 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3265 {
3266   /* This should never be called for TUs.  */
3267   gdb_assert (! this_cu->is_debug_types);
3268   /* Nor type unit groups.  */
3269   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3270
3271   if (this_cu->v.quick->file_names != NULL)
3272     return this_cu->v.quick->file_names;
3273   /* If we know there is no line data, no point in looking again.  */
3274   if (this_cu->v.quick->no_file_data)
3275     return NULL;
3276
3277   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3278
3279   if (this_cu->v.quick->no_file_data)
3280     return NULL;
3281   return this_cu->v.quick->file_names;
3282 }
3283
3284 /* A helper for the "quick" functions which computes and caches the
3285    real path for a given file name from the line table.  */
3286
3287 static const char *
3288 dw2_get_real_path (struct objfile *objfile,
3289                    struct quick_file_names *qfn, int index)
3290 {
3291   if (qfn->real_names == NULL)
3292     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3293                                       qfn->num_file_names, char *);
3294
3295   if (qfn->real_names[index] == NULL)
3296     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
3297
3298   return qfn->real_names[index];
3299 }
3300
3301 static struct symtab *
3302 dw2_find_last_source_symtab (struct objfile *objfile)
3303 {
3304   int index;
3305
3306   dw2_setup (objfile);
3307   index = dwarf2_per_objfile->n_comp_units - 1;
3308   return dw2_instantiate_symtab (dw2_get_cutu (index));
3309 }
3310
3311 /* Traversal function for dw2_forget_cached_source_info.  */
3312
3313 static int
3314 dw2_free_cached_file_names (void **slot, void *info)
3315 {
3316   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3317
3318   if (file_data->real_names)
3319     {
3320       int i;
3321
3322       for (i = 0; i < file_data->num_file_names; ++i)
3323         {
3324           xfree ((void*) file_data->real_names[i]);
3325           file_data->real_names[i] = NULL;
3326         }
3327     }
3328
3329   return 1;
3330 }
3331
3332 static void
3333 dw2_forget_cached_source_info (struct objfile *objfile)
3334 {
3335   dw2_setup (objfile);
3336
3337   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3338                           dw2_free_cached_file_names, NULL);
3339 }
3340
3341 /* Helper function for dw2_map_symtabs_matching_filename that expands
3342    the symtabs and calls the iterator.  */
3343
3344 static int
3345 dw2_map_expand_apply (struct objfile *objfile,
3346                       struct dwarf2_per_cu_data *per_cu,
3347                       const char *name, const char *real_path,
3348                       int (*callback) (struct symtab *, void *),
3349                       void *data)
3350 {
3351   struct symtab *last_made = objfile->symtabs;
3352
3353   /* Don't visit already-expanded CUs.  */
3354   if (per_cu->v.quick->symtab)
3355     return 0;
3356
3357   /* This may expand more than one symtab, and we want to iterate over
3358      all of them.  */
3359   dw2_instantiate_symtab (per_cu);
3360
3361   return iterate_over_some_symtabs (name, real_path, callback, data,
3362                                     objfile->symtabs, last_made);
3363 }
3364
3365 /* Implementation of the map_symtabs_matching_filename method.  */
3366
3367 static int
3368 dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
3369                                    const char *real_path,
3370                                    int (*callback) (struct symtab *, void *),
3371                                    void *data)
3372 {
3373   int i;
3374   const char *name_basename = lbasename (name);
3375
3376   dw2_setup (objfile);
3377
3378   /* The rule is CUs specify all the files, including those used by
3379      any TU, so there's no need to scan TUs here.  */
3380
3381   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3382     {
3383       int j;
3384       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3385       struct quick_file_names *file_data;
3386
3387       /* We only need to look at symtabs not already expanded.  */
3388       if (per_cu->v.quick->symtab)
3389         continue;
3390
3391       file_data = dw2_get_file_names (per_cu);
3392       if (file_data == NULL)
3393         continue;
3394
3395       for (j = 0; j < file_data->num_file_names; ++j)
3396         {
3397           const char *this_name = file_data->file_names[j];
3398           const char *this_real_name;
3399
3400           if (compare_filenames_for_search (this_name, name))
3401             {
3402               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3403                                         callback, data))
3404                 return 1;
3405               continue;
3406             }
3407
3408           /* Before we invoke realpath, which can get expensive when many
3409              files are involved, do a quick comparison of the basenames.  */
3410           if (! basenames_may_differ
3411               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3412             continue;
3413
3414           this_real_name = dw2_get_real_path (objfile, file_data, j);
3415           if (compare_filenames_for_search (this_real_name, name))
3416             {
3417               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3418                                         callback, data))
3419                 return 1;
3420               continue;
3421             }
3422
3423           if (real_path != NULL)
3424             {
3425               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3426               gdb_assert (IS_ABSOLUTE_PATH (name));
3427               if (this_real_name != NULL
3428                   && FILENAME_CMP (real_path, this_real_name) == 0)
3429                 {
3430                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3431                                             callback, data))
3432                     return 1;
3433                   continue;
3434                 }
3435             }
3436         }
3437     }
3438
3439   return 0;
3440 }
3441
3442 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3443
3444 struct dw2_symtab_iterator
3445 {
3446   /* The internalized form of .gdb_index.  */
3447   struct mapped_index *index;
3448   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3449   int want_specific_block;
3450   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3451      Unused if !WANT_SPECIFIC_BLOCK.  */
3452   int block_index;
3453   /* The kind of symbol we're looking for.  */
3454   domain_enum domain;
3455   /* The list of CUs from the index entry of the symbol,
3456      or NULL if not found.  */
3457   offset_type *vec;
3458   /* The next element in VEC to look at.  */
3459   int next;
3460   /* The number of elements in VEC, or zero if there is no match.  */
3461   int length;
3462   /* Have we seen a global version of the symbol?
3463      If so we can ignore all further global instances.
3464      This is to work around gold/15646, inefficient gold-generated
3465      indices.  */
3466   int global_seen;
3467 };
3468
3469 /* Initialize the index symtab iterator ITER.
3470    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3471    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3472
3473 static void
3474 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3475                       struct mapped_index *index,
3476                       int want_specific_block,
3477                       int block_index,
3478                       domain_enum domain,
3479                       const char *name)
3480 {
3481   iter->index = index;
3482   iter->want_specific_block = want_specific_block;
3483   iter->block_index = block_index;
3484   iter->domain = domain;
3485   iter->next = 0;
3486   iter->global_seen = 0;
3487
3488   if (find_slot_in_mapped_hash (index, name, &iter->vec))
3489     iter->length = MAYBE_SWAP (*iter->vec);
3490   else
3491     {
3492       iter->vec = NULL;
3493       iter->length = 0;
3494     }
3495 }
3496
3497 /* Return the next matching CU or NULL if there are no more.  */
3498
3499 static struct dwarf2_per_cu_data *
3500 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3501 {
3502   for ( ; iter->next < iter->length; ++iter->next)
3503     {
3504       offset_type cu_index_and_attrs =
3505         MAYBE_SWAP (iter->vec[iter->next + 1]);
3506       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3507       struct dwarf2_per_cu_data *per_cu;
3508       int want_static = iter->block_index != GLOBAL_BLOCK;
3509       /* This value is only valid for index versions >= 7.  */
3510       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3511       gdb_index_symbol_kind symbol_kind =
3512         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3513       /* Only check the symbol attributes if they're present.
3514          Indices prior to version 7 don't record them,
3515          and indices >= 7 may elide them for certain symbols
3516          (gold does this).  */
3517       int attrs_valid =
3518         (iter->index->version >= 7
3519          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3520
3521       /* Don't crash on bad data.  */
3522       if (cu_index >= (dwarf2_per_objfile->n_comp_units
3523                        + dwarf2_per_objfile->n_type_units))
3524         {
3525           complaint (&symfile_complaints,
3526                      _(".gdb_index entry has bad CU index"
3527                        " [in module %s]"),
3528                      objfile_name (dwarf2_per_objfile->objfile));
3529           continue;
3530         }
3531
3532       per_cu = dw2_get_cutu (cu_index);
3533
3534       /* Skip if already read in.  */
3535       if (per_cu->v.quick->symtab)
3536         continue;
3537
3538       /* Check static vs global.  */
3539       if (attrs_valid)
3540         {
3541           if (iter->want_specific_block
3542               && want_static != is_static)
3543             continue;
3544           /* Work around gold/15646.  */
3545           if (!is_static && iter->global_seen)
3546             continue;
3547           if (!is_static)
3548             iter->global_seen = 1;
3549         }
3550
3551       /* Only check the symbol's kind if it has one.  */
3552       if (attrs_valid)
3553         {
3554           switch (iter->domain)
3555             {
3556             case VAR_DOMAIN:
3557               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3558                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3559                   /* Some types are also in VAR_DOMAIN.  */
3560                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3561                 continue;
3562               break;
3563             case STRUCT_DOMAIN:
3564               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3565                 continue;
3566               break;
3567             case LABEL_DOMAIN:
3568               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3569                 continue;
3570               break;
3571             default:
3572               break;
3573             }
3574         }
3575
3576       ++iter->next;
3577       return per_cu;
3578     }
3579
3580   return NULL;
3581 }
3582
3583 static struct symtab *
3584 dw2_lookup_symbol (struct objfile *objfile, int block_index,
3585                    const char *name, domain_enum domain)
3586 {
3587   struct symtab *stab_best = NULL;
3588   struct mapped_index *index;
3589
3590   dw2_setup (objfile);
3591
3592   index = dwarf2_per_objfile->index_table;
3593
3594   /* index is NULL if OBJF_READNOW.  */
3595   if (index)
3596     {
3597       struct dw2_symtab_iterator iter;
3598       struct dwarf2_per_cu_data *per_cu;
3599
3600       dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
3601
3602       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3603         {
3604           struct symbol *sym = NULL;
3605           struct symtab *stab = dw2_instantiate_symtab (per_cu);
3606
3607           /* Some caution must be observed with overloaded functions
3608              and methods, since the index will not contain any overload
3609              information (but NAME might contain it).  */
3610           if (stab->primary)
3611             {
3612               struct blockvector *bv = BLOCKVECTOR (stab);
3613               struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3614
3615               sym = lookup_block_symbol (block, name, domain);
3616             }
3617
3618           if (sym && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3619             {
3620               if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
3621                 return stab;
3622
3623               stab_best = stab;
3624             }
3625
3626           /* Keep looking through other CUs.  */
3627         }
3628     }
3629
3630   return stab_best;
3631 }
3632
3633 static void
3634 dw2_print_stats (struct objfile *objfile)
3635 {
3636   int i, total, count;
3637
3638   dw2_setup (objfile);
3639   total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
3640   count = 0;
3641   for (i = 0; i < total; ++i)
3642     {
3643       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3644
3645       if (!per_cu->v.quick->symtab)
3646         ++count;
3647     }
3648   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3649   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3650 }
3651
3652 /* This dumps minimal information about the index.
3653    It is called via "mt print objfiles".
3654    One use is to verify .gdb_index has been loaded by the
3655    gdb.dwarf2/gdb-index.exp testcase.  */
3656
3657 static void
3658 dw2_dump (struct objfile *objfile)
3659 {
3660   dw2_setup (objfile);
3661   gdb_assert (dwarf2_per_objfile->using_index);
3662   printf_filtered (".gdb_index:");
3663   if (dwarf2_per_objfile->index_table != NULL)
3664     {
3665       printf_filtered (" version %d\n",
3666                        dwarf2_per_objfile->index_table->version);
3667     }
3668   else
3669     printf_filtered (" faked for \"readnow\"\n");
3670   printf_filtered ("\n");
3671 }
3672
3673 static void
3674 dw2_relocate (struct objfile *objfile,
3675               const struct section_offsets *new_offsets,
3676               const struct section_offsets *delta)
3677 {
3678   /* There's nothing to relocate here.  */
3679 }
3680
3681 static void
3682 dw2_expand_symtabs_for_function (struct objfile *objfile,
3683                                  const char *func_name)
3684 {
3685   struct mapped_index *index;
3686
3687   dw2_setup (objfile);
3688
3689   index = dwarf2_per_objfile->index_table;
3690
3691   /* index is NULL if OBJF_READNOW.  */
3692   if (index)
3693     {
3694       struct dw2_symtab_iterator iter;
3695       struct dwarf2_per_cu_data *per_cu;
3696
3697       /* Note: It doesn't matter what we pass for block_index here.  */
3698       dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3699                             func_name);
3700
3701       while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3702         dw2_instantiate_symtab (per_cu);
3703     }
3704 }
3705
3706 static void
3707 dw2_expand_all_symtabs (struct objfile *objfile)
3708 {
3709   int i;
3710
3711   dw2_setup (objfile);
3712
3713   for (i = 0; i < (dwarf2_per_objfile->n_comp_units
3714                    + dwarf2_per_objfile->n_type_units); ++i)
3715     {
3716       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3717
3718       dw2_instantiate_symtab (per_cu);
3719     }
3720 }
3721
3722 static void
3723 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3724                                   const char *fullname)
3725 {
3726   int i;
3727
3728   dw2_setup (objfile);
3729
3730   /* We don't need to consider type units here.
3731      This is only called for examining code, e.g. expand_line_sal.
3732      There can be an order of magnitude (or more) more type units
3733      than comp units, and we avoid them if we can.  */
3734
3735   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3736     {
3737       int j;
3738       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
3739       struct quick_file_names *file_data;
3740
3741       /* We only need to look at symtabs not already expanded.  */
3742       if (per_cu->v.quick->symtab)
3743         continue;
3744
3745       file_data = dw2_get_file_names (per_cu);
3746       if (file_data == NULL)
3747         continue;
3748
3749       for (j = 0; j < file_data->num_file_names; ++j)
3750         {
3751           const char *this_fullname = file_data->file_names[j];
3752
3753           if (filename_cmp (this_fullname, fullname) == 0)
3754             {
3755               dw2_instantiate_symtab (per_cu);
3756               break;
3757             }
3758         }
3759     }
3760 }
3761
3762 static void
3763 dw2_map_matching_symbols (struct objfile *objfile,
3764                           const char * name, domain_enum namespace,
3765                           int global,
3766                           int (*callback) (struct block *,
3767                                            struct symbol *, void *),
3768                           void *data, symbol_compare_ftype *match,
3769                           symbol_compare_ftype *ordered_compare)
3770 {
3771   /* Currently unimplemented; used for Ada.  The function can be called if the
3772      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3773      does not look for non-Ada symbols this function should just return.  */
3774 }
3775
3776 static void
3777 dw2_expand_symtabs_matching
3778   (struct objfile *objfile,
3779    expand_symtabs_file_matcher_ftype *file_matcher,
3780    expand_symtabs_symbol_matcher_ftype *symbol_matcher,
3781    enum search_domain kind,
3782    void *data)
3783 {
3784   int i;
3785   offset_type iter;
3786   struct mapped_index *index;
3787
3788   dw2_setup (objfile);
3789
3790   /* index_table is NULL if OBJF_READNOW.  */
3791   if (!dwarf2_per_objfile->index_table)
3792     return;
3793   index = dwarf2_per_objfile->index_table;
3794
3795   if (file_matcher != NULL)
3796     {
3797       struct cleanup *cleanup;
3798       htab_t visited_found, visited_not_found;
3799
3800       visited_found = htab_create_alloc (10,
3801                                          htab_hash_pointer, htab_eq_pointer,
3802                                          NULL, xcalloc, xfree);
3803       cleanup = make_cleanup_htab_delete (visited_found);
3804       visited_not_found = htab_create_alloc (10,
3805                                              htab_hash_pointer, htab_eq_pointer,
3806                                              NULL, xcalloc, xfree);
3807       make_cleanup_htab_delete (visited_not_found);
3808
3809       /* The rule is CUs specify all the files, including those used by
3810          any TU, so there's no need to scan TUs here.  */
3811
3812       for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
3813         {
3814           int j;
3815           struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
3816           struct quick_file_names *file_data;
3817           void **slot;
3818
3819           per_cu->v.quick->mark = 0;
3820
3821           /* We only need to look at symtabs not already expanded.  */
3822           if (per_cu->v.quick->symtab)
3823             continue;
3824
3825           file_data = dw2_get_file_names (per_cu);
3826           if (file_data == NULL)
3827             continue;
3828
3829           if (htab_find (visited_not_found, file_data) != NULL)
3830             continue;
3831           else if (htab_find (visited_found, file_data) != NULL)
3832             {
3833               per_cu->v.quick->mark = 1;
3834               continue;
3835             }
3836
3837           for (j = 0; j < file_data->num_file_names; ++j)
3838             {
3839               const char *this_real_name;
3840
3841               if (file_matcher (file_data->file_names[j], data, 0))
3842                 {
3843                   per_cu->v.quick->mark = 1;
3844                   break;
3845                 }
3846
3847               /* Before we invoke realpath, which can get expensive when many
3848                  files are involved, do a quick comparison of the basenames.  */
3849               if (!basenames_may_differ
3850                   && !file_matcher (lbasename (file_data->file_names[j]),
3851                                     data, 1))
3852                 continue;
3853
3854               this_real_name = dw2_get_real_path (objfile, file_data, j);
3855               if (file_matcher (this_real_name, data, 0))
3856                 {
3857                   per_cu->v.quick->mark = 1;
3858                   break;
3859                 }
3860             }
3861
3862           slot = htab_find_slot (per_cu->v.quick->mark
3863                                  ? visited_found
3864                                  : visited_not_found,
3865                                  file_data, INSERT);
3866           *slot = file_data;
3867         }
3868
3869       do_cleanups (cleanup);
3870     }
3871
3872   for (iter = 0; iter < index->symbol_table_slots; ++iter)
3873     {
3874       offset_type idx = 2 * iter;
3875       const char *name;
3876       offset_type *vec, vec_len, vec_idx;
3877       int global_seen = 0;
3878
3879       if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
3880         continue;
3881
3882       name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
3883
3884       if (! (*symbol_matcher) (name, data))
3885         continue;
3886
3887       /* The name was matched, now expand corresponding CUs that were
3888          marked.  */
3889       vec = (offset_type *) (index->constant_pool
3890                              + MAYBE_SWAP (index->symbol_table[idx + 1]));
3891       vec_len = MAYBE_SWAP (vec[0]);
3892       for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3893         {
3894           struct dwarf2_per_cu_data *per_cu;
3895           offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
3896           /* This value is only valid for index versions >= 7.  */
3897           int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3898           gdb_index_symbol_kind symbol_kind =
3899             GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3900           int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3901           /* Only check the symbol attributes if they're present.
3902              Indices prior to version 7 don't record them,
3903              and indices >= 7 may elide them for certain symbols
3904              (gold does this).  */
3905           int attrs_valid =
3906             (index->version >= 7
3907              && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3908
3909           /* Work around gold/15646.  */
3910           if (attrs_valid)
3911             {
3912               if (!is_static && global_seen)
3913                 continue;
3914               if (!is_static)
3915                 global_seen = 1;
3916             }
3917
3918           /* Only check the symbol's kind if it has one.  */
3919           if (attrs_valid)
3920             {
3921               switch (kind)
3922                 {
3923                 case VARIABLES_DOMAIN:
3924                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3925                     continue;
3926                   break;
3927                 case FUNCTIONS_DOMAIN:
3928                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3929                     continue;
3930                   break;
3931                 case TYPES_DOMAIN:
3932                   if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3933                     continue;
3934                   break;
3935                 default:
3936                   break;
3937                 }
3938             }
3939
3940           /* Don't crash on bad data.  */
3941           if (cu_index >= (dwarf2_per_objfile->n_comp_units
3942                            + dwarf2_per_objfile->n_type_units))
3943             {
3944               complaint (&symfile_complaints,
3945                          _(".gdb_index entry has bad CU index"
3946                            " [in module %s]"), objfile_name (objfile));
3947               continue;
3948             }
3949
3950           per_cu = dw2_get_cutu (cu_index);
3951           if (file_matcher == NULL || per_cu->v.quick->mark)
3952             dw2_instantiate_symtab (per_cu);
3953         }
3954     }
3955 }
3956
3957 /* A helper for dw2_find_pc_sect_symtab which finds the most specific
3958    symtab.  */
3959
3960 static struct symtab *
3961 recursively_find_pc_sect_symtab (struct symtab *symtab, CORE_ADDR pc)
3962 {
3963   int i;
3964
3965   if (BLOCKVECTOR (symtab) != NULL
3966       && blockvector_contains_pc (BLOCKVECTOR (symtab), pc))
3967     return symtab;
3968
3969   if (symtab->includes == NULL)
3970     return NULL;
3971
3972   for (i = 0; symtab->includes[i]; ++i)
3973     {
3974       struct symtab *s = symtab->includes[i];
3975
3976       s = recursively_find_pc_sect_symtab (s, pc);
3977       if (s != NULL)
3978         return s;
3979     }
3980
3981   return NULL;
3982 }
3983
3984 static struct symtab *
3985 dw2_find_pc_sect_symtab (struct objfile *objfile,
3986                          struct bound_minimal_symbol msymbol,
3987                          CORE_ADDR pc,
3988                          struct obj_section *section,
3989                          int warn_if_readin)
3990 {
3991   struct dwarf2_per_cu_data *data;
3992   struct symtab *result;
3993
3994   dw2_setup (objfile);
3995
3996   if (!objfile->psymtabs_addrmap)
3997     return NULL;
3998
3999   data = addrmap_find (objfile->psymtabs_addrmap, pc);
4000   if (!data)
4001     return NULL;
4002
4003   if (warn_if_readin && data->v.quick->symtab)
4004     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4005              paddress (get_objfile_arch (objfile), pc));
4006
4007   result = recursively_find_pc_sect_symtab (dw2_instantiate_symtab (data), pc);
4008   gdb_assert (result != NULL);
4009   return result;
4010 }
4011
4012 static void
4013 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4014                           void *data, int need_fullname)
4015 {
4016   int i;
4017   struct cleanup *cleanup;
4018   htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4019                                       NULL, xcalloc, xfree);
4020
4021   cleanup = make_cleanup_htab_delete (visited);
4022   dw2_setup (objfile);
4023
4024   /* The rule is CUs specify all the files, including those used by
4025      any TU, so there's no need to scan TUs here.
4026      We can ignore file names coming from already-expanded CUs.  */
4027
4028   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4029     {
4030       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4031
4032       if (per_cu->v.quick->symtab)
4033         {
4034           void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4035                                         INSERT);
4036
4037           *slot = per_cu->v.quick->file_names;
4038         }
4039     }
4040
4041   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
4042     {
4043       int j;
4044       struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
4045       struct quick_file_names *file_data;
4046       void **slot;
4047
4048       /* We only need to look at symtabs not already expanded.  */
4049       if (per_cu->v.quick->symtab)
4050         continue;
4051
4052       file_data = dw2_get_file_names (per_cu);
4053       if (file_data == NULL)
4054         continue;
4055
4056       slot = htab_find_slot (visited, file_data, INSERT);
4057       if (*slot)
4058         {
4059           /* Already visited.  */
4060           continue;
4061         }
4062       *slot = file_data;
4063
4064       for (j = 0; j < file_data->num_file_names; ++j)
4065         {
4066           const char *this_real_name;
4067
4068           if (need_fullname)
4069             this_real_name = dw2_get_real_path (objfile, file_data, j);
4070           else
4071             this_real_name = NULL;
4072           (*fun) (file_data->file_names[j], this_real_name, data);
4073         }
4074     }
4075
4076   do_cleanups (cleanup);
4077 }
4078
4079 static int
4080 dw2_has_symbols (struct objfile *objfile)
4081 {
4082   return 1;
4083 }
4084
4085 const struct quick_symbol_functions dwarf2_gdb_index_functions =
4086 {
4087   dw2_has_symbols,
4088   dw2_find_last_source_symtab,
4089   dw2_forget_cached_source_info,
4090   dw2_map_symtabs_matching_filename,
4091   dw2_lookup_symbol,
4092   dw2_print_stats,
4093   dw2_dump,
4094   dw2_relocate,
4095   dw2_expand_symtabs_for_function,
4096   dw2_expand_all_symtabs,
4097   dw2_expand_symtabs_with_fullname,
4098   dw2_map_matching_symbols,
4099   dw2_expand_symtabs_matching,
4100   dw2_find_pc_sect_symtab,
4101   dw2_map_symbol_filenames
4102 };
4103
4104 /* Initialize for reading DWARF for this objfile.  Return 0 if this
4105    file will use psymtabs, or 1 if using the GNU index.  */
4106
4107 int
4108 dwarf2_initialize_objfile (struct objfile *objfile)
4109 {
4110   /* If we're about to read full symbols, don't bother with the
4111      indices.  In this case we also don't care if some other debug
4112      format is making psymtabs, because they are all about to be
4113      expanded anyway.  */
4114   if ((objfile->flags & OBJF_READNOW))
4115     {
4116       int i;
4117
4118       dwarf2_per_objfile->using_index = 1;
4119       create_all_comp_units (objfile);
4120       create_all_type_units (objfile);
4121       dwarf2_per_objfile->quick_file_names_table =
4122         create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
4123
4124       for (i = 0; i < (dwarf2_per_objfile->n_comp_units
4125                        + dwarf2_per_objfile->n_type_units); ++i)
4126         {
4127           struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
4128
4129           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4130                                             struct dwarf2_per_cu_quick_data);
4131         }
4132
4133       /* Return 1 so that gdb sees the "quick" functions.  However,
4134          these functions will be no-ops because we will have expanded
4135          all symtabs.  */
4136       return 1;
4137     }
4138
4139   if (dwarf2_read_index (objfile))
4140     return 1;
4141
4142   return 0;
4143 }
4144
4145 \f
4146
4147 /* Build a partial symbol table.  */
4148
4149 void
4150 dwarf2_build_psymtabs (struct objfile *objfile)
4151 {
4152   volatile struct gdb_exception except;
4153
4154   if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
4155     {
4156       init_psymbol_list (objfile, 1024);
4157     }
4158
4159   TRY_CATCH (except, RETURN_MASK_ERROR)
4160     {
4161       /* This isn't really ideal: all the data we allocate on the
4162          objfile's obstack is still uselessly kept around.  However,
4163          freeing it seems unsafe.  */
4164       struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4165
4166       dwarf2_build_psymtabs_hard (objfile);
4167       discard_cleanups (cleanups);
4168     }
4169   if (except.reason < 0)
4170     exception_print (gdb_stderr, except);
4171 }
4172
4173 /* Return the total length of the CU described by HEADER.  */
4174
4175 static unsigned int
4176 get_cu_length (const struct comp_unit_head *header)
4177 {
4178   return header->initial_length_size + header->length;
4179 }
4180
4181 /* Return TRUE if OFFSET is within CU_HEADER.  */
4182
4183 static inline int
4184 offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
4185 {
4186   sect_offset bottom = { cu_header->offset.sect_off };
4187   sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
4188
4189   return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
4190 }
4191
4192 /* Find the base address of the compilation unit for range lists and
4193    location lists.  It will normally be specified by DW_AT_low_pc.
4194    In DWARF-3 draft 4, the base address could be overridden by
4195    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
4196    compilation units with discontinuous ranges.  */
4197
4198 static void
4199 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4200 {
4201   struct attribute *attr;
4202
4203   cu->base_known = 0;
4204   cu->base_address = 0;
4205
4206   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4207   if (attr)
4208     {
4209       cu->base_address = attr_value_as_address (attr);
4210       cu->base_known = 1;
4211     }
4212   else
4213     {
4214       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4215       if (attr)
4216         {
4217           cu->base_address = attr_value_as_address (attr);
4218           cu->base_known = 1;
4219         }
4220     }
4221 }
4222
4223 /* Read in the comp unit header information from the debug_info at info_ptr.
4224    NOTE: This leaves members offset, first_die_offset to be filled in
4225    by the caller.  */
4226
4227 static const gdb_byte *
4228 read_comp_unit_head (struct comp_unit_head *cu_header,
4229                      const gdb_byte *info_ptr, bfd *abfd)
4230 {
4231   int signed_addr;
4232   unsigned int bytes_read;
4233
4234   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4235   cu_header->initial_length_size = bytes_read;
4236   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
4237   info_ptr += bytes_read;
4238   cu_header->version = read_2_bytes (abfd, info_ptr);
4239   info_ptr += 2;
4240   cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4241                                              &bytes_read);
4242   info_ptr += bytes_read;
4243   cu_header->addr_size = read_1_byte (abfd, info_ptr);
4244   info_ptr += 1;
4245   signed_addr = bfd_get_sign_extend_vma (abfd);
4246   if (signed_addr < 0)
4247     internal_error (__FILE__, __LINE__,
4248                     _("read_comp_unit_head: dwarf from non elf file"));
4249   cu_header->signed_addr_p = signed_addr;
4250
4251   return info_ptr;
4252 }
4253
4254 /* Helper function that returns the proper abbrev section for
4255    THIS_CU.  */
4256
4257 static struct dwarf2_section_info *
4258 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4259 {
4260   struct dwarf2_section_info *abbrev;
4261
4262   if (this_cu->is_dwz)
4263     abbrev = &dwarf2_get_dwz_file ()->abbrev;
4264   else
4265     abbrev = &dwarf2_per_objfile->abbrev;
4266
4267   return abbrev;
4268 }
4269
4270 /* Subroutine of read_and_check_comp_unit_head and
4271    read_and_check_type_unit_head to simplify them.
4272    Perform various error checking on the header.  */
4273
4274 static void
4275 error_check_comp_unit_head (struct comp_unit_head *header,
4276                             struct dwarf2_section_info *section,
4277                             struct dwarf2_section_info *abbrev_section)
4278 {
4279   bfd *abfd = get_section_bfd_owner (section);
4280   const char *filename = get_section_file_name (section);
4281
4282   if (header->version != 2 && header->version != 3 && header->version != 4)
4283     error (_("Dwarf Error: wrong version in compilation unit header "
4284            "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4285            filename);
4286
4287   if (header->abbrev_offset.sect_off
4288       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
4289     error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4290            "(offset 0x%lx + 6) [in module %s]"),
4291            (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
4292            filename);
4293
4294   /* Cast to unsigned long to use 64-bit arithmetic when possible to
4295      avoid potential 32-bit overflow.  */
4296   if (((unsigned long) header->offset.sect_off + get_cu_length (header))
4297       > section->size)
4298     error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4299            "(offset 0x%lx + 0) [in module %s]"),
4300            (long) header->length, (long) header->offset.sect_off,
4301            filename);
4302 }
4303
4304 /* Read in a CU/TU header and perform some basic error checking.
4305    The contents of the header are stored in HEADER.
4306    The result is a pointer to the start of the first DIE.  */
4307
4308 static const gdb_byte *
4309 read_and_check_comp_unit_head (struct comp_unit_head *header,
4310                                struct dwarf2_section_info *section,
4311                                struct dwarf2_section_info *abbrev_section,
4312                                const gdb_byte *info_ptr,
4313                                int is_debug_types_section)
4314 {
4315   const gdb_byte *beg_of_comp_unit = info_ptr;
4316   bfd *abfd = get_section_bfd_owner (section);
4317
4318   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4319
4320   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4321
4322   /* If we're reading a type unit, skip over the signature and
4323      type_offset fields.  */
4324   if (is_debug_types_section)
4325     info_ptr += 8 /*signature*/ + header->offset_size;
4326
4327   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4328
4329   error_check_comp_unit_head (header, section, abbrev_section);
4330
4331   return info_ptr;
4332 }
4333
4334 /* Read in the types comp unit header information from .debug_types entry at
4335    types_ptr.  The result is a pointer to one past the end of the header.  */
4336
4337 static const gdb_byte *
4338 read_and_check_type_unit_head (struct comp_unit_head *header,
4339                                struct dwarf2_section_info *section,
4340                                struct dwarf2_section_info *abbrev_section,
4341                                const gdb_byte *info_ptr,
4342                                ULONGEST *signature,
4343                                cu_offset *type_offset_in_tu)
4344 {
4345   const gdb_byte *beg_of_comp_unit = info_ptr;
4346   bfd *abfd = get_section_bfd_owner (section);
4347
4348   header->offset.sect_off = beg_of_comp_unit - section->buffer;
4349
4350   info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4351
4352   /* If we're reading a type unit, skip over the signature and
4353      type_offset fields.  */
4354   if (signature != NULL)
4355     *signature = read_8_bytes (abfd, info_ptr);
4356   info_ptr += 8;
4357   if (type_offset_in_tu != NULL)
4358     type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4359                                                header->offset_size);
4360   info_ptr += header->offset_size;
4361
4362   header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
4363
4364   error_check_comp_unit_head (header, section, abbrev_section);
4365
4366   return info_ptr;
4367 }
4368
4369 /* Fetch the abbreviation table offset from a comp or type unit header.  */
4370
4371 static sect_offset
4372 read_abbrev_offset (struct dwarf2_section_info *section,
4373                     sect_offset offset)
4374 {
4375   bfd *abfd = get_section_bfd_owner (section);
4376   const gdb_byte *info_ptr;
4377   unsigned int length, initial_length_size, offset_size;
4378   sect_offset abbrev_offset;
4379
4380   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4381   info_ptr = section->buffer + offset.sect_off;
4382   length = read_initial_length (abfd, info_ptr, &initial_length_size);
4383   offset_size = initial_length_size == 4 ? 4 : 8;
4384   info_ptr += initial_length_size + 2 /*version*/;
4385   abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4386   return abbrev_offset;
4387 }
4388
4389 /* Allocate a new partial symtab for file named NAME and mark this new
4390    partial symtab as being an include of PST.  */
4391
4392 static void
4393 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
4394                                struct objfile *objfile)
4395 {
4396   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4397
4398   if (!IS_ABSOLUTE_PATH (subpst->filename))
4399     {
4400       /* It shares objfile->objfile_obstack.  */
4401       subpst->dirname = pst->dirname;
4402     }
4403
4404   subpst->section_offsets = pst->section_offsets;
4405   subpst->textlow = 0;
4406   subpst->texthigh = 0;
4407
4408   subpst->dependencies = (struct partial_symtab **)
4409     obstack_alloc (&objfile->objfile_obstack,
4410                    sizeof (struct partial_symtab *));
4411   subpst->dependencies[0] = pst;
4412   subpst->number_of_dependencies = 1;
4413
4414   subpst->globals_offset = 0;
4415   subpst->n_global_syms = 0;
4416   subpst->statics_offset = 0;
4417   subpst->n_static_syms = 0;
4418   subpst->symtab = NULL;
4419   subpst->read_symtab = pst->read_symtab;
4420   subpst->readin = 0;
4421
4422   /* No private part is necessary for include psymtabs.  This property
4423      can be used to differentiate between such include psymtabs and
4424      the regular ones.  */
4425   subpst->read_symtab_private = NULL;
4426 }
4427
4428 /* Read the Line Number Program data and extract the list of files
4429    included by the source file represented by PST.  Build an include
4430    partial symtab for each of these included files.  */
4431
4432 static void
4433 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
4434                                struct die_info *die,
4435                                struct partial_symtab *pst)
4436 {
4437   struct line_header *lh = NULL;
4438   struct attribute *attr;
4439
4440   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4441   if (attr)
4442     lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
4443   if (lh == NULL)
4444     return;  /* No linetable, so no includes.  */
4445
4446   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  */
4447   dwarf_decode_lines (lh, pst->dirname, cu, pst, 1);
4448
4449   free_line_header (lh);
4450 }
4451
4452 static hashval_t
4453 hash_signatured_type (const void *item)
4454 {
4455   const struct signatured_type *sig_type = item;
4456
4457   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
4458   return sig_type->signature;
4459 }
4460
4461 static int
4462 eq_signatured_type (const void *item_lhs, const void *item_rhs)
4463 {
4464   const struct signatured_type *lhs = item_lhs;
4465   const struct signatured_type *rhs = item_rhs;
4466
4467   return lhs->signature == rhs->signature;
4468 }
4469
4470 /* Allocate a hash table for signatured types.  */
4471
4472 static htab_t
4473 allocate_signatured_type_table (struct objfile *objfile)
4474 {
4475   return htab_create_alloc_ex (41,
4476                                hash_signatured_type,
4477                                eq_signatured_type,
4478                                NULL,
4479                                &objfile->objfile_obstack,
4480                                hashtab_obstack_allocate,
4481                                dummy_obstack_deallocate);
4482 }
4483
4484 /* A helper function to add a signatured type CU to a table.  */
4485
4486 static int
4487 add_signatured_type_cu_to_table (void **slot, void *datum)
4488 {
4489   struct signatured_type *sigt = *slot;
4490   struct signatured_type ***datap = datum;
4491
4492   **datap = sigt;
4493   ++*datap;
4494
4495   return 1;
4496 }
4497
4498 /* Create the hash table of all entries in the .debug_types
4499    (or .debug_types.dwo) section(s).
4500    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4501    otherwise it is NULL.
4502
4503    The result is a pointer to the hash table or NULL if there are no types.
4504
4505    Note: This function processes DWO files only, not DWP files.  */
4506
4507 static htab_t
4508 create_debug_types_hash_table (struct dwo_file *dwo_file,
4509                                VEC (dwarf2_section_info_def) *types)
4510 {
4511   struct objfile *objfile = dwarf2_per_objfile->objfile;
4512   htab_t types_htab = NULL;
4513   int ix;
4514   struct dwarf2_section_info *section;
4515   struct dwarf2_section_info *abbrev_section;
4516
4517   if (VEC_empty (dwarf2_section_info_def, types))
4518     return NULL;
4519
4520   abbrev_section = (dwo_file != NULL
4521                     ? &dwo_file->sections.abbrev
4522                     : &dwarf2_per_objfile->abbrev);
4523
4524   if (dwarf2_read_debug)
4525     fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4526                         dwo_file ? ".dwo" : "",
4527                         get_section_file_name (abbrev_section));
4528
4529   for (ix = 0;
4530        VEC_iterate (dwarf2_section_info_def, types, ix, section);
4531        ++ix)
4532     {
4533       bfd *abfd;
4534       const gdb_byte *info_ptr, *end_ptr;
4535
4536       dwarf2_read_section (objfile, section);
4537       info_ptr = section->buffer;
4538
4539       if (info_ptr == NULL)
4540         continue;
4541
4542       /* We can't set abfd until now because the section may be empty or
4543          not present, in which case the bfd is unknown.  */
4544       abfd = get_section_bfd_owner (section);
4545
4546       /* We don't use init_cutu_and_read_dies_simple, or some such, here
4547          because we don't need to read any dies: the signature is in the
4548          header.  */
4549
4550       end_ptr = info_ptr + section->size;
4551       while (info_ptr < end_ptr)
4552         {
4553           sect_offset offset;
4554           cu_offset type_offset_in_tu;
4555           ULONGEST signature;
4556           struct signatured_type *sig_type;
4557           struct dwo_unit *dwo_tu;
4558           void **slot;
4559           const gdb_byte *ptr = info_ptr;
4560           struct comp_unit_head header;
4561           unsigned int length;
4562
4563           offset.sect_off = ptr - section->buffer;
4564
4565           /* We need to read the type's signature in order to build the hash
4566              table, but we don't need anything else just yet.  */
4567
4568           ptr = read_and_check_type_unit_head (&header, section,
4569                                                abbrev_section, ptr,
4570                                                &signature, &type_offset_in_tu);
4571
4572           length = get_cu_length (&header);
4573
4574           /* Skip dummy type units.  */
4575           if (ptr >= info_ptr + length
4576               || peek_abbrev_code (abfd, ptr) == 0)
4577             {
4578               info_ptr += length;
4579               continue;
4580             }
4581
4582           if (types_htab == NULL)
4583             {
4584               if (dwo_file)
4585                 types_htab = allocate_dwo_unit_table (objfile);
4586               else
4587                 types_htab = allocate_signatured_type_table (objfile);
4588             }
4589
4590           if (dwo_file)
4591             {
4592               sig_type = NULL;
4593               dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4594                                        struct dwo_unit);
4595               dwo_tu->dwo_file = dwo_file;
4596               dwo_tu->signature = signature;
4597               dwo_tu->type_offset_in_tu = type_offset_in_tu;
4598               dwo_tu->section = section;
4599               dwo_tu->offset = offset;
4600               dwo_tu->length = length;
4601             }
4602           else
4603             {
4604               /* N.B.: type_offset is not usable if this type uses a DWO file.
4605                  The real type_offset is in the DWO file.  */
4606               dwo_tu = NULL;
4607               sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4608                                          struct signatured_type);
4609               sig_type->signature = signature;
4610               sig_type->type_offset_in_tu = type_offset_in_tu;
4611               sig_type->per_cu.objfile = objfile;
4612               sig_type->per_cu.is_debug_types = 1;
4613               sig_type->per_cu.section = section;
4614               sig_type->per_cu.offset = offset;
4615               sig_type->per_cu.length = length;
4616             }
4617
4618           slot = htab_find_slot (types_htab,
4619                                  dwo_file ? (void*) dwo_tu : (void *) sig_type,
4620                                  INSERT);
4621           gdb_assert (slot != NULL);
4622           if (*slot != NULL)
4623             {
4624               sect_offset dup_offset;
4625
4626               if (dwo_file)
4627                 {
4628                   const struct dwo_unit *dup_tu = *slot;
4629
4630                   dup_offset = dup_tu->offset;
4631                 }
4632               else
4633                 {
4634                   const struct signatured_type *dup_tu = *slot;
4635
4636                   dup_offset = dup_tu->per_cu.offset;
4637                 }
4638
4639               complaint (&symfile_complaints,
4640                          _("debug type entry at offset 0x%x is duplicate to"
4641                            " the entry at offset 0x%x, signature %s"),
4642                          offset.sect_off, dup_offset.sect_off,
4643                          hex_string (signature));
4644             }
4645           *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
4646
4647           if (dwarf2_read_debug > 1)
4648             fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, signature %s\n",
4649                                 offset.sect_off,
4650                                 hex_string (signature));
4651
4652           info_ptr += length;
4653         }
4654     }
4655
4656   return types_htab;
4657 }
4658
4659 /* Create the hash table of all entries in the .debug_types section,
4660    and initialize all_type_units.
4661    The result is zero if there is an error (e.g. missing .debug_types section),
4662    otherwise non-zero.  */
4663
4664 static int
4665 create_all_type_units (struct objfile *objfile)
4666 {
4667   htab_t types_htab;
4668   struct signatured_type **iter;
4669
4670   types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4671   if (types_htab == NULL)
4672     {
4673       dwarf2_per_objfile->signatured_types = NULL;
4674       return 0;
4675     }
4676
4677   dwarf2_per_objfile->signatured_types = types_htab;
4678
4679   dwarf2_per_objfile->n_type_units = htab_elements (types_htab);
4680   dwarf2_per_objfile->all_type_units
4681     = xmalloc (dwarf2_per_objfile->n_type_units
4682                * sizeof (struct signatured_type *));
4683   iter = &dwarf2_per_objfile->all_type_units[0];
4684   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4685   gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4686               == dwarf2_per_objfile->n_type_units);
4687
4688   return 1;
4689 }
4690
4691 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4692    Fill in SIG_ENTRY with DWO_ENTRY.  */
4693
4694 static void
4695 fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4696                                   struct signatured_type *sig_entry,
4697                                   struct dwo_unit *dwo_entry)
4698 {
4699   /* Make sure we're not clobbering something we don't expect to.  */
4700   gdb_assert (! sig_entry->per_cu.queued);
4701   gdb_assert (sig_entry->per_cu.cu == NULL);
4702   gdb_assert (sig_entry->per_cu.v.quick != NULL);
4703   gdb_assert (sig_entry->per_cu.v.quick->symtab == NULL);
4704   gdb_assert (sig_entry->signature == dwo_entry->signature);
4705   gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4706   gdb_assert (sig_entry->type_unit_group == NULL);
4707   gdb_assert (sig_entry->dwo_unit == NULL);
4708
4709   sig_entry->per_cu.section = dwo_entry->section;
4710   sig_entry->per_cu.offset = dwo_entry->offset;
4711   sig_entry->per_cu.length = dwo_entry->length;
4712   sig_entry->per_cu.reading_dwo_directly = 1;
4713   sig_entry->per_cu.objfile = objfile;
4714   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4715   sig_entry->dwo_unit = dwo_entry;
4716 }
4717
4718 /* Subroutine of lookup_signatured_type.
4719    If we haven't read the TU yet, create the signatured_type data structure
4720    for a TU to be read in directly from a DWO file, bypassing the stub.
4721    This is the "Stay in DWO Optimization": When there is no DWP file and we're
4722    using .gdb_index, then when reading a CU we want to stay in the DWO file
4723    containing that CU.  Otherwise we could end up reading several other DWO
4724    files (due to comdat folding) to process the transitive closure of all the
4725    mentioned TUs, and that can be slow.  The current DWO file will have every
4726    type signature that it needs.
4727    We only do this for .gdb_index because in the psymtab case we already have
4728    to read all the DWOs to build the type unit groups.  */
4729
4730 static struct signatured_type *
4731 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4732 {
4733   struct objfile *objfile = dwarf2_per_objfile->objfile;
4734   struct dwo_file *dwo_file;
4735   struct dwo_unit find_dwo_entry, *dwo_entry;
4736   struct signatured_type find_sig_entry, *sig_entry;
4737
4738   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4739
4740   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4741      dwo_unit of the TU itself.  */
4742   dwo_file = cu->dwo_unit->dwo_file;
4743
4744   /* We only ever need to read in one copy of a signatured type.
4745      Just use the global signatured_types array.  If this is the first time
4746      we're reading this type, replace the recorded data from .gdb_index with
4747      this TU.  */
4748
4749   if (dwarf2_per_objfile->signatured_types == NULL)
4750     return NULL;
4751   find_sig_entry.signature = sig;
4752   sig_entry = htab_find (dwarf2_per_objfile->signatured_types, &find_sig_entry);
4753   if (sig_entry == NULL)
4754     return NULL;
4755
4756   /* We can get here with the TU already read, *or* in the process of being
4757      read.  Don't reassign it if that's the case.  Also note that if the TU is
4758      already being read, it may not have come from a DWO, the program may be
4759      a mix of Fission-compiled code and non-Fission-compiled code.  */
4760   /* Have we already tried to read this TU?  */
4761   if (sig_entry->per_cu.tu_read)
4762     return sig_entry;
4763
4764   /* Ok, this is the first time we're reading this TU.  */
4765   if (dwo_file->tus == NULL)
4766     return NULL;
4767   find_dwo_entry.signature = sig;
4768   dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4769   if (dwo_entry == NULL)
4770     return NULL;
4771
4772   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4773   sig_entry->per_cu.tu_read = 1;
4774   return sig_entry;
4775 }
4776
4777 /* Subroutine of lookup_dwp_signatured_type.
4778    Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.  */
4779
4780 static struct signatured_type *
4781 add_type_unit (ULONGEST sig)
4782 {
4783   struct objfile *objfile = dwarf2_per_objfile->objfile;
4784   int n_type_units = dwarf2_per_objfile->n_type_units;
4785   struct signatured_type *sig_type;
4786   void **slot;
4787
4788   ++n_type_units;
4789   dwarf2_per_objfile->all_type_units =
4790     xrealloc (dwarf2_per_objfile->all_type_units,
4791               n_type_units * sizeof (struct signatured_type *));
4792   dwarf2_per_objfile->n_type_units = n_type_units;
4793   sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4794                              struct signatured_type);
4795   dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4796   sig_type->signature = sig;
4797   sig_type->per_cu.is_debug_types = 1;
4798   sig_type->per_cu.v.quick =
4799     OBSTACK_ZALLOC (&objfile->objfile_obstack,
4800                     struct dwarf2_per_cu_quick_data);
4801   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4802                          sig_type, INSERT);
4803   gdb_assert (*slot == NULL);
4804   *slot = sig_type;
4805   /* The rest of sig_type must be filled in by the caller.  */
4806   return sig_type;
4807 }
4808
4809 /* Subroutine of lookup_signatured_type.
4810    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
4811    then try the DWP file.
4812    Normally this "can't happen", but if there's a bug in signature
4813    generation and/or the DWP file is built incorrectly, it can happen.
4814    Using the type directly from the DWP file means we don't have the stub
4815    which has some useful attributes (e.g., DW_AT_comp_dir), but they're
4816    not critical.  [Eventually the stub may go away for type units anyway.]  */
4817
4818 static struct signatured_type *
4819 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4820 {
4821   struct objfile *objfile = dwarf2_per_objfile->objfile;
4822   struct dwp_file *dwp_file = get_dwp_file ();
4823   struct dwo_unit *dwo_entry;
4824   struct signatured_type find_sig_entry, *sig_entry;
4825
4826   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4827   gdb_assert (dwp_file != NULL);
4828
4829   if (dwarf2_per_objfile->signatured_types != NULL)
4830     {
4831       find_sig_entry.signature = sig;
4832       sig_entry = htab_find (dwarf2_per_objfile->signatured_types,
4833                              &find_sig_entry);
4834       if (sig_entry != NULL)
4835         return sig_entry;
4836     }
4837
4838   /* This is the "shouldn't happen" case.
4839      Try the DWP file and hope for the best.  */
4840   if (dwp_file->tus == NULL)
4841     return NULL;
4842   dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4843                                       sig, 1 /* is_debug_types */);
4844   if (dwo_entry == NULL)
4845     return NULL;
4846
4847   sig_entry = add_type_unit (sig);
4848   fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4849
4850   /* The caller will signal a complaint if we return NULL.
4851      Here we don't return NULL but we still want to complain.  */
4852   complaint (&symfile_complaints,
4853              _("Bad type signature %s referenced by %s at 0x%x,"
4854                " coping by using copy in DWP [in module %s]"),
4855              hex_string (sig),
4856              cu->per_cu->is_debug_types ? "TU" : "CU",
4857              cu->per_cu->offset.sect_off,
4858              objfile_name (objfile));
4859
4860   return sig_entry;
4861 }
4862
4863 /* Lookup a signature based type for DW_FORM_ref_sig8.
4864    Returns NULL if signature SIG is not present in the table.
4865    It is up to the caller to complain about this.  */
4866
4867 static struct signatured_type *
4868 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4869 {
4870   if (cu->dwo_unit
4871       && dwarf2_per_objfile->using_index)
4872     {
4873       /* We're in a DWO/DWP file, and we're using .gdb_index.
4874          These cases require special processing.  */
4875       if (get_dwp_file () == NULL)
4876         return lookup_dwo_signatured_type (cu, sig);
4877       else
4878         return lookup_dwp_signatured_type (cu, sig);
4879     }
4880   else
4881     {
4882       struct signatured_type find_entry, *entry;
4883
4884       if (dwarf2_per_objfile->signatured_types == NULL)
4885         return NULL;
4886       find_entry.signature = sig;
4887       entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
4888       return entry;
4889     }
4890 }
4891 \f
4892 /* Low level DIE reading support.  */
4893
4894 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
4895
4896 static void
4897 init_cu_die_reader (struct die_reader_specs *reader,
4898                     struct dwarf2_cu *cu,
4899                     struct dwarf2_section_info *section,
4900                     struct dwo_file *dwo_file)
4901 {
4902   gdb_assert (section->readin && section->buffer != NULL);
4903   reader->abfd = get_section_bfd_owner (section);
4904   reader->cu = cu;
4905   reader->dwo_file = dwo_file;
4906   reader->die_section = section;
4907   reader->buffer = section->buffer;
4908   reader->buffer_end = section->buffer + section->size;
4909   reader->comp_dir = NULL;
4910 }
4911
4912 /* Subroutine of init_cutu_and_read_dies to simplify it.
4913    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
4914    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
4915    already.
4916
4917    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
4918    from it to the DIE in the DWO.  If NULL we are skipping the stub.
4919    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
4920    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
4921    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
4922    STUB_COMP_DIR may be non-NULL.
4923    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
4924    are filled in with the info of the DIE from the DWO file.
4925    ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
4926    provided an abbrev table to use.
4927    The result is non-zero if a valid (non-dummy) DIE was found.  */
4928
4929 static int
4930 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
4931                         struct dwo_unit *dwo_unit,
4932                         int abbrev_table_provided,
4933                         struct die_info *stub_comp_unit_die,
4934                         const char *stub_comp_dir,
4935                         struct die_reader_specs *result_reader,
4936                         const gdb_byte **result_info_ptr,
4937                         struct die_info **result_comp_unit_die,
4938                         int *result_has_children)
4939 {
4940   struct objfile *objfile = dwarf2_per_objfile->objfile;
4941   struct dwarf2_cu *cu = this_cu->cu;
4942   struct dwarf2_section_info *section;
4943   bfd *abfd;
4944   const gdb_byte *begin_info_ptr, *info_ptr;
4945   ULONGEST signature; /* Or dwo_id.  */
4946   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
4947   int i,num_extra_attrs;
4948   struct dwarf2_section_info *dwo_abbrev_section;
4949   struct attribute *attr;
4950   struct die_info *comp_unit_die;
4951
4952   /* At most one of these may be provided.  */
4953   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
4954
4955   /* These attributes aren't processed until later:
4956      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
4957      DW_AT_comp_dir is used now, to find the DWO file, but it is also
4958      referenced later.  However, these attributes are found in the stub
4959      which we won't have later.  In order to not impose this complication
4960      on the rest of the code, we read them here and copy them to the
4961      DWO CU/TU die.  */
4962
4963   stmt_list = NULL;
4964   low_pc = NULL;
4965   high_pc = NULL;
4966   ranges = NULL;
4967   comp_dir = NULL;
4968
4969   if (stub_comp_unit_die != NULL)
4970     {
4971       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
4972          DWO file.  */
4973       if (! this_cu->is_debug_types)
4974         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
4975       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
4976       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
4977       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
4978       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
4979
4980       /* There should be a DW_AT_addr_base attribute here (if needed).
4981          We need the value before we can process DW_FORM_GNU_addr_index.  */
4982       cu->addr_base = 0;
4983       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
4984       if (attr)
4985         cu->addr_base = DW_UNSND (attr);
4986
4987       /* There should be a DW_AT_ranges_base attribute here (if needed).
4988          We need the value before we can process DW_AT_ranges.  */
4989       cu->ranges_base = 0;
4990       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
4991       if (attr)
4992         cu->ranges_base = DW_UNSND (attr);
4993     }
4994   else if (stub_comp_dir != NULL)
4995     {
4996       /* Reconstruct the comp_dir attribute to simplify the code below.  */
4997       comp_dir = (struct attribute *)
4998         obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
4999       comp_dir->name = DW_AT_comp_dir;
5000       comp_dir->form = DW_FORM_string;
5001       DW_STRING_IS_CANONICAL (comp_dir) = 0;
5002       DW_STRING (comp_dir) = stub_comp_dir;
5003     }
5004
5005   /* Set up for reading the DWO CU/TU.  */
5006   cu->dwo_unit = dwo_unit;
5007   section = dwo_unit->section;
5008   dwarf2_read_section (objfile, section);
5009   abfd = get_section_bfd_owner (section);
5010   begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5011   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5012   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5013
5014   if (this_cu->is_debug_types)
5015     {
5016       ULONGEST header_signature;
5017       cu_offset type_offset_in_tu;
5018       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5019
5020       info_ptr = read_and_check_type_unit_head (&cu->header, section,
5021                                                 dwo_abbrev_section,
5022                                                 info_ptr,
5023                                                 &header_signature,
5024                                                 &type_offset_in_tu);
5025       /* This is not an assert because it can be caused by bad debug info.  */
5026       if (sig_type->signature != header_signature)
5027         {
5028           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5029                    " TU at offset 0x%x [in module %s]"),
5030                  hex_string (sig_type->signature),
5031                  hex_string (header_signature),
5032                  dwo_unit->offset.sect_off,
5033                  bfd_get_filename (abfd));
5034         }
5035       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5036       /* For DWOs coming from DWP files, we don't know the CU length
5037          nor the type's offset in the TU until now.  */
5038       dwo_unit->length = get_cu_length (&cu->header);
5039       dwo_unit->type_offset_in_tu = type_offset_in_tu;
5040
5041       /* Establish the type offset that can be used to lookup the type.
5042          For DWO files, we don't know it until now.  */
5043       sig_type->type_offset_in_section.sect_off =
5044         dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5045     }
5046   else
5047     {
5048       info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5049                                                 dwo_abbrev_section,
5050                                                 info_ptr, 0);
5051       gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5052       /* For DWOs coming from DWP files, we don't know the CU length
5053          until now.  */
5054       dwo_unit->length = get_cu_length (&cu->header);
5055     }
5056
5057   /* Replace the CU's original abbrev table with the DWO's.
5058      Reminder: We can't read the abbrev table until we've read the header.  */
5059   if (abbrev_table_provided)
5060     {
5061       /* Don't free the provided abbrev table, the caller of
5062          init_cutu_and_read_dies owns it.  */
5063       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5064       /* Ensure the DWO abbrev table gets freed.  */
5065       make_cleanup (dwarf2_free_abbrev_table, cu);
5066     }
5067   else
5068     {
5069       dwarf2_free_abbrev_table (cu);
5070       dwarf2_read_abbrevs (cu, dwo_abbrev_section);
5071       /* Leave any existing abbrev table cleanup as is.  */
5072     }
5073
5074   /* Read in the die, but leave space to copy over the attributes
5075      from the stub.  This has the benefit of simplifying the rest of
5076      the code - all the work to maintain the illusion of a single
5077      DW_TAG_{compile,type}_unit DIE is done here.  */
5078   num_extra_attrs = ((stmt_list != NULL)
5079                      + (low_pc != NULL)
5080                      + (high_pc != NULL)
5081                      + (ranges != NULL)
5082                      + (comp_dir != NULL));
5083   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5084                               result_has_children, num_extra_attrs);
5085
5086   /* Copy over the attributes from the stub to the DIE we just read in.  */
5087   comp_unit_die = *result_comp_unit_die;
5088   i = comp_unit_die->num_attrs;
5089   if (stmt_list != NULL)
5090     comp_unit_die->attrs[i++] = *stmt_list;
5091   if (low_pc != NULL)
5092     comp_unit_die->attrs[i++] = *low_pc;
5093   if (high_pc != NULL)
5094     comp_unit_die->attrs[i++] = *high_pc;
5095   if (ranges != NULL)
5096     comp_unit_die->attrs[i++] = *ranges;
5097   if (comp_dir != NULL)
5098     comp_unit_die->attrs[i++] = *comp_dir;
5099   comp_unit_die->num_attrs += num_extra_attrs;
5100
5101   if (dwarf2_die_debug)
5102     {
5103       fprintf_unfiltered (gdb_stdlog,
5104                           "Read die from %s@0x%x of %s:\n",
5105                           get_section_name (section),
5106                           (unsigned) (begin_info_ptr - section->buffer),
5107                           bfd_get_filename (abfd));
5108       dump_die (comp_unit_die, dwarf2_die_debug);
5109     }
5110
5111   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
5112      TUs by skipping the stub and going directly to the entry in the DWO file.
5113      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5114      to get it via circuitous means.  Blech.  */
5115   if (comp_dir != NULL)
5116     result_reader->comp_dir = DW_STRING (comp_dir);
5117
5118   /* Skip dummy compilation units.  */
5119   if (info_ptr >= begin_info_ptr + dwo_unit->length
5120       || peek_abbrev_code (abfd, info_ptr) == 0)
5121     return 0;
5122
5123   *result_info_ptr = info_ptr;
5124   return 1;
5125 }
5126
5127 /* Subroutine of init_cutu_and_read_dies to simplify it.
5128    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
5129    Returns NULL if the specified DWO unit cannot be found.  */
5130
5131 static struct dwo_unit *
5132 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5133                  struct die_info *comp_unit_die)
5134 {
5135   struct dwarf2_cu *cu = this_cu->cu;
5136   struct attribute *attr;
5137   ULONGEST signature;
5138   struct dwo_unit *dwo_unit;
5139   const char *comp_dir, *dwo_name;
5140
5141   gdb_assert (cu != NULL);
5142
5143   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
5144   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5145   gdb_assert (attr != NULL);
5146   dwo_name = DW_STRING (attr);
5147   comp_dir = NULL;
5148   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5149   if (attr)
5150     comp_dir = DW_STRING (attr);
5151
5152   if (this_cu->is_debug_types)
5153     {
5154       struct signatured_type *sig_type;
5155
5156       /* Since this_cu is the first member of struct signatured_type,
5157          we can go from a pointer to one to a pointer to the other.  */
5158       sig_type = (struct signatured_type *) this_cu;
5159       signature = sig_type->signature;
5160       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5161     }
5162   else
5163     {
5164       struct attribute *attr;
5165
5166       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5167       if (! attr)
5168         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5169                  " [in module %s]"),
5170                dwo_name, objfile_name (this_cu->objfile));
5171       signature = DW_UNSND (attr);
5172       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5173                                        signature);
5174     }
5175
5176   return dwo_unit;
5177 }
5178
5179 /* Subroutine of init_cutu_and_read_dies to simplify it.
5180    Read a TU directly from a DWO file, bypassing the stub.  */
5181
5182 static void
5183 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu, int keep,
5184                            die_reader_func_ftype *die_reader_func,
5185                            void *data)
5186 {
5187   struct dwarf2_cu *cu;
5188   struct signatured_type *sig_type;
5189   struct cleanup *cleanups, *free_cu_cleanup;
5190   struct die_reader_specs reader;
5191   const gdb_byte *info_ptr;
5192   struct die_info *comp_unit_die;
5193   int has_children;
5194
5195   /* Verify we can do the following downcast, and that we have the
5196      data we need.  */
5197   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5198   sig_type = (struct signatured_type *) this_cu;
5199   gdb_assert (sig_type->dwo_unit != NULL);
5200
5201   cleanups = make_cleanup (null_cleanup, NULL);
5202
5203   gdb_assert (this_cu->cu == NULL);
5204   cu = xmalloc (sizeof (*cu));
5205   init_one_comp_unit (cu, this_cu);
5206   /* If an error occurs while loading, release our storage.  */
5207   free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5208
5209   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5210                               0 /* abbrev_table_provided */,
5211                               NULL /* stub_comp_unit_die */,
5212                               sig_type->dwo_unit->dwo_file->comp_dir,
5213                               &reader, &info_ptr,
5214                               &comp_unit_die, &has_children) == 0)
5215     {
5216       /* Dummy die.  */
5217       do_cleanups (cleanups);
5218       return;
5219     }
5220
5221   /* All the "real" work is done here.  */
5222   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5223
5224   /* This duplicates some code in init_cutu_and_read_dies,
5225      but the alternative is making the latter more complex.
5226      This function is only for the special case of using DWO files directly:
5227      no point in overly complicating the general case just to handle this.  */
5228   if (keep)
5229     {
5230       /* We've successfully allocated this compilation unit.  Let our
5231          caller clean it up when finished with it.  */
5232       discard_cleanups (free_cu_cleanup);
5233
5234       /* We can only discard free_cu_cleanup and all subsequent cleanups.
5235          So we have to manually free the abbrev table.  */
5236       dwarf2_free_abbrev_table (cu);
5237
5238       /* Link this CU into read_in_chain.  */
5239       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5240       dwarf2_per_objfile->read_in_chain = this_cu;
5241     }
5242   else
5243     do_cleanups (free_cu_cleanup);
5244
5245   do_cleanups (cleanups);
5246 }
5247
5248 /* Initialize a CU (or TU) and read its DIEs.
5249    If the CU defers to a DWO file, read the DWO file as well.
5250
5251    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5252    Otherwise the table specified in the comp unit header is read in and used.
5253    This is an optimization for when we already have the abbrev table.
5254
5255    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5256    Otherwise, a new CU is allocated with xmalloc.
5257
5258    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5259    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
5260
5261    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5262    linker) then DIE_READER_FUNC will not get called.  */
5263
5264 static void
5265 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
5266                          struct abbrev_table *abbrev_table,
5267                          int use_existing_cu, int keep,
5268                          die_reader_func_ftype *die_reader_func,
5269                          void *data)
5270 {
5271   struct objfile *objfile = dwarf2_per_objfile->objfile;
5272   struct dwarf2_section_info *section = this_cu->section;
5273   bfd *abfd = get_section_bfd_owner (section);
5274   struct dwarf2_cu *cu;
5275   const gdb_byte *begin_info_ptr, *info_ptr;
5276   struct die_reader_specs reader;
5277   struct die_info *comp_unit_die;
5278   int has_children;
5279   struct attribute *attr;
5280   struct cleanup *cleanups, *free_cu_cleanup = NULL;
5281   struct signatured_type *sig_type = NULL;
5282   struct dwarf2_section_info *abbrev_section;
5283   /* Non-zero if CU currently points to a DWO file and we need to
5284      reread it.  When this happens we need to reread the skeleton die
5285      before we can reread the DWO file (this only applies to CUs, not TUs).  */
5286   int rereading_dwo_cu = 0;
5287
5288   if (dwarf2_die_debug)
5289     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5290                         this_cu->is_debug_types ? "type" : "comp",
5291                         this_cu->offset.sect_off);
5292
5293   if (use_existing_cu)
5294     gdb_assert (keep);
5295
5296   /* If we're reading a TU directly from a DWO file, including a virtual DWO
5297      file (instead of going through the stub), short-circuit all of this.  */
5298   if (this_cu->reading_dwo_directly)
5299     {
5300       /* Narrow down the scope of possibilities to have to understand.  */
5301       gdb_assert (this_cu->is_debug_types);
5302       gdb_assert (abbrev_table == NULL);
5303       gdb_assert (!use_existing_cu);
5304       init_tu_and_read_dwo_dies (this_cu, keep, die_reader_func, data);
5305       return;
5306     }
5307
5308   cleanups = make_cleanup (null_cleanup, NULL);
5309
5310   /* This is cheap if the section is already read in.  */
5311   dwarf2_read_section (objfile, section);
5312
5313   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5314
5315   abbrev_section = get_abbrev_section_for_cu (this_cu);
5316
5317   if (use_existing_cu && this_cu->cu != NULL)
5318     {
5319       cu = this_cu->cu;
5320
5321       /* If this CU is from a DWO file we need to start over, we need to
5322          refetch the attributes from the skeleton CU.
5323          This could be optimized by retrieving those attributes from when we
5324          were here the first time: the previous comp_unit_die was stored in
5325          comp_unit_obstack.  But there's no data yet that we need this
5326          optimization.  */
5327       if (cu->dwo_unit != NULL)
5328         rereading_dwo_cu = 1;
5329     }
5330   else
5331     {
5332       /* If !use_existing_cu, this_cu->cu must be NULL.  */
5333       gdb_assert (this_cu->cu == NULL);
5334
5335       cu = xmalloc (sizeof (*cu));
5336       init_one_comp_unit (cu, this_cu);
5337
5338       /* If an error occurs while loading, release our storage.  */
5339       free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5340     }
5341
5342   /* Get the header.  */
5343   if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5344     {
5345       /* We already have the header, there's no need to read it in again.  */
5346       info_ptr += cu->header.first_die_offset.cu_off;
5347     }
5348   else
5349     {
5350       if (this_cu->is_debug_types)
5351         {
5352           ULONGEST signature;
5353           cu_offset type_offset_in_tu;
5354
5355           info_ptr = read_and_check_type_unit_head (&cu->header, section,
5356                                                     abbrev_section, info_ptr,
5357                                                     &signature,
5358                                                     &type_offset_in_tu);
5359
5360           /* Since per_cu is the first member of struct signatured_type,
5361              we can go from a pointer to one to a pointer to the other.  */
5362           sig_type = (struct signatured_type *) this_cu;
5363           gdb_assert (sig_type->signature == signature);
5364           gdb_assert (sig_type->type_offset_in_tu.cu_off
5365                       == type_offset_in_tu.cu_off);
5366           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5367
5368           /* LENGTH has not been set yet for type units if we're
5369              using .gdb_index.  */
5370           this_cu->length = get_cu_length (&cu->header);
5371
5372           /* Establish the type offset that can be used to lookup the type.  */
5373           sig_type->type_offset_in_section.sect_off =
5374             this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
5375         }
5376       else
5377         {
5378           info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5379                                                     abbrev_section,
5380                                                     info_ptr, 0);
5381
5382           gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5383           gdb_assert (this_cu->length == get_cu_length (&cu->header));
5384         }
5385     }
5386
5387   /* Skip dummy compilation units.  */
5388   if (info_ptr >= begin_info_ptr + this_cu->length
5389       || peek_abbrev_code (abfd, info_ptr) == 0)
5390     {
5391       do_cleanups (cleanups);
5392       return;
5393     }
5394
5395   /* If we don't have them yet, read the abbrevs for this compilation unit.
5396      And if we need to read them now, make sure they're freed when we're
5397      done.  Note that it's important that if the CU had an abbrev table
5398      on entry we don't free it when we're done: Somewhere up the call stack
5399      it may be in use.  */
5400   if (abbrev_table != NULL)
5401     {
5402       gdb_assert (cu->abbrev_table == NULL);
5403       gdb_assert (cu->header.abbrev_offset.sect_off
5404                   == abbrev_table->offset.sect_off);
5405       cu->abbrev_table = abbrev_table;
5406     }
5407   else if (cu->abbrev_table == NULL)
5408     {
5409       dwarf2_read_abbrevs (cu, abbrev_section);
5410       make_cleanup (dwarf2_free_abbrev_table, cu);
5411     }
5412   else if (rereading_dwo_cu)
5413     {
5414       dwarf2_free_abbrev_table (cu);
5415       dwarf2_read_abbrevs (cu, abbrev_section);
5416     }
5417
5418   /* Read the top level CU/TU die.  */
5419   init_cu_die_reader (&reader, cu, section, NULL);
5420   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5421
5422   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5423      from the DWO file.
5424      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5425      DWO CU, that this test will fail (the attribute will not be present).  */
5426   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5427   if (attr)
5428     {
5429       struct dwo_unit *dwo_unit;
5430       struct die_info *dwo_comp_unit_die;
5431
5432       if (has_children)
5433         {
5434           complaint (&symfile_complaints,
5435                      _("compilation unit with DW_AT_GNU_dwo_name"
5436                        " has children (offset 0x%x) [in module %s]"),
5437                      this_cu->offset.sect_off, bfd_get_filename (abfd));
5438         }
5439       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
5440       if (dwo_unit != NULL)
5441         {
5442           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5443                                       abbrev_table != NULL,
5444                                       comp_unit_die, NULL,
5445                                       &reader, &info_ptr,
5446                                       &dwo_comp_unit_die, &has_children) == 0)
5447             {
5448               /* Dummy die.  */
5449               do_cleanups (cleanups);
5450               return;
5451             }
5452           comp_unit_die = dwo_comp_unit_die;
5453         }
5454       else
5455         {
5456           /* Yikes, we couldn't find the rest of the DIE, we only have
5457              the stub.  A complaint has already been logged.  There's
5458              not much more we can do except pass on the stub DIE to
5459              die_reader_func.  We don't want to throw an error on bad
5460              debug info.  */
5461         }
5462     }
5463
5464   /* All of the above is setup for this call.  Yikes.  */
5465   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5466
5467   /* Done, clean up.  */
5468   if (free_cu_cleanup != NULL)
5469     {
5470       if (keep)
5471         {
5472           /* We've successfully allocated this compilation unit.  Let our
5473              caller clean it up when finished with it.  */
5474           discard_cleanups (free_cu_cleanup);
5475
5476           /* We can only discard free_cu_cleanup and all subsequent cleanups.
5477              So we have to manually free the abbrev table.  */
5478           dwarf2_free_abbrev_table (cu);
5479
5480           /* Link this CU into read_in_chain.  */
5481           this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5482           dwarf2_per_objfile->read_in_chain = this_cu;
5483         }
5484       else
5485         do_cleanups (free_cu_cleanup);
5486     }
5487
5488   do_cleanups (cleanups);
5489 }
5490
5491 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5492    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5493    to have already done the lookup to find the DWO file).
5494
5495    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
5496    THIS_CU->is_debug_types, but nothing else.
5497
5498    We fill in THIS_CU->length.
5499
5500    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5501    linker) then DIE_READER_FUNC will not get called.
5502
5503    THIS_CU->cu is always freed when done.
5504    This is done in order to not leave THIS_CU->cu in a state where we have
5505    to care whether it refers to the "main" CU or the DWO CU.  */
5506
5507 static void
5508 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
5509                                    struct dwo_file *dwo_file,
5510                                    die_reader_func_ftype *die_reader_func,
5511                                    void *data)
5512 {
5513   struct objfile *objfile = dwarf2_per_objfile->objfile;
5514   struct dwarf2_section_info *section = this_cu->section;
5515   bfd *abfd = get_section_bfd_owner (section);
5516   struct dwarf2_section_info *abbrev_section;
5517   struct dwarf2_cu cu;
5518   const gdb_byte *begin_info_ptr, *info_ptr;
5519   struct die_reader_specs reader;
5520   struct cleanup *cleanups;
5521   struct die_info *comp_unit_die;
5522   int has_children;
5523
5524   if (dwarf2_die_debug)
5525     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5526                         this_cu->is_debug_types ? "type" : "comp",
5527                         this_cu->offset.sect_off);
5528
5529   gdb_assert (this_cu->cu == NULL);
5530
5531   abbrev_section = (dwo_file != NULL
5532                     ? &dwo_file->sections.abbrev
5533                     : get_abbrev_section_for_cu (this_cu));
5534
5535   /* This is cheap if the section is already read in.  */
5536   dwarf2_read_section (objfile, section);
5537
5538   init_one_comp_unit (&cu, this_cu);
5539
5540   cleanups = make_cleanup (free_stack_comp_unit, &cu);
5541
5542   begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
5543   info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5544                                             abbrev_section, info_ptr,
5545                                             this_cu->is_debug_types);
5546
5547   this_cu->length = get_cu_length (&cu.header);
5548
5549   /* Skip dummy compilation units.  */
5550   if (info_ptr >= begin_info_ptr + this_cu->length
5551       || peek_abbrev_code (abfd, info_ptr) == 0)
5552     {
5553       do_cleanups (cleanups);
5554       return;
5555     }
5556
5557   dwarf2_read_abbrevs (&cu, abbrev_section);
5558   make_cleanup (dwarf2_free_abbrev_table, &cu);
5559
5560   init_cu_die_reader (&reader, &cu, section, dwo_file);
5561   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5562
5563   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5564
5565   do_cleanups (cleanups);
5566 }
5567
5568 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5569    does not lookup the specified DWO file.
5570    This cannot be used to read DWO files.
5571
5572    THIS_CU->cu is always freed when done.
5573    This is done in order to not leave THIS_CU->cu in a state where we have
5574    to care whether it refers to the "main" CU or the DWO CU.
5575    We can revisit this if the data shows there's a performance issue.  */
5576
5577 static void
5578 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5579                                 die_reader_func_ftype *die_reader_func,
5580                                 void *data)
5581 {
5582   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
5583 }
5584 \f
5585 /* Type Unit Groups.
5586
5587    Type Unit Groups are a way to collapse the set of all TUs (type units) into
5588    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
5589    so that all types coming from the same compilation (.o file) are grouped
5590    together.  A future step could be to put the types in the same symtab as
5591    the CU the types ultimately came from.  */
5592
5593 static hashval_t
5594 hash_type_unit_group (const void *item)
5595 {
5596   const struct type_unit_group *tu_group = item;
5597
5598   return hash_stmt_list_entry (&tu_group->hash);
5599 }
5600
5601 static int
5602 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
5603 {
5604   const struct type_unit_group *lhs = item_lhs;
5605   const struct type_unit_group *rhs = item_rhs;
5606
5607   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
5608 }
5609
5610 /* Allocate a hash table for type unit groups.  */
5611
5612 static htab_t
5613 allocate_type_unit_groups_table (void)
5614 {
5615   return htab_create_alloc_ex (3,
5616                                hash_type_unit_group,
5617                                eq_type_unit_group,
5618                                NULL,
5619                                &dwarf2_per_objfile->objfile->objfile_obstack,
5620                                hashtab_obstack_allocate,
5621                                dummy_obstack_deallocate);
5622 }
5623
5624 /* Type units that don't have DW_AT_stmt_list are grouped into their own
5625    partial symtabs.  We combine several TUs per psymtab to not let the size
5626    of any one psymtab grow too big.  */
5627 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5628 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
5629
5630 /* Helper routine for get_type_unit_group.
5631    Create the type_unit_group object used to hold one or more TUs.  */
5632
5633 static struct type_unit_group *
5634 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
5635 {
5636   struct objfile *objfile = dwarf2_per_objfile->objfile;
5637   struct dwarf2_per_cu_data *per_cu;
5638   struct type_unit_group *tu_group;
5639
5640   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5641                              struct type_unit_group);
5642   per_cu = &tu_group->per_cu;
5643   per_cu->objfile = objfile;
5644
5645   if (dwarf2_per_objfile->using_index)
5646     {
5647       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5648                                         struct dwarf2_per_cu_quick_data);
5649     }
5650   else
5651     {
5652       unsigned int line_offset = line_offset_struct.sect_off;
5653       struct partial_symtab *pst;
5654       char *name;
5655
5656       /* Give the symtab a useful name for debug purposes.  */
5657       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5658         name = xstrprintf ("<type_units_%d>",
5659                            (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5660       else
5661         name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5662
5663       pst = create_partial_symtab (per_cu, name);
5664       pst->anonymous = 1;
5665
5666       xfree (name);
5667     }
5668
5669   tu_group->hash.dwo_unit = cu->dwo_unit;
5670   tu_group->hash.line_offset = line_offset_struct;
5671
5672   return tu_group;
5673 }
5674
5675 /* Look up the type_unit_group for type unit CU, and create it if necessary.
5676    STMT_LIST is a DW_AT_stmt_list attribute.  */
5677
5678 static struct type_unit_group *
5679 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
5680 {
5681   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5682   struct type_unit_group *tu_group;
5683   void **slot;
5684   unsigned int line_offset;
5685   struct type_unit_group type_unit_group_for_lookup;
5686
5687   if (dwarf2_per_objfile->type_unit_groups == NULL)
5688     {
5689       dwarf2_per_objfile->type_unit_groups =
5690         allocate_type_unit_groups_table ();
5691     }
5692
5693   /* Do we need to create a new group, or can we use an existing one?  */
5694
5695   if (stmt_list)
5696     {
5697       line_offset = DW_UNSND (stmt_list);
5698       ++tu_stats->nr_symtab_sharers;
5699     }
5700   else
5701     {
5702       /* Ugh, no stmt_list.  Rare, but we have to handle it.
5703          We can do various things here like create one group per TU or
5704          spread them over multiple groups to split up the expansion work.
5705          To avoid worst case scenarios (too many groups or too large groups)
5706          we, umm, group them in bunches.  */
5707       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5708                      | (tu_stats->nr_stmt_less_type_units
5709                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5710       ++tu_stats->nr_stmt_less_type_units;
5711     }
5712
5713   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5714   type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
5715   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5716                          &type_unit_group_for_lookup, INSERT);
5717   if (*slot != NULL)
5718     {
5719       tu_group = *slot;
5720       gdb_assert (tu_group != NULL);
5721     }
5722   else
5723     {
5724       sect_offset line_offset_struct;
5725
5726       line_offset_struct.sect_off = line_offset;
5727       tu_group = create_type_unit_group (cu, line_offset_struct);
5728       *slot = tu_group;
5729       ++tu_stats->nr_symtabs;
5730     }
5731
5732   return tu_group;
5733 }
5734
5735 /* Struct used to sort TUs by their abbreviation table offset.  */
5736
5737 struct tu_abbrev_offset
5738 {
5739   struct signatured_type *sig_type;
5740   sect_offset abbrev_offset;
5741 };
5742
5743 /* Helper routine for build_type_unit_groups, passed to qsort.  */
5744
5745 static int
5746 sort_tu_by_abbrev_offset (const void *ap, const void *bp)
5747 {
5748   const struct tu_abbrev_offset * const *a = ap;
5749   const struct tu_abbrev_offset * const *b = bp;
5750   unsigned int aoff = (*a)->abbrev_offset.sect_off;
5751   unsigned int boff = (*b)->abbrev_offset.sect_off;
5752
5753   return (aoff > boff) - (aoff < boff);
5754 }
5755
5756 /* Efficiently read all the type units, calling init_cutu_and_read_dies on
5757    each one passing FUNC,DATA.
5758
5759    The efficiency is because we sort TUs by the abbrev table they use and
5760    only read each abbrev table once.  In one program there are 200K TUs
5761    sharing 8K abbrev tables.
5762
5763    The main purpose of this function is to support building the
5764    dwarf2_per_objfile->type_unit_groups table.
5765    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
5766    can collapse the search space by grouping them by stmt_list.
5767    The savings can be significant, in the same program from above the 200K TUs
5768    share 8K stmt_list tables.
5769
5770    FUNC is expected to call get_type_unit_group, which will create the
5771    struct type_unit_group if necessary and add it to
5772    dwarf2_per_objfile->type_unit_groups.  */
5773
5774 static void
5775 build_type_unit_groups (die_reader_func_ftype *func, void *data)
5776 {
5777   struct objfile *objfile = dwarf2_per_objfile->objfile;
5778   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5779   struct cleanup *cleanups;
5780   struct abbrev_table *abbrev_table;
5781   sect_offset abbrev_offset;
5782   struct tu_abbrev_offset *sorted_by_abbrev;
5783   struct type_unit_group **iter;
5784   int i;
5785
5786   /* It's up to the caller to not call us multiple times.  */
5787   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
5788
5789   if (dwarf2_per_objfile->n_type_units == 0)
5790     return;
5791
5792   /* TUs typically share abbrev tables, and there can be way more TUs than
5793      abbrev tables.  Sort by abbrev table to reduce the number of times we
5794      read each abbrev table in.
5795      Alternatives are to punt or to maintain a cache of abbrev tables.
5796      This is simpler and efficient enough for now.
5797
5798      Later we group TUs by their DW_AT_stmt_list value (as this defines the
5799      symtab to use).  Typically TUs with the same abbrev offset have the same
5800      stmt_list value too so in practice this should work well.
5801
5802      The basic algorithm here is:
5803
5804       sort TUs by abbrev table
5805       for each TU with same abbrev table:
5806         read abbrev table if first user
5807         read TU top level DIE
5808           [IWBN if DWO skeletons had DW_AT_stmt_list]
5809         call FUNC  */
5810
5811   if (dwarf2_read_debug)
5812     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
5813
5814   /* Sort in a separate table to maintain the order of all_type_units
5815      for .gdb_index: TU indices directly index all_type_units.  */
5816   sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
5817                               dwarf2_per_objfile->n_type_units);
5818   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5819     {
5820       struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
5821
5822       sorted_by_abbrev[i].sig_type = sig_type;
5823       sorted_by_abbrev[i].abbrev_offset =
5824         read_abbrev_offset (sig_type->per_cu.section,
5825                             sig_type->per_cu.offset);
5826     }
5827   cleanups = make_cleanup (xfree, sorted_by_abbrev);
5828   qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
5829          sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
5830
5831   /* Note: In the .gdb_index case, get_type_unit_group may have already been
5832      called any number of times, so we don't reset tu_stats here.  */
5833
5834   abbrev_offset.sect_off = ~(unsigned) 0;
5835   abbrev_table = NULL;
5836   make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
5837
5838   for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
5839     {
5840       const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
5841
5842       /* Switch to the next abbrev table if necessary.  */
5843       if (abbrev_table == NULL
5844           || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
5845         {
5846           if (abbrev_table != NULL)
5847             {
5848               abbrev_table_free (abbrev_table);
5849               /* Reset to NULL in case abbrev_table_read_table throws
5850                  an error: abbrev_table_free_cleanup will get called.  */
5851               abbrev_table = NULL;
5852             }
5853           abbrev_offset = tu->abbrev_offset;
5854           abbrev_table =
5855             abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
5856                                      abbrev_offset);
5857           ++tu_stats->nr_uniq_abbrev_tables;
5858         }
5859
5860       init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
5861                                func, data);
5862     }
5863
5864   /* type_unit_groups can be NULL if there is an error in the debug info.
5865      Just create an empty table so the rest of gdb doesn't have to watch
5866      for this error case.  */
5867   if (dwarf2_per_objfile->type_unit_groups == NULL)
5868     {
5869       dwarf2_per_objfile->type_unit_groups =
5870         allocate_type_unit_groups_table ();
5871     }
5872
5873   do_cleanups (cleanups);
5874
5875   if (dwarf2_read_debug)
5876     {
5877       fprintf_unfiltered (gdb_stdlog, "Done building type unit groups:\n");
5878       fprintf_unfiltered (gdb_stdlog, "  %d TUs\n",
5879                           dwarf2_per_objfile->n_type_units);
5880       fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
5881                           tu_stats->nr_uniq_abbrev_tables);
5882       fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
5883                           tu_stats->nr_symtabs);
5884       fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
5885                           tu_stats->nr_symtab_sharers);
5886       fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
5887                           tu_stats->nr_stmt_less_type_units);
5888     }
5889 }
5890 \f
5891 /* Partial symbol tables.  */
5892
5893 /* Create a psymtab named NAME and assign it to PER_CU.
5894
5895    The caller must fill in the following details:
5896    dirname, textlow, texthigh.  */
5897
5898 static struct partial_symtab *
5899 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5900 {
5901   struct objfile *objfile = per_cu->objfile;
5902   struct partial_symtab *pst;
5903
5904   pst = start_psymtab_common (objfile, objfile->section_offsets,
5905                               name, 0,
5906                               objfile->global_psymbols.next,
5907                               objfile->static_psymbols.next);
5908
5909   pst->psymtabs_addrmap_supported = 1;
5910
5911   /* This is the glue that links PST into GDB's symbol API.  */
5912   pst->read_symtab_private = per_cu;
5913   pst->read_symtab = dwarf2_read_symtab;
5914   per_cu->v.psymtab = pst;
5915
5916   return pst;
5917 }
5918
5919 /* The DATA object passed to process_psymtab_comp_unit_reader has this
5920    type.  */
5921
5922 struct process_psymtab_comp_unit_data
5923 {
5924   /* True if we are reading a DW_TAG_partial_unit.  */
5925
5926   int want_partial_unit;
5927
5928   /* The "pretend" language that is used if the CU doesn't declare a
5929      language.  */
5930
5931   enum language pretend_language;
5932 };
5933
5934 /* die_reader_func for process_psymtab_comp_unit.  */
5935
5936 static void
5937 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
5938                                   const gdb_byte *info_ptr,
5939                                   struct die_info *comp_unit_die,
5940                                   int has_children,
5941                                   void *data)
5942 {
5943   struct dwarf2_cu *cu = reader->cu;
5944   struct objfile *objfile = cu->objfile;
5945   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5946   struct attribute *attr;
5947   CORE_ADDR baseaddr;
5948   CORE_ADDR best_lowpc = 0, best_highpc = 0;
5949   struct partial_symtab *pst;
5950   int has_pc_info;
5951   const char *filename;
5952   struct process_psymtab_comp_unit_data *info = data;
5953
5954   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
5955     return;
5956
5957   gdb_assert (! per_cu->is_debug_types);
5958
5959   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
5960
5961   cu->list_in_scope = &file_symbols;
5962
5963   /* Allocate a new partial symbol table structure.  */
5964   attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5965   if (attr == NULL || !DW_STRING (attr))
5966     filename = "";
5967   else
5968     filename = DW_STRING (attr);
5969
5970   pst = create_partial_symtab (per_cu, filename);
5971
5972   /* This must be done before calling dwarf2_build_include_psymtabs.  */
5973   attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5974   if (attr != NULL)
5975     pst->dirname = DW_STRING (attr);
5976
5977   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5978
5979   dwarf2_find_base_address (comp_unit_die, cu);
5980
5981   /* Possibly set the default values of LOWPC and HIGHPC from
5982      `DW_AT_ranges'.  */
5983   has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5984                                       &best_highpc, cu, pst);
5985   if (has_pc_info == 1 && best_lowpc < best_highpc)
5986     /* Store the contiguous range if it is not empty; it can be empty for
5987        CUs with no code.  */
5988     addrmap_set_empty (objfile->psymtabs_addrmap,
5989                        best_lowpc + baseaddr,
5990                        best_highpc + baseaddr - 1, pst);
5991
5992   /* Check if comp unit has_children.
5993      If so, read the rest of the partial symbols from this comp unit.
5994      If not, there's no more debug_info for this comp unit.  */
5995   if (has_children)
5996     {
5997       struct partial_die_info *first_die;
5998       CORE_ADDR lowpc, highpc;
5999
6000       lowpc = ((CORE_ADDR) -1);
6001       highpc = ((CORE_ADDR) 0);
6002
6003       first_die = load_partial_dies (reader, info_ptr, 1);
6004
6005       scan_partial_symbols (first_die, &lowpc, &highpc,
6006                             ! has_pc_info, cu);
6007
6008       /* If we didn't find a lowpc, set it to highpc to avoid
6009          complaints from `maint check'.  */
6010       if (lowpc == ((CORE_ADDR) -1))
6011         lowpc = highpc;
6012
6013       /* If the compilation unit didn't have an explicit address range,
6014          then use the information extracted from its child dies.  */
6015       if (! has_pc_info)
6016         {
6017           best_lowpc = lowpc;
6018           best_highpc = highpc;
6019         }
6020     }
6021   pst->textlow = best_lowpc + baseaddr;
6022   pst->texthigh = best_highpc + baseaddr;
6023
6024   pst->n_global_syms = objfile->global_psymbols.next -
6025     (objfile->global_psymbols.list + pst->globals_offset);
6026   pst->n_static_syms = objfile->static_psymbols.next -
6027     (objfile->static_psymbols.list + pst->statics_offset);
6028   sort_pst_symbols (objfile, pst);
6029
6030   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6031     {
6032       int i;
6033       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6034       struct dwarf2_per_cu_data *iter;
6035
6036       /* Fill in 'dependencies' here; we fill in 'users' in a
6037          post-pass.  */
6038       pst->number_of_dependencies = len;
6039       pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6040                                          len * sizeof (struct symtab *));
6041       for (i = 0;
6042            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6043                         i, iter);
6044            ++i)
6045         pst->dependencies[i] = iter->v.psymtab;
6046
6047       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6048     }
6049
6050   /* Get the list of files included in the current compilation unit,
6051      and build a psymtab for each of them.  */
6052   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6053
6054   if (dwarf2_read_debug)
6055     {
6056       struct gdbarch *gdbarch = get_objfile_arch (objfile);
6057
6058       fprintf_unfiltered (gdb_stdlog,
6059                           "Psymtab for %s unit @0x%x: %s - %s"
6060                           ", %d global, %d static syms\n",
6061                           per_cu->is_debug_types ? "type" : "comp",
6062                           per_cu->offset.sect_off,
6063                           paddress (gdbarch, pst->textlow),
6064                           paddress (gdbarch, pst->texthigh),
6065                           pst->n_global_syms, pst->n_static_syms);
6066     }
6067 }
6068
6069 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6070    Process compilation unit THIS_CU for a psymtab.  */
6071
6072 static void
6073 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
6074                            int want_partial_unit,
6075                            enum language pretend_language)
6076 {
6077   struct process_psymtab_comp_unit_data info;
6078
6079   /* If this compilation unit was already read in, free the
6080      cached copy in order to read it in again.  This is
6081      necessary because we skipped some symbols when we first
6082      read in the compilation unit (see load_partial_dies).
6083      This problem could be avoided, but the benefit is unclear.  */
6084   if (this_cu->cu != NULL)
6085     free_one_cached_comp_unit (this_cu);
6086
6087   gdb_assert (! this_cu->is_debug_types);
6088   info.want_partial_unit = want_partial_unit;
6089   info.pretend_language = pretend_language;
6090   init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6091                            process_psymtab_comp_unit_reader,
6092                            &info);
6093
6094   /* Age out any secondary CUs.  */
6095   age_cached_comp_units ();
6096 }
6097
6098 /* Reader function for build_type_psymtabs.  */
6099
6100 static void
6101 build_type_psymtabs_reader (const struct die_reader_specs *reader,
6102                             const gdb_byte *info_ptr,
6103                             struct die_info *type_unit_die,
6104                             int has_children,
6105                             void *data)
6106 {
6107   struct objfile *objfile = dwarf2_per_objfile->objfile;
6108   struct dwarf2_cu *cu = reader->cu;
6109   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6110   struct signatured_type *sig_type;
6111   struct type_unit_group *tu_group;
6112   struct attribute *attr;
6113   struct partial_die_info *first_die;
6114   CORE_ADDR lowpc, highpc;
6115   struct partial_symtab *pst;
6116
6117   gdb_assert (data == NULL);
6118   gdb_assert (per_cu->is_debug_types);
6119   sig_type = (struct signatured_type *) per_cu;
6120
6121   if (! has_children)
6122     return;
6123
6124   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
6125   tu_group = get_type_unit_group (cu, attr);
6126
6127   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
6128
6129   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6130   cu->list_in_scope = &file_symbols;
6131   pst = create_partial_symtab (per_cu, "");
6132   pst->anonymous = 1;
6133
6134   first_die = load_partial_dies (reader, info_ptr, 1);
6135
6136   lowpc = (CORE_ADDR) -1;
6137   highpc = (CORE_ADDR) 0;
6138   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6139
6140   pst->n_global_syms = objfile->global_psymbols.next -
6141     (objfile->global_psymbols.list + pst->globals_offset);
6142   pst->n_static_syms = objfile->static_psymbols.next -
6143     (objfile->static_psymbols.list + pst->statics_offset);
6144   sort_pst_symbols (objfile, pst);
6145 }
6146
6147 /* Traversal function for build_type_psymtabs.  */
6148
6149 static int
6150 build_type_psymtab_dependencies (void **slot, void *info)
6151 {
6152   struct objfile *objfile = dwarf2_per_objfile->objfile;
6153   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
6154   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
6155   struct partial_symtab *pst = per_cu->v.psymtab;
6156   int len = VEC_length (sig_type_ptr, tu_group->tus);
6157   struct signatured_type *iter;
6158   int i;
6159
6160   gdb_assert (len > 0);
6161   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
6162
6163   pst->number_of_dependencies = len;
6164   pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6165                                      len * sizeof (struct psymtab *));
6166   for (i = 0;
6167        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
6168        ++i)
6169     {
6170       gdb_assert (iter->per_cu.is_debug_types);
6171       pst->dependencies[i] = iter->per_cu.v.psymtab;
6172       iter->type_unit_group = tu_group;
6173     }
6174
6175   VEC_free (sig_type_ptr, tu_group->tus);
6176
6177   return 1;
6178 }
6179
6180 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6181    Build partial symbol tables for the .debug_types comp-units.  */
6182
6183 static void
6184 build_type_psymtabs (struct objfile *objfile)
6185 {
6186   if (! create_all_type_units (objfile))
6187     return;
6188
6189   build_type_unit_groups (build_type_psymtabs_reader, NULL);
6190
6191   /* Now that all TUs have been processed we can fill in the dependencies.  */
6192   htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6193                           build_type_psymtab_dependencies, NULL);
6194 }
6195
6196 /* A cleanup function that clears objfile's psymtabs_addrmap field.  */
6197
6198 static void
6199 psymtabs_addrmap_cleanup (void *o)
6200 {
6201   struct objfile *objfile = o;
6202
6203   objfile->psymtabs_addrmap = NULL;
6204 }
6205
6206 /* Compute the 'user' field for each psymtab in OBJFILE.  */
6207
6208 static void
6209 set_partial_user (struct objfile *objfile)
6210 {
6211   int i;
6212
6213   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6214     {
6215       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6216       struct partial_symtab *pst = per_cu->v.psymtab;
6217       int j;
6218
6219       if (pst == NULL)
6220         continue;
6221
6222       for (j = 0; j < pst->number_of_dependencies; ++j)
6223         {
6224           /* Set the 'user' field only if it is not already set.  */
6225           if (pst->dependencies[j]->user == NULL)
6226             pst->dependencies[j]->user = pst;
6227         }
6228     }
6229 }
6230
6231 /* Build the partial symbol table by doing a quick pass through the
6232    .debug_info and .debug_abbrev sections.  */
6233
6234 static void
6235 dwarf2_build_psymtabs_hard (struct objfile *objfile)
6236 {
6237   struct cleanup *back_to, *addrmap_cleanup;
6238   struct obstack temp_obstack;
6239   int i;
6240
6241   if (dwarf2_read_debug)
6242     {
6243       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
6244                           objfile_name (objfile));
6245     }
6246
6247   dwarf2_per_objfile->reading_partial_symbols = 1;
6248
6249   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
6250
6251   /* Any cached compilation units will be linked by the per-objfile
6252      read_in_chain.  Make sure to free them when we're done.  */
6253   back_to = make_cleanup (free_cached_comp_units, NULL);
6254
6255   build_type_psymtabs (objfile);
6256
6257   create_all_comp_units (objfile);
6258
6259   /* Create a temporary address map on a temporary obstack.  We later
6260      copy this to the final obstack.  */
6261   obstack_init (&temp_obstack);
6262   make_cleanup_obstack_free (&temp_obstack);
6263   objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6264   addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
6265
6266   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6267     {
6268       struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
6269
6270       process_psymtab_comp_unit (per_cu, 0, language_minimal);
6271     }
6272
6273   set_partial_user (objfile);
6274
6275   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6276                                                     &objfile->objfile_obstack);
6277   discard_cleanups (addrmap_cleanup);
6278
6279   do_cleanups (back_to);
6280
6281   if (dwarf2_read_debug)
6282     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
6283                         objfile_name (objfile));
6284 }
6285
6286 /* die_reader_func for load_partial_comp_unit.  */
6287
6288 static void
6289 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
6290                                const gdb_byte *info_ptr,
6291                                struct die_info *comp_unit_die,
6292                                int has_children,
6293                                void *data)
6294 {
6295   struct dwarf2_cu *cu = reader->cu;
6296
6297   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
6298
6299   /* Check if comp unit has_children.
6300      If so, read the rest of the partial symbols from this comp unit.
6301      If not, there's no more debug_info for this comp unit.  */
6302   if (has_children)
6303     load_partial_dies (reader, info_ptr, 0);
6304 }
6305
6306 /* Load the partial DIEs for a secondary CU into memory.
6307    This is also used when rereading a primary CU with load_all_dies.  */
6308
6309 static void
6310 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6311 {
6312   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6313                            load_partial_comp_unit_reader, NULL);
6314 }
6315
6316 static void
6317 read_comp_units_from_section (struct objfile *objfile,
6318                               struct dwarf2_section_info *section,
6319                               unsigned int is_dwz,
6320                               int *n_allocated,
6321                               int *n_comp_units,
6322                               struct dwarf2_per_cu_data ***all_comp_units)
6323 {
6324   const gdb_byte *info_ptr;
6325   bfd *abfd = get_section_bfd_owner (section);
6326
6327   if (dwarf2_read_debug)
6328     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
6329                         get_section_name (section),
6330                         get_section_file_name (section));
6331
6332   dwarf2_read_section (objfile, section);
6333
6334   info_ptr = section->buffer;
6335
6336   while (info_ptr < section->buffer + section->size)
6337     {
6338       unsigned int length, initial_length_size;
6339       struct dwarf2_per_cu_data *this_cu;
6340       sect_offset offset;
6341
6342       offset.sect_off = info_ptr - section->buffer;
6343
6344       /* Read just enough information to find out where the next
6345          compilation unit is.  */
6346       length = read_initial_length (abfd, info_ptr, &initial_length_size);
6347
6348       /* Save the compilation unit for later lookup.  */
6349       this_cu = obstack_alloc (&objfile->objfile_obstack,
6350                                sizeof (struct dwarf2_per_cu_data));
6351       memset (this_cu, 0, sizeof (*this_cu));
6352       this_cu->offset = offset;
6353       this_cu->length = length + initial_length_size;
6354       this_cu->is_dwz = is_dwz;
6355       this_cu->objfile = objfile;
6356       this_cu->section = section;
6357
6358       if (*n_comp_units == *n_allocated)
6359         {
6360           *n_allocated *= 2;
6361           *all_comp_units = xrealloc (*all_comp_units,
6362                                       *n_allocated
6363                                       * sizeof (struct dwarf2_per_cu_data *));
6364         }
6365       (*all_comp_units)[*n_comp_units] = this_cu;
6366       ++*n_comp_units;
6367
6368       info_ptr = info_ptr + this_cu->length;
6369     }
6370 }
6371
6372 /* Create a list of all compilation units in OBJFILE.
6373    This is only done for -readnow and building partial symtabs.  */
6374
6375 static void
6376 create_all_comp_units (struct objfile *objfile)
6377 {
6378   int n_allocated;
6379   int n_comp_units;
6380   struct dwarf2_per_cu_data **all_comp_units;
6381   struct dwz_file *dwz;
6382
6383   n_comp_units = 0;
6384   n_allocated = 10;
6385   all_comp_units = xmalloc (n_allocated
6386                             * sizeof (struct dwarf2_per_cu_data *));
6387
6388   read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6389                                 &n_allocated, &n_comp_units, &all_comp_units);
6390
6391   dwz = dwarf2_get_dwz_file ();
6392   if (dwz != NULL)
6393     read_comp_units_from_section (objfile, &dwz->info, 1,
6394                                   &n_allocated, &n_comp_units,
6395                                   &all_comp_units);
6396
6397   dwarf2_per_objfile->all_comp_units
6398     = obstack_alloc (&objfile->objfile_obstack,
6399                      n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6400   memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6401           n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6402   xfree (all_comp_units);
6403   dwarf2_per_objfile->n_comp_units = n_comp_units;
6404 }
6405
6406 /* Process all loaded DIEs for compilation unit CU, starting at
6407    FIRST_DIE.  The caller should pass NEED_PC == 1 if the compilation
6408    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
6409    DW_AT_ranges).  If NEED_PC is set, then this function will set
6410    *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
6411    and record the covered ranges in the addrmap.  */
6412
6413 static void
6414 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
6415                       CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6416 {
6417   struct partial_die_info *pdi;
6418
6419   /* Now, march along the PDI's, descending into ones which have
6420      interesting children but skipping the children of the other ones,
6421      until we reach the end of the compilation unit.  */
6422
6423   pdi = first_die;
6424
6425   while (pdi != NULL)
6426     {
6427       fixup_partial_die (pdi, cu);
6428
6429       /* Anonymous namespaces or modules have no name but have interesting
6430          children, so we need to look at them.  Ditto for anonymous
6431          enums.  */
6432
6433       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
6434           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6435           || pdi->tag == DW_TAG_imported_unit)
6436         {
6437           switch (pdi->tag)
6438             {
6439             case DW_TAG_subprogram:
6440               add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6441               break;
6442             case DW_TAG_constant:
6443             case DW_TAG_variable:
6444             case DW_TAG_typedef:
6445             case DW_TAG_union_type:
6446               if (!pdi->is_declaration)
6447                 {
6448                   add_partial_symbol (pdi, cu);
6449                 }
6450               break;
6451             case DW_TAG_class_type:
6452             case DW_TAG_interface_type:
6453             case DW_TAG_structure_type:
6454               if (!pdi->is_declaration)
6455                 {
6456                   add_partial_symbol (pdi, cu);
6457                 }
6458               break;
6459             case DW_TAG_enumeration_type:
6460               if (!pdi->is_declaration)
6461                 add_partial_enumeration (pdi, cu);
6462               break;
6463             case DW_TAG_base_type:
6464             case DW_TAG_subrange_type:
6465               /* File scope base type definitions are added to the partial
6466                  symbol table.  */
6467               add_partial_symbol (pdi, cu);
6468               break;
6469             case DW_TAG_namespace:
6470               add_partial_namespace (pdi, lowpc, highpc, need_pc, cu);
6471               break;
6472             case DW_TAG_module:
6473               add_partial_module (pdi, lowpc, highpc, need_pc, cu);
6474               break;
6475             case DW_TAG_imported_unit:
6476               {
6477                 struct dwarf2_per_cu_data *per_cu;
6478
6479                 /* For now we don't handle imported units in type units.  */
6480                 if (cu->per_cu->is_debug_types)
6481                   {
6482                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
6483                              " supported in type units [in module %s]"),
6484                            objfile_name (cu->objfile));
6485                   }
6486
6487                 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
6488                                                            pdi->is_dwz,
6489                                                            cu->objfile);
6490
6491                 /* Go read the partial unit, if needed.  */
6492                 if (per_cu->v.psymtab == NULL)
6493                   process_psymtab_comp_unit (per_cu, 1, cu->language);
6494
6495                 VEC_safe_push (dwarf2_per_cu_ptr,
6496                                cu->per_cu->imported_symtabs, per_cu);
6497               }
6498               break;
6499             case DW_TAG_imported_declaration:
6500               add_partial_symbol (pdi, cu);
6501               break;
6502             default:
6503               break;
6504             }
6505         }
6506
6507       /* If the die has a sibling, skip to the sibling.  */
6508
6509       pdi = pdi->die_sibling;
6510     }
6511 }
6512
6513 /* Functions used to compute the fully scoped name of a partial DIE.
6514
6515    Normally, this is simple.  For C++, the parent DIE's fully scoped
6516    name is concatenated with "::" and the partial DIE's name.  For
6517    Java, the same thing occurs except that "." is used instead of "::".
6518    Enumerators are an exception; they use the scope of their parent
6519    enumeration type, i.e. the name of the enumeration type is not
6520    prepended to the enumerator.
6521
6522    There are two complexities.  One is DW_AT_specification; in this
6523    case "parent" means the parent of the target of the specification,
6524    instead of the direct parent of the DIE.  The other is compilers
6525    which do not emit DW_TAG_namespace; in this case we try to guess
6526    the fully qualified name of structure types from their members'
6527    linkage names.  This must be done using the DIE's children rather
6528    than the children of any DW_AT_specification target.  We only need
6529    to do this for structures at the top level, i.e. if the target of
6530    any DW_AT_specification (if any; otherwise the DIE itself) does not
6531    have a parent.  */
6532
6533 /* Compute the scope prefix associated with PDI's parent, in
6534    compilation unit CU.  The result will be allocated on CU's
6535    comp_unit_obstack, or a copy of the already allocated PDI->NAME
6536    field.  NULL is returned if no prefix is necessary.  */
6537 static const char *
6538 partial_die_parent_scope (struct partial_die_info *pdi,
6539                           struct dwarf2_cu *cu)
6540 {
6541   const char *grandparent_scope;
6542   struct partial_die_info *parent, *real_pdi;
6543
6544   /* We need to look at our parent DIE; if we have a DW_AT_specification,
6545      then this means the parent of the specification DIE.  */
6546
6547   real_pdi = pdi;
6548   while (real_pdi->has_specification)
6549     real_pdi = find_partial_die (real_pdi->spec_offset,
6550                                  real_pdi->spec_is_dwz, cu);
6551
6552   parent = real_pdi->die_parent;
6553   if (parent == NULL)
6554     return NULL;
6555
6556   if (parent->scope_set)
6557     return parent->scope;
6558
6559   fixup_partial_die (parent, cu);
6560
6561   grandparent_scope = partial_die_parent_scope (parent, cu);
6562
6563   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6564      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6565      Work around this problem here.  */
6566   if (cu->language == language_cplus
6567       && parent->tag == DW_TAG_namespace
6568       && strcmp (parent->name, "::") == 0
6569       && grandparent_scope == NULL)
6570     {
6571       parent->scope = NULL;
6572       parent->scope_set = 1;
6573       return NULL;
6574     }
6575
6576   if (pdi->tag == DW_TAG_enumerator)
6577     /* Enumerators should not get the name of the enumeration as a prefix.  */
6578     parent->scope = grandparent_scope;
6579   else if (parent->tag == DW_TAG_namespace
6580       || parent->tag == DW_TAG_module
6581       || parent->tag == DW_TAG_structure_type
6582       || parent->tag == DW_TAG_class_type
6583       || parent->tag == DW_TAG_interface_type
6584       || parent->tag == DW_TAG_union_type
6585       || parent->tag == DW_TAG_enumeration_type)
6586     {
6587       if (grandparent_scope == NULL)
6588         parent->scope = parent->name;
6589       else
6590         parent->scope = typename_concat (&cu->comp_unit_obstack,
6591                                          grandparent_scope,
6592                                          parent->name, 0, cu);
6593     }
6594   else
6595     {
6596       /* FIXME drow/2004-04-01: What should we be doing with
6597          function-local names?  For partial symbols, we should probably be
6598          ignoring them.  */
6599       complaint (&symfile_complaints,
6600                  _("unhandled containing DIE tag %d for DIE at %d"),
6601                  parent->tag, pdi->offset.sect_off);
6602       parent->scope = grandparent_scope;
6603     }
6604
6605   parent->scope_set = 1;
6606   return parent->scope;
6607 }
6608
6609 /* Return the fully scoped name associated with PDI, from compilation unit
6610    CU.  The result will be allocated with malloc.  */
6611
6612 static char *
6613 partial_die_full_name (struct partial_die_info *pdi,
6614                        struct dwarf2_cu *cu)
6615 {
6616   const char *parent_scope;
6617
6618   /* If this is a template instantiation, we can not work out the
6619      template arguments from partial DIEs.  So, unfortunately, we have
6620      to go through the full DIEs.  At least any work we do building
6621      types here will be reused if full symbols are loaded later.  */
6622   if (pdi->has_template_arguments)
6623     {
6624       fixup_partial_die (pdi, cu);
6625
6626       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6627         {
6628           struct die_info *die;
6629           struct attribute attr;
6630           struct dwarf2_cu *ref_cu = cu;
6631
6632           /* DW_FORM_ref_addr is using section offset.  */
6633           attr.name = 0;
6634           attr.form = DW_FORM_ref_addr;
6635           attr.u.unsnd = pdi->offset.sect_off;
6636           die = follow_die_ref (NULL, &attr, &ref_cu);
6637
6638           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6639         }
6640     }
6641
6642   parent_scope = partial_die_parent_scope (pdi, cu);
6643   if (parent_scope == NULL)
6644     return NULL;
6645   else
6646     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
6647 }
6648
6649 static void
6650 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
6651 {
6652   struct objfile *objfile = cu->objfile;
6653   CORE_ADDR addr = 0;
6654   const char *actual_name = NULL;
6655   CORE_ADDR baseaddr;
6656   char *built_actual_name;
6657
6658   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
6659
6660   built_actual_name = partial_die_full_name (pdi, cu);
6661   if (built_actual_name != NULL)
6662     actual_name = built_actual_name;
6663
6664   if (actual_name == NULL)
6665     actual_name = pdi->name;
6666
6667   switch (pdi->tag)
6668     {
6669     case DW_TAG_subprogram:
6670       if (pdi->is_external || cu->language == language_ada)
6671         {
6672           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6673              of the global scope.  But in Ada, we want to be able to access
6674              nested procedures globally.  So all Ada subprograms are stored
6675              in the global scope.  */
6676           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6677              mst_text, objfile); */
6678           add_psymbol_to_list (actual_name, strlen (actual_name),
6679                                built_actual_name != NULL,
6680                                VAR_DOMAIN, LOC_BLOCK,
6681                                &objfile->global_psymbols,
6682                                0, pdi->lowpc + baseaddr,
6683                                cu->language, objfile);
6684         }
6685       else
6686         {
6687           /* prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
6688              mst_file_text, objfile); */
6689           add_psymbol_to_list (actual_name, strlen (actual_name),
6690                                built_actual_name != NULL,
6691                                VAR_DOMAIN, LOC_BLOCK,
6692                                &objfile->static_psymbols,
6693                                0, pdi->lowpc + baseaddr,
6694                                cu->language, objfile);
6695         }
6696       break;
6697     case DW_TAG_constant:
6698       {
6699         struct psymbol_allocation_list *list;
6700
6701         if (pdi->is_external)
6702           list = &objfile->global_psymbols;
6703         else
6704           list = &objfile->static_psymbols;
6705         add_psymbol_to_list (actual_name, strlen (actual_name),
6706                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
6707                              list, 0, 0, cu->language, objfile);
6708       }
6709       break;
6710     case DW_TAG_variable:
6711       if (pdi->d.locdesc)
6712         addr = decode_locdesc (pdi->d.locdesc, cu);
6713
6714       if (pdi->d.locdesc
6715           && addr == 0
6716           && !dwarf2_per_objfile->has_section_at_zero)
6717         {
6718           /* A global or static variable may also have been stripped
6719              out by the linker if unused, in which case its address
6720              will be nullified; do not add such variables into partial
6721              symbol table then.  */
6722         }
6723       else if (pdi->is_external)
6724         {
6725           /* Global Variable.
6726              Don't enter into the minimal symbol tables as there is
6727              a minimal symbol table entry from the ELF symbols already.
6728              Enter into partial symbol table if it has a location
6729              descriptor or a type.
6730              If the location descriptor is missing, new_symbol will create
6731              a LOC_UNRESOLVED symbol, the address of the variable will then
6732              be determined from the minimal symbol table whenever the variable
6733              is referenced.
6734              The address for the partial symbol table entry is not
6735              used by GDB, but it comes in handy for debugging partial symbol
6736              table building.  */
6737
6738           if (pdi->d.locdesc || pdi->has_type)
6739             add_psymbol_to_list (actual_name, strlen (actual_name),
6740                                  built_actual_name != NULL,
6741                                  VAR_DOMAIN, LOC_STATIC,
6742                                  &objfile->global_psymbols,
6743                                  0, addr + baseaddr,
6744                                  cu->language, objfile);
6745         }
6746       else
6747         {
6748           /* Static Variable.  Skip symbols without location descriptors.  */
6749           if (pdi->d.locdesc == NULL)
6750             {
6751               xfree (built_actual_name);
6752               return;
6753             }
6754           /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
6755              mst_file_data, objfile); */
6756           add_psymbol_to_list (actual_name, strlen (actual_name),
6757                                built_actual_name != NULL,
6758                                VAR_DOMAIN, LOC_STATIC,
6759                                &objfile->static_psymbols,
6760                                0, addr + baseaddr,
6761                                cu->language, objfile);
6762         }
6763       break;
6764     case DW_TAG_typedef:
6765     case DW_TAG_base_type:
6766     case DW_TAG_subrange_type:
6767       add_psymbol_to_list (actual_name, strlen (actual_name),
6768                            built_actual_name != NULL,
6769                            VAR_DOMAIN, LOC_TYPEDEF,
6770                            &objfile->static_psymbols,
6771                            0, (CORE_ADDR) 0, cu->language, objfile);
6772       break;
6773     case DW_TAG_imported_declaration:
6774     case DW_TAG_namespace:
6775       add_psymbol_to_list (actual_name, strlen (actual_name),
6776                            built_actual_name != NULL,
6777                            VAR_DOMAIN, LOC_TYPEDEF,
6778                            &objfile->global_psymbols,
6779                            0, (CORE_ADDR) 0, cu->language, objfile);
6780       break;
6781     case DW_TAG_module:
6782       add_psymbol_to_list (actual_name, strlen (actual_name),
6783                            built_actual_name != NULL,
6784                            MODULE_DOMAIN, LOC_TYPEDEF,
6785                            &objfile->global_psymbols,
6786                            0, (CORE_ADDR) 0, cu->language, objfile);
6787       break;
6788     case DW_TAG_class_type:
6789     case DW_TAG_interface_type:
6790     case DW_TAG_structure_type:
6791     case DW_TAG_union_type:
6792     case DW_TAG_enumeration_type:
6793       /* Skip external references.  The DWARF standard says in the section
6794          about "Structure, Union, and Class Type Entries": "An incomplete
6795          structure, union or class type is represented by a structure,
6796          union or class entry that does not have a byte size attribute
6797          and that has a DW_AT_declaration attribute."  */
6798       if (!pdi->has_byte_size && pdi->is_declaration)
6799         {
6800           xfree (built_actual_name);
6801           return;
6802         }
6803
6804       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
6805          static vs. global.  */
6806       add_psymbol_to_list (actual_name, strlen (actual_name),
6807                            built_actual_name != NULL,
6808                            STRUCT_DOMAIN, LOC_TYPEDEF,
6809                            (cu->language == language_cplus
6810                             || cu->language == language_java)
6811                            ? &objfile->global_psymbols
6812                            : &objfile->static_psymbols,
6813                            0, (CORE_ADDR) 0, cu->language, objfile);
6814
6815       break;
6816     case DW_TAG_enumerator:
6817       add_psymbol_to_list (actual_name, strlen (actual_name),
6818                            built_actual_name != NULL,
6819                            VAR_DOMAIN, LOC_CONST,
6820                            (cu->language == language_cplus
6821                             || cu->language == language_java)
6822                            ? &objfile->global_psymbols
6823                            : &objfile->static_psymbols,
6824                            0, (CORE_ADDR) 0, cu->language, objfile);
6825       break;
6826     default:
6827       break;
6828     }
6829
6830   xfree (built_actual_name);
6831 }
6832
6833 /* Read a partial die corresponding to a namespace; also, add a symbol
6834    corresponding to that namespace to the symbol table.  NAMESPACE is
6835    the name of the enclosing namespace.  */
6836
6837 static void
6838 add_partial_namespace (struct partial_die_info *pdi,
6839                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
6840                        int need_pc, struct dwarf2_cu *cu)
6841 {
6842   /* Add a symbol for the namespace.  */
6843
6844   add_partial_symbol (pdi, cu);
6845
6846   /* Now scan partial symbols in that namespace.  */
6847
6848   if (pdi->has_children)
6849     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6850 }
6851
6852 /* Read a partial die corresponding to a Fortran module.  */
6853
6854 static void
6855 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
6856                     CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
6857 {
6858   /* Add a symbol for the namespace.  */
6859
6860   add_partial_symbol (pdi, cu);
6861
6862   /* Now scan partial symbols in that module.  */
6863
6864   if (pdi->has_children)
6865     scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
6866 }
6867
6868 /* Read a partial die corresponding to a subprogram and create a partial
6869    symbol for that subprogram.  When the CU language allows it, this
6870    routine also defines a partial symbol for each nested subprogram
6871    that this subprogram contains.
6872
6873    DIE my also be a lexical block, in which case we simply search
6874    recursively for suprograms defined inside that lexical block.
6875    Again, this is only performed when the CU language allows this
6876    type of definitions.  */
6877
6878 static void
6879 add_partial_subprogram (struct partial_die_info *pdi,
6880                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
6881                         int need_pc, struct dwarf2_cu *cu)
6882 {
6883   if (pdi->tag == DW_TAG_subprogram)
6884     {
6885       if (pdi->has_pc_info)
6886         {
6887           if (pdi->lowpc < *lowpc)
6888             *lowpc = pdi->lowpc;
6889           if (pdi->highpc > *highpc)
6890             *highpc = pdi->highpc;
6891           if (need_pc)
6892             {
6893               CORE_ADDR baseaddr;
6894               struct objfile *objfile = cu->objfile;
6895
6896               baseaddr = ANOFFSET (objfile->section_offsets,
6897                                    SECT_OFF_TEXT (objfile));
6898               addrmap_set_empty (objfile->psymtabs_addrmap,
6899                                  pdi->lowpc + baseaddr,
6900                                  pdi->highpc - 1 + baseaddr,
6901                                  cu->per_cu->v.psymtab);
6902             }
6903         }
6904
6905       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
6906         {
6907           if (!pdi->is_declaration)
6908             /* Ignore subprogram DIEs that do not have a name, they are
6909                illegal.  Do not emit a complaint at this point, we will
6910                do so when we convert this psymtab into a symtab.  */
6911             if (pdi->name)
6912               add_partial_symbol (pdi, cu);
6913         }
6914     }
6915
6916   if (! pdi->has_children)
6917     return;
6918
6919   if (cu->language == language_ada)
6920     {
6921       pdi = pdi->die_child;
6922       while (pdi != NULL)
6923         {
6924           fixup_partial_die (pdi, cu);
6925           if (pdi->tag == DW_TAG_subprogram
6926               || pdi->tag == DW_TAG_lexical_block)
6927             add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
6928           pdi = pdi->die_sibling;
6929         }
6930     }
6931 }
6932
6933 /* Read a partial die corresponding to an enumeration type.  */
6934
6935 static void
6936 add_partial_enumeration (struct partial_die_info *enum_pdi,
6937                          struct dwarf2_cu *cu)
6938 {
6939   struct partial_die_info *pdi;
6940
6941   if (enum_pdi->name != NULL)
6942     add_partial_symbol (enum_pdi, cu);
6943
6944   pdi = enum_pdi->die_child;
6945   while (pdi)
6946     {
6947       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
6948         complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
6949       else
6950         add_partial_symbol (pdi, cu);
6951       pdi = pdi->die_sibling;
6952     }
6953 }
6954
6955 /* Return the initial uleb128 in the die at INFO_PTR.  */
6956
6957 static unsigned int
6958 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6959 {
6960   unsigned int bytes_read;
6961
6962   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6963 }
6964
6965 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
6966    Return the corresponding abbrev, or NULL if the number is zero (indicating
6967    an empty DIE).  In either case *BYTES_READ will be set to the length of
6968    the initial number.  */
6969
6970 static struct abbrev_info *
6971 peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
6972                  struct dwarf2_cu *cu)
6973 {
6974   bfd *abfd = cu->objfile->obfd;
6975   unsigned int abbrev_number;
6976   struct abbrev_info *abbrev;
6977
6978   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
6979
6980   if (abbrev_number == 0)
6981     return NULL;
6982
6983   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
6984   if (!abbrev)
6985     {
6986       error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"),
6987              abbrev_number, bfd_get_filename (abfd));
6988     }
6989
6990   return abbrev;
6991 }
6992
6993 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
6994    Returns a pointer to the end of a series of DIEs, terminated by an empty
6995    DIE.  Any children of the skipped DIEs will also be skipped.  */
6996
6997 static const gdb_byte *
6998 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
6999 {
7000   struct dwarf2_cu *cu = reader->cu;
7001   struct abbrev_info *abbrev;
7002   unsigned int bytes_read;
7003
7004   while (1)
7005     {
7006       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7007       if (abbrev == NULL)
7008         return info_ptr + bytes_read;
7009       else
7010         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
7011     }
7012 }
7013
7014 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7015    INFO_PTR should point just after the initial uleb128 of a DIE, and the
7016    abbrev corresponding to that skipped uleb128 should be passed in
7017    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
7018    children.  */
7019
7020 static const gdb_byte *
7021 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
7022               struct abbrev_info *abbrev)
7023 {
7024   unsigned int bytes_read;
7025   struct attribute attr;
7026   bfd *abfd = reader->abfd;
7027   struct dwarf2_cu *cu = reader->cu;
7028   const gdb_byte *buffer = reader->buffer;
7029   const gdb_byte *buffer_end = reader->buffer_end;
7030   const gdb_byte *start_info_ptr = info_ptr;
7031   unsigned int form, i;
7032
7033   for (i = 0; i < abbrev->num_attrs; i++)
7034     {
7035       /* The only abbrev we care about is DW_AT_sibling.  */
7036       if (abbrev->attrs[i].name == DW_AT_sibling)
7037         {
7038           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
7039           if (attr.form == DW_FORM_ref_addr)
7040             complaint (&symfile_complaints,
7041                        _("ignoring absolute DW_AT_sibling"));
7042           else
7043             {
7044               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7045               const gdb_byte *sibling_ptr = buffer + off;
7046
7047               if (sibling_ptr < info_ptr)
7048                 complaint (&symfile_complaints,
7049                            _("DW_AT_sibling points backwards"));
7050               else if (sibling_ptr > reader->buffer_end)
7051                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
7052               else
7053                 return sibling_ptr;
7054             }
7055         }
7056
7057       /* If it isn't DW_AT_sibling, skip this attribute.  */
7058       form = abbrev->attrs[i].form;
7059     skip_attribute:
7060       switch (form)
7061         {
7062         case DW_FORM_ref_addr:
7063           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7064              and later it is offset sized.  */
7065           if (cu->header.version == 2)
7066             info_ptr += cu->header.addr_size;
7067           else
7068             info_ptr += cu->header.offset_size;
7069           break;
7070         case DW_FORM_GNU_ref_alt:
7071           info_ptr += cu->header.offset_size;
7072           break;
7073         case DW_FORM_addr:
7074           info_ptr += cu->header.addr_size;
7075           break;
7076         case DW_FORM_data1:
7077         case DW_FORM_ref1:
7078         case DW_FORM_flag:
7079           info_ptr += 1;
7080           break;
7081         case DW_FORM_flag_present:
7082           break;
7083         case DW_FORM_data2:
7084         case DW_FORM_ref2:
7085           info_ptr += 2;
7086           break;
7087         case DW_FORM_data4:
7088         case DW_FORM_ref4:
7089           info_ptr += 4;
7090           break;
7091         case DW_FORM_data8:
7092         case DW_FORM_ref8:
7093         case DW_FORM_ref_sig8:
7094           info_ptr += 8;
7095           break;
7096         case DW_FORM_string:
7097           read_direct_string (abfd, info_ptr, &bytes_read);
7098           info_ptr += bytes_read;
7099           break;
7100         case DW_FORM_sec_offset:
7101         case DW_FORM_strp:
7102         case DW_FORM_GNU_strp_alt:
7103           info_ptr += cu->header.offset_size;
7104           break;
7105         case DW_FORM_exprloc:
7106         case DW_FORM_block:
7107           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7108           info_ptr += bytes_read;
7109           break;
7110         case DW_FORM_block1:
7111           info_ptr += 1 + read_1_byte (abfd, info_ptr);
7112           break;
7113         case DW_FORM_block2:
7114           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7115           break;
7116         case DW_FORM_block4:
7117           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7118           break;
7119         case DW_FORM_sdata:
7120         case DW_FORM_udata:
7121         case DW_FORM_ref_udata:
7122         case DW_FORM_GNU_addr_index:
7123         case DW_FORM_GNU_str_index:
7124           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
7125           break;
7126         case DW_FORM_indirect:
7127           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7128           info_ptr += bytes_read;
7129           /* We need to continue parsing from here, so just go back to
7130              the top.  */
7131           goto skip_attribute;
7132
7133         default:
7134           error (_("Dwarf Error: Cannot handle %s "
7135                    "in DWARF reader [in module %s]"),
7136                  dwarf_form_name (form),
7137                  bfd_get_filename (abfd));
7138         }
7139     }
7140
7141   if (abbrev->has_children)
7142     return skip_children (reader, info_ptr);
7143   else
7144     return info_ptr;
7145 }
7146
7147 /* Locate ORIG_PDI's sibling.
7148    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
7149
7150 static const gdb_byte *
7151 locate_pdi_sibling (const struct die_reader_specs *reader,
7152                     struct partial_die_info *orig_pdi,
7153                     const gdb_byte *info_ptr)
7154 {
7155   /* Do we know the sibling already?  */
7156
7157   if (orig_pdi->sibling)
7158     return orig_pdi->sibling;
7159
7160   /* Are there any children to deal with?  */
7161
7162   if (!orig_pdi->has_children)
7163     return info_ptr;
7164
7165   /* Skip the children the long way.  */
7166
7167   return skip_children (reader, info_ptr);
7168 }
7169
7170 /* Expand this partial symbol table into a full symbol table.  SELF is
7171    not NULL.  */
7172
7173 static void
7174 dwarf2_read_symtab (struct partial_symtab *self,
7175                     struct objfile *objfile)
7176 {
7177   if (self->readin)
7178     {
7179       warning (_("bug: psymtab for %s is already read in."),
7180                self->filename);
7181     }
7182   else
7183     {
7184       if (info_verbose)
7185         {
7186           printf_filtered (_("Reading in symbols for %s..."),
7187                            self->filename);
7188           gdb_flush (gdb_stdout);
7189         }
7190
7191       /* Restore our global data.  */
7192       dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
7193
7194       /* If this psymtab is constructed from a debug-only objfile, the
7195          has_section_at_zero flag will not necessarily be correct.  We
7196          can get the correct value for this flag by looking at the data
7197          associated with the (presumably stripped) associated objfile.  */
7198       if (objfile->separate_debug_objfile_backlink)
7199         {
7200           struct dwarf2_per_objfile *dpo_backlink
7201             = objfile_data (objfile->separate_debug_objfile_backlink,
7202                             dwarf2_objfile_data_key);
7203
7204           dwarf2_per_objfile->has_section_at_zero
7205             = dpo_backlink->has_section_at_zero;
7206         }
7207
7208       dwarf2_per_objfile->reading_partial_symbols = 0;
7209
7210       psymtab_to_symtab_1 (self);
7211
7212       /* Finish up the debug error message.  */
7213       if (info_verbose)
7214         printf_filtered (_("done.\n"));
7215     }
7216
7217   process_cu_includes ();
7218 }
7219 \f
7220 /* Reading in full CUs.  */
7221
7222 /* Add PER_CU to the queue.  */
7223
7224 static void
7225 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7226                  enum language pretend_language)
7227 {
7228   struct dwarf2_queue_item *item;
7229
7230   per_cu->queued = 1;
7231   item = xmalloc (sizeof (*item));
7232   item->per_cu = per_cu;
7233   item->pretend_language = pretend_language;
7234   item->next = NULL;
7235
7236   if (dwarf2_queue == NULL)
7237     dwarf2_queue = item;
7238   else
7239     dwarf2_queue_tail->next = item;
7240
7241   dwarf2_queue_tail = item;
7242 }
7243
7244 /* If PER_CU is not yet queued, add it to the queue.
7245    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7246    dependency.
7247    The result is non-zero if PER_CU was queued, otherwise the result is zero
7248    meaning either PER_CU is already queued or it is already loaded.
7249
7250    N.B. There is an invariant here that if a CU is queued then it is loaded.
7251    The caller is required to load PER_CU if we return non-zero.  */
7252
7253 static int
7254 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
7255                        struct dwarf2_per_cu_data *per_cu,
7256                        enum language pretend_language)
7257 {
7258   /* We may arrive here during partial symbol reading, if we need full
7259      DIEs to process an unusual case (e.g. template arguments).  Do
7260      not queue PER_CU, just tell our caller to load its DIEs.  */
7261   if (dwarf2_per_objfile->reading_partial_symbols)
7262     {
7263       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7264         return 1;
7265       return 0;
7266     }
7267
7268   /* Mark the dependence relation so that we don't flush PER_CU
7269      too early.  */
7270   if (dependent_cu != NULL)
7271     dwarf2_add_dependence (dependent_cu, per_cu);
7272
7273   /* If it's already on the queue, we have nothing to do.  */
7274   if (per_cu->queued)
7275     return 0;
7276
7277   /* If the compilation unit is already loaded, just mark it as
7278      used.  */
7279   if (per_cu->cu != NULL)
7280     {
7281       per_cu->cu->last_used = 0;
7282       return 0;
7283     }
7284
7285   /* Add it to the queue.  */
7286   queue_comp_unit (per_cu, pretend_language);
7287
7288   return 1;
7289 }
7290
7291 /* Process the queue.  */
7292
7293 static void
7294 process_queue (void)
7295 {
7296   struct dwarf2_queue_item *item, *next_item;
7297
7298   if (dwarf2_read_debug)
7299     {
7300       fprintf_unfiltered (gdb_stdlog,
7301                           "Expanding one or more symtabs of objfile %s ...\n",
7302                           objfile_name (dwarf2_per_objfile->objfile));
7303     }
7304
7305   /* The queue starts out with one item, but following a DIE reference
7306      may load a new CU, adding it to the end of the queue.  */
7307   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7308     {
7309       if (dwarf2_per_objfile->using_index
7310           ? !item->per_cu->v.quick->symtab
7311           : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
7312         {
7313           struct dwarf2_per_cu_data *per_cu = item->per_cu;
7314           unsigned int debug_print_threshold;
7315           char buf[100];
7316
7317           if (per_cu->is_debug_types)
7318             {
7319               struct signatured_type *sig_type =
7320                 (struct signatured_type *) per_cu;
7321
7322               sprintf (buf, "TU %s at offset 0x%x",
7323                        hex_string (sig_type->signature),
7324                        per_cu->offset.sect_off);
7325               /* There can be 100s of TUs.
7326                  Only print them in verbose mode.  */
7327               debug_print_threshold = 2;
7328             }
7329           else
7330             {
7331               sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7332               debug_print_threshold = 1;
7333             }
7334
7335           if (dwarf2_read_debug >= debug_print_threshold)
7336             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
7337
7338           if (per_cu->is_debug_types)
7339             process_full_type_unit (per_cu, item->pretend_language);
7340           else
7341             process_full_comp_unit (per_cu, item->pretend_language);
7342
7343           if (dwarf2_read_debug >= debug_print_threshold)
7344             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
7345         }
7346
7347       item->per_cu->queued = 0;
7348       next_item = item->next;
7349       xfree (item);
7350     }
7351
7352   dwarf2_queue_tail = NULL;
7353
7354   if (dwarf2_read_debug)
7355     {
7356       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
7357                           objfile_name (dwarf2_per_objfile->objfile));
7358     }
7359 }
7360
7361 /* Free all allocated queue entries.  This function only releases anything if
7362    an error was thrown; if the queue was processed then it would have been
7363    freed as we went along.  */
7364
7365 static void
7366 dwarf2_release_queue (void *dummy)
7367 {
7368   struct dwarf2_queue_item *item, *last;
7369
7370   item = dwarf2_queue;
7371   while (item)
7372     {
7373       /* Anything still marked queued is likely to be in an
7374          inconsistent state, so discard it.  */
7375       if (item->per_cu->queued)
7376         {
7377           if (item->per_cu->cu != NULL)
7378             free_one_cached_comp_unit (item->per_cu);
7379           item->per_cu->queued = 0;
7380         }
7381
7382       last = item;
7383       item = item->next;
7384       xfree (last);
7385     }
7386
7387   dwarf2_queue = dwarf2_queue_tail = NULL;
7388 }
7389
7390 /* Read in full symbols for PST, and anything it depends on.  */
7391
7392 static void
7393 psymtab_to_symtab_1 (struct partial_symtab *pst)
7394 {
7395   struct dwarf2_per_cu_data *per_cu;
7396   int i;
7397
7398   if (pst->readin)
7399     return;
7400
7401   for (i = 0; i < pst->number_of_dependencies; i++)
7402     if (!pst->dependencies[i]->readin
7403         && pst->dependencies[i]->user == NULL)
7404       {
7405         /* Inform about additional files that need to be read in.  */
7406         if (info_verbose)
7407           {
7408             /* FIXME: i18n: Need to make this a single string.  */
7409             fputs_filtered (" ", gdb_stdout);
7410             wrap_here ("");
7411             fputs_filtered ("and ", gdb_stdout);
7412             wrap_here ("");
7413             printf_filtered ("%s...", pst->dependencies[i]->filename);
7414             wrap_here ("");     /* Flush output.  */
7415             gdb_flush (gdb_stdout);
7416           }
7417         psymtab_to_symtab_1 (pst->dependencies[i]);
7418       }
7419
7420   per_cu = pst->read_symtab_private;
7421
7422   if (per_cu == NULL)
7423     {
7424       /* It's an include file, no symbols to read for it.
7425          Everything is in the parent symtab.  */
7426       pst->readin = 1;
7427       return;
7428     }
7429
7430   dw2_do_instantiate_symtab (per_cu);
7431 }
7432
7433 /* Trivial hash function for die_info: the hash value of a DIE
7434    is its offset in .debug_info for this objfile.  */
7435
7436 static hashval_t
7437 die_hash (const void *item)
7438 {
7439   const struct die_info *die = item;
7440
7441   return die->offset.sect_off;
7442 }
7443
7444 /* Trivial comparison function for die_info structures: two DIEs
7445    are equal if they have the same offset.  */
7446
7447 static int
7448 die_eq (const void *item_lhs, const void *item_rhs)
7449 {
7450   const struct die_info *die_lhs = item_lhs;
7451   const struct die_info *die_rhs = item_rhs;
7452
7453   return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7454 }
7455
7456 /* die_reader_func for load_full_comp_unit.
7457    This is identical to read_signatured_type_reader,
7458    but is kept separate for now.  */
7459
7460 static void
7461 load_full_comp_unit_reader (const struct die_reader_specs *reader,
7462                             const gdb_byte *info_ptr,
7463                             struct die_info *comp_unit_die,
7464                             int has_children,
7465                             void *data)
7466 {
7467   struct dwarf2_cu *cu = reader->cu;
7468   enum language *language_ptr = data;
7469
7470   gdb_assert (cu->die_hash == NULL);
7471   cu->die_hash =
7472     htab_create_alloc_ex (cu->header.length / 12,
7473                           die_hash,
7474                           die_eq,
7475                           NULL,
7476                           &cu->comp_unit_obstack,
7477                           hashtab_obstack_allocate,
7478                           dummy_obstack_deallocate);
7479
7480   if (has_children)
7481     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7482                                                   &info_ptr, comp_unit_die);
7483   cu->dies = comp_unit_die;
7484   /* comp_unit_die is not stored in die_hash, no need.  */
7485
7486   /* We try not to read any attributes in this function, because not
7487      all CUs needed for references have been loaded yet, and symbol
7488      table processing isn't initialized.  But we have to set the CU language,
7489      or we won't be able to build types correctly.
7490      Similarly, if we do not read the producer, we can not apply
7491      producer-specific interpretation.  */
7492   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
7493 }
7494
7495 /* Load the DIEs associated with PER_CU into memory.  */
7496
7497 static void
7498 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7499                      enum language pretend_language)
7500 {
7501   gdb_assert (! this_cu->is_debug_types);
7502
7503   init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7504                            load_full_comp_unit_reader, &pretend_language);
7505 }
7506
7507 /* Add a DIE to the delayed physname list.  */
7508
7509 static void
7510 add_to_method_list (struct type *type, int fnfield_index, int index,
7511                     const char *name, struct die_info *die,
7512                     struct dwarf2_cu *cu)
7513 {
7514   struct delayed_method_info mi;
7515   mi.type = type;
7516   mi.fnfield_index = fnfield_index;
7517   mi.index = index;
7518   mi.name = name;
7519   mi.die = die;
7520   VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7521 }
7522
7523 /* A cleanup for freeing the delayed method list.  */
7524
7525 static void
7526 free_delayed_list (void *ptr)
7527 {
7528   struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7529   if (cu->method_list != NULL)
7530     {
7531       VEC_free (delayed_method_info, cu->method_list);
7532       cu->method_list = NULL;
7533     }
7534 }
7535
7536 /* Compute the physnames of any methods on the CU's method list.
7537
7538    The computation of method physnames is delayed in order to avoid the
7539    (bad) condition that one of the method's formal parameters is of an as yet
7540    incomplete type.  */
7541
7542 static void
7543 compute_delayed_physnames (struct dwarf2_cu *cu)
7544 {
7545   int i;
7546   struct delayed_method_info *mi;
7547   for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7548     {
7549       const char *physname;
7550       struct fn_fieldlist *fn_flp
7551         = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7552       physname = dwarf2_physname (mi->name, mi->die, cu);
7553       fn_flp->fn_fields[mi->index].physname = physname ? physname : "";
7554     }
7555 }
7556
7557 /* Go objects should be embedded in a DW_TAG_module DIE,
7558    and it's not clear if/how imported objects will appear.
7559    To keep Go support simple until that's worked out,
7560    go back through what we've read and create something usable.
7561    We could do this while processing each DIE, and feels kinda cleaner,
7562    but that way is more invasive.
7563    This is to, for example, allow the user to type "p var" or "b main"
7564    without having to specify the package name, and allow lookups
7565    of module.object to work in contexts that use the expression
7566    parser.  */
7567
7568 static void
7569 fixup_go_packaging (struct dwarf2_cu *cu)
7570 {
7571   char *package_name = NULL;
7572   struct pending *list;
7573   int i;
7574
7575   for (list = global_symbols; list != NULL; list = list->next)
7576     {
7577       for (i = 0; i < list->nsyms; ++i)
7578         {
7579           struct symbol *sym = list->symbol[i];
7580
7581           if (SYMBOL_LANGUAGE (sym) == language_go
7582               && SYMBOL_CLASS (sym) == LOC_BLOCK)
7583             {
7584               char *this_package_name = go_symbol_package_name (sym);
7585
7586               if (this_package_name == NULL)
7587                 continue;
7588               if (package_name == NULL)
7589                 package_name = this_package_name;
7590               else
7591                 {
7592                   if (strcmp (package_name, this_package_name) != 0)
7593                     complaint (&symfile_complaints,
7594                                _("Symtab %s has objects from two different Go packages: %s and %s"),
7595                                (SYMBOL_SYMTAB (sym)
7596                           ? symtab_to_filename_for_display (SYMBOL_SYMTAB (sym))
7597                                 : objfile_name (cu->objfile)),
7598                                this_package_name, package_name);
7599                   xfree (this_package_name);
7600                 }
7601             }
7602         }
7603     }
7604
7605   if (package_name != NULL)
7606     {
7607       struct objfile *objfile = cu->objfile;
7608       const char *saved_package_name = obstack_copy0 (&objfile->objfile_obstack,
7609                                                       package_name,
7610                                                       strlen (package_name));
7611       struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
7612                                      saved_package_name, objfile);
7613       struct symbol *sym;
7614
7615       TYPE_TAG_NAME (type) = TYPE_NAME (type);
7616
7617       sym = allocate_symbol (objfile);
7618       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
7619       SYMBOL_SET_NAMES (sym, saved_package_name,
7620                         strlen (saved_package_name), 0, objfile);
7621       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7622          e.g., "main" finds the "main" module and not C's main().  */
7623       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
7624       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
7625       SYMBOL_TYPE (sym) = type;
7626
7627       add_symbol_to_list (sym, &global_symbols);
7628
7629       xfree (package_name);
7630     }
7631 }
7632
7633 /* Return the symtab for PER_CU.  This works properly regardless of
7634    whether we're using the index or psymtabs.  */
7635
7636 static struct symtab *
7637 get_symtab (struct dwarf2_per_cu_data *per_cu)
7638 {
7639   return (dwarf2_per_objfile->using_index
7640           ? per_cu->v.quick->symtab
7641           : per_cu->v.psymtab->symtab);
7642 }
7643
7644 /* A helper function for computing the list of all symbol tables
7645    included by PER_CU.  */
7646
7647 static void
7648 recursively_compute_inclusions (VEC (symtab_ptr) **result,
7649                                 htab_t all_children, htab_t all_type_symtabs,
7650                                 struct dwarf2_per_cu_data *per_cu,
7651                                 struct symtab *immediate_parent)
7652 {
7653   void **slot;
7654   int ix;
7655   struct symtab *symtab;
7656   struct dwarf2_per_cu_data *iter;
7657
7658   slot = htab_find_slot (all_children, per_cu, INSERT);
7659   if (*slot != NULL)
7660     {
7661       /* This inclusion and its children have been processed.  */
7662       return;
7663     }
7664
7665   *slot = per_cu;
7666   /* Only add a CU if it has a symbol table.  */
7667   symtab = get_symtab (per_cu);
7668   if (symtab != NULL)
7669     {
7670       /* If this is a type unit only add its symbol table if we haven't
7671          seen it yet (type unit per_cu's can share symtabs).  */
7672       if (per_cu->is_debug_types)
7673         {
7674           slot = htab_find_slot (all_type_symtabs, symtab, INSERT);
7675           if (*slot == NULL)
7676             {
7677               *slot = symtab;
7678               VEC_safe_push (symtab_ptr, *result, symtab);
7679               if (symtab->user == NULL)
7680                 symtab->user = immediate_parent;
7681             }
7682         }
7683       else
7684         {
7685           VEC_safe_push (symtab_ptr, *result, symtab);
7686           if (symtab->user == NULL)
7687             symtab->user = immediate_parent;
7688         }
7689     }
7690
7691   for (ix = 0;
7692        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
7693        ++ix)
7694     {
7695       recursively_compute_inclusions (result, all_children,
7696                                       all_type_symtabs, iter, symtab);
7697     }
7698 }
7699
7700 /* Compute the symtab 'includes' fields for the symtab related to
7701    PER_CU.  */
7702
7703 static void
7704 compute_symtab_includes (struct dwarf2_per_cu_data *per_cu)
7705 {
7706   gdb_assert (! per_cu->is_debug_types);
7707
7708   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
7709     {
7710       int ix, len;
7711       struct dwarf2_per_cu_data *per_cu_iter;
7712       struct symtab *symtab_iter;
7713       VEC (symtab_ptr) *result_symtabs = NULL;
7714       htab_t all_children, all_type_symtabs;
7715       struct symtab *symtab = get_symtab (per_cu);
7716
7717       /* If we don't have a symtab, we can just skip this case.  */
7718       if (symtab == NULL)
7719         return;
7720
7721       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7722                                         NULL, xcalloc, xfree);
7723       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7724                                             NULL, xcalloc, xfree);
7725
7726       for (ix = 0;
7727            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
7728                         ix, per_cu_iter);
7729            ++ix)
7730         {
7731           recursively_compute_inclusions (&result_symtabs, all_children,
7732                                           all_type_symtabs, per_cu_iter,
7733                                           symtab);
7734         }
7735
7736       /* Now we have a transitive closure of all the included symtabs.  */
7737       len = VEC_length (symtab_ptr, result_symtabs);
7738       symtab->includes
7739         = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7740                          (len + 1) * sizeof (struct symtab *));
7741       for (ix = 0;
7742            VEC_iterate (symtab_ptr, result_symtabs, ix, symtab_iter);
7743            ++ix)
7744         symtab->includes[ix] = symtab_iter;
7745       symtab->includes[len] = NULL;
7746
7747       VEC_free (symtab_ptr, result_symtabs);
7748       htab_delete (all_children);
7749       htab_delete (all_type_symtabs);
7750     }
7751 }
7752
7753 /* Compute the 'includes' field for the symtabs of all the CUs we just
7754    read.  */
7755
7756 static void
7757 process_cu_includes (void)
7758 {
7759   int ix;
7760   struct dwarf2_per_cu_data *iter;
7761
7762   for (ix = 0;
7763        VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
7764                     ix, iter);
7765        ++ix)
7766     {
7767       if (! iter->is_debug_types)
7768         compute_symtab_includes (iter);
7769     }
7770
7771   VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
7772 }
7773
7774 /* Generate full symbol information for PER_CU, whose DIEs have
7775    already been loaded into memory.  */
7776
7777 static void
7778 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
7779                         enum language pretend_language)
7780 {
7781   struct dwarf2_cu *cu = per_cu->cu;
7782   struct objfile *objfile = per_cu->objfile;
7783   CORE_ADDR lowpc, highpc;
7784   struct symtab *symtab;
7785   struct cleanup *back_to, *delayed_list_cleanup;
7786   CORE_ADDR baseaddr;
7787   struct block *static_block;
7788
7789   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7790
7791   buildsym_init ();
7792   back_to = make_cleanup (really_free_pendings, NULL);
7793   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7794
7795   cu->list_in_scope = &file_symbols;
7796
7797   cu->language = pretend_language;
7798   cu->language_defn = language_def (cu->language);
7799
7800   /* Do line number decoding in read_file_scope () */
7801   process_die (cu->dies, cu);
7802
7803   /* For now fudge the Go package.  */
7804   if (cu->language == language_go)
7805     fixup_go_packaging (cu);
7806
7807   /* Now that we have processed all the DIEs in the CU, all the types 
7808      should be complete, and it should now be safe to compute all of the
7809      physnames.  */
7810   compute_delayed_physnames (cu);
7811   do_cleanups (delayed_list_cleanup);
7812
7813   /* Some compilers don't define a DW_AT_high_pc attribute for the
7814      compilation unit.  If the DW_AT_high_pc is missing, synthesize
7815      it, by scanning the DIE's below the compilation unit.  */
7816   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
7817
7818   static_block
7819     = end_symtab_get_static_block (highpc + baseaddr, objfile, 0, 1);
7820
7821   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
7822      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
7823      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
7824      addrmap to help ensure it has an accurate map of pc values belonging to
7825      this comp unit.  */
7826   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
7827
7828   symtab = end_symtab_from_static_block (static_block, objfile,
7829                                          SECT_OFF_TEXT (objfile), 0);
7830
7831   if (symtab != NULL)
7832     {
7833       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
7834
7835       /* Set symtab language to language from DW_AT_language.  If the
7836          compilation is from a C file generated by language preprocessors, do
7837          not set the language if it was already deduced by start_subfile.  */
7838       if (!(cu->language == language_c && symtab->language != language_c))
7839         symtab->language = cu->language;
7840
7841       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
7842          produce DW_AT_location with location lists but it can be possibly
7843          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
7844          there were bugs in prologue debug info, fixed later in GCC-4.5
7845          by "unwind info for epilogues" patch (which is not directly related).
7846
7847          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
7848          needed, it would be wrong due to missing DW_AT_producer there.
7849
7850          Still one can confuse GDB by using non-standard GCC compilation
7851          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
7852          */ 
7853       if (cu->has_loclist && gcc_4_minor >= 5)
7854         symtab->locations_valid = 1;
7855
7856       if (gcc_4_minor >= 5)
7857         symtab->epilogue_unwind_valid = 1;
7858
7859       symtab->call_site_htab = cu->call_site_htab;
7860     }
7861
7862   if (dwarf2_per_objfile->using_index)
7863     per_cu->v.quick->symtab = symtab;
7864   else
7865     {
7866       struct partial_symtab *pst = per_cu->v.psymtab;
7867       pst->symtab = symtab;
7868       pst->readin = 1;
7869     }
7870
7871   /* Push it for inclusion processing later.  */
7872   VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
7873
7874   do_cleanups (back_to);
7875 }
7876
7877 /* Generate full symbol information for type unit PER_CU, whose DIEs have
7878    already been loaded into memory.  */
7879
7880 static void
7881 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
7882                         enum language pretend_language)
7883 {
7884   struct dwarf2_cu *cu = per_cu->cu;
7885   struct objfile *objfile = per_cu->objfile;
7886   struct symtab *symtab;
7887   struct cleanup *back_to, *delayed_list_cleanup;
7888   struct signatured_type *sig_type;
7889
7890   gdb_assert (per_cu->is_debug_types);
7891   sig_type = (struct signatured_type *) per_cu;
7892
7893   buildsym_init ();
7894   back_to = make_cleanup (really_free_pendings, NULL);
7895   delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
7896
7897   cu->list_in_scope = &file_symbols;
7898
7899   cu->language = pretend_language;
7900   cu->language_defn = language_def (cu->language);
7901
7902   /* The symbol tables are set up in read_type_unit_scope.  */
7903   process_die (cu->dies, cu);
7904
7905   /* For now fudge the Go package.  */
7906   if (cu->language == language_go)
7907     fixup_go_packaging (cu);
7908
7909   /* Now that we have processed all the DIEs in the CU, all the types 
7910      should be complete, and it should now be safe to compute all of the
7911      physnames.  */
7912   compute_delayed_physnames (cu);
7913   do_cleanups (delayed_list_cleanup);
7914
7915   /* TUs share symbol tables.
7916      If this is the first TU to use this symtab, complete the construction
7917      of it with end_expandable_symtab.  Otherwise, complete the addition of
7918      this TU's symbols to the existing symtab.  */
7919   if (sig_type->type_unit_group->primary_symtab == NULL)
7920     {
7921       symtab = end_expandable_symtab (0, objfile, SECT_OFF_TEXT (objfile));
7922       sig_type->type_unit_group->primary_symtab = symtab;
7923
7924       if (symtab != NULL)
7925         {
7926           /* Set symtab language to language from DW_AT_language.  If the
7927              compilation is from a C file generated by language preprocessors,
7928              do not set the language if it was already deduced by
7929              start_subfile.  */
7930           if (!(cu->language == language_c && symtab->language != language_c))
7931             symtab->language = cu->language;
7932         }
7933     }
7934   else
7935     {
7936       augment_type_symtab (objfile,
7937                            sig_type->type_unit_group->primary_symtab);
7938       symtab = sig_type->type_unit_group->primary_symtab;
7939     }
7940
7941   if (dwarf2_per_objfile->using_index)
7942     per_cu->v.quick->symtab = symtab;
7943   else
7944     {
7945       struct partial_symtab *pst = per_cu->v.psymtab;
7946       pst->symtab = symtab;
7947       pst->readin = 1;
7948     }
7949
7950   do_cleanups (back_to);
7951 }
7952
7953 /* Process an imported unit DIE.  */
7954
7955 static void
7956 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
7957 {
7958   struct attribute *attr;
7959
7960   /* For now we don't handle imported units in type units.  */
7961   if (cu->per_cu->is_debug_types)
7962     {
7963       error (_("Dwarf Error: DW_TAG_imported_unit is not"
7964                " supported in type units [in module %s]"),
7965              objfile_name (cu->objfile));
7966     }
7967
7968   attr = dwarf2_attr (die, DW_AT_import, cu);
7969   if (attr != NULL)
7970     {
7971       struct dwarf2_per_cu_data *per_cu;
7972       struct symtab *imported_symtab;
7973       sect_offset offset;
7974       int is_dwz;
7975
7976       offset = dwarf2_get_ref_die_offset (attr);
7977       is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
7978       per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
7979
7980       /* If necessary, add it to the queue and load its DIEs.  */
7981       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
7982         load_full_comp_unit (per_cu, cu->language);
7983
7984       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
7985                      per_cu);
7986     }
7987 }
7988
7989 /* Reset the in_process bit of a die.  */
7990
7991 static void
7992 reset_die_in_process (void *arg)
7993 {
7994   struct die_info *die = arg;
7995
7996   die->in_process = 0;
7997 }
7998
7999 /* Process a die and its children.  */
8000
8001 static void
8002 process_die (struct die_info *die, struct dwarf2_cu *cu)
8003 {
8004   struct cleanup *in_process;
8005
8006   /* We should only be processing those not already in process.  */
8007   gdb_assert (!die->in_process);
8008
8009   die->in_process = 1;
8010   in_process = make_cleanup (reset_die_in_process,die);
8011
8012   switch (die->tag)
8013     {
8014     case DW_TAG_padding:
8015       break;
8016     case DW_TAG_compile_unit:
8017     case DW_TAG_partial_unit:
8018       read_file_scope (die, cu);
8019       break;
8020     case DW_TAG_type_unit:
8021       read_type_unit_scope (die, cu);
8022       break;
8023     case DW_TAG_subprogram:
8024     case DW_TAG_inlined_subroutine:
8025       read_func_scope (die, cu);
8026       break;
8027     case DW_TAG_lexical_block:
8028     case DW_TAG_try_block:
8029     case DW_TAG_catch_block:
8030       read_lexical_block_scope (die, cu);
8031       break;
8032     case DW_TAG_GNU_call_site:
8033       read_call_site_scope (die, cu);
8034       break;
8035     case DW_TAG_class_type:
8036     case DW_TAG_interface_type:
8037     case DW_TAG_structure_type:
8038     case DW_TAG_union_type:
8039       process_structure_scope (die, cu);
8040       break;
8041     case DW_TAG_enumeration_type:
8042       process_enumeration_scope (die, cu);
8043       break;
8044
8045     /* These dies have a type, but processing them does not create
8046        a symbol or recurse to process the children.  Therefore we can
8047        read them on-demand through read_type_die.  */
8048     case DW_TAG_subroutine_type:
8049     case DW_TAG_set_type:
8050     case DW_TAG_array_type:
8051     case DW_TAG_pointer_type:
8052     case DW_TAG_ptr_to_member_type:
8053     case DW_TAG_reference_type:
8054     case DW_TAG_string_type:
8055       break;
8056
8057     case DW_TAG_base_type:
8058     case DW_TAG_subrange_type:
8059     case DW_TAG_typedef:
8060       /* Add a typedef symbol for the type definition, if it has a
8061          DW_AT_name.  */
8062       new_symbol (die, read_type_die (die, cu), cu);
8063       break;
8064     case DW_TAG_common_block:
8065       read_common_block (die, cu);
8066       break;
8067     case DW_TAG_common_inclusion:
8068       break;
8069     case DW_TAG_namespace:
8070       cu->processing_has_namespace_info = 1;
8071       read_namespace (die, cu);
8072       break;
8073     case DW_TAG_module:
8074       cu->processing_has_namespace_info = 1;
8075       read_module (die, cu);
8076       break;
8077     case DW_TAG_imported_declaration:
8078       cu->processing_has_namespace_info = 1;
8079       if (read_namespace_alias (die, cu))
8080         break;
8081       /* The declaration is not a global namespace alias: fall through.  */
8082     case DW_TAG_imported_module:
8083       cu->processing_has_namespace_info = 1;
8084       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8085                                  || cu->language != language_fortran))
8086         complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8087                    dwarf_tag_name (die->tag));
8088       read_import_statement (die, cu);
8089       break;
8090
8091     case DW_TAG_imported_unit:
8092       process_imported_unit_die (die, cu);
8093       break;
8094
8095     default:
8096       new_symbol (die, NULL, cu);
8097       break;
8098     }
8099
8100   do_cleanups (in_process);
8101 }
8102 \f
8103 /* DWARF name computation.  */
8104
8105 /* A helper function for dwarf2_compute_name which determines whether DIE
8106    needs to have the name of the scope prepended to the name listed in the
8107    die.  */
8108
8109 static int
8110 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8111 {
8112   struct attribute *attr;
8113
8114   switch (die->tag)
8115     {
8116     case DW_TAG_namespace:
8117     case DW_TAG_typedef:
8118     case DW_TAG_class_type:
8119     case DW_TAG_interface_type:
8120     case DW_TAG_structure_type:
8121     case DW_TAG_union_type:
8122     case DW_TAG_enumeration_type:
8123     case DW_TAG_enumerator:
8124     case DW_TAG_subprogram:
8125     case DW_TAG_member:
8126     case DW_TAG_imported_declaration:
8127       return 1;
8128
8129     case DW_TAG_variable:
8130     case DW_TAG_constant:
8131       /* We only need to prefix "globally" visible variables.  These include
8132          any variable marked with DW_AT_external or any variable that
8133          lives in a namespace.  [Variables in anonymous namespaces
8134          require prefixing, but they are not DW_AT_external.]  */
8135
8136       if (dwarf2_attr (die, DW_AT_specification, cu))
8137         {
8138           struct dwarf2_cu *spec_cu = cu;
8139
8140           return die_needs_namespace (die_specification (die, &spec_cu),
8141                                       spec_cu);
8142         }
8143
8144       attr = dwarf2_attr (die, DW_AT_external, cu);
8145       if (attr == NULL && die->parent->tag != DW_TAG_namespace
8146           && die->parent->tag != DW_TAG_module)
8147         return 0;
8148       /* A variable in a lexical block of some kind does not need a
8149          namespace, even though in C++ such variables may be external
8150          and have a mangled name.  */
8151       if (die->parent->tag ==  DW_TAG_lexical_block
8152           || die->parent->tag ==  DW_TAG_try_block
8153           || die->parent->tag ==  DW_TAG_catch_block
8154           || die->parent->tag == DW_TAG_subprogram)
8155         return 0;
8156       return 1;
8157
8158     default:
8159       return 0;
8160     }
8161 }
8162
8163 /* Retrieve the last character from a mem_file.  */
8164
8165 static void
8166 do_ui_file_peek_last (void *object, const char *buffer, long length)
8167 {
8168   char *last_char_p = (char *) object;
8169
8170   if (length > 0)
8171     *last_char_p = buffer[length - 1];
8172 }
8173
8174 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
8175    compute the physname for the object, which include a method's:
8176    - formal parameters (C++/Java),
8177    - receiver type (Go),
8178    - return type (Java).
8179
8180    The term "physname" is a bit confusing.
8181    For C++, for example, it is the demangled name.
8182    For Go, for example, it's the mangled name.
8183
8184    For Ada, return the DIE's linkage name rather than the fully qualified
8185    name.  PHYSNAME is ignored..
8186
8187    The result is allocated on the objfile_obstack and canonicalized.  */
8188
8189 static const char *
8190 dwarf2_compute_name (const char *name,
8191                      struct die_info *die, struct dwarf2_cu *cu,
8192                      int physname)
8193 {
8194   struct objfile *objfile = cu->objfile;
8195
8196   if (name == NULL)
8197     name = dwarf2_name (die, cu);
8198
8199   /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8200      compute it by typename_concat inside GDB.  */
8201   if (cu->language == language_ada
8202       || (cu->language == language_fortran && physname))
8203     {
8204       /* For Ada unit, we prefer the linkage name over the name, as
8205          the former contains the exported name, which the user expects
8206          to be able to reference.  Ideally, we want the user to be able
8207          to reference this entity using either natural or linkage name,
8208          but we haven't started looking at this enhancement yet.  */
8209       struct attribute *attr;
8210
8211       attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8212       if (attr == NULL)
8213         attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8214       if (attr && DW_STRING (attr))
8215         return DW_STRING (attr);
8216     }
8217
8218   /* These are the only languages we know how to qualify names in.  */
8219   if (name != NULL
8220       && (cu->language == language_cplus || cu->language == language_java
8221           || cu->language == language_fortran))
8222     {
8223       if (die_needs_namespace (die, cu))
8224         {
8225           long length;
8226           const char *prefix;
8227           struct ui_file *buf;
8228
8229           prefix = determine_prefix (die, cu);
8230           buf = mem_fileopen ();
8231           if (*prefix != '\0')
8232             {
8233               char *prefixed_name = typename_concat (NULL, prefix, name,
8234                                                      physname, cu);
8235
8236               fputs_unfiltered (prefixed_name, buf);
8237               xfree (prefixed_name);
8238             }
8239           else
8240             fputs_unfiltered (name, buf);
8241
8242           /* Template parameters may be specified in the DIE's DW_AT_name, or
8243              as children with DW_TAG_template_type_param or
8244              DW_TAG_value_type_param.  If the latter, add them to the name
8245              here.  If the name already has template parameters, then
8246              skip this step; some versions of GCC emit both, and
8247              it is more efficient to use the pre-computed name.
8248
8249              Something to keep in mind about this process: it is very
8250              unlikely, or in some cases downright impossible, to produce
8251              something that will match the mangled name of a function.
8252              If the definition of the function has the same debug info,
8253              we should be able to match up with it anyway.  But fallbacks
8254              using the minimal symbol, for instance to find a method
8255              implemented in a stripped copy of libstdc++, will not work.
8256              If we do not have debug info for the definition, we will have to
8257              match them up some other way.
8258
8259              When we do name matching there is a related problem with function
8260              templates; two instantiated function templates are allowed to
8261              differ only by their return types, which we do not add here.  */
8262
8263           if (cu->language == language_cplus && strchr (name, '<') == NULL)
8264             {
8265               struct attribute *attr;
8266               struct die_info *child;
8267               int first = 1;
8268
8269               die->building_fullname = 1;
8270
8271               for (child = die->child; child != NULL; child = child->sibling)
8272                 {
8273                   struct type *type;
8274                   LONGEST value;
8275                   const gdb_byte *bytes;
8276                   struct dwarf2_locexpr_baton *baton;
8277                   struct value *v;
8278
8279                   if (child->tag != DW_TAG_template_type_param
8280                       && child->tag != DW_TAG_template_value_param)
8281                     continue;
8282
8283                   if (first)
8284                     {
8285                       fputs_unfiltered ("<", buf);
8286                       first = 0;
8287                     }
8288                   else
8289                     fputs_unfiltered (", ", buf);
8290
8291                   attr = dwarf2_attr (child, DW_AT_type, cu);
8292                   if (attr == NULL)
8293                     {
8294                       complaint (&symfile_complaints,
8295                                  _("template parameter missing DW_AT_type"));
8296                       fputs_unfiltered ("UNKNOWN_TYPE", buf);
8297                       continue;
8298                     }
8299                   type = die_type (child, cu);
8300
8301                   if (child->tag == DW_TAG_template_type_param)
8302                     {
8303                       c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
8304                       continue;
8305                     }
8306
8307                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
8308                   if (attr == NULL)
8309                     {
8310                       complaint (&symfile_complaints,
8311                                  _("template parameter missing "
8312                                    "DW_AT_const_value"));
8313                       fputs_unfiltered ("UNKNOWN_VALUE", buf);
8314                       continue;
8315                     }
8316
8317                   dwarf2_const_value_attr (attr, type, name,
8318                                            &cu->comp_unit_obstack, cu,
8319                                            &value, &bytes, &baton);
8320
8321                   if (TYPE_NOSIGN (type))
8322                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
8323                        changed, this can use value_print instead.  */
8324                     c_printchar (value, type, buf);
8325                   else
8326                     {
8327                       struct value_print_options opts;
8328
8329                       if (baton != NULL)
8330                         v = dwarf2_evaluate_loc_desc (type, NULL,
8331                                                       baton->data,
8332                                                       baton->size,
8333                                                       baton->per_cu);
8334                       else if (bytes != NULL)
8335                         {
8336                           v = allocate_value (type);
8337                           memcpy (value_contents_writeable (v), bytes,
8338                                   TYPE_LENGTH (type));
8339                         }
8340                       else
8341                         v = value_from_longest (type, value);
8342
8343                       /* Specify decimal so that we do not depend on
8344                          the radix.  */
8345                       get_formatted_print_options (&opts, 'd');
8346                       opts.raw = 1;
8347                       value_print (v, buf, &opts);
8348                       release_value (v);
8349                       value_free (v);
8350                     }
8351                 }
8352
8353               die->building_fullname = 0;
8354
8355               if (!first)
8356                 {
8357                   /* Close the argument list, with a space if necessary
8358                      (nested templates).  */
8359                   char last_char = '\0';
8360                   ui_file_put (buf, do_ui_file_peek_last, &last_char);
8361                   if (last_char == '>')
8362                     fputs_unfiltered (" >", buf);
8363                   else
8364                     fputs_unfiltered (">", buf);
8365                 }
8366             }
8367
8368           /* For Java and C++ methods, append formal parameter type
8369              information, if PHYSNAME.  */
8370
8371           if (physname && die->tag == DW_TAG_subprogram
8372               && (cu->language == language_cplus
8373                   || cu->language == language_java))
8374             {
8375               struct type *type = read_type_die (die, cu);
8376
8377               c_type_print_args (type, buf, 1, cu->language,
8378                                  &type_print_raw_options);
8379
8380               if (cu->language == language_java)
8381                 {
8382                   /* For java, we must append the return type to method
8383                      names.  */
8384                   if (die->tag == DW_TAG_subprogram)
8385                     java_print_type (TYPE_TARGET_TYPE (type), "", buf,
8386                                      0, 0, &type_print_raw_options);
8387                 }
8388               else if (cu->language == language_cplus)
8389                 {
8390                   /* Assume that an artificial first parameter is
8391                      "this", but do not crash if it is not.  RealView
8392                      marks unnamed (and thus unused) parameters as
8393                      artificial; there is no way to differentiate
8394                      the two cases.  */
8395                   if (TYPE_NFIELDS (type) > 0
8396                       && TYPE_FIELD_ARTIFICIAL (type, 0)
8397                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
8398                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8399                                                                         0))))
8400                     fputs_unfiltered (" const", buf);
8401                 }
8402             }
8403
8404           name = ui_file_obsavestring (buf, &objfile->objfile_obstack,
8405                                        &length);
8406           ui_file_delete (buf);
8407
8408           if (cu->language == language_cplus)
8409             {
8410               const char *cname
8411                 = dwarf2_canonicalize_name (name, cu,
8412                                             &objfile->objfile_obstack);
8413
8414               if (cname != NULL)
8415                 name = cname;
8416             }
8417         }
8418     }
8419
8420   return name;
8421 }
8422
8423 /* Return the fully qualified name of DIE, based on its DW_AT_name.
8424    If scope qualifiers are appropriate they will be added.  The result
8425    will be allocated on the objfile_obstack, or NULL if the DIE does
8426    not have a name.  NAME may either be from a previous call to
8427    dwarf2_name or NULL.
8428
8429    The output string will be canonicalized (if C++/Java).  */
8430
8431 static const char *
8432 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8433 {
8434   return dwarf2_compute_name (name, die, cu, 0);
8435 }
8436
8437 /* Construct a physname for the given DIE in CU.  NAME may either be
8438    from a previous call to dwarf2_name or NULL.  The result will be
8439    allocated on the objfile_objstack or NULL if the DIE does not have a
8440    name.
8441
8442    The output string will be canonicalized (if C++/Java).  */
8443
8444 static const char *
8445 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
8446 {
8447   struct objfile *objfile = cu->objfile;
8448   struct attribute *attr;
8449   const char *retval, *mangled = NULL, *canon = NULL;
8450   struct cleanup *back_to;
8451   int need_copy = 1;
8452
8453   /* In this case dwarf2_compute_name is just a shortcut not building anything
8454      on its own.  */
8455   if (!die_needs_namespace (die, cu))
8456     return dwarf2_compute_name (name, die, cu, 1);
8457
8458   back_to = make_cleanup (null_cleanup, NULL);
8459
8460   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8461   if (!attr)
8462     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8463
8464   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8465      has computed.  */
8466   if (attr && DW_STRING (attr))
8467     {
8468       char *demangled;
8469
8470       mangled = DW_STRING (attr);
8471
8472       /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8473          type.  It is easier for GDB users to search for such functions as
8474          `name(params)' than `long name(params)'.  In such case the minimal
8475          symbol names do not match the full symbol names but for template
8476          functions there is never a need to look up their definition from their
8477          declaration so the only disadvantage remains the minimal symbol
8478          variant `long name(params)' does not have the proper inferior type.
8479          */
8480
8481       if (cu->language == language_go)
8482         {
8483           /* This is a lie, but we already lie to the caller new_symbol_full.
8484              new_symbol_full assumes we return the mangled name.
8485              This just undoes that lie until things are cleaned up.  */
8486           demangled = NULL;
8487         }
8488       else
8489         {
8490           demangled = gdb_demangle (mangled,
8491                                     (DMGL_PARAMS | DMGL_ANSI
8492                                      | (cu->language == language_java
8493                                         ? DMGL_JAVA | DMGL_RET_POSTFIX
8494                                         : DMGL_RET_DROP)));
8495         }
8496       if (demangled)
8497         {
8498           make_cleanup (xfree, demangled);
8499           canon = demangled;
8500         }
8501       else
8502         {
8503           canon = mangled;
8504           need_copy = 0;
8505         }
8506     }
8507
8508   if (canon == NULL || check_physname)
8509     {
8510       const char *physname = dwarf2_compute_name (name, die, cu, 1);
8511
8512       if (canon != NULL && strcmp (physname, canon) != 0)
8513         {
8514           /* It may not mean a bug in GDB.  The compiler could also
8515              compute DW_AT_linkage_name incorrectly.  But in such case
8516              GDB would need to be bug-to-bug compatible.  */
8517
8518           complaint (&symfile_complaints,
8519                      _("Computed physname <%s> does not match demangled <%s> "
8520                        "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
8521                      physname, canon, mangled, die->offset.sect_off,
8522                      objfile_name (objfile));
8523
8524           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8525              is available here - over computed PHYSNAME.  It is safer
8526              against both buggy GDB and buggy compilers.  */
8527
8528           retval = canon;
8529         }
8530       else
8531         {
8532           retval = physname;
8533           need_copy = 0;
8534         }
8535     }
8536   else
8537     retval = canon;
8538
8539   if (need_copy)
8540     retval = obstack_copy0 (&objfile->objfile_obstack, retval, strlen (retval));
8541
8542   do_cleanups (back_to);
8543   return retval;
8544 }
8545
8546 /* Inspect DIE in CU for a namespace alias.  If one exists, record
8547    a new symbol for it.
8548
8549    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
8550
8551 static int
8552 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8553 {
8554   struct attribute *attr;
8555
8556   /* If the die does not have a name, this is not a namespace
8557      alias.  */
8558   attr = dwarf2_attr (die, DW_AT_name, cu);
8559   if (attr != NULL)
8560     {
8561       int num;
8562       struct die_info *d = die;
8563       struct dwarf2_cu *imported_cu = cu;
8564
8565       /* If the compiler has nested DW_AT_imported_declaration DIEs,
8566          keep inspecting DIEs until we hit the underlying import.  */
8567 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
8568       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8569         {
8570           attr = dwarf2_attr (d, DW_AT_import, cu);
8571           if (attr == NULL)
8572             break;
8573
8574           d = follow_die_ref (d, attr, &imported_cu);
8575           if (d->tag != DW_TAG_imported_declaration)
8576             break;
8577         }
8578
8579       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8580         {
8581           complaint (&symfile_complaints,
8582                      _("DIE at 0x%x has too many recursively imported "
8583                        "declarations"), d->offset.sect_off);
8584           return 0;
8585         }
8586
8587       if (attr != NULL)
8588         {
8589           struct type *type;
8590           sect_offset offset = dwarf2_get_ref_die_offset (attr);
8591
8592           type = get_die_type_at_offset (offset, cu->per_cu);
8593           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8594             {
8595               /* This declaration is a global namespace alias.  Add
8596                  a symbol for it whose type is the aliased namespace.  */
8597               new_symbol (die, type, cu);
8598               return 1;
8599             }
8600         }
8601     }
8602
8603   return 0;
8604 }
8605
8606 /* Read the import statement specified by the given die and record it.  */
8607
8608 static void
8609 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8610 {
8611   struct objfile *objfile = cu->objfile;
8612   struct attribute *import_attr;
8613   struct die_info *imported_die, *child_die;
8614   struct dwarf2_cu *imported_cu;
8615   const char *imported_name;
8616   const char *imported_name_prefix;
8617   const char *canonical_name;
8618   const char *import_alias;
8619   const char *imported_declaration = NULL;
8620   const char *import_prefix;
8621   VEC (const_char_ptr) *excludes = NULL;
8622   struct cleanup *cleanups;
8623
8624   import_attr = dwarf2_attr (die, DW_AT_import, cu);
8625   if (import_attr == NULL)
8626     {
8627       complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8628                  dwarf_tag_name (die->tag));
8629       return;
8630     }
8631
8632   imported_cu = cu;
8633   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8634   imported_name = dwarf2_name (imported_die, imported_cu);
8635   if (imported_name == NULL)
8636     {
8637       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8638
8639         The import in the following code:
8640         namespace A
8641           {
8642             typedef int B;
8643           }
8644
8645         int main ()
8646           {
8647             using A::B;
8648             B b;
8649             return b;
8650           }
8651
8652         ...
8653          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8654             <52>   DW_AT_decl_file   : 1
8655             <53>   DW_AT_decl_line   : 6
8656             <54>   DW_AT_import      : <0x75>
8657          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8658             <59>   DW_AT_name        : B
8659             <5b>   DW_AT_decl_file   : 1
8660             <5c>   DW_AT_decl_line   : 2
8661             <5d>   DW_AT_type        : <0x6e>
8662         ...
8663          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8664             <76>   DW_AT_byte_size   : 4
8665             <77>   DW_AT_encoding    : 5        (signed)
8666
8667         imports the wrong die ( 0x75 instead of 0x58 ).
8668         This case will be ignored until the gcc bug is fixed.  */
8669       return;
8670     }
8671
8672   /* Figure out the local name after import.  */
8673   import_alias = dwarf2_name (die, cu);
8674
8675   /* Figure out where the statement is being imported to.  */
8676   import_prefix = determine_prefix (die, cu);
8677
8678   /* Figure out what the scope of the imported die is and prepend it
8679      to the name of the imported die.  */
8680   imported_name_prefix = determine_prefix (imported_die, imported_cu);
8681
8682   if (imported_die->tag != DW_TAG_namespace
8683       && imported_die->tag != DW_TAG_module)
8684     {
8685       imported_declaration = imported_name;
8686       canonical_name = imported_name_prefix;
8687     }
8688   else if (strlen (imported_name_prefix) > 0)
8689     canonical_name = obconcat (&objfile->objfile_obstack,
8690                                imported_name_prefix, "::", imported_name,
8691                                (char *) NULL);
8692   else
8693     canonical_name = imported_name;
8694
8695   cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8696
8697   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8698     for (child_die = die->child; child_die && child_die->tag;
8699          child_die = sibling_die (child_die))
8700       {
8701         /* DWARF-4: A Fortran use statement with a “rename list” may be
8702            represented by an imported module entry with an import attribute
8703            referring to the module and owned entries corresponding to those
8704            entities that are renamed as part of being imported.  */
8705
8706         if (child_die->tag != DW_TAG_imported_declaration)
8707           {
8708             complaint (&symfile_complaints,
8709                        _("child DW_TAG_imported_declaration expected "
8710                          "- DIE at 0x%x [in module %s]"),
8711                        child_die->offset.sect_off, objfile_name (objfile));
8712             continue;
8713           }
8714
8715         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8716         if (import_attr == NULL)
8717           {
8718             complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8719                        dwarf_tag_name (child_die->tag));
8720             continue;
8721           }
8722
8723         imported_cu = cu;
8724         imported_die = follow_die_ref_or_sig (child_die, import_attr,
8725                                               &imported_cu);
8726         imported_name = dwarf2_name (imported_die, imported_cu);
8727         if (imported_name == NULL)
8728           {
8729             complaint (&symfile_complaints,
8730                        _("child DW_TAG_imported_declaration has unknown "
8731                          "imported name - DIE at 0x%x [in module %s]"),
8732                        child_die->offset.sect_off, objfile_name (objfile));
8733             continue;
8734           }
8735
8736         VEC_safe_push (const_char_ptr, excludes, imported_name);
8737
8738         process_die (child_die, cu);
8739       }
8740
8741   cp_add_using_directive (import_prefix,
8742                           canonical_name,
8743                           import_alias,
8744                           imported_declaration,
8745                           excludes,
8746                           0,
8747                           &objfile->objfile_obstack);
8748
8749   do_cleanups (cleanups);
8750 }
8751
8752 /* Cleanup function for handle_DW_AT_stmt_list.  */
8753
8754 static void
8755 free_cu_line_header (void *arg)
8756 {
8757   struct dwarf2_cu *cu = arg;
8758
8759   free_line_header (cu->line_header);
8760   cu->line_header = NULL;
8761 }
8762
8763 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
8764    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
8765    this, it was first present in GCC release 4.3.0.  */
8766
8767 static int
8768 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
8769 {
8770   if (!cu->checked_producer)
8771     check_producer (cu);
8772
8773   return cu->producer_is_gcc_lt_4_3;
8774 }
8775
8776 static void
8777 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
8778                          const char **name, const char **comp_dir)
8779 {
8780   struct attribute *attr;
8781
8782   *name = NULL;
8783   *comp_dir = NULL;
8784
8785   /* Find the filename.  Do not use dwarf2_name here, since the filename
8786      is not a source language identifier.  */
8787   attr = dwarf2_attr (die, DW_AT_name, cu);
8788   if (attr)
8789     {
8790       *name = DW_STRING (attr);
8791     }
8792
8793   attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
8794   if (attr)
8795     *comp_dir = DW_STRING (attr);
8796   else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
8797            && IS_ABSOLUTE_PATH (*name))
8798     {
8799       char *d = ldirname (*name);
8800
8801       *comp_dir = d;
8802       if (d != NULL)
8803         make_cleanup (xfree, d);
8804     }
8805   if (*comp_dir != NULL)
8806     {
8807       /* Irix 6.2 native cc prepends <machine>.: to the compilation
8808          directory, get rid of it.  */
8809       char *cp = strchr (*comp_dir, ':');
8810
8811       if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
8812         *comp_dir = cp + 1;
8813     }
8814
8815   if (*name == NULL)
8816     *name = "<unknown>";
8817 }
8818
8819 /* Handle DW_AT_stmt_list for a compilation unit.
8820    DIE is the DW_TAG_compile_unit die for CU.
8821    COMP_DIR is the compilation directory.
8822    WANT_LINE_INFO is non-zero if the pc/line-number mapping is needed.  */
8823
8824 static void
8825 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
8826                         const char *comp_dir) /* ARI: editCase function */
8827 {
8828   struct attribute *attr;
8829
8830   gdb_assert (! cu->per_cu->is_debug_types);
8831
8832   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8833   if (attr)
8834     {
8835       unsigned int line_offset = DW_UNSND (attr);
8836       struct line_header *line_header
8837         = dwarf_decode_line_header (line_offset, cu);
8838
8839       if (line_header)
8840         {
8841           cu->line_header = line_header;
8842           make_cleanup (free_cu_line_header, cu);
8843           dwarf_decode_lines (line_header, comp_dir, cu, NULL, 1);
8844         }
8845     }
8846 }
8847
8848 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
8849
8850 static void
8851 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
8852 {
8853   struct objfile *objfile = dwarf2_per_objfile->objfile;
8854   struct cleanup *back_to = make_cleanup (null_cleanup, 0);
8855   CORE_ADDR lowpc = ((CORE_ADDR) -1);
8856   CORE_ADDR highpc = ((CORE_ADDR) 0);
8857   struct attribute *attr;
8858   const char *name = NULL;
8859   const char *comp_dir = NULL;
8860   struct die_info *child_die;
8861   bfd *abfd = objfile->obfd;
8862   CORE_ADDR baseaddr;
8863
8864   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8865
8866   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
8867
8868   /* If we didn't find a lowpc, set it to highpc to avoid complaints
8869      from finish_block.  */
8870   if (lowpc == ((CORE_ADDR) -1))
8871     lowpc = highpc;
8872   lowpc += baseaddr;
8873   highpc += baseaddr;
8874
8875   find_file_and_directory (die, cu, &name, &comp_dir);
8876
8877   prepare_one_comp_unit (cu, die, cu->language);
8878
8879   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
8880      standardised yet.  As a workaround for the language detection we fall
8881      back to the DW_AT_producer string.  */
8882   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
8883     cu->language = language_opencl;
8884
8885   /* Similar hack for Go.  */
8886   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
8887     set_cu_language (DW_LANG_Go, cu);
8888
8889   dwarf2_start_symtab (cu, name, comp_dir, lowpc);
8890
8891   /* Decode line number information if present.  We do this before
8892      processing child DIEs, so that the line header table is available
8893      for DW_AT_decl_file.  */
8894   handle_DW_AT_stmt_list (die, cu, comp_dir);
8895
8896   /* Process all dies in compilation unit.  */
8897   if (die->child != NULL)
8898     {
8899       child_die = die->child;
8900       while (child_die && child_die->tag)
8901         {
8902           process_die (child_die, cu);
8903           child_die = sibling_die (child_die);
8904         }
8905     }
8906
8907   /* Decode macro information, if present.  Dwarf 2 macro information
8908      refers to information in the line number info statement program
8909      header, so we can only read it if we've read the header
8910      successfully.  */
8911   attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
8912   if (attr && cu->line_header)
8913     {
8914       if (dwarf2_attr (die, DW_AT_macro_info, cu))
8915         complaint (&symfile_complaints,
8916                    _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
8917
8918       dwarf_decode_macros (cu, DW_UNSND (attr), comp_dir, 1);
8919     }
8920   else
8921     {
8922       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
8923       if (attr && cu->line_header)
8924         {
8925           unsigned int macro_offset = DW_UNSND (attr);
8926
8927           dwarf_decode_macros (cu, macro_offset, comp_dir, 0);
8928         }
8929     }
8930
8931   do_cleanups (back_to);
8932 }
8933
8934 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
8935    Create the set of symtabs used by this TU, or if this TU is sharing
8936    symtabs with another TU and the symtabs have already been created
8937    then restore those symtabs in the line header.
8938    We don't need the pc/line-number mapping for type units.  */
8939
8940 static void
8941 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
8942 {
8943   struct objfile *objfile = dwarf2_per_objfile->objfile;
8944   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8945   struct type_unit_group *tu_group;
8946   int first_time;
8947   struct line_header *lh;
8948   struct attribute *attr;
8949   unsigned int i, line_offset;
8950   struct signatured_type *sig_type;
8951
8952   gdb_assert (per_cu->is_debug_types);
8953   sig_type = (struct signatured_type *) per_cu;
8954
8955   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
8956
8957   /* If we're using .gdb_index (includes -readnow) then
8958      per_cu->type_unit_group may not have been set up yet.  */
8959   if (sig_type->type_unit_group == NULL)
8960     sig_type->type_unit_group = get_type_unit_group (cu, attr);
8961   tu_group = sig_type->type_unit_group;
8962
8963   /* If we've already processed this stmt_list there's no real need to
8964      do it again, we could fake it and just recreate the part we need
8965      (file name,index -> symtab mapping).  If data shows this optimization
8966      is useful we can do it then.  */
8967   first_time = tu_group->primary_symtab == NULL;
8968
8969   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
8970      debug info.  */
8971   lh = NULL;
8972   if (attr != NULL)
8973     {
8974       line_offset = DW_UNSND (attr);
8975       lh = dwarf_decode_line_header (line_offset, cu);
8976     }
8977   if (lh == NULL)
8978     {
8979       if (first_time)
8980         dwarf2_start_symtab (cu, "", NULL, 0);
8981       else
8982         {
8983           gdb_assert (tu_group->symtabs == NULL);
8984           restart_symtab (0);
8985         }
8986       /* Note: The primary symtab will get allocated at the end.  */
8987       return;
8988     }
8989
8990   cu->line_header = lh;
8991   make_cleanup (free_cu_line_header, cu);
8992
8993   if (first_time)
8994     {
8995       dwarf2_start_symtab (cu, "", NULL, 0);
8996
8997       tu_group->num_symtabs = lh->num_file_names;
8998       tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
8999
9000       for (i = 0; i < lh->num_file_names; ++i)
9001         {
9002           const char *dir = NULL;
9003           struct file_entry *fe = &lh->file_names[i];
9004
9005           if (fe->dir_index)
9006             dir = lh->include_dirs[fe->dir_index - 1];
9007           dwarf2_start_subfile (fe->name, dir, NULL);
9008
9009           /* Note: We don't have to watch for the main subfile here, type units
9010              don't have DW_AT_name.  */
9011
9012           if (current_subfile->symtab == NULL)
9013             {
9014               /* NOTE: start_subfile will recognize when it's been passed
9015                  a file it has already seen.  So we can't assume there's a
9016                  simple mapping from lh->file_names to subfiles,
9017                  lh->file_names may contain dups.  */
9018               current_subfile->symtab = allocate_symtab (current_subfile->name,
9019                                                          objfile);
9020             }
9021
9022           fe->symtab = current_subfile->symtab;
9023           tu_group->symtabs[i] = fe->symtab;
9024         }
9025     }
9026   else
9027     {
9028       restart_symtab (0);
9029
9030       for (i = 0; i < lh->num_file_names; ++i)
9031         {
9032           struct file_entry *fe = &lh->file_names[i];
9033
9034           fe->symtab = tu_group->symtabs[i];
9035         }
9036     }
9037
9038   /* The main symtab is allocated last.  Type units don't have DW_AT_name
9039      so they don't have a "real" (so to speak) symtab anyway.
9040      There is later code that will assign the main symtab to all symbols
9041      that don't have one.  We need to handle the case of a symbol with a
9042      missing symtab (DW_AT_decl_file) anyway.  */
9043 }
9044
9045 /* Process DW_TAG_type_unit.
9046    For TUs we want to skip the first top level sibling if it's not the
9047    actual type being defined by this TU.  In this case the first top
9048    level sibling is there to provide context only.  */
9049
9050 static void
9051 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9052 {
9053   struct die_info *child_die;
9054
9055   prepare_one_comp_unit (cu, die, language_minimal);
9056
9057   /* Initialize (or reinitialize) the machinery for building symtabs.
9058      We do this before processing child DIEs, so that the line header table
9059      is available for DW_AT_decl_file.  */
9060   setup_type_unit_groups (die, cu);
9061
9062   if (die->child != NULL)
9063     {
9064       child_die = die->child;
9065       while (child_die && child_die->tag)
9066         {
9067           process_die (child_die, cu);
9068           child_die = sibling_die (child_die);
9069         }
9070     }
9071 }
9072 \f
9073 /* DWO/DWP files.
9074
9075    http://gcc.gnu.org/wiki/DebugFission
9076    http://gcc.gnu.org/wiki/DebugFissionDWP
9077
9078    To simplify handling of both DWO files ("object" files with the DWARF info)
9079    and DWP files (a file with the DWOs packaged up into one file), we treat
9080    DWP files as having a collection of virtual DWO files.  */
9081
9082 static hashval_t
9083 hash_dwo_file (const void *item)
9084 {
9085   const struct dwo_file *dwo_file = item;
9086   hashval_t hash;
9087
9088   hash = htab_hash_string (dwo_file->dwo_name);
9089   if (dwo_file->comp_dir != NULL)
9090     hash += htab_hash_string (dwo_file->comp_dir);
9091   return hash;
9092 }
9093
9094 static int
9095 eq_dwo_file (const void *item_lhs, const void *item_rhs)
9096 {
9097   const struct dwo_file *lhs = item_lhs;
9098   const struct dwo_file *rhs = item_rhs;
9099
9100   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9101     return 0;
9102   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9103     return lhs->comp_dir == rhs->comp_dir;
9104   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
9105 }
9106
9107 /* Allocate a hash table for DWO files.  */
9108
9109 static htab_t
9110 allocate_dwo_file_hash_table (void)
9111 {
9112   struct objfile *objfile = dwarf2_per_objfile->objfile;
9113
9114   return htab_create_alloc_ex (41,
9115                                hash_dwo_file,
9116                                eq_dwo_file,
9117                                NULL,
9118                                &objfile->objfile_obstack,
9119                                hashtab_obstack_allocate,
9120                                dummy_obstack_deallocate);
9121 }
9122
9123 /* Lookup DWO file DWO_NAME.  */
9124
9125 static void **
9126 lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
9127 {
9128   struct dwo_file find_entry;
9129   void **slot;
9130
9131   if (dwarf2_per_objfile->dwo_files == NULL)
9132     dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9133
9134   memset (&find_entry, 0, sizeof (find_entry));
9135   find_entry.dwo_name = dwo_name;
9136   find_entry.comp_dir = comp_dir;
9137   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9138
9139   return slot;
9140 }
9141
9142 static hashval_t
9143 hash_dwo_unit (const void *item)
9144 {
9145   const struct dwo_unit *dwo_unit = item;
9146
9147   /* This drops the top 32 bits of the id, but is ok for a hash.  */
9148   return dwo_unit->signature;
9149 }
9150
9151 static int
9152 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9153 {
9154   const struct dwo_unit *lhs = item_lhs;
9155   const struct dwo_unit *rhs = item_rhs;
9156
9157   /* The signature is assumed to be unique within the DWO file.
9158      So while object file CU dwo_id's always have the value zero,
9159      that's OK, assuming each object file DWO file has only one CU,
9160      and that's the rule for now.  */
9161   return lhs->signature == rhs->signature;
9162 }
9163
9164 /* Allocate a hash table for DWO CUs,TUs.
9165    There is one of these tables for each of CUs,TUs for each DWO file.  */
9166
9167 static htab_t
9168 allocate_dwo_unit_table (struct objfile *objfile)
9169 {
9170   /* Start out with a pretty small number.
9171      Generally DWO files contain only one CU and maybe some TUs.  */
9172   return htab_create_alloc_ex (3,
9173                                hash_dwo_unit,
9174                                eq_dwo_unit,
9175                                NULL,
9176                                &objfile->objfile_obstack,
9177                                hashtab_obstack_allocate,
9178                                dummy_obstack_deallocate);
9179 }
9180
9181 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
9182
9183 struct create_dwo_cu_data
9184 {
9185   struct dwo_file *dwo_file;
9186   struct dwo_unit dwo_unit;
9187 };
9188
9189 /* die_reader_func for create_dwo_cu.  */
9190
9191 static void
9192 create_dwo_cu_reader (const struct die_reader_specs *reader,
9193                       const gdb_byte *info_ptr,
9194                       struct die_info *comp_unit_die,
9195                       int has_children,
9196                       void *datap)
9197 {
9198   struct dwarf2_cu *cu = reader->cu;
9199   struct objfile *objfile = dwarf2_per_objfile->objfile;
9200   sect_offset offset = cu->per_cu->offset;
9201   struct dwarf2_section_info *section = cu->per_cu->section;
9202   struct create_dwo_cu_data *data = datap;
9203   struct dwo_file *dwo_file = data->dwo_file;
9204   struct dwo_unit *dwo_unit = &data->dwo_unit;
9205   struct attribute *attr;
9206
9207   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9208   if (attr == NULL)
9209     {
9210       complaint (&symfile_complaints,
9211                  _("Dwarf Error: debug entry at offset 0x%x is missing"
9212                    " its dwo_id [in module %s]"),
9213                  offset.sect_off, dwo_file->dwo_name);
9214       return;
9215     }
9216
9217   dwo_unit->dwo_file = dwo_file;
9218   dwo_unit->signature = DW_UNSND (attr);
9219   dwo_unit->section = section;
9220   dwo_unit->offset = offset;
9221   dwo_unit->length = cu->per_cu->length;
9222
9223   if (dwarf2_read_debug)
9224     fprintf_unfiltered (gdb_stdlog, "  offset 0x%x, dwo_id %s\n",
9225                         offset.sect_off, hex_string (dwo_unit->signature));
9226 }
9227
9228 /* Create the dwo_unit for the lone CU in DWO_FILE.
9229    Note: This function processes DWO files only, not DWP files.  */
9230
9231 static struct dwo_unit *
9232 create_dwo_cu (struct dwo_file *dwo_file)
9233 {
9234   struct objfile *objfile = dwarf2_per_objfile->objfile;
9235   struct dwarf2_section_info *section = &dwo_file->sections.info;
9236   bfd *abfd;
9237   htab_t cu_htab;
9238   const gdb_byte *info_ptr, *end_ptr;
9239   struct create_dwo_cu_data create_dwo_cu_data;
9240   struct dwo_unit *dwo_unit;
9241
9242   dwarf2_read_section (objfile, section);
9243   info_ptr = section->buffer;
9244
9245   if (info_ptr == NULL)
9246     return NULL;
9247
9248   /* We can't set abfd until now because the section may be empty or
9249      not present, in which case section->asection will be NULL.  */
9250   abfd = get_section_bfd_owner (section);
9251
9252   if (dwarf2_read_debug)
9253     {
9254       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
9255                           get_section_name (section),
9256                           get_section_file_name (section));
9257     }
9258
9259   create_dwo_cu_data.dwo_file = dwo_file;
9260   dwo_unit = NULL;
9261
9262   end_ptr = info_ptr + section->size;
9263   while (info_ptr < end_ptr)
9264     {
9265       struct dwarf2_per_cu_data per_cu;
9266
9267       memset (&create_dwo_cu_data.dwo_unit, 0,
9268               sizeof (create_dwo_cu_data.dwo_unit));
9269       memset (&per_cu, 0, sizeof (per_cu));
9270       per_cu.objfile = objfile;
9271       per_cu.is_debug_types = 0;
9272       per_cu.offset.sect_off = info_ptr - section->buffer;
9273       per_cu.section = section;
9274
9275       init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
9276                                          create_dwo_cu_reader,
9277                                          &create_dwo_cu_data);
9278
9279       if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9280         {
9281           /* If we've already found one, complain.  We only support one
9282              because having more than one requires hacking the dwo_name of
9283              each to match, which is highly unlikely to happen.  */
9284           if (dwo_unit != NULL)
9285             {
9286               complaint (&symfile_complaints,
9287                          _("Multiple CUs in DWO file %s [in module %s]"),
9288                          dwo_file->dwo_name, objfile_name (objfile));
9289               break;
9290             }
9291
9292           dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9293           *dwo_unit = create_dwo_cu_data.dwo_unit;
9294         }
9295
9296       info_ptr += per_cu.length;
9297     }
9298
9299   return dwo_unit;
9300 }
9301
9302 /* DWP file .debug_{cu,tu}_index section format:
9303    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9304
9305    DWP Version 1:
9306
9307    Both index sections have the same format, and serve to map a 64-bit
9308    signature to a set of section numbers.  Each section begins with a header,
9309    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9310    indexes, and a pool of 32-bit section numbers.  The index sections will be
9311    aligned at 8-byte boundaries in the file.
9312
9313    The index section header consists of:
9314
9315     V, 32 bit version number
9316     -, 32 bits unused
9317     N, 32 bit number of compilation units or type units in the index
9318     M, 32 bit number of slots in the hash table
9319
9320    Numbers are recorded using the byte order of the application binary.
9321
9322    The hash table begins at offset 16 in the section, and consists of an array
9323    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
9324    order of the application binary).  Unused slots in the hash table are 0.
9325    (We rely on the extreme unlikeliness of a signature being exactly 0.)
9326
9327    The parallel table begins immediately after the hash table
9328    (at offset 16 + 8 * M from the beginning of the section), and consists of an
9329    array of 32-bit indexes (using the byte order of the application binary),
9330    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
9331    table contains a 32-bit index into the pool of section numbers.  For unused
9332    hash table slots, the corresponding entry in the parallel table will be 0.
9333
9334    The pool of section numbers begins immediately following the hash table
9335    (at offset 16 + 12 * M from the beginning of the section).  The pool of
9336    section numbers consists of an array of 32-bit words (using the byte order
9337    of the application binary).  Each item in the array is indexed starting
9338    from 0.  The hash table entry provides the index of the first section
9339    number in the set.  Additional section numbers in the set follow, and the
9340    set is terminated by a 0 entry (section number 0 is not used in ELF).
9341
9342    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9343    section must be the first entry in the set, and the .debug_abbrev.dwo must
9344    be the second entry. Other members of the set may follow in any order.
9345
9346    ---
9347
9348    DWP Version 2:
9349
9350    DWP Version 2 combines all the .debug_info, etc. sections into one,
9351    and the entries in the index tables are now offsets into these sections.
9352    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
9353    section.
9354
9355    Index Section Contents:
9356     Header
9357     Hash Table of Signatures   dwp_hash_table.hash_table
9358     Parallel Table of Indices  dwp_hash_table.unit_table
9359     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
9360     Table of Section Sizes     dwp_hash_table.v2.sizes
9361
9362    The index section header consists of:
9363
9364     V, 32 bit version number
9365     L, 32 bit number of columns in the table of section offsets
9366     N, 32 bit number of compilation units or type units in the index
9367     M, 32 bit number of slots in the hash table
9368
9369    Numbers are recorded using the byte order of the application binary.
9370
9371    The hash table has the same format as version 1.
9372    The parallel table of indices has the same format as version 1,
9373    except that the entries are origin-1 indices into the table of sections
9374    offsets and the table of section sizes.
9375
9376    The table of offsets begins immediately following the parallel table
9377    (at offset 16 + 12 * M from the beginning of the section).  The table is
9378    a two-dimensional array of 32-bit words (using the byte order of the
9379    application binary), with L columns and N+1 rows, in row-major order.
9380    Each row in the array is indexed starting from 0.  The first row provides
9381    a key to the remaining rows: each column in this row provides an identifier
9382    for a debug section, and the offsets in the same column of subsequent rows
9383    refer to that section.  The section identifiers are:
9384
9385     DW_SECT_INFO         1  .debug_info.dwo
9386     DW_SECT_TYPES        2  .debug_types.dwo
9387     DW_SECT_ABBREV       3  .debug_abbrev.dwo
9388     DW_SECT_LINE         4  .debug_line.dwo
9389     DW_SECT_LOC          5  .debug_loc.dwo
9390     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
9391     DW_SECT_MACINFO      7  .debug_macinfo.dwo
9392     DW_SECT_MACRO        8  .debug_macro.dwo
9393
9394    The offsets provided by the CU and TU index sections are the base offsets
9395    for the contributions made by each CU or TU to the corresponding section
9396    in the package file.  Each CU and TU header contains an abbrev_offset
9397    field, used to find the abbreviations table for that CU or TU within the
9398    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9399    be interpreted as relative to the base offset given in the index section.
9400    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9401    should be interpreted as relative to the base offset for .debug_line.dwo,
9402    and offsets into other debug sections obtained from DWARF attributes should
9403    also be interpreted as relative to the corresponding base offset.
9404
9405    The table of sizes begins immediately following the table of offsets.
9406    Like the table of offsets, it is a two-dimensional array of 32-bit words,
9407    with L columns and N rows, in row-major order.  Each row in the array is
9408    indexed starting from 1 (row 0 is shared by the two tables).
9409
9410    ---
9411
9412    Hash table lookup is handled the same in version 1 and 2:
9413
9414    We assume that N and M will not exceed 2^32 - 1.
9415    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9416
9417    Given a 64-bit compilation unit signature or a type signature S, an entry
9418    in the hash table is located as follows:
9419
9420    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9421       the low-order k bits all set to 1.
9422
9423    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
9424
9425    3) If the hash table entry at index H matches the signature, use that
9426       entry.  If the hash table entry at index H is unused (all zeroes),
9427       terminate the search: the signature is not present in the table.
9428
9429    4) Let H = (H + H') modulo M. Repeat at Step 3.
9430
9431    Because M > N and H' and M are relatively prime, the search is guaranteed
9432    to stop at an unused slot or find the match.  */
9433
9434 /* Create a hash table to map DWO IDs to their CU/TU entry in
9435    .debug_{info,types}.dwo in DWP_FILE.
9436    Returns NULL if there isn't one.
9437    Note: This function processes DWP files only, not DWO files.  */
9438
9439 static struct dwp_hash_table *
9440 create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9441 {
9442   struct objfile *objfile = dwarf2_per_objfile->objfile;
9443   bfd *dbfd = dwp_file->dbfd;
9444   const gdb_byte *index_ptr, *index_end;
9445   struct dwarf2_section_info *index;
9446   uint32_t version, nr_columns, nr_units, nr_slots;
9447   struct dwp_hash_table *htab;
9448
9449   if (is_debug_types)
9450     index = &dwp_file->sections.tu_index;
9451   else
9452     index = &dwp_file->sections.cu_index;
9453
9454   if (dwarf2_section_empty_p (index))
9455     return NULL;
9456   dwarf2_read_section (objfile, index);
9457
9458   index_ptr = index->buffer;
9459   index_end = index_ptr + index->size;
9460
9461   version = read_4_bytes (dbfd, index_ptr);
9462   index_ptr += 4;
9463   if (version == 2)
9464     nr_columns = read_4_bytes (dbfd, index_ptr);
9465   else
9466     nr_columns = 0;
9467   index_ptr += 4;
9468   nr_units = read_4_bytes (dbfd, index_ptr);
9469   index_ptr += 4;
9470   nr_slots = read_4_bytes (dbfd, index_ptr);
9471   index_ptr += 4;
9472
9473   if (version != 1 && version != 2)
9474     {
9475       error (_("Dwarf Error: unsupported DWP file version (%s)"
9476                " [in module %s]"),
9477              pulongest (version), dwp_file->name);
9478     }
9479   if (nr_slots != (nr_slots & -nr_slots))
9480     {
9481       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
9482                " is not power of 2 [in module %s]"),
9483              pulongest (nr_slots), dwp_file->name);
9484     }
9485
9486   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
9487   htab->version = version;
9488   htab->nr_columns = nr_columns;
9489   htab->nr_units = nr_units;
9490   htab->nr_slots = nr_slots;
9491   htab->hash_table = index_ptr;
9492   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
9493
9494   /* Exit early if the table is empty.  */
9495   if (nr_slots == 0 || nr_units == 0
9496       || (version == 2 && nr_columns == 0))
9497     {
9498       /* All must be zero.  */
9499       if (nr_slots != 0 || nr_units != 0
9500           || (version == 2 && nr_columns != 0))
9501         {
9502           complaint (&symfile_complaints,
9503                      _("Empty DWP but nr_slots,nr_units,nr_columns not"
9504                        " all zero [in modules %s]"),
9505                      dwp_file->name);
9506         }
9507       return htab;
9508     }
9509
9510   if (version == 1)
9511     {
9512       htab->section_pool.v1.indices =
9513         htab->unit_table + sizeof (uint32_t) * nr_slots;
9514       /* It's harder to decide whether the section is too small in v1.
9515          V1 is deprecated anyway so we punt.  */
9516     }
9517   else
9518     {
9519       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9520       int *ids = htab->section_pool.v2.section_ids;
9521       /* Reverse map for error checking.  */
9522       int ids_seen[DW_SECT_MAX + 1];
9523       int i;
9524
9525       if (nr_columns < 2)
9526         {
9527           error (_("Dwarf Error: bad DWP hash table, too few columns"
9528                    " in section table [in module %s]"),
9529                  dwp_file->name);
9530         }
9531       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9532         {
9533           error (_("Dwarf Error: bad DWP hash table, too many columns"
9534                    " in section table [in module %s]"),
9535                  dwp_file->name);
9536         }
9537       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9538       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9539       for (i = 0; i < nr_columns; ++i)
9540         {
9541           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9542
9543           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9544             {
9545               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9546                        " in section table [in module %s]"),
9547                      id, dwp_file->name);
9548             }
9549           if (ids_seen[id] != -1)
9550             {
9551               error (_("Dwarf Error: bad DWP hash table, duplicate section"
9552                        " id %d in section table [in module %s]"),
9553                      id, dwp_file->name);
9554             }
9555           ids_seen[id] = i;
9556           ids[i] = id;
9557         }
9558       /* Must have exactly one info or types section.  */
9559       if (((ids_seen[DW_SECT_INFO] != -1)
9560            + (ids_seen[DW_SECT_TYPES] != -1))
9561           != 1)
9562         {
9563           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9564                    " DWO info/types section [in module %s]"),
9565                  dwp_file->name);
9566         }
9567       /* Must have an abbrev section.  */
9568       if (ids_seen[DW_SECT_ABBREV] == -1)
9569         {
9570           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9571                    " section [in module %s]"),
9572                  dwp_file->name);
9573         }
9574       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9575       htab->section_pool.v2.sizes =
9576         htab->section_pool.v2.offsets + (sizeof (uint32_t)
9577                                          * nr_units * nr_columns);
9578       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9579                                           * nr_units * nr_columns))
9580           > index_end)
9581         {
9582           error (_("Dwarf Error: DWP index section is corrupt (too small)"
9583                    " [in module %s]"),
9584                  dwp_file->name);
9585         }
9586     }
9587
9588   return htab;
9589 }
9590
9591 /* Update SECTIONS with the data from SECTP.
9592
9593    This function is like the other "locate" section routines that are
9594    passed to bfd_map_over_sections, but in this context the sections to
9595    read comes from the DWP V1 hash table, not the full ELF section table.
9596
9597    The result is non-zero for success, or zero if an error was found.  */
9598
9599 static int
9600 locate_v1_virtual_dwo_sections (asection *sectp,
9601                                 struct virtual_v1_dwo_sections *sections)
9602 {
9603   const struct dwop_section_names *names = &dwop_section_names;
9604
9605   if (section_is_p (sectp->name, &names->abbrev_dwo))
9606     {
9607       /* There can be only one.  */
9608       if (sections->abbrev.s.asection != NULL)
9609         return 0;
9610       sections->abbrev.s.asection = sectp;
9611       sections->abbrev.size = bfd_get_section_size (sectp);
9612     }
9613   else if (section_is_p (sectp->name, &names->info_dwo)
9614            || section_is_p (sectp->name, &names->types_dwo))
9615     {
9616       /* There can be only one.  */
9617       if (sections->info_or_types.s.asection != NULL)
9618         return 0;
9619       sections->info_or_types.s.asection = sectp;
9620       sections->info_or_types.size = bfd_get_section_size (sectp);
9621     }
9622   else if (section_is_p (sectp->name, &names->line_dwo))
9623     {
9624       /* There can be only one.  */
9625       if (sections->line.s.asection != NULL)
9626         return 0;
9627       sections->line.s.asection = sectp;
9628       sections->line.size = bfd_get_section_size (sectp);
9629     }
9630   else if (section_is_p (sectp->name, &names->loc_dwo))
9631     {
9632       /* There can be only one.  */
9633       if (sections->loc.s.asection != NULL)
9634         return 0;
9635       sections->loc.s.asection = sectp;
9636       sections->loc.size = bfd_get_section_size (sectp);
9637     }
9638   else if (section_is_p (sectp->name, &names->macinfo_dwo))
9639     {
9640       /* There can be only one.  */
9641       if (sections->macinfo.s.asection != NULL)
9642         return 0;
9643       sections->macinfo.s.asection = sectp;
9644       sections->macinfo.size = bfd_get_section_size (sectp);
9645     }
9646   else if (section_is_p (sectp->name, &names->macro_dwo))
9647     {
9648       /* There can be only one.  */
9649       if (sections->macro.s.asection != NULL)
9650         return 0;
9651       sections->macro.s.asection = sectp;
9652       sections->macro.size = bfd_get_section_size (sectp);
9653     }
9654   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9655     {
9656       /* There can be only one.  */
9657       if (sections->str_offsets.s.asection != NULL)
9658         return 0;
9659       sections->str_offsets.s.asection = sectp;
9660       sections->str_offsets.size = bfd_get_section_size (sectp);
9661     }
9662   else
9663     {
9664       /* No other kind of section is valid.  */
9665       return 0;
9666     }
9667
9668   return 1;
9669 }
9670
9671 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9672    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9673    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9674    This is for DWP version 1 files.  */
9675
9676 static struct dwo_unit *
9677 create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9678                            uint32_t unit_index,
9679                            const char *comp_dir,
9680                            ULONGEST signature, int is_debug_types)
9681 {
9682   struct objfile *objfile = dwarf2_per_objfile->objfile;
9683   const struct dwp_hash_table *dwp_htab =
9684     is_debug_types ? dwp_file->tus : dwp_file->cus;
9685   bfd *dbfd = dwp_file->dbfd;
9686   const char *kind = is_debug_types ? "TU" : "CU";
9687   struct dwo_file *dwo_file;
9688   struct dwo_unit *dwo_unit;
9689   struct virtual_v1_dwo_sections sections;
9690   void **dwo_file_slot;
9691   char *virtual_dwo_name;
9692   struct dwarf2_section_info *cutu;
9693   struct cleanup *cleanups;
9694   int i;
9695
9696   gdb_assert (dwp_file->version == 1);
9697
9698   if (dwarf2_read_debug)
9699     {
9700       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
9701                           kind,
9702                           pulongest (unit_index), hex_string (signature),
9703                           dwp_file->name);
9704     }
9705
9706   /* Fetch the sections of this DWO unit.
9707      Put a limit on the number of sections we look for so that bad data
9708      doesn't cause us to loop forever.  */
9709
9710 #define MAX_NR_V1_DWO_SECTIONS \
9711   (1 /* .debug_info or .debug_types */ \
9712    + 1 /* .debug_abbrev */ \
9713    + 1 /* .debug_line */ \
9714    + 1 /* .debug_loc */ \
9715    + 1 /* .debug_str_offsets */ \
9716    + 1 /* .debug_macro or .debug_macinfo */ \
9717    + 1 /* trailing zero */)
9718
9719   memset (&sections, 0, sizeof (sections));
9720   cleanups = make_cleanup (null_cleanup, 0);
9721
9722   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
9723     {
9724       asection *sectp;
9725       uint32_t section_nr =
9726         read_4_bytes (dbfd,
9727                       dwp_htab->section_pool.v1.indices
9728                       + (unit_index + i) * sizeof (uint32_t));
9729
9730       if (section_nr == 0)
9731         break;
9732       if (section_nr >= dwp_file->num_sections)
9733         {
9734           error (_("Dwarf Error: bad DWP hash table, section number too large"
9735                    " [in module %s]"),
9736                  dwp_file->name);
9737         }
9738
9739       sectp = dwp_file->elf_sections[section_nr];
9740       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
9741         {
9742           error (_("Dwarf Error: bad DWP hash table, invalid section found"
9743                    " [in module %s]"),
9744                  dwp_file->name);
9745         }
9746     }
9747
9748   if (i < 2
9749       || dwarf2_section_empty_p (&sections.info_or_types)
9750       || dwarf2_section_empty_p (&sections.abbrev))
9751     {
9752       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
9753                " [in module %s]"),
9754              dwp_file->name);
9755     }
9756   if (i == MAX_NR_V1_DWO_SECTIONS)
9757     {
9758       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
9759                " [in module %s]"),
9760              dwp_file->name);
9761     }
9762
9763   /* It's easier for the rest of the code if we fake a struct dwo_file and
9764      have dwo_unit "live" in that.  At least for now.
9765
9766      The DWP file can be made up of a random collection of CUs and TUs.
9767      However, for each CU + set of TUs that came from the same original DWO
9768      file, we can combine them back into a virtual DWO file to save space
9769      (fewer struct dwo_file objects to allocate).  Remember that for really
9770      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
9771
9772   virtual_dwo_name =
9773     xstrprintf ("virtual-dwo/%d-%d-%d-%d",
9774                 get_section_id (&sections.abbrev),
9775                 get_section_id (&sections.line),
9776                 get_section_id (&sections.loc),
9777                 get_section_id (&sections.str_offsets));
9778   make_cleanup (xfree, virtual_dwo_name);
9779   /* Can we use an existing virtual DWO file?  */
9780   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
9781   /* Create one if necessary.  */
9782   if (*dwo_file_slot == NULL)
9783     {
9784       if (dwarf2_read_debug)
9785         {
9786           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
9787                               virtual_dwo_name);
9788         }
9789       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9790       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
9791                                           virtual_dwo_name,
9792                                           strlen (virtual_dwo_name));
9793       dwo_file->comp_dir = comp_dir;
9794       dwo_file->sections.abbrev = sections.abbrev;
9795       dwo_file->sections.line = sections.line;
9796       dwo_file->sections.loc = sections.loc;
9797       dwo_file->sections.macinfo = sections.macinfo;
9798       dwo_file->sections.macro = sections.macro;
9799       dwo_file->sections.str_offsets = sections.str_offsets;
9800       /* The "str" section is global to the entire DWP file.  */
9801       dwo_file->sections.str = dwp_file->sections.str;
9802       /* The info or types section is assigned below to dwo_unit,
9803          there's no need to record it in dwo_file.
9804          Also, we can't simply record type sections in dwo_file because
9805          we record a pointer into the vector in dwo_unit.  As we collect more
9806          types we'll grow the vector and eventually have to reallocate space
9807          for it, invalidating all copies of pointers into the previous
9808          contents.  */
9809       *dwo_file_slot = dwo_file;
9810     }
9811   else
9812     {
9813       if (dwarf2_read_debug)
9814         {
9815           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
9816                               virtual_dwo_name);
9817         }
9818       dwo_file = *dwo_file_slot;
9819     }
9820   do_cleanups (cleanups);
9821
9822   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9823   dwo_unit->dwo_file = dwo_file;
9824   dwo_unit->signature = signature;
9825   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
9826                                      sizeof (struct dwarf2_section_info));
9827   *dwo_unit->section = sections.info_or_types;
9828   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
9829
9830   return dwo_unit;
9831 }
9832
9833 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
9834    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
9835    piece within that section used by a TU/CU, return a virtual section
9836    of just that piece.  */
9837
9838 static struct dwarf2_section_info
9839 create_dwp_v2_section (struct dwarf2_section_info *section,
9840                        bfd_size_type offset, bfd_size_type size)
9841 {
9842   struct dwarf2_section_info result;
9843   asection *sectp;
9844
9845   gdb_assert (section != NULL);
9846   gdb_assert (!section->is_virtual);
9847
9848   memset (&result, 0, sizeof (result));
9849   result.s.containing_section = section;
9850   result.is_virtual = 1;
9851
9852   if (size == 0)
9853     return result;
9854
9855   sectp = get_section_bfd_section (section);
9856
9857   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
9858      bounds of the real section.  This is a pretty-rare event, so just
9859      flag an error (easier) instead of a warning and trying to cope.  */
9860   if (sectp == NULL
9861       || offset + size > bfd_get_section_size (sectp))
9862     {
9863       bfd *abfd = sectp->owner;
9864
9865       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
9866                " in section %s [in module %s]"),
9867              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
9868              objfile_name (dwarf2_per_objfile->objfile));
9869     }
9870
9871   result.virtual_offset = offset;
9872   result.size = size;
9873   return result;
9874 }
9875
9876 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9877    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9878    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9879    This is for DWP version 2 files.  */
9880
9881 static struct dwo_unit *
9882 create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
9883                            uint32_t unit_index,
9884                            const char *comp_dir,
9885                            ULONGEST signature, int is_debug_types)
9886 {
9887   struct objfile *objfile = dwarf2_per_objfile->objfile;
9888   const struct dwp_hash_table *dwp_htab =
9889     is_debug_types ? dwp_file->tus : dwp_file->cus;
9890   bfd *dbfd = dwp_file->dbfd;
9891   const char *kind = is_debug_types ? "TU" : "CU";
9892   struct dwo_file *dwo_file;
9893   struct dwo_unit *dwo_unit;
9894   struct virtual_v2_dwo_sections sections;
9895   void **dwo_file_slot;
9896   char *virtual_dwo_name;
9897   struct dwarf2_section_info *cutu;
9898   struct cleanup *cleanups;
9899   int i;
9900
9901   gdb_assert (dwp_file->version == 2);
9902
9903   if (dwarf2_read_debug)
9904     {
9905       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
9906                           kind,
9907                           pulongest (unit_index), hex_string (signature),
9908                           dwp_file->name);
9909     }
9910
9911   /* Fetch the section offsets of this DWO unit.  */
9912
9913   memset (&sections, 0, sizeof (sections));
9914   cleanups = make_cleanup (null_cleanup, 0);
9915
9916   for (i = 0; i < dwp_htab->nr_columns; ++i)
9917     {
9918       uint32_t offset = read_4_bytes (dbfd,
9919                                       dwp_htab->section_pool.v2.offsets
9920                                       + (((unit_index - 1) * dwp_htab->nr_columns
9921                                           + i)
9922                                          * sizeof (uint32_t)));
9923       uint32_t size = read_4_bytes (dbfd,
9924                                     dwp_htab->section_pool.v2.sizes
9925                                     + (((unit_index - 1) * dwp_htab->nr_columns
9926                                         + i)
9927                                        * sizeof (uint32_t)));
9928
9929       switch (dwp_htab->section_pool.v2.section_ids[i])
9930         {
9931         case DW_SECT_INFO:
9932         case DW_SECT_TYPES:
9933           sections.info_or_types_offset = offset;
9934           sections.info_or_types_size = size;
9935           break;
9936         case DW_SECT_ABBREV:
9937           sections.abbrev_offset = offset;
9938           sections.abbrev_size = size;
9939           break;
9940         case DW_SECT_LINE:
9941           sections.line_offset = offset;
9942           sections.line_size = size;
9943           break;
9944         case DW_SECT_LOC:
9945           sections.loc_offset = offset;
9946           sections.loc_size = size;
9947           break;
9948         case DW_SECT_STR_OFFSETS:
9949           sections.str_offsets_offset = offset;
9950           sections.str_offsets_size = size;
9951           break;
9952         case DW_SECT_MACINFO:
9953           sections.macinfo_offset = offset;
9954           sections.macinfo_size = size;
9955           break;
9956         case DW_SECT_MACRO:
9957           sections.macro_offset = offset;
9958           sections.macro_size = size;
9959           break;
9960         }
9961     }
9962
9963   /* It's easier for the rest of the code if we fake a struct dwo_file and
9964      have dwo_unit "live" in that.  At least for now.
9965
9966      The DWP file can be made up of a random collection of CUs and TUs.
9967      However, for each CU + set of TUs that came from the same original DWO
9968      file, we can combine them back into a virtual DWO file to save space
9969      (fewer struct dwo_file objects to allocate).  Remember that for really
9970      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
9971
9972   virtual_dwo_name =
9973     xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
9974                 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
9975                 (long) (sections.line_size ? sections.line_offset : 0),
9976                 (long) (sections.loc_size ? sections.loc_offset : 0),
9977                 (long) (sections.str_offsets_size
9978                         ? sections.str_offsets_offset : 0));
9979   make_cleanup (xfree, virtual_dwo_name);
9980   /* Can we use an existing virtual DWO file?  */
9981   dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
9982   /* Create one if necessary.  */
9983   if (*dwo_file_slot == NULL)
9984     {
9985       if (dwarf2_read_debug)
9986         {
9987           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
9988                               virtual_dwo_name);
9989         }
9990       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
9991       dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
9992                                           virtual_dwo_name,
9993                                           strlen (virtual_dwo_name));
9994       dwo_file->comp_dir = comp_dir;
9995       dwo_file->sections.abbrev =
9996         create_dwp_v2_section (&dwp_file->sections.abbrev,
9997                                sections.abbrev_offset, sections.abbrev_size);
9998       dwo_file->sections.line =
9999         create_dwp_v2_section (&dwp_file->sections.line,
10000                                sections.line_offset, sections.line_size);
10001       dwo_file->sections.loc =
10002         create_dwp_v2_section (&dwp_file->sections.loc,
10003                                sections.loc_offset, sections.loc_size);
10004       dwo_file->sections.macinfo =
10005         create_dwp_v2_section (&dwp_file->sections.macinfo,
10006                                sections.macinfo_offset, sections.macinfo_size);
10007       dwo_file->sections.macro =
10008         create_dwp_v2_section (&dwp_file->sections.macro,
10009                                sections.macro_offset, sections.macro_size);
10010       dwo_file->sections.str_offsets =
10011         create_dwp_v2_section (&dwp_file->sections.str_offsets,
10012                                sections.str_offsets_offset,
10013                                sections.str_offsets_size);
10014       /* The "str" section is global to the entire DWP file.  */
10015       dwo_file->sections.str = dwp_file->sections.str;
10016       /* The info or types section is assigned below to dwo_unit,
10017          there's no need to record it in dwo_file.
10018          Also, we can't simply record type sections in dwo_file because
10019          we record a pointer into the vector in dwo_unit.  As we collect more
10020          types we'll grow the vector and eventually have to reallocate space
10021          for it, invalidating all copies of pointers into the previous
10022          contents.  */
10023       *dwo_file_slot = dwo_file;
10024     }
10025   else
10026     {
10027       if (dwarf2_read_debug)
10028         {
10029           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10030                               virtual_dwo_name);
10031         }
10032       dwo_file = *dwo_file_slot;
10033     }
10034   do_cleanups (cleanups);
10035
10036   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10037   dwo_unit->dwo_file = dwo_file;
10038   dwo_unit->signature = signature;
10039   dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10040                                      sizeof (struct dwarf2_section_info));
10041   *dwo_unit->section = create_dwp_v2_section (is_debug_types
10042                                               ? &dwp_file->sections.types
10043                                               : &dwp_file->sections.info,
10044                                               sections.info_or_types_offset,
10045                                               sections.info_or_types_size);
10046   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
10047
10048   return dwo_unit;
10049 }
10050
10051 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10052    Returns NULL if the signature isn't found.  */
10053
10054 static struct dwo_unit *
10055 lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10056                         ULONGEST signature, int is_debug_types)
10057 {
10058   const struct dwp_hash_table *dwp_htab =
10059     is_debug_types ? dwp_file->tus : dwp_file->cus;
10060   bfd *dbfd = dwp_file->dbfd;
10061   uint32_t mask = dwp_htab->nr_slots - 1;
10062   uint32_t hash = signature & mask;
10063   uint32_t hash2 = ((signature >> 32) & mask) | 1;
10064   unsigned int i;
10065   void **slot;
10066   struct dwo_unit find_dwo_cu, *dwo_cu;
10067
10068   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10069   find_dwo_cu.signature = signature;
10070   slot = htab_find_slot (is_debug_types
10071                          ? dwp_file->loaded_tus
10072                          : dwp_file->loaded_cus,
10073                          &find_dwo_cu, INSERT);
10074
10075   if (*slot != NULL)
10076     return *slot;
10077
10078   /* Use a for loop so that we don't loop forever on bad debug info.  */
10079   for (i = 0; i < dwp_htab->nr_slots; ++i)
10080     {
10081       ULONGEST signature_in_table;
10082
10083       signature_in_table =
10084         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
10085       if (signature_in_table == signature)
10086         {
10087           uint32_t unit_index =
10088             read_4_bytes (dbfd,
10089                           dwp_htab->unit_table + hash * sizeof (uint32_t));
10090
10091           if (dwp_file->version == 1)
10092             {
10093               *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10094                                                  comp_dir, signature,
10095                                                  is_debug_types);
10096             }
10097           else
10098             {
10099               *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10100                                                  comp_dir, signature,
10101                                                  is_debug_types);
10102             }
10103           return *slot;
10104         }
10105       if (signature_in_table == 0)
10106         return NULL;
10107       hash = (hash + hash2) & mask;
10108     }
10109
10110   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10111            " [in module %s]"),
10112          dwp_file->name);
10113 }
10114
10115 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
10116    Open the file specified by FILE_NAME and hand it off to BFD for
10117    preliminary analysis.  Return a newly initialized bfd *, which
10118    includes a canonicalized copy of FILE_NAME.
10119    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
10120    SEARCH_CWD is true if the current directory is to be searched.
10121    It will be searched before debug-file-directory.
10122    If successful, the file is added to the bfd include table of the
10123    objfile's bfd (see gdb_bfd_record_inclusion).
10124    If unable to find/open the file, return NULL.
10125    NOTE: This function is derived from symfile_bfd_open.  */
10126
10127 static bfd *
10128 try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
10129 {
10130   bfd *sym_bfd;
10131   int desc, flags;
10132   char *absolute_name;
10133   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
10134      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
10135      to debug_file_directory.  */
10136   char *search_path;
10137   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10138
10139   if (search_cwd)
10140     {
10141       if (*debug_file_directory != '\0')
10142         search_path = concat (".", dirname_separator_string,
10143                               debug_file_directory, NULL);
10144       else
10145         search_path = xstrdup (".");
10146     }
10147   else
10148     search_path = xstrdup (debug_file_directory);
10149
10150   flags = OPF_RETURN_REALPATH;
10151   if (is_dwp)
10152     flags |= OPF_SEARCH_IN_PATH;
10153   desc = openp (search_path, flags, file_name,
10154                 O_RDONLY | O_BINARY, &absolute_name);
10155   xfree (search_path);
10156   if (desc < 0)
10157     return NULL;
10158
10159   sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
10160   xfree (absolute_name);
10161   if (sym_bfd == NULL)
10162     return NULL;
10163   bfd_set_cacheable (sym_bfd, 1);
10164
10165   if (!bfd_check_format (sym_bfd, bfd_object))
10166     {
10167       gdb_bfd_unref (sym_bfd); /* This also closes desc.  */
10168       return NULL;
10169     }
10170
10171   /* Success.  Record the bfd as having been included by the objfile's bfd.
10172      This is important because things like demangled_names_hash lives in the
10173      objfile's per_bfd space and may have references to things like symbol
10174      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
10175   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10176
10177   return sym_bfd;
10178 }
10179
10180 /* Try to open DWO file FILE_NAME.
10181    COMP_DIR is the DW_AT_comp_dir attribute.
10182    The result is the bfd handle of the file.
10183    If there is a problem finding or opening the file, return NULL.
10184    Upon success, the canonicalized path of the file is stored in the bfd,
10185    same as symfile_bfd_open.  */
10186
10187 static bfd *
10188 open_dwo_file (const char *file_name, const char *comp_dir)
10189 {
10190   bfd *abfd;
10191
10192   if (IS_ABSOLUTE_PATH (file_name))
10193     return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
10194
10195   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
10196
10197   if (comp_dir != NULL)
10198     {
10199       char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
10200
10201       /* NOTE: If comp_dir is a relative path, this will also try the
10202          search path, which seems useful.  */
10203       abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
10204       xfree (path_to_try);
10205       if (abfd != NULL)
10206         return abfd;
10207     }
10208
10209   /* That didn't work, try debug-file-directory, which, despite its name,
10210      is a list of paths.  */
10211
10212   if (*debug_file_directory == '\0')
10213     return NULL;
10214
10215   return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
10216 }
10217
10218 /* This function is mapped across the sections and remembers the offset and
10219    size of each of the DWO debugging sections we are interested in.  */
10220
10221 static void
10222 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10223 {
10224   struct dwo_sections *dwo_sections = dwo_sections_ptr;
10225   const struct dwop_section_names *names = &dwop_section_names;
10226
10227   if (section_is_p (sectp->name, &names->abbrev_dwo))
10228     {
10229       dwo_sections->abbrev.s.asection = sectp;
10230       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10231     }
10232   else if (section_is_p (sectp->name, &names->info_dwo))
10233     {
10234       dwo_sections->info.s.asection = sectp;
10235       dwo_sections->info.size = bfd_get_section_size (sectp);
10236     }
10237   else if (section_is_p (sectp->name, &names->line_dwo))
10238     {
10239       dwo_sections->line.s.asection = sectp;
10240       dwo_sections->line.size = bfd_get_section_size (sectp);
10241     }
10242   else if (section_is_p (sectp->name, &names->loc_dwo))
10243     {
10244       dwo_sections->loc.s.asection = sectp;
10245       dwo_sections->loc.size = bfd_get_section_size (sectp);
10246     }
10247   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10248     {
10249       dwo_sections->macinfo.s.asection = sectp;
10250       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10251     }
10252   else if (section_is_p (sectp->name, &names->macro_dwo))
10253     {
10254       dwo_sections->macro.s.asection = sectp;
10255       dwo_sections->macro.size = bfd_get_section_size (sectp);
10256     }
10257   else if (section_is_p (sectp->name, &names->str_dwo))
10258     {
10259       dwo_sections->str.s.asection = sectp;
10260       dwo_sections->str.size = bfd_get_section_size (sectp);
10261     }
10262   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10263     {
10264       dwo_sections->str_offsets.s.asection = sectp;
10265       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10266     }
10267   else if (section_is_p (sectp->name, &names->types_dwo))
10268     {
10269       struct dwarf2_section_info type_section;
10270
10271       memset (&type_section, 0, sizeof (type_section));
10272       type_section.s.asection = sectp;
10273       type_section.size = bfd_get_section_size (sectp);
10274       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10275                      &type_section);
10276     }
10277 }
10278
10279 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
10280    by PER_CU.  This is for the non-DWP case.
10281    The result is NULL if DWO_NAME can't be found.  */
10282
10283 static struct dwo_file *
10284 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10285                         const char *dwo_name, const char *comp_dir)
10286 {
10287   struct objfile *objfile = dwarf2_per_objfile->objfile;
10288   struct dwo_file *dwo_file;
10289   bfd *dbfd;
10290   struct cleanup *cleanups;
10291
10292   dbfd = open_dwo_file (dwo_name, comp_dir);
10293   if (dbfd == NULL)
10294     {
10295       if (dwarf2_read_debug)
10296         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10297       return NULL;
10298     }
10299   dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10300   dwo_file->dwo_name = dwo_name;
10301   dwo_file->comp_dir = comp_dir;
10302   dwo_file->dbfd = dbfd;
10303
10304   cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10305
10306   bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
10307
10308   dwo_file->cu = create_dwo_cu (dwo_file);
10309
10310   dwo_file->tus = create_debug_types_hash_table (dwo_file,
10311                                                  dwo_file->sections.types);
10312
10313   discard_cleanups (cleanups);
10314
10315   if (dwarf2_read_debug)
10316     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10317
10318   return dwo_file;
10319 }
10320
10321 /* This function is mapped across the sections and remembers the offset and
10322    size of each of the DWP debugging sections common to version 1 and 2 that
10323    we are interested in.  */
10324
10325 static void
10326 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10327                                    void *dwp_file_ptr)
10328 {
10329   struct dwp_file *dwp_file = dwp_file_ptr;
10330   const struct dwop_section_names *names = &dwop_section_names;
10331   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10332
10333   /* Record the ELF section number for later lookup: this is what the
10334      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10335   gdb_assert (elf_section_nr < dwp_file->num_sections);
10336   dwp_file->elf_sections[elf_section_nr] = sectp;
10337
10338   /* Look for specific sections that we need.  */
10339   if (section_is_p (sectp->name, &names->str_dwo))
10340     {
10341       dwp_file->sections.str.s.asection = sectp;
10342       dwp_file->sections.str.size = bfd_get_section_size (sectp);
10343     }
10344   else if (section_is_p (sectp->name, &names->cu_index))
10345     {
10346       dwp_file->sections.cu_index.s.asection = sectp;
10347       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10348     }
10349   else if (section_is_p (sectp->name, &names->tu_index))
10350     {
10351       dwp_file->sections.tu_index.s.asection = sectp;
10352       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10353     }
10354 }
10355
10356 /* This function is mapped across the sections and remembers the offset and
10357    size of each of the DWP version 2 debugging sections that we are interested
10358    in.  This is split into a separate function because we don't know if we
10359    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
10360
10361 static void
10362 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10363 {
10364   struct dwp_file *dwp_file = dwp_file_ptr;
10365   const struct dwop_section_names *names = &dwop_section_names;
10366   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10367
10368   /* Record the ELF section number for later lookup: this is what the
10369      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
10370   gdb_assert (elf_section_nr < dwp_file->num_sections);
10371   dwp_file->elf_sections[elf_section_nr] = sectp;
10372
10373   /* Look for specific sections that we need.  */
10374   if (section_is_p (sectp->name, &names->abbrev_dwo))
10375     {
10376       dwp_file->sections.abbrev.s.asection = sectp;
10377       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10378     }
10379   else if (section_is_p (sectp->name, &names->info_dwo))
10380     {
10381       dwp_file->sections.info.s.asection = sectp;
10382       dwp_file->sections.info.size = bfd_get_section_size (sectp);
10383     }
10384   else if (section_is_p (sectp->name, &names->line_dwo))
10385     {
10386       dwp_file->sections.line.s.asection = sectp;
10387       dwp_file->sections.line.size = bfd_get_section_size (sectp);
10388     }
10389   else if (section_is_p (sectp->name, &names->loc_dwo))
10390     {
10391       dwp_file->sections.loc.s.asection = sectp;
10392       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10393     }
10394   else if (section_is_p (sectp->name, &names->macinfo_dwo))
10395     {
10396       dwp_file->sections.macinfo.s.asection = sectp;
10397       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10398     }
10399   else if (section_is_p (sectp->name, &names->macro_dwo))
10400     {
10401       dwp_file->sections.macro.s.asection = sectp;
10402       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10403     }
10404   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10405     {
10406       dwp_file->sections.str_offsets.s.asection = sectp;
10407       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10408     }
10409   else if (section_is_p (sectp->name, &names->types_dwo))
10410     {
10411       dwp_file->sections.types.s.asection = sectp;
10412       dwp_file->sections.types.size = bfd_get_section_size (sectp);
10413     }
10414 }
10415
10416 /* Hash function for dwp_file loaded CUs/TUs.  */
10417
10418 static hashval_t
10419 hash_dwp_loaded_cutus (const void *item)
10420 {
10421   const struct dwo_unit *dwo_unit = item;
10422
10423   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
10424   return dwo_unit->signature;
10425 }
10426
10427 /* Equality function for dwp_file loaded CUs/TUs.  */
10428
10429 static int
10430 eq_dwp_loaded_cutus (const void *a, const void *b)
10431 {
10432   const struct dwo_unit *dua = a;
10433   const struct dwo_unit *dub = b;
10434
10435   return dua->signature == dub->signature;
10436 }
10437
10438 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
10439
10440 static htab_t
10441 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10442 {
10443   return htab_create_alloc_ex (3,
10444                                hash_dwp_loaded_cutus,
10445                                eq_dwp_loaded_cutus,
10446                                NULL,
10447                                &objfile->objfile_obstack,
10448                                hashtab_obstack_allocate,
10449                                dummy_obstack_deallocate);
10450 }
10451
10452 /* Try to open DWP file FILE_NAME.
10453    The result is the bfd handle of the file.
10454    If there is a problem finding or opening the file, return NULL.
10455    Upon success, the canonicalized path of the file is stored in the bfd,
10456    same as symfile_bfd_open.  */
10457
10458 static bfd *
10459 open_dwp_file (const char *file_name)
10460 {
10461   bfd *abfd;
10462
10463   abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10464   if (abfd != NULL)
10465     return abfd;
10466
10467   /* Work around upstream bug 15652.
10468      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10469      [Whether that's a "bug" is debatable, but it is getting in our way.]
10470      We have no real idea where the dwp file is, because gdb's realpath-ing
10471      of the executable's path may have discarded the needed info.
10472      [IWBN if the dwp file name was recorded in the executable, akin to
10473      .gnu_debuglink, but that doesn't exist yet.]
10474      Strip the directory from FILE_NAME and search again.  */
10475   if (*debug_file_directory != '\0')
10476     {
10477       /* Don't implicitly search the current directory here.
10478          If the user wants to search "." to handle this case,
10479          it must be added to debug-file-directory.  */
10480       return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10481                                  0 /*search_cwd*/);
10482     }
10483
10484   return NULL;
10485 }
10486
10487 /* Initialize the use of the DWP file for the current objfile.
10488    By convention the name of the DWP file is ${objfile}.dwp.
10489    The result is NULL if it can't be found.  */
10490
10491 static struct dwp_file *
10492 open_and_init_dwp_file (void)
10493 {
10494   struct objfile *objfile = dwarf2_per_objfile->objfile;
10495   struct dwp_file *dwp_file;
10496   char *dwp_name;
10497   bfd *dbfd;
10498   struct cleanup *cleanups;
10499
10500   /* Try to find first .dwp for the binary file before any symbolic links
10501      resolving.  */
10502   dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
10503   cleanups = make_cleanup (xfree, dwp_name);
10504
10505   dbfd = open_dwp_file (dwp_name);
10506   if (dbfd == NULL
10507       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10508     {
10509       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
10510       dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10511       make_cleanup (xfree, dwp_name);
10512       dbfd = open_dwp_file (dwp_name);
10513     }
10514
10515   if (dbfd == NULL)
10516     {
10517       if (dwarf2_read_debug)
10518         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10519       do_cleanups (cleanups);
10520       return NULL;
10521     }
10522   dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
10523   dwp_file->name = bfd_get_filename (dbfd);
10524   dwp_file->dbfd = dbfd;
10525   do_cleanups (cleanups);
10526
10527   /* +1: section 0 is unused */
10528   dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10529   dwp_file->elf_sections =
10530     OBSTACK_CALLOC (&objfile->objfile_obstack,
10531                     dwp_file->num_sections, asection *);
10532
10533   bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
10534
10535   dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10536
10537   dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10538
10539   /* The DWP file version is stored in the hash table.  Oh well.  */
10540   if (dwp_file->cus->version != dwp_file->tus->version)
10541     {
10542       /* Technically speaking, we should try to limp along, but this is
10543          pretty bizarre.  We use pulongest here because that's the established
10544          portability solution (e.g, we cannot use %u for uint32_t).  */
10545       error (_("Dwarf Error: DWP file CU version %s doesn't match"
10546                " TU version %s [in DWP file %s]"),
10547              pulongest (dwp_file->cus->version),
10548              pulongest (dwp_file->tus->version), dwp_name);
10549     }
10550   dwp_file->version = dwp_file->cus->version;
10551
10552   if (dwp_file->version == 2)
10553     bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10554
10555   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10556   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
10557
10558   if (dwarf2_read_debug)
10559     {
10560       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10561       fprintf_unfiltered (gdb_stdlog,
10562                           "    %s CUs, %s TUs\n",
10563                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10564                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
10565     }
10566
10567   return dwp_file;
10568 }
10569
10570 /* Wrapper around open_and_init_dwp_file, only open it once.  */
10571
10572 static struct dwp_file *
10573 get_dwp_file (void)
10574 {
10575   if (! dwarf2_per_objfile->dwp_checked)
10576     {
10577       dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10578       dwarf2_per_objfile->dwp_checked = 1;
10579     }
10580   return dwarf2_per_objfile->dwp_file;
10581 }
10582
10583 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10584    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10585    or in the DWP file for the objfile, referenced by THIS_UNIT.
10586    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
10587    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10588
10589    This is called, for example, when wanting to read a variable with a
10590    complex location.  Therefore we don't want to do file i/o for every call.
10591    Therefore we don't want to look for a DWO file on every call.
10592    Therefore we first see if we've already seen SIGNATURE in a DWP file,
10593    then we check if we've already seen DWO_NAME, and only THEN do we check
10594    for a DWO file.
10595
10596    The result is a pointer to the dwo_unit object or NULL if we didn't find it
10597    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
10598
10599 static struct dwo_unit *
10600 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10601                  const char *dwo_name, const char *comp_dir,
10602                  ULONGEST signature, int is_debug_types)
10603 {
10604   struct objfile *objfile = dwarf2_per_objfile->objfile;
10605   const char *kind = is_debug_types ? "TU" : "CU";
10606   void **dwo_file_slot;
10607   struct dwo_file *dwo_file;
10608   struct dwp_file *dwp_file;
10609
10610   /* First see if there's a DWP file.
10611      If we have a DWP file but didn't find the DWO inside it, don't
10612      look for the original DWO file.  It makes gdb behave differently
10613      depending on whether one is debugging in the build tree.  */
10614
10615   dwp_file = get_dwp_file ();
10616   if (dwp_file != NULL)
10617     {
10618       const struct dwp_hash_table *dwp_htab =
10619         is_debug_types ? dwp_file->tus : dwp_file->cus;
10620
10621       if (dwp_htab != NULL)
10622         {
10623           struct dwo_unit *dwo_cutu =
10624             lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10625                                     signature, is_debug_types);
10626
10627           if (dwo_cutu != NULL)
10628             {
10629               if (dwarf2_read_debug)
10630                 {
10631                   fprintf_unfiltered (gdb_stdlog,
10632                                       "Virtual DWO %s %s found: @%s\n",
10633                                       kind, hex_string (signature),
10634                                       host_address_to_string (dwo_cutu));
10635                 }
10636               return dwo_cutu;
10637             }
10638         }
10639     }
10640   else
10641     {
10642       /* No DWP file, look for the DWO file.  */
10643
10644       dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10645       if (*dwo_file_slot == NULL)
10646         {
10647           /* Read in the file and build a table of the CUs/TUs it contains.  */
10648           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
10649         }
10650       /* NOTE: This will be NULL if unable to open the file.  */
10651       dwo_file = *dwo_file_slot;
10652
10653       if (dwo_file != NULL)
10654         {
10655           struct dwo_unit *dwo_cutu = NULL;
10656
10657           if (is_debug_types && dwo_file->tus)
10658             {
10659               struct dwo_unit find_dwo_cutu;
10660
10661               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10662               find_dwo_cutu.signature = signature;
10663               dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10664             }
10665           else if (!is_debug_types && dwo_file->cu)
10666             {
10667               if (signature == dwo_file->cu->signature)
10668                 dwo_cutu = dwo_file->cu;
10669             }
10670
10671           if (dwo_cutu != NULL)
10672             {
10673               if (dwarf2_read_debug)
10674                 {
10675                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10676                                       kind, dwo_name, hex_string (signature),
10677                                       host_address_to_string (dwo_cutu));
10678                 }
10679               return dwo_cutu;
10680             }
10681         }
10682     }
10683
10684   /* We didn't find it.  This could mean a dwo_id mismatch, or
10685      someone deleted the DWO/DWP file, or the search path isn't set up
10686      correctly to find the file.  */
10687
10688   if (dwarf2_read_debug)
10689     {
10690       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
10691                           kind, dwo_name, hex_string (signature));
10692     }
10693
10694   /* This is a warning and not a complaint because it can be caused by
10695      pilot error (e.g., user accidentally deleting the DWO).  */
10696   {
10697     /* Print the name of the DWP file if we looked there, helps the user
10698        better diagnose the problem.  */
10699     char *dwp_text = NULL;
10700     struct cleanup *cleanups;
10701
10702     if (dwp_file != NULL)
10703       dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
10704     cleanups = make_cleanup (xfree, dwp_text);
10705
10706     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
10707                " [in module %s]"),
10708              kind, dwo_name, hex_string (signature),
10709              dwp_text != NULL ? dwp_text : "",
10710              this_unit->is_debug_types ? "TU" : "CU",
10711              this_unit->offset.sect_off, objfile_name (objfile));
10712
10713     do_cleanups (cleanups);
10714   }
10715   return NULL;
10716 }
10717
10718 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
10719    See lookup_dwo_cutu_unit for details.  */
10720
10721 static struct dwo_unit *
10722 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
10723                       const char *dwo_name, const char *comp_dir,
10724                       ULONGEST signature)
10725 {
10726   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
10727 }
10728
10729 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
10730    See lookup_dwo_cutu_unit for details.  */
10731
10732 static struct dwo_unit *
10733 lookup_dwo_type_unit (struct signatured_type *this_tu,
10734                       const char *dwo_name, const char *comp_dir)
10735 {
10736   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
10737 }
10738
10739 /* Traversal function for queue_and_load_all_dwo_tus.  */
10740
10741 static int
10742 queue_and_load_dwo_tu (void **slot, void *info)
10743 {
10744   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
10745   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
10746   ULONGEST signature = dwo_unit->signature;
10747   struct signatured_type *sig_type =
10748     lookup_dwo_signatured_type (per_cu->cu, signature);
10749
10750   if (sig_type != NULL)
10751     {
10752       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
10753
10754       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
10755          a real dependency of PER_CU on SIG_TYPE.  That is detected later
10756          while processing PER_CU.  */
10757       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
10758         load_full_type_unit (sig_cu);
10759       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
10760     }
10761
10762   return 1;
10763 }
10764
10765 /* Queue all TUs contained in the DWO of PER_CU to be read in.
10766    The DWO may have the only definition of the type, though it may not be
10767    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
10768    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
10769
10770 static void
10771 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
10772 {
10773   struct dwo_unit *dwo_unit;
10774   struct dwo_file *dwo_file;
10775
10776   gdb_assert (!per_cu->is_debug_types);
10777   gdb_assert (get_dwp_file () == NULL);
10778   gdb_assert (per_cu->cu != NULL);
10779
10780   dwo_unit = per_cu->cu->dwo_unit;
10781   gdb_assert (dwo_unit != NULL);
10782
10783   dwo_file = dwo_unit->dwo_file;
10784   if (dwo_file->tus != NULL)
10785     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
10786 }
10787
10788 /* Free all resources associated with DWO_FILE.
10789    Close the DWO file and munmap the sections.
10790    All memory should be on the objfile obstack.  */
10791
10792 static void
10793 free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
10794 {
10795   int ix;
10796   struct dwarf2_section_info *section;
10797
10798   /* Note: dbfd is NULL for virtual DWO files.  */
10799   gdb_bfd_unref (dwo_file->dbfd);
10800
10801   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
10802 }
10803
10804 /* Wrapper for free_dwo_file for use in cleanups.  */
10805
10806 static void
10807 free_dwo_file_cleanup (void *arg)
10808 {
10809   struct dwo_file *dwo_file = (struct dwo_file *) arg;
10810   struct objfile *objfile = dwarf2_per_objfile->objfile;
10811
10812   free_dwo_file (dwo_file, objfile);
10813 }
10814
10815 /* Traversal function for free_dwo_files.  */
10816
10817 static int
10818 free_dwo_file_from_slot (void **slot, void *info)
10819 {
10820   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
10821   struct objfile *objfile = (struct objfile *) info;
10822
10823   free_dwo_file (dwo_file, objfile);
10824
10825   return 1;
10826 }
10827
10828 /* Free all resources associated with DWO_FILES.  */
10829
10830 static void
10831 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
10832 {
10833   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
10834 }
10835 \f
10836 /* Read in various DIEs.  */
10837
10838 /* qsort helper for inherit_abstract_dies.  */
10839
10840 static int
10841 unsigned_int_compar (const void *ap, const void *bp)
10842 {
10843   unsigned int a = *(unsigned int *) ap;
10844   unsigned int b = *(unsigned int *) bp;
10845
10846   return (a > b) - (b > a);
10847 }
10848
10849 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
10850    Inherit only the children of the DW_AT_abstract_origin DIE not being
10851    already referenced by DW_AT_abstract_origin from the children of the
10852    current DIE.  */
10853
10854 static void
10855 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
10856 {
10857   struct die_info *child_die;
10858   unsigned die_children_count;
10859   /* CU offsets which were referenced by children of the current DIE.  */
10860   sect_offset *offsets;
10861   sect_offset *offsets_end, *offsetp;
10862   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
10863   struct die_info *origin_die;
10864   /* Iterator of the ORIGIN_DIE children.  */
10865   struct die_info *origin_child_die;
10866   struct cleanup *cleanups;
10867   struct attribute *attr;
10868   struct dwarf2_cu *origin_cu;
10869   struct pending **origin_previous_list_in_scope;
10870
10871   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
10872   if (!attr)
10873     return;
10874
10875   /* Note that following die references may follow to a die in a
10876      different cu.  */
10877
10878   origin_cu = cu;
10879   origin_die = follow_die_ref (die, attr, &origin_cu);
10880
10881   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
10882      symbols in.  */
10883   origin_previous_list_in_scope = origin_cu->list_in_scope;
10884   origin_cu->list_in_scope = cu->list_in_scope;
10885
10886   if (die->tag != origin_die->tag
10887       && !(die->tag == DW_TAG_inlined_subroutine
10888            && origin_die->tag == DW_TAG_subprogram))
10889     complaint (&symfile_complaints,
10890                _("DIE 0x%x and its abstract origin 0x%x have different tags"),
10891                die->offset.sect_off, origin_die->offset.sect_off);
10892
10893   child_die = die->child;
10894   die_children_count = 0;
10895   while (child_die && child_die->tag)
10896     {
10897       child_die = sibling_die (child_die);
10898       die_children_count++;
10899     }
10900   offsets = xmalloc (sizeof (*offsets) * die_children_count);
10901   cleanups = make_cleanup (xfree, offsets);
10902
10903   offsets_end = offsets;
10904   child_die = die->child;
10905   while (child_die && child_die->tag)
10906     {
10907       /* For each CHILD_DIE, find the corresponding child of
10908          ORIGIN_DIE.  If there is more than one layer of
10909          DW_AT_abstract_origin, follow them all; there shouldn't be,
10910          but GCC versions at least through 4.4 generate this (GCC PR
10911          40573).  */
10912       struct die_info *child_origin_die = child_die;
10913       struct dwarf2_cu *child_origin_cu = cu;
10914
10915       while (1)
10916         {
10917           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
10918                               child_origin_cu);
10919           if (attr == NULL)
10920             break;
10921           child_origin_die = follow_die_ref (child_origin_die, attr,
10922                                              &child_origin_cu);
10923         }
10924
10925       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
10926          counterpart may exist.  */
10927       if (child_origin_die != child_die)
10928         {
10929           if (child_die->tag != child_origin_die->tag
10930               && !(child_die->tag == DW_TAG_inlined_subroutine
10931                    && child_origin_die->tag == DW_TAG_subprogram))
10932             complaint (&symfile_complaints,
10933                        _("Child DIE 0x%x and its abstract origin 0x%x have "
10934                          "different tags"), child_die->offset.sect_off,
10935                        child_origin_die->offset.sect_off);
10936           if (child_origin_die->parent != origin_die)
10937             complaint (&symfile_complaints,
10938                        _("Child DIE 0x%x and its abstract origin 0x%x have "
10939                          "different parents"), child_die->offset.sect_off,
10940                        child_origin_die->offset.sect_off);
10941           else
10942             *offsets_end++ = child_origin_die->offset;
10943         }
10944       child_die = sibling_die (child_die);
10945     }
10946   qsort (offsets, offsets_end - offsets, sizeof (*offsets),
10947          unsigned_int_compar);
10948   for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
10949     if (offsetp[-1].sect_off == offsetp->sect_off)
10950       complaint (&symfile_complaints,
10951                  _("Multiple children of DIE 0x%x refer "
10952                    "to DIE 0x%x as their abstract origin"),
10953                  die->offset.sect_off, offsetp->sect_off);
10954
10955   offsetp = offsets;
10956   origin_child_die = origin_die->child;
10957   while (origin_child_die && origin_child_die->tag)
10958     {
10959       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
10960       while (offsetp < offsets_end
10961              && offsetp->sect_off < origin_child_die->offset.sect_off)
10962         offsetp++;
10963       if (offsetp >= offsets_end
10964           || offsetp->sect_off > origin_child_die->offset.sect_off)
10965         {
10966           /* Found that ORIGIN_CHILD_DIE is really not referenced.
10967              Check whether we're already processing ORIGIN_CHILD_DIE.
10968              This can happen with mutually referenced abstract_origins.
10969              PR 16581.  */
10970           if (!origin_child_die->in_process)
10971             process_die (origin_child_die, origin_cu);
10972         }
10973       origin_child_die = sibling_die (origin_child_die);
10974     }
10975   origin_cu->list_in_scope = origin_previous_list_in_scope;
10976
10977   do_cleanups (cleanups);
10978 }
10979
10980 static void
10981 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
10982 {
10983   struct objfile *objfile = cu->objfile;
10984   struct context_stack *new;
10985   CORE_ADDR lowpc;
10986   CORE_ADDR highpc;
10987   struct die_info *child_die;
10988   struct attribute *attr, *call_line, *call_file;
10989   const char *name;
10990   CORE_ADDR baseaddr;
10991   struct block *block;
10992   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
10993   VEC (symbolp) *template_args = NULL;
10994   struct template_symbol *templ_func = NULL;
10995
10996   if (inlined_func)
10997     {
10998       /* If we do not have call site information, we can't show the
10999          caller of this inlined function.  That's too confusing, so
11000          only use the scope for local variables.  */
11001       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11002       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11003       if (call_line == NULL || call_file == NULL)
11004         {
11005           read_lexical_block_scope (die, cu);
11006           return;
11007         }
11008     }
11009
11010   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11011
11012   name = dwarf2_name (die, cu);
11013
11014   /* Ignore functions with missing or empty names.  These are actually
11015      illegal according to the DWARF standard.  */
11016   if (name == NULL)
11017     {
11018       complaint (&symfile_complaints,
11019                  _("missing name for subprogram DIE at %d"),
11020                  die->offset.sect_off);
11021       return;
11022     }
11023
11024   /* Ignore functions with missing or invalid low and high pc attributes.  */
11025   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11026     {
11027       attr = dwarf2_attr (die, DW_AT_external, cu);
11028       if (!attr || !DW_UNSND (attr))
11029         complaint (&symfile_complaints,
11030                    _("cannot get low and high bounds "
11031                      "for subprogram DIE at %d"),
11032                    die->offset.sect_off);
11033       return;
11034     }
11035
11036   lowpc += baseaddr;
11037   highpc += baseaddr;
11038
11039   /* If we have any template arguments, then we must allocate a
11040      different sort of symbol.  */
11041   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11042     {
11043       if (child_die->tag == DW_TAG_template_type_param
11044           || child_die->tag == DW_TAG_template_value_param)
11045         {
11046           templ_func = allocate_template_symbol (objfile);
11047           templ_func->base.is_cplus_template_function = 1;
11048           break;
11049         }
11050     }
11051
11052   new = push_context (0, lowpc);
11053   new->name = new_symbol_full (die, read_type_die (die, cu), cu,
11054                                (struct symbol *) templ_func);
11055
11056   /* If there is a location expression for DW_AT_frame_base, record
11057      it.  */
11058   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
11059   if (attr)
11060     dwarf2_symbol_mark_computed (attr, new->name, cu, 1);
11061
11062   cu->list_in_scope = &local_symbols;
11063
11064   if (die->child != NULL)
11065     {
11066       child_die = die->child;
11067       while (child_die && child_die->tag)
11068         {
11069           if (child_die->tag == DW_TAG_template_type_param
11070               || child_die->tag == DW_TAG_template_value_param)
11071             {
11072               struct symbol *arg = new_symbol (child_die, NULL, cu);
11073
11074               if (arg != NULL)
11075                 VEC_safe_push (symbolp, template_args, arg);
11076             }
11077           else
11078             process_die (child_die, cu);
11079           child_die = sibling_die (child_die);
11080         }
11081     }
11082
11083   inherit_abstract_dies (die, cu);
11084
11085   /* If we have a DW_AT_specification, we might need to import using
11086      directives from the context of the specification DIE.  See the
11087      comment in determine_prefix.  */
11088   if (cu->language == language_cplus
11089       && dwarf2_attr (die, DW_AT_specification, cu))
11090     {
11091       struct dwarf2_cu *spec_cu = cu;
11092       struct die_info *spec_die = die_specification (die, &spec_cu);
11093
11094       while (spec_die)
11095         {
11096           child_die = spec_die->child;
11097           while (child_die && child_die->tag)
11098             {
11099               if (child_die->tag == DW_TAG_imported_module)
11100                 process_die (child_die, spec_cu);
11101               child_die = sibling_die (child_die);
11102             }
11103
11104           /* In some cases, GCC generates specification DIEs that
11105              themselves contain DW_AT_specification attributes.  */
11106           spec_die = die_specification (spec_die, &spec_cu);
11107         }
11108     }
11109
11110   new = pop_context ();
11111   /* Make a block for the local symbols within.  */
11112   block = finish_block (new->name, &local_symbols, new->old_blocks,
11113                         lowpc, highpc, objfile);
11114
11115   /* For C++, set the block's scope.  */
11116   if ((cu->language == language_cplus || cu->language == language_fortran)
11117       && cu->processing_has_namespace_info)
11118     block_set_scope (block, determine_prefix (die, cu),
11119                      &objfile->objfile_obstack);
11120
11121   /* If we have address ranges, record them.  */
11122   dwarf2_record_block_ranges (die, block, baseaddr, cu);
11123
11124   /* Attach template arguments to function.  */
11125   if (! VEC_empty (symbolp, template_args))
11126     {
11127       gdb_assert (templ_func != NULL);
11128
11129       templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11130       templ_func->template_arguments
11131         = obstack_alloc (&objfile->objfile_obstack,
11132                          (templ_func->n_template_arguments
11133                           * sizeof (struct symbol *)));
11134       memcpy (templ_func->template_arguments,
11135               VEC_address (symbolp, template_args),
11136               (templ_func->n_template_arguments * sizeof (struct symbol *)));
11137       VEC_free (symbolp, template_args);
11138     }
11139
11140   /* In C++, we can have functions nested inside functions (e.g., when
11141      a function declares a class that has methods).  This means that
11142      when we finish processing a function scope, we may need to go
11143      back to building a containing block's symbol lists.  */
11144   local_symbols = new->locals;
11145   using_directives = new->using_directives;
11146
11147   /* If we've finished processing a top-level function, subsequent
11148      symbols go in the file symbol list.  */
11149   if (outermost_context_p ())
11150     cu->list_in_scope = &file_symbols;
11151 }
11152
11153 /* Process all the DIES contained within a lexical block scope.  Start
11154    a new scope, process the dies, and then close the scope.  */
11155
11156 static void
11157 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
11158 {
11159   struct objfile *objfile = cu->objfile;
11160   struct context_stack *new;
11161   CORE_ADDR lowpc, highpc;
11162   struct die_info *child_die;
11163   CORE_ADDR baseaddr;
11164
11165   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11166
11167   /* Ignore blocks with missing or invalid low and high pc attributes.  */
11168   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11169      as multiple lexical blocks?  Handling children in a sane way would
11170      be nasty.  Might be easier to properly extend generic blocks to
11171      describe ranges.  */
11172   if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11173     return;
11174   lowpc += baseaddr;
11175   highpc += baseaddr;
11176
11177   push_context (0, lowpc);
11178   if (die->child != NULL)
11179     {
11180       child_die = die->child;
11181       while (child_die && child_die->tag)
11182         {
11183           process_die (child_die, cu);
11184           child_die = sibling_die (child_die);
11185         }
11186     }
11187   new = pop_context ();
11188
11189   if (local_symbols != NULL || using_directives != NULL)
11190     {
11191       struct block *block
11192         = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
11193                         highpc, objfile);
11194
11195       /* Note that recording ranges after traversing children, as we
11196          do here, means that recording a parent's ranges entails
11197          walking across all its children's ranges as they appear in
11198          the address map, which is quadratic behavior.
11199
11200          It would be nicer to record the parent's ranges before
11201          traversing its children, simply overriding whatever you find
11202          there.  But since we don't even decide whether to create a
11203          block until after we've traversed its children, that's hard
11204          to do.  */
11205       dwarf2_record_block_ranges (die, block, baseaddr, cu);
11206     }
11207   local_symbols = new->locals;
11208   using_directives = new->using_directives;
11209 }
11210
11211 /* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab.  */
11212
11213 static void
11214 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11215 {
11216   struct objfile *objfile = cu->objfile;
11217   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11218   CORE_ADDR pc, baseaddr;
11219   struct attribute *attr;
11220   struct call_site *call_site, call_site_local;
11221   void **slot;
11222   int nparams;
11223   struct die_info *child_die;
11224
11225   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11226
11227   attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11228   if (!attr)
11229     {
11230       complaint (&symfile_complaints,
11231                  _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11232                    "DIE 0x%x [in module %s]"),
11233                  die->offset.sect_off, objfile_name (objfile));
11234       return;
11235     }
11236   pc = attr_value_as_address (attr) + baseaddr;
11237
11238   if (cu->call_site_htab == NULL)
11239     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11240                                                NULL, &objfile->objfile_obstack,
11241                                                hashtab_obstack_allocate, NULL);
11242   call_site_local.pc = pc;
11243   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11244   if (*slot != NULL)
11245     {
11246       complaint (&symfile_complaints,
11247                  _("Duplicate PC %s for DW_TAG_GNU_call_site "
11248                    "DIE 0x%x [in module %s]"),
11249                  paddress (gdbarch, pc), die->offset.sect_off,
11250                  objfile_name (objfile));
11251       return;
11252     }
11253
11254   /* Count parameters at the caller.  */
11255
11256   nparams = 0;
11257   for (child_die = die->child; child_die && child_die->tag;
11258        child_die = sibling_die (child_die))
11259     {
11260       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11261         {
11262           complaint (&symfile_complaints,
11263                      _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11264                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11265                      child_die->tag, child_die->offset.sect_off,
11266                      objfile_name (objfile));
11267           continue;
11268         }
11269
11270       nparams++;
11271     }
11272
11273   call_site = obstack_alloc (&objfile->objfile_obstack,
11274                              (sizeof (*call_site)
11275                               + (sizeof (*call_site->parameter)
11276                                  * (nparams - 1))));
11277   *slot = call_site;
11278   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11279   call_site->pc = pc;
11280
11281   if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11282     {
11283       struct die_info *func_die;
11284
11285       /* Skip also over DW_TAG_inlined_subroutine.  */
11286       for (func_die = die->parent;
11287            func_die && func_die->tag != DW_TAG_subprogram
11288            && func_die->tag != DW_TAG_subroutine_type;
11289            func_die = func_die->parent);
11290
11291       /* DW_AT_GNU_all_call_sites is a superset
11292          of DW_AT_GNU_all_tail_call_sites.  */
11293       if (func_die
11294           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11295           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11296         {
11297           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11298              not complete.  But keep CALL_SITE for look ups via call_site_htab,
11299              both the initial caller containing the real return address PC and
11300              the final callee containing the current PC of a chain of tail
11301              calls do not need to have the tail call list complete.  But any
11302              function candidate for a virtual tail call frame searched via
11303              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11304              determined unambiguously.  */
11305         }
11306       else
11307         {
11308           struct type *func_type = NULL;
11309
11310           if (func_die)
11311             func_type = get_die_type (func_die, cu);
11312           if (func_type != NULL)
11313             {
11314               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11315
11316               /* Enlist this call site to the function.  */
11317               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11318               TYPE_TAIL_CALL_LIST (func_type) = call_site;
11319             }
11320           else
11321             complaint (&symfile_complaints,
11322                        _("Cannot find function owning DW_TAG_GNU_call_site "
11323                          "DIE 0x%x [in module %s]"),
11324                        die->offset.sect_off, objfile_name (objfile));
11325         }
11326     }
11327
11328   attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11329   if (attr == NULL)
11330     attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11331   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11332   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11333     /* Keep NULL DWARF_BLOCK.  */;
11334   else if (attr_form_is_block (attr))
11335     {
11336       struct dwarf2_locexpr_baton *dlbaton;
11337
11338       dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11339       dlbaton->data = DW_BLOCK (attr)->data;
11340       dlbaton->size = DW_BLOCK (attr)->size;
11341       dlbaton->per_cu = cu->per_cu;
11342
11343       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11344     }
11345   else if (attr_form_is_ref (attr))
11346     {
11347       struct dwarf2_cu *target_cu = cu;
11348       struct die_info *target_die;
11349
11350       target_die = follow_die_ref (die, attr, &target_cu);
11351       gdb_assert (target_cu->objfile == objfile);
11352       if (die_is_declaration (target_die, target_cu))
11353         {
11354           const char *target_physname = NULL;
11355           struct attribute *target_attr;
11356
11357           /* Prefer the mangled name; otherwise compute the demangled one.  */
11358           target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11359           if (target_attr == NULL)
11360             target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11361                                        target_cu);
11362           if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11363             target_physname = DW_STRING (target_attr);
11364           else
11365             target_physname = dwarf2_physname (NULL, target_die, target_cu);
11366           if (target_physname == NULL)
11367             complaint (&symfile_complaints,
11368                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11369                          "physname, for referencing DIE 0x%x [in module %s]"),
11370                        die->offset.sect_off, objfile_name (objfile));
11371           else
11372             SET_FIELD_PHYSNAME (call_site->target, target_physname);
11373         }
11374       else
11375         {
11376           CORE_ADDR lowpc;
11377
11378           /* DW_AT_entry_pc should be preferred.  */
11379           if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11380             complaint (&symfile_complaints,
11381                        _("DW_AT_GNU_call_site_target target DIE has invalid "
11382                          "low pc, for referencing DIE 0x%x [in module %s]"),
11383                        die->offset.sect_off, objfile_name (objfile));
11384           else
11385             SET_FIELD_PHYSADDR (call_site->target, lowpc + baseaddr);
11386         }
11387     }
11388   else
11389     complaint (&symfile_complaints,
11390                _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11391                  "block nor reference, for DIE 0x%x [in module %s]"),
11392                die->offset.sect_off, objfile_name (objfile));
11393
11394   call_site->per_cu = cu->per_cu;
11395
11396   for (child_die = die->child;
11397        child_die && child_die->tag;
11398        child_die = sibling_die (child_die))
11399     {
11400       struct call_site_parameter *parameter;
11401       struct attribute *loc, *origin;
11402
11403       if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11404         {
11405           /* Already printed the complaint above.  */
11406           continue;
11407         }
11408
11409       gdb_assert (call_site->parameter_count < nparams);
11410       parameter = &call_site->parameter[call_site->parameter_count];
11411
11412       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11413          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
11414          register is contained in DW_AT_GNU_call_site_value.  */
11415
11416       loc = dwarf2_attr (child_die, DW_AT_location, cu);
11417       origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
11418       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
11419         {
11420           sect_offset offset;
11421
11422           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11423           offset = dwarf2_get_ref_die_offset (origin);
11424           if (!offset_in_cu_p (&cu->header, offset))
11425             {
11426               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11427                  binding can be done only inside one CU.  Such referenced DIE
11428                  therefore cannot be even moved to DW_TAG_partial_unit.  */
11429               complaint (&symfile_complaints,
11430                          _("DW_AT_abstract_origin offset is not in CU for "
11431                            "DW_TAG_GNU_call_site child DIE 0x%x "
11432                            "[in module %s]"),
11433                          child_die->offset.sect_off, objfile_name (objfile));
11434               continue;
11435             }
11436           parameter->u.param_offset.cu_off = (offset.sect_off
11437                                               - cu->header.offset.sect_off);
11438         }
11439       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
11440         {
11441           complaint (&symfile_complaints,
11442                      _("No DW_FORM_block* DW_AT_location for "
11443                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11444                      child_die->offset.sect_off, objfile_name (objfile));
11445           continue;
11446         }
11447       else
11448         {
11449           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11450             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11451           if (parameter->u.dwarf_reg != -1)
11452             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11453           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11454                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11455                                              &parameter->u.fb_offset))
11456             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11457           else
11458             {
11459               complaint (&symfile_complaints,
11460                          _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11461                            "for DW_FORM_block* DW_AT_location is supported for "
11462                            "DW_TAG_GNU_call_site child DIE 0x%x "
11463                            "[in module %s]"),
11464                          child_die->offset.sect_off, objfile_name (objfile));
11465               continue;
11466             }
11467         }
11468
11469       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11470       if (!attr_form_is_block (attr))
11471         {
11472           complaint (&symfile_complaints,
11473                      _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11474                        "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11475                      child_die->offset.sect_off, objfile_name (objfile));
11476           continue;
11477         }
11478       parameter->value = DW_BLOCK (attr)->data;
11479       parameter->value_size = DW_BLOCK (attr)->size;
11480
11481       /* Parameters are not pre-cleared by memset above.  */
11482       parameter->data_value = NULL;
11483       parameter->data_value_size = 0;
11484       call_site->parameter_count++;
11485
11486       attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11487       if (attr)
11488         {
11489           if (!attr_form_is_block (attr))
11490             complaint (&symfile_complaints,
11491                        _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11492                          "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
11493                        child_die->offset.sect_off, objfile_name (objfile));
11494           else
11495             {
11496               parameter->data_value = DW_BLOCK (attr)->data;
11497               parameter->data_value_size = DW_BLOCK (attr)->size;
11498             }
11499         }
11500     }
11501 }
11502
11503 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
11504    Return 1 if the attributes are present and valid, otherwise, return 0.
11505    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
11506
11507 static int
11508 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
11509                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
11510                     struct partial_symtab *ranges_pst)
11511 {
11512   struct objfile *objfile = cu->objfile;
11513   struct comp_unit_head *cu_header = &cu->header;
11514   bfd *obfd = objfile->obfd;
11515   unsigned int addr_size = cu_header->addr_size;
11516   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11517   /* Base address selection entry.  */
11518   CORE_ADDR base;
11519   int found_base;
11520   unsigned int dummy;
11521   const gdb_byte *buffer;
11522   CORE_ADDR marker;
11523   int low_set;
11524   CORE_ADDR low = 0;
11525   CORE_ADDR high = 0;
11526   CORE_ADDR baseaddr;
11527
11528   found_base = cu->base_known;
11529   base = cu->base_address;
11530
11531   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11532   if (offset >= dwarf2_per_objfile->ranges.size)
11533     {
11534       complaint (&symfile_complaints,
11535                  _("Offset %d out of bounds for DW_AT_ranges attribute"),
11536                  offset);
11537       return 0;
11538     }
11539   buffer = dwarf2_per_objfile->ranges.buffer + offset;
11540
11541   /* Read in the largest possible address.  */
11542   marker = read_address (obfd, buffer, cu, &dummy);
11543   if ((marker & mask) == mask)
11544     {
11545       /* If we found the largest possible address, then
11546          read the base address.  */
11547       base = read_address (obfd, buffer + addr_size, cu, &dummy);
11548       buffer += 2 * addr_size;
11549       offset += 2 * addr_size;
11550       found_base = 1;
11551     }
11552
11553   low_set = 0;
11554
11555   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11556
11557   while (1)
11558     {
11559       CORE_ADDR range_beginning, range_end;
11560
11561       range_beginning = read_address (obfd, buffer, cu, &dummy);
11562       buffer += addr_size;
11563       range_end = read_address (obfd, buffer, cu, &dummy);
11564       buffer += addr_size;
11565       offset += 2 * addr_size;
11566
11567       /* An end of list marker is a pair of zero addresses.  */
11568       if (range_beginning == 0 && range_end == 0)
11569         /* Found the end of list entry.  */
11570         break;
11571
11572       /* Each base address selection entry is a pair of 2 values.
11573          The first is the largest possible address, the second is
11574          the base address.  Check for a base address here.  */
11575       if ((range_beginning & mask) == mask)
11576         {
11577           /* If we found the largest possible address, then
11578              read the base address.  */
11579           base = read_address (obfd, buffer + addr_size, cu, &dummy);
11580           found_base = 1;
11581           continue;
11582         }
11583
11584       if (!found_base)
11585         {
11586           /* We have no valid base address for the ranges
11587              data.  */
11588           complaint (&symfile_complaints,
11589                      _("Invalid .debug_ranges data (no base address)"));
11590           return 0;
11591         }
11592
11593       if (range_beginning > range_end)
11594         {
11595           /* Inverted range entries are invalid.  */
11596           complaint (&symfile_complaints,
11597                      _("Invalid .debug_ranges data (inverted range)"));
11598           return 0;
11599         }
11600
11601       /* Empty range entries have no effect.  */
11602       if (range_beginning == range_end)
11603         continue;
11604
11605       range_beginning += base;
11606       range_end += base;
11607
11608       /* A not-uncommon case of bad debug info.
11609          Don't pollute the addrmap with bad data.  */
11610       if (range_beginning + baseaddr == 0
11611           && !dwarf2_per_objfile->has_section_at_zero)
11612         {
11613           complaint (&symfile_complaints,
11614                      _(".debug_ranges entry has start address of zero"
11615                        " [in module %s]"), objfile_name (objfile));
11616           continue;
11617         }
11618
11619       if (ranges_pst != NULL)
11620         addrmap_set_empty (objfile->psymtabs_addrmap,
11621                            range_beginning + baseaddr,
11622                            range_end - 1 + baseaddr,
11623                            ranges_pst);
11624
11625       /* FIXME: This is recording everything as a low-high
11626          segment of consecutive addresses.  We should have a
11627          data structure for discontiguous block ranges
11628          instead.  */
11629       if (! low_set)
11630         {
11631           low = range_beginning;
11632           high = range_end;
11633           low_set = 1;
11634         }
11635       else
11636         {
11637           if (range_beginning < low)
11638             low = range_beginning;
11639           if (range_end > high)
11640             high = range_end;
11641         }
11642     }
11643
11644   if (! low_set)
11645     /* If the first entry is an end-of-list marker, the range
11646        describes an empty scope, i.e. no instructions.  */
11647     return 0;
11648
11649   if (low_return)
11650     *low_return = low;
11651   if (high_return)
11652     *high_return = high;
11653   return 1;
11654 }
11655
11656 /* Get low and high pc attributes from a die.  Return 1 if the attributes
11657    are present and valid, otherwise, return 0.  Return -1 if the range is
11658    discontinuous, i.e. derived from DW_AT_ranges information.  */
11659
11660 static int
11661 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
11662                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
11663                       struct partial_symtab *pst)
11664 {
11665   struct attribute *attr;
11666   struct attribute *attr_high;
11667   CORE_ADDR low = 0;
11668   CORE_ADDR high = 0;
11669   int ret = 0;
11670
11671   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11672   if (attr_high)
11673     {
11674       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11675       if (attr)
11676         {
11677           low = attr_value_as_address (attr);
11678           high = attr_value_as_address (attr_high);
11679           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
11680             high += low;
11681         }
11682       else
11683         /* Found high w/o low attribute.  */
11684         return 0;
11685
11686       /* Found consecutive range of addresses.  */
11687       ret = 1;
11688     }
11689   else
11690     {
11691       attr = dwarf2_attr (die, DW_AT_ranges, cu);
11692       if (attr != NULL)
11693         {
11694           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11695              We take advantage of the fact that DW_AT_ranges does not appear
11696              in DW_TAG_compile_unit of DWO files.  */
11697           int need_ranges_base = die->tag != DW_TAG_compile_unit;
11698           unsigned int ranges_offset = (DW_UNSND (attr)
11699                                         + (need_ranges_base
11700                                            ? cu->ranges_base
11701                                            : 0));
11702
11703           /* Value of the DW_AT_ranges attribute is the offset in the
11704              .debug_ranges section.  */
11705           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
11706             return 0;
11707           /* Found discontinuous range of addresses.  */
11708           ret = -1;
11709         }
11710     }
11711
11712   /* read_partial_die has also the strict LOW < HIGH requirement.  */
11713   if (high <= low)
11714     return 0;
11715
11716   /* When using the GNU linker, .gnu.linkonce. sections are used to
11717      eliminate duplicate copies of functions and vtables and such.
11718      The linker will arbitrarily choose one and discard the others.
11719      The AT_*_pc values for such functions refer to local labels in
11720      these sections.  If the section from that file was discarded, the
11721      labels are not in the output, so the relocs get a value of 0.
11722      If this is a discarded function, mark the pc bounds as invalid,
11723      so that GDB will ignore it.  */
11724   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
11725     return 0;
11726
11727   *lowpc = low;
11728   if (highpc)
11729     *highpc = high;
11730   return ret;
11731 }
11732
11733 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
11734    its low and high PC addresses.  Do nothing if these addresses could not
11735    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
11736    and HIGHPC to the high address if greater than HIGHPC.  */
11737
11738 static void
11739 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
11740                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
11741                                  struct dwarf2_cu *cu)
11742 {
11743   CORE_ADDR low, high;
11744   struct die_info *child = die->child;
11745
11746   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
11747     {
11748       *lowpc = min (*lowpc, low);
11749       *highpc = max (*highpc, high);
11750     }
11751
11752   /* If the language does not allow nested subprograms (either inside
11753      subprograms or lexical blocks), we're done.  */
11754   if (cu->language != language_ada)
11755     return;
11756
11757   /* Check all the children of the given DIE.  If it contains nested
11758      subprograms, then check their pc bounds.  Likewise, we need to
11759      check lexical blocks as well, as they may also contain subprogram
11760      definitions.  */
11761   while (child && child->tag)
11762     {
11763       if (child->tag == DW_TAG_subprogram
11764           || child->tag == DW_TAG_lexical_block)
11765         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
11766       child = sibling_die (child);
11767     }
11768 }
11769
11770 /* Get the low and high pc's represented by the scope DIE, and store
11771    them in *LOWPC and *HIGHPC.  If the correct values can't be
11772    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
11773
11774 static void
11775 get_scope_pc_bounds (struct die_info *die,
11776                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
11777                      struct dwarf2_cu *cu)
11778 {
11779   CORE_ADDR best_low = (CORE_ADDR) -1;
11780   CORE_ADDR best_high = (CORE_ADDR) 0;
11781   CORE_ADDR current_low, current_high;
11782
11783   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
11784     {
11785       best_low = current_low;
11786       best_high = current_high;
11787     }
11788   else
11789     {
11790       struct die_info *child = die->child;
11791
11792       while (child && child->tag)
11793         {
11794           switch (child->tag) {
11795           case DW_TAG_subprogram:
11796             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
11797             break;
11798           case DW_TAG_namespace:
11799           case DW_TAG_module:
11800             /* FIXME: carlton/2004-01-16: Should we do this for
11801                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
11802                that current GCC's always emit the DIEs corresponding
11803                to definitions of methods of classes as children of a
11804                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
11805                the DIEs giving the declarations, which could be
11806                anywhere).  But I don't see any reason why the
11807                standards says that they have to be there.  */
11808             get_scope_pc_bounds (child, &current_low, &current_high, cu);
11809
11810             if (current_low != ((CORE_ADDR) -1))
11811               {
11812                 best_low = min (best_low, current_low);
11813                 best_high = max (best_high, current_high);
11814               }
11815             break;
11816           default:
11817             /* Ignore.  */
11818             break;
11819           }
11820
11821           child = sibling_die (child);
11822         }
11823     }
11824
11825   *lowpc = best_low;
11826   *highpc = best_high;
11827 }
11828
11829 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
11830    in DIE.  */
11831
11832 static void
11833 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
11834                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
11835 {
11836   struct objfile *objfile = cu->objfile;
11837   struct attribute *attr;
11838   struct attribute *attr_high;
11839
11840   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
11841   if (attr_high)
11842     {
11843       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11844       if (attr)
11845         {
11846           CORE_ADDR low = attr_value_as_address (attr);
11847           CORE_ADDR high = attr_value_as_address (attr_high);
11848
11849           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
11850             high += low;
11851
11852           record_block_range (block, baseaddr + low, baseaddr + high - 1);
11853         }
11854     }
11855
11856   attr = dwarf2_attr (die, DW_AT_ranges, cu);
11857   if (attr)
11858     {
11859       bfd *obfd = objfile->obfd;
11860       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
11861          We take advantage of the fact that DW_AT_ranges does not appear
11862          in DW_TAG_compile_unit of DWO files.  */
11863       int need_ranges_base = die->tag != DW_TAG_compile_unit;
11864
11865       /* The value of the DW_AT_ranges attribute is the offset of the
11866          address range list in the .debug_ranges section.  */
11867       unsigned long offset = (DW_UNSND (attr)
11868                               + (need_ranges_base ? cu->ranges_base : 0));
11869       const gdb_byte *buffer;
11870
11871       /* For some target architectures, but not others, the
11872          read_address function sign-extends the addresses it returns.
11873          To recognize base address selection entries, we need a
11874          mask.  */
11875       unsigned int addr_size = cu->header.addr_size;
11876       CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11877
11878       /* The base address, to which the next pair is relative.  Note
11879          that this 'base' is a DWARF concept: most entries in a range
11880          list are relative, to reduce the number of relocs against the
11881          debugging information.  This is separate from this function's
11882          'baseaddr' argument, which GDB uses to relocate debugging
11883          information from a shared library based on the address at
11884          which the library was loaded.  */
11885       CORE_ADDR base = cu->base_address;
11886       int base_known = cu->base_known;
11887
11888       dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
11889       if (offset >= dwarf2_per_objfile->ranges.size)
11890         {
11891           complaint (&symfile_complaints,
11892                      _("Offset %lu out of bounds for DW_AT_ranges attribute"),
11893                      offset);
11894           return;
11895         }
11896       buffer = dwarf2_per_objfile->ranges.buffer + offset;
11897
11898       for (;;)
11899         {
11900           unsigned int bytes_read;
11901           CORE_ADDR start, end;
11902
11903           start = read_address (obfd, buffer, cu, &bytes_read);
11904           buffer += bytes_read;
11905           end = read_address (obfd, buffer, cu, &bytes_read);
11906           buffer += bytes_read;
11907
11908           /* Did we find the end of the range list?  */
11909           if (start == 0 && end == 0)
11910             break;
11911
11912           /* Did we find a base address selection entry?  */
11913           else if ((start & base_select_mask) == base_select_mask)
11914             {
11915               base = end;
11916               base_known = 1;
11917             }
11918
11919           /* We found an ordinary address range.  */
11920           else
11921             {
11922               if (!base_known)
11923                 {
11924                   complaint (&symfile_complaints,
11925                              _("Invalid .debug_ranges data "
11926                                "(no base address)"));
11927                   return;
11928                 }
11929
11930               if (start > end)
11931                 {
11932                   /* Inverted range entries are invalid.  */
11933                   complaint (&symfile_complaints,
11934                              _("Invalid .debug_ranges data "
11935                                "(inverted range)"));
11936                   return;
11937                 }
11938
11939               /* Empty range entries have no effect.  */
11940               if (start == end)
11941                 continue;
11942
11943               start += base + baseaddr;
11944               end += base + baseaddr;
11945
11946               /* A not-uncommon case of bad debug info.
11947                  Don't pollute the addrmap with bad data.  */
11948               if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
11949                 {
11950                   complaint (&symfile_complaints,
11951                              _(".debug_ranges entry has start address of zero"
11952                                " [in module %s]"), objfile_name (objfile));
11953                   continue;
11954                 }
11955
11956               record_block_range (block, start, end - 1);
11957             }
11958         }
11959     }
11960 }
11961
11962 /* Check whether the producer field indicates either of GCC < 4.6, or the
11963    Intel C/C++ compiler, and cache the result in CU.  */
11964
11965 static void
11966 check_producer (struct dwarf2_cu *cu)
11967 {
11968   const char *cs;
11969   int major, minor, release;
11970
11971   if (cu->producer == NULL)
11972     {
11973       /* For unknown compilers expect their behavior is DWARF version
11974          compliant.
11975
11976          GCC started to support .debug_types sections by -gdwarf-4 since
11977          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
11978          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
11979          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
11980          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
11981     }
11982   else if (strncmp (cu->producer, "GNU ", strlen ("GNU ")) == 0)
11983     {
11984       /* Skip any identifier after "GNU " - such as "C++" or "Java".  */
11985
11986       cs = &cu->producer[strlen ("GNU ")];
11987       while (*cs && !isdigit (*cs))
11988         cs++;
11989       if (sscanf (cs, "%d.%d.%d", &major, &minor, &release) != 3)
11990         {
11991           /* Not recognized as GCC.  */
11992         }
11993       else
11994         {
11995           cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
11996           cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
11997         }
11998     }
11999   else if (strncmp (cu->producer, "Intel(R) C", strlen ("Intel(R) C")) == 0)
12000     cu->producer_is_icc = 1;
12001   else
12002     {
12003       /* For other non-GCC compilers, expect their behavior is DWARF version
12004          compliant.  */
12005     }
12006
12007   cu->checked_producer = 1;
12008 }
12009
12010 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12011    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12012    during 4.6.0 experimental.  */
12013
12014 static int
12015 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12016 {
12017   if (!cu->checked_producer)
12018     check_producer (cu);
12019
12020   return cu->producer_is_gxx_lt_4_6;
12021 }
12022
12023 /* Return the default accessibility type if it is not overriden by
12024    DW_AT_accessibility.  */
12025
12026 static enum dwarf_access_attribute
12027 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12028 {
12029   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12030     {
12031       /* The default DWARF 2 accessibility for members is public, the default
12032          accessibility for inheritance is private.  */
12033
12034       if (die->tag != DW_TAG_inheritance)
12035         return DW_ACCESS_public;
12036       else
12037         return DW_ACCESS_private;
12038     }
12039   else
12040     {
12041       /* DWARF 3+ defines the default accessibility a different way.  The same
12042          rules apply now for DW_TAG_inheritance as for the members and it only
12043          depends on the container kind.  */
12044
12045       if (die->parent->tag == DW_TAG_class_type)
12046         return DW_ACCESS_private;
12047       else
12048         return DW_ACCESS_public;
12049     }
12050 }
12051
12052 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
12053    offset.  If the attribute was not found return 0, otherwise return
12054    1.  If it was found but could not properly be handled, set *OFFSET
12055    to 0.  */
12056
12057 static int
12058 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12059                              LONGEST *offset)
12060 {
12061   struct attribute *attr;
12062
12063   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12064   if (attr != NULL)
12065     {
12066       *offset = 0;
12067
12068       /* Note that we do not check for a section offset first here.
12069          This is because DW_AT_data_member_location is new in DWARF 4,
12070          so if we see it, we can assume that a constant form is really
12071          a constant and not a section offset.  */
12072       if (attr_form_is_constant (attr))
12073         *offset = dwarf2_get_attr_constant_value (attr, 0);
12074       else if (attr_form_is_section_offset (attr))
12075         dwarf2_complex_location_expr_complaint ();
12076       else if (attr_form_is_block (attr))
12077         *offset = decode_locdesc (DW_BLOCK (attr), cu);
12078       else
12079         dwarf2_complex_location_expr_complaint ();
12080
12081       return 1;
12082     }
12083
12084   return 0;
12085 }
12086
12087 /* Add an aggregate field to the field list.  */
12088
12089 static void
12090 dwarf2_add_field (struct field_info *fip, struct die_info *die,
12091                   struct dwarf2_cu *cu)
12092 {
12093   struct objfile *objfile = cu->objfile;
12094   struct gdbarch *gdbarch = get_objfile_arch (objfile);
12095   struct nextfield *new_field;
12096   struct attribute *attr;
12097   struct field *fp;
12098   const char *fieldname = "";
12099
12100   /* Allocate a new field list entry and link it in.  */
12101   new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
12102   make_cleanup (xfree, new_field);
12103   memset (new_field, 0, sizeof (struct nextfield));
12104
12105   if (die->tag == DW_TAG_inheritance)
12106     {
12107       new_field->next = fip->baseclasses;
12108       fip->baseclasses = new_field;
12109     }
12110   else
12111     {
12112       new_field->next = fip->fields;
12113       fip->fields = new_field;
12114     }
12115   fip->nfields++;
12116
12117   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12118   if (attr)
12119     new_field->accessibility = DW_UNSND (attr);
12120   else
12121     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
12122   if (new_field->accessibility != DW_ACCESS_public)
12123     fip->non_public_fields = 1;
12124
12125   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12126   if (attr)
12127     new_field->virtuality = DW_UNSND (attr);
12128   else
12129     new_field->virtuality = DW_VIRTUALITY_none;
12130
12131   fp = &new_field->field;
12132
12133   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
12134     {
12135       LONGEST offset;
12136
12137       /* Data member other than a C++ static data member.  */
12138
12139       /* Get type of field.  */
12140       fp->type = die_type (die, cu);
12141
12142       SET_FIELD_BITPOS (*fp, 0);
12143
12144       /* Get bit size of field (zero if none).  */
12145       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
12146       if (attr)
12147         {
12148           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12149         }
12150       else
12151         {
12152           FIELD_BITSIZE (*fp) = 0;
12153         }
12154
12155       /* Get bit offset of field.  */
12156       if (handle_data_member_location (die, cu, &offset))
12157         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12158       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
12159       if (attr)
12160         {
12161           if (gdbarch_bits_big_endian (gdbarch))
12162             {
12163               /* For big endian bits, the DW_AT_bit_offset gives the
12164                  additional bit offset from the MSB of the containing
12165                  anonymous object to the MSB of the field.  We don't
12166                  have to do anything special since we don't need to
12167                  know the size of the anonymous object.  */
12168               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
12169             }
12170           else
12171             {
12172               /* For little endian bits, compute the bit offset to the
12173                  MSB of the anonymous object, subtract off the number of
12174                  bits from the MSB of the field to the MSB of the
12175                  object, and then subtract off the number of bits of
12176                  the field itself.  The result is the bit offset of
12177                  the LSB of the field.  */
12178               int anonymous_size;
12179               int bit_offset = DW_UNSND (attr);
12180
12181               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12182               if (attr)
12183                 {
12184                   /* The size of the anonymous object containing
12185                      the bit field is explicit, so use the
12186                      indicated size (in bytes).  */
12187                   anonymous_size = DW_UNSND (attr);
12188                 }
12189               else
12190                 {
12191                   /* The size of the anonymous object containing
12192                      the bit field must be inferred from the type
12193                      attribute of the data member containing the
12194                      bit field.  */
12195                   anonymous_size = TYPE_LENGTH (fp->type);
12196                 }
12197               SET_FIELD_BITPOS (*fp,
12198                                 (FIELD_BITPOS (*fp)
12199                                  + anonymous_size * bits_per_byte
12200                                  - bit_offset - FIELD_BITSIZE (*fp)));
12201             }
12202         }
12203
12204       /* Get name of field.  */
12205       fieldname = dwarf2_name (die, cu);
12206       if (fieldname == NULL)
12207         fieldname = "";
12208
12209       /* The name is already allocated along with this objfile, so we don't
12210          need to duplicate it for the type.  */
12211       fp->name = fieldname;
12212
12213       /* Change accessibility for artificial fields (e.g. virtual table
12214          pointer or virtual base class pointer) to private.  */
12215       if (dwarf2_attr (die, DW_AT_artificial, cu))
12216         {
12217           FIELD_ARTIFICIAL (*fp) = 1;
12218           new_field->accessibility = DW_ACCESS_private;
12219           fip->non_public_fields = 1;
12220         }
12221     }
12222   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
12223     {
12224       /* C++ static member.  */
12225
12226       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12227          is a declaration, but all versions of G++ as of this writing
12228          (so through at least 3.2.1) incorrectly generate
12229          DW_TAG_variable tags.  */
12230
12231       const char *physname;
12232
12233       /* Get name of field.  */
12234       fieldname = dwarf2_name (die, cu);
12235       if (fieldname == NULL)
12236         return;
12237
12238       attr = dwarf2_attr (die, DW_AT_const_value, cu);
12239       if (attr
12240           /* Only create a symbol if this is an external value.
12241              new_symbol checks this and puts the value in the global symbol
12242              table, which we want.  If it is not external, new_symbol
12243              will try to put the value in cu->list_in_scope which is wrong.  */
12244           && dwarf2_flag_true_p (die, DW_AT_external, cu))
12245         {
12246           /* A static const member, not much different than an enum as far as
12247              we're concerned, except that we can support more types.  */
12248           new_symbol (die, NULL, cu);
12249         }
12250
12251       /* Get physical name.  */
12252       physname = dwarf2_physname (fieldname, die, cu);
12253
12254       /* The name is already allocated along with this objfile, so we don't
12255          need to duplicate it for the type.  */
12256       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
12257       FIELD_TYPE (*fp) = die_type (die, cu);
12258       FIELD_NAME (*fp) = fieldname;
12259     }
12260   else if (die->tag == DW_TAG_inheritance)
12261     {
12262       LONGEST offset;
12263
12264       /* C++ base class field.  */
12265       if (handle_data_member_location (die, cu, &offset))
12266         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
12267       FIELD_BITSIZE (*fp) = 0;
12268       FIELD_TYPE (*fp) = die_type (die, cu);
12269       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12270       fip->nbaseclasses++;
12271     }
12272 }
12273
12274 /* Add a typedef defined in the scope of the FIP's class.  */
12275
12276 static void
12277 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12278                     struct dwarf2_cu *cu)
12279 {
12280   struct objfile *objfile = cu->objfile;
12281   struct typedef_field_list *new_field;
12282   struct attribute *attr;
12283   struct typedef_field *fp;
12284   char *fieldname = "";
12285
12286   /* Allocate a new field list entry and link it in.  */
12287   new_field = xzalloc (sizeof (*new_field));
12288   make_cleanup (xfree, new_field);
12289
12290   gdb_assert (die->tag == DW_TAG_typedef);
12291
12292   fp = &new_field->field;
12293
12294   /* Get name of field.  */
12295   fp->name = dwarf2_name (die, cu);
12296   if (fp->name == NULL)
12297     return;
12298
12299   fp->type = read_type_die (die, cu);
12300
12301   new_field->next = fip->typedef_field_list;
12302   fip->typedef_field_list = new_field;
12303   fip->typedef_field_list_count++;
12304 }
12305
12306 /* Create the vector of fields, and attach it to the type.  */
12307
12308 static void
12309 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
12310                               struct dwarf2_cu *cu)
12311 {
12312   int nfields = fip->nfields;
12313
12314   /* Record the field count, allocate space for the array of fields,
12315      and create blank accessibility bitfields if necessary.  */
12316   TYPE_NFIELDS (type) = nfields;
12317   TYPE_FIELDS (type) = (struct field *)
12318     TYPE_ALLOC (type, sizeof (struct field) * nfields);
12319   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12320
12321   if (fip->non_public_fields && cu->language != language_ada)
12322     {
12323       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12324
12325       TYPE_FIELD_PRIVATE_BITS (type) =
12326         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12327       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12328
12329       TYPE_FIELD_PROTECTED_BITS (type) =
12330         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12331       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12332
12333       TYPE_FIELD_IGNORE_BITS (type) =
12334         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12335       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
12336     }
12337
12338   /* If the type has baseclasses, allocate and clear a bit vector for
12339      TYPE_FIELD_VIRTUAL_BITS.  */
12340   if (fip->nbaseclasses && cu->language != language_ada)
12341     {
12342       int num_bytes = B_BYTES (fip->nbaseclasses);
12343       unsigned char *pointer;
12344
12345       ALLOCATE_CPLUS_STRUCT_TYPE (type);
12346       pointer = TYPE_ALLOC (type, num_bytes);
12347       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
12348       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12349       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12350     }
12351
12352   /* Copy the saved-up fields into the field vector.  Start from the head of
12353      the list, adding to the tail of the field array, so that they end up in
12354      the same order in the array in which they were added to the list.  */
12355   while (nfields-- > 0)
12356     {
12357       struct nextfield *fieldp;
12358
12359       if (fip->fields)
12360         {
12361           fieldp = fip->fields;
12362           fip->fields = fieldp->next;
12363         }
12364       else
12365         {
12366           fieldp = fip->baseclasses;
12367           fip->baseclasses = fieldp->next;
12368         }
12369
12370       TYPE_FIELD (type, nfields) = fieldp->field;
12371       switch (fieldp->accessibility)
12372         {
12373         case DW_ACCESS_private:
12374           if (cu->language != language_ada)
12375             SET_TYPE_FIELD_PRIVATE (type, nfields);
12376           break;
12377
12378         case DW_ACCESS_protected:
12379           if (cu->language != language_ada)
12380             SET_TYPE_FIELD_PROTECTED (type, nfields);
12381           break;
12382
12383         case DW_ACCESS_public:
12384           break;
12385
12386         default:
12387           /* Unknown accessibility.  Complain and treat it as public.  */
12388           {
12389             complaint (&symfile_complaints, _("unsupported accessibility %d"),
12390                        fieldp->accessibility);
12391           }
12392           break;
12393         }
12394       if (nfields < fip->nbaseclasses)
12395         {
12396           switch (fieldp->virtuality)
12397             {
12398             case DW_VIRTUALITY_virtual:
12399             case DW_VIRTUALITY_pure_virtual:
12400               if (cu->language == language_ada)
12401                 error (_("unexpected virtuality in component of Ada type"));
12402               SET_TYPE_FIELD_VIRTUAL (type, nfields);
12403               break;
12404             }
12405         }
12406     }
12407 }
12408
12409 /* Return true if this member function is a constructor, false
12410    otherwise.  */
12411
12412 static int
12413 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12414 {
12415   const char *fieldname;
12416   const char *typename;
12417   int len;
12418
12419   if (die->parent == NULL)
12420     return 0;
12421
12422   if (die->parent->tag != DW_TAG_structure_type
12423       && die->parent->tag != DW_TAG_union_type
12424       && die->parent->tag != DW_TAG_class_type)
12425     return 0;
12426
12427   fieldname = dwarf2_name (die, cu);
12428   typename = dwarf2_name (die->parent, cu);
12429   if (fieldname == NULL || typename == NULL)
12430     return 0;
12431
12432   len = strlen (fieldname);
12433   return (strncmp (fieldname, typename, len) == 0
12434           && (typename[len] == '\0' || typename[len] == '<'));
12435 }
12436
12437 /* Add a member function to the proper fieldlist.  */
12438
12439 static void
12440 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
12441                       struct type *type, struct dwarf2_cu *cu)
12442 {
12443   struct objfile *objfile = cu->objfile;
12444   struct attribute *attr;
12445   struct fnfieldlist *flp;
12446   int i;
12447   struct fn_field *fnp;
12448   const char *fieldname;
12449   struct nextfnfield *new_fnfield;
12450   struct type *this_type;
12451   enum dwarf_access_attribute accessibility;
12452
12453   if (cu->language == language_ada)
12454     error (_("unexpected member function in Ada type"));
12455
12456   /* Get name of member function.  */
12457   fieldname = dwarf2_name (die, cu);
12458   if (fieldname == NULL)
12459     return;
12460
12461   /* Look up member function name in fieldlist.  */
12462   for (i = 0; i < fip->nfnfields; i++)
12463     {
12464       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
12465         break;
12466     }
12467
12468   /* Create new list element if necessary.  */
12469   if (i < fip->nfnfields)
12470     flp = &fip->fnfieldlists[i];
12471   else
12472     {
12473       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12474         {
12475           fip->fnfieldlists = (struct fnfieldlist *)
12476             xrealloc (fip->fnfieldlists,
12477                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
12478                       * sizeof (struct fnfieldlist));
12479           if (fip->nfnfields == 0)
12480             make_cleanup (free_current_contents, &fip->fnfieldlists);
12481         }
12482       flp = &fip->fnfieldlists[fip->nfnfields];
12483       flp->name = fieldname;
12484       flp->length = 0;
12485       flp->head = NULL;
12486       i = fip->nfnfields++;
12487     }
12488
12489   /* Create a new member function field and chain it to the field list
12490      entry.  */
12491   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
12492   make_cleanup (xfree, new_fnfield);
12493   memset (new_fnfield, 0, sizeof (struct nextfnfield));
12494   new_fnfield->next = flp->head;
12495   flp->head = new_fnfield;
12496   flp->length++;
12497
12498   /* Fill in the member function field info.  */
12499   fnp = &new_fnfield->fnfield;
12500
12501   /* Delay processing of the physname until later.  */
12502   if (cu->language == language_cplus || cu->language == language_java)
12503     {
12504       add_to_method_list (type, i, flp->length - 1, fieldname,
12505                           die, cu);
12506     }
12507   else
12508     {
12509       const char *physname = dwarf2_physname (fieldname, die, cu);
12510       fnp->physname = physname ? physname : "";
12511     }
12512
12513   fnp->type = alloc_type (objfile);
12514   this_type = read_type_die (die, cu);
12515   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
12516     {
12517       int nparams = TYPE_NFIELDS (this_type);
12518
12519       /* TYPE is the domain of this method, and THIS_TYPE is the type
12520            of the method itself (TYPE_CODE_METHOD).  */
12521       smash_to_method_type (fnp->type, type,
12522                             TYPE_TARGET_TYPE (this_type),
12523                             TYPE_FIELDS (this_type),
12524                             TYPE_NFIELDS (this_type),
12525                             TYPE_VARARGS (this_type));
12526
12527       /* Handle static member functions.
12528          Dwarf2 has no clean way to discern C++ static and non-static
12529          member functions.  G++ helps GDB by marking the first
12530          parameter for non-static member functions (which is the this
12531          pointer) as artificial.  We obtain this information from
12532          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
12533       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
12534         fnp->voffset = VOFFSET_STATIC;
12535     }
12536   else
12537     complaint (&symfile_complaints, _("member function type missing for '%s'"),
12538                dwarf2_full_name (fieldname, die, cu));
12539
12540   /* Get fcontext from DW_AT_containing_type if present.  */
12541   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12542     fnp->fcontext = die_containing_type (die, cu);
12543
12544   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12545      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
12546
12547   /* Get accessibility.  */
12548   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
12549   if (attr)
12550     accessibility = DW_UNSND (attr);
12551   else
12552     accessibility = dwarf2_default_access_attribute (die, cu);
12553   switch (accessibility)
12554     {
12555     case DW_ACCESS_private:
12556       fnp->is_private = 1;
12557       break;
12558     case DW_ACCESS_protected:
12559       fnp->is_protected = 1;
12560       break;
12561     }
12562
12563   /* Check for artificial methods.  */
12564   attr = dwarf2_attr (die, DW_AT_artificial, cu);
12565   if (attr && DW_UNSND (attr) != 0)
12566     fnp->is_artificial = 1;
12567
12568   fnp->is_constructor = dwarf2_is_constructor (die, cu);
12569
12570   /* Get index in virtual function table if it is a virtual member
12571      function.  For older versions of GCC, this is an offset in the
12572      appropriate virtual table, as specified by DW_AT_containing_type.
12573      For everyone else, it is an expression to be evaluated relative
12574      to the object address.  */
12575
12576   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
12577   if (attr)
12578     {
12579       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
12580         {
12581           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12582             {
12583               /* Old-style GCC.  */
12584               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12585             }
12586           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12587                    || (DW_BLOCK (attr)->size > 1
12588                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12589                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12590             {
12591               struct dwarf_block blk;
12592               int offset;
12593
12594               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12595                         ? 1 : 2);
12596               blk.size = DW_BLOCK (attr)->size - offset;
12597               blk.data = DW_BLOCK (attr)->data + offset;
12598               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12599               if ((fnp->voffset % cu->header.addr_size) != 0)
12600                 dwarf2_complex_location_expr_complaint ();
12601               else
12602                 fnp->voffset /= cu->header.addr_size;
12603               fnp->voffset += 2;
12604             }
12605           else
12606             dwarf2_complex_location_expr_complaint ();
12607
12608           if (!fnp->fcontext)
12609             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12610         }
12611       else if (attr_form_is_section_offset (attr))
12612         {
12613           dwarf2_complex_location_expr_complaint ();
12614         }
12615       else
12616         {
12617           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12618                                                  fieldname);
12619         }
12620     }
12621   else
12622     {
12623       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12624       if (attr && DW_UNSND (attr))
12625         {
12626           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
12627           complaint (&symfile_complaints,
12628                      _("Member function \"%s\" (offset %d) is virtual "
12629                        "but the vtable offset is not specified"),
12630                      fieldname, die->offset.sect_off);
12631           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12632           TYPE_CPLUS_DYNAMIC (type) = 1;
12633         }
12634     }
12635 }
12636
12637 /* Create the vector of member function fields, and attach it to the type.  */
12638
12639 static void
12640 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
12641                                  struct dwarf2_cu *cu)
12642 {
12643   struct fnfieldlist *flp;
12644   int i;
12645
12646   if (cu->language == language_ada)
12647     error (_("unexpected member functions in Ada type"));
12648
12649   ALLOCATE_CPLUS_STRUCT_TYPE (type);
12650   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
12651     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
12652
12653   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
12654     {
12655       struct nextfnfield *nfp = flp->head;
12656       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
12657       int k;
12658
12659       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
12660       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
12661       fn_flp->fn_fields = (struct fn_field *)
12662         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
12663       for (k = flp->length; (k--, nfp); nfp = nfp->next)
12664         fn_flp->fn_fields[k] = nfp->fnfield;
12665     }
12666
12667   TYPE_NFN_FIELDS (type) = fip->nfnfields;
12668 }
12669
12670 /* Returns non-zero if NAME is the name of a vtable member in CU's
12671    language, zero otherwise.  */
12672 static int
12673 is_vtable_name (const char *name, struct dwarf2_cu *cu)
12674 {
12675   static const char vptr[] = "_vptr";
12676   static const char vtable[] = "vtable";
12677
12678   /* Look for the C++ and Java forms of the vtable.  */
12679   if ((cu->language == language_java
12680        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
12681        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
12682        && is_cplus_marker (name[sizeof (vptr) - 1])))
12683     return 1;
12684
12685   return 0;
12686 }
12687
12688 /* GCC outputs unnamed structures that are really pointers to member
12689    functions, with the ABI-specified layout.  If TYPE describes
12690    such a structure, smash it into a member function type.
12691
12692    GCC shouldn't do this; it should just output pointer to member DIEs.
12693    This is GCC PR debug/28767.  */
12694
12695 static void
12696 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
12697 {
12698   struct type *pfn_type, *domain_type, *new_type;
12699
12700   /* Check for a structure with no name and two children.  */
12701   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
12702     return;
12703
12704   /* Check for __pfn and __delta members.  */
12705   if (TYPE_FIELD_NAME (type, 0) == NULL
12706       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
12707       || TYPE_FIELD_NAME (type, 1) == NULL
12708       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
12709     return;
12710
12711   /* Find the type of the method.  */
12712   pfn_type = TYPE_FIELD_TYPE (type, 0);
12713   if (pfn_type == NULL
12714       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
12715       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
12716     return;
12717
12718   /* Look for the "this" argument.  */
12719   pfn_type = TYPE_TARGET_TYPE (pfn_type);
12720   if (TYPE_NFIELDS (pfn_type) == 0
12721       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
12722       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
12723     return;
12724
12725   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
12726   new_type = alloc_type (objfile);
12727   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
12728                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
12729                         TYPE_VARARGS (pfn_type));
12730   smash_to_methodptr_type (type, new_type);
12731 }
12732
12733 /* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
12734    (icc).  */
12735
12736 static int
12737 producer_is_icc (struct dwarf2_cu *cu)
12738 {
12739   if (!cu->checked_producer)
12740     check_producer (cu);
12741
12742   return cu->producer_is_icc;
12743 }
12744
12745 /* Called when we find the DIE that starts a structure or union scope
12746    (definition) to create a type for the structure or union.  Fill in
12747    the type's name and general properties; the members will not be
12748    processed until process_structure_scope.  A symbol table entry for
12749    the type will also not be done until process_structure_scope (assuming
12750    the type has a name).
12751
12752    NOTE: we need to call these functions regardless of whether or not the
12753    DIE has a DW_AT_name attribute, since it might be an anonymous
12754    structure or union.  This gets the type entered into our set of
12755    user defined types.  */
12756
12757 static struct type *
12758 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
12759 {
12760   struct objfile *objfile = cu->objfile;
12761   struct type *type;
12762   struct attribute *attr;
12763   const char *name;
12764
12765   /* If the definition of this type lives in .debug_types, read that type.
12766      Don't follow DW_AT_specification though, that will take us back up
12767      the chain and we want to go down.  */
12768   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
12769   if (attr)
12770     {
12771       type = get_DW_AT_signature_type (die, attr, cu);
12772
12773       /* The type's CU may not be the same as CU.
12774          Ensure TYPE is recorded with CU in die_type_hash.  */
12775       return set_die_type (die, type, cu);
12776     }
12777
12778   type = alloc_type (objfile);
12779   INIT_CPLUS_SPECIFIC (type);
12780
12781   name = dwarf2_name (die, cu);
12782   if (name != NULL)
12783     {
12784       if (cu->language == language_cplus
12785           || cu->language == language_java)
12786         {
12787           const char *full_name = dwarf2_full_name (name, die, cu);
12788
12789           /* dwarf2_full_name might have already finished building the DIE's
12790              type.  If so, there is no need to continue.  */
12791           if (get_die_type (die, cu) != NULL)
12792             return get_die_type (die, cu);
12793
12794           TYPE_TAG_NAME (type) = full_name;
12795           if (die->tag == DW_TAG_structure_type
12796               || die->tag == DW_TAG_class_type)
12797             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12798         }
12799       else
12800         {
12801           /* The name is already allocated along with this objfile, so
12802              we don't need to duplicate it for the type.  */
12803           TYPE_TAG_NAME (type) = name;
12804           if (die->tag == DW_TAG_class_type)
12805             TYPE_NAME (type) = TYPE_TAG_NAME (type);
12806         }
12807     }
12808
12809   if (die->tag == DW_TAG_structure_type)
12810     {
12811       TYPE_CODE (type) = TYPE_CODE_STRUCT;
12812     }
12813   else if (die->tag == DW_TAG_union_type)
12814     {
12815       TYPE_CODE (type) = TYPE_CODE_UNION;
12816     }
12817   else
12818     {
12819       TYPE_CODE (type) = TYPE_CODE_CLASS;
12820     }
12821
12822   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
12823     TYPE_DECLARED_CLASS (type) = 1;
12824
12825   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
12826   if (attr)
12827     {
12828       TYPE_LENGTH (type) = DW_UNSND (attr);
12829     }
12830   else
12831     {
12832       TYPE_LENGTH (type) = 0;
12833     }
12834
12835   if (producer_is_icc (cu))
12836     {
12837       /* ICC does not output the required DW_AT_declaration
12838          on incomplete types, but gives them a size of zero.  */
12839     }
12840   else
12841     TYPE_STUB_SUPPORTED (type) = 1;
12842
12843   if (die_is_declaration (die, cu))
12844     TYPE_STUB (type) = 1;
12845   else if (attr == NULL && die->child == NULL
12846            && producer_is_realview (cu->producer))
12847     /* RealView does not output the required DW_AT_declaration
12848        on incomplete types.  */
12849     TYPE_STUB (type) = 1;
12850
12851   /* We need to add the type field to the die immediately so we don't
12852      infinitely recurse when dealing with pointers to the structure
12853      type within the structure itself.  */
12854   set_die_type (die, type, cu);
12855
12856   /* set_die_type should be already done.  */
12857   set_descriptive_type (type, die, cu);
12858
12859   return type;
12860 }
12861
12862 /* Finish creating a structure or union type, including filling in
12863    its members and creating a symbol for it.  */
12864
12865 static void
12866 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
12867 {
12868   struct objfile *objfile = cu->objfile;
12869   struct die_info *child_die = die->child;
12870   struct type *type;
12871
12872   type = get_die_type (die, cu);
12873   if (type == NULL)
12874     type = read_structure_type (die, cu);
12875
12876   if (die->child != NULL && ! die_is_declaration (die, cu))
12877     {
12878       struct field_info fi;
12879       struct die_info *child_die;
12880       VEC (symbolp) *template_args = NULL;
12881       struct cleanup *back_to = make_cleanup (null_cleanup, 0);
12882
12883       memset (&fi, 0, sizeof (struct field_info));
12884
12885       child_die = die->child;
12886
12887       while (child_die && child_die->tag)
12888         {
12889           if (child_die->tag == DW_TAG_member
12890               || child_die->tag == DW_TAG_variable)
12891             {
12892               /* NOTE: carlton/2002-11-05: A C++ static data member
12893                  should be a DW_TAG_member that is a declaration, but
12894                  all versions of G++ as of this writing (so through at
12895                  least 3.2.1) incorrectly generate DW_TAG_variable
12896                  tags for them instead.  */
12897               dwarf2_add_field (&fi, child_die, cu);
12898             }
12899           else if (child_die->tag == DW_TAG_subprogram)
12900             {
12901               /* C++ member function.  */
12902               dwarf2_add_member_fn (&fi, child_die, type, cu);
12903             }
12904           else if (child_die->tag == DW_TAG_inheritance)
12905             {
12906               /* C++ base class field.  */
12907               dwarf2_add_field (&fi, child_die, cu);
12908             }
12909           else if (child_die->tag == DW_TAG_typedef)
12910             dwarf2_add_typedef (&fi, child_die, cu);
12911           else if (child_die->tag == DW_TAG_template_type_param
12912                    || child_die->tag == DW_TAG_template_value_param)
12913             {
12914               struct symbol *arg = new_symbol (child_die, NULL, cu);
12915
12916               if (arg != NULL)
12917                 VEC_safe_push (symbolp, template_args, arg);
12918             }
12919
12920           child_die = sibling_die (child_die);
12921         }
12922
12923       /* Attach template arguments to type.  */
12924       if (! VEC_empty (symbolp, template_args))
12925         {
12926           ALLOCATE_CPLUS_STRUCT_TYPE (type);
12927           TYPE_N_TEMPLATE_ARGUMENTS (type)
12928             = VEC_length (symbolp, template_args);
12929           TYPE_TEMPLATE_ARGUMENTS (type)
12930             = obstack_alloc (&objfile->objfile_obstack,
12931                              (TYPE_N_TEMPLATE_ARGUMENTS (type)
12932                               * sizeof (struct symbol *)));
12933           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
12934                   VEC_address (symbolp, template_args),
12935                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
12936                    * sizeof (struct symbol *)));
12937           VEC_free (symbolp, template_args);
12938         }
12939
12940       /* Attach fields and member functions to the type.  */
12941       if (fi.nfields)
12942         dwarf2_attach_fields_to_type (&fi, type, cu);
12943       if (fi.nfnfields)
12944         {
12945           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
12946
12947           /* Get the type which refers to the base class (possibly this
12948              class itself) which contains the vtable pointer for the current
12949              class from the DW_AT_containing_type attribute.  This use of
12950              DW_AT_containing_type is a GNU extension.  */
12951
12952           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
12953             {
12954               struct type *t = die_containing_type (die, cu);
12955
12956               TYPE_VPTR_BASETYPE (type) = t;
12957               if (type == t)
12958                 {
12959                   int i;
12960
12961                   /* Our own class provides vtbl ptr.  */
12962                   for (i = TYPE_NFIELDS (t) - 1;
12963                        i >= TYPE_N_BASECLASSES (t);
12964                        --i)
12965                     {
12966                       const char *fieldname = TYPE_FIELD_NAME (t, i);
12967
12968                       if (is_vtable_name (fieldname, cu))
12969                         {
12970                           TYPE_VPTR_FIELDNO (type) = i;
12971                           break;
12972                         }
12973                     }
12974
12975                   /* Complain if virtual function table field not found.  */
12976                   if (i < TYPE_N_BASECLASSES (t))
12977                     complaint (&symfile_complaints,
12978                                _("virtual function table pointer "
12979                                  "not found when defining class '%s'"),
12980                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
12981                                "");
12982                 }
12983               else
12984                 {
12985                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
12986                 }
12987             }
12988           else if (cu->producer
12989                    && strncmp (cu->producer,
12990                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
12991             {
12992               /* The IBM XLC compiler does not provide direct indication
12993                  of the containing type, but the vtable pointer is
12994                  always named __vfp.  */
12995
12996               int i;
12997
12998               for (i = TYPE_NFIELDS (type) - 1;
12999                    i >= TYPE_N_BASECLASSES (type);
13000                    --i)
13001                 {
13002                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13003                     {
13004                       TYPE_VPTR_FIELDNO (type) = i;
13005                       TYPE_VPTR_BASETYPE (type) = type;
13006                       break;
13007                     }
13008                 }
13009             }
13010         }
13011
13012       /* Copy fi.typedef_field_list linked list elements content into the
13013          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
13014       if (fi.typedef_field_list)
13015         {
13016           int i = fi.typedef_field_list_count;
13017
13018           ALLOCATE_CPLUS_STRUCT_TYPE (type);
13019           TYPE_TYPEDEF_FIELD_ARRAY (type)
13020             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13021           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13022
13023           /* Reverse the list order to keep the debug info elements order.  */
13024           while (--i >= 0)
13025             {
13026               struct typedef_field *dest, *src;
13027
13028               dest = &TYPE_TYPEDEF_FIELD (type, i);
13029               src = &fi.typedef_field_list->field;
13030               fi.typedef_field_list = fi.typedef_field_list->next;
13031               *dest = *src;
13032             }
13033         }
13034
13035       do_cleanups (back_to);
13036
13037       if (HAVE_CPLUS_STRUCT (type))
13038         TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
13039     }
13040
13041   quirk_gcc_member_function_pointer (type, objfile);
13042
13043   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13044      snapshots) has been known to create a die giving a declaration
13045      for a class that has, as a child, a die giving a definition for a
13046      nested class.  So we have to process our children even if the
13047      current die is a declaration.  Normally, of course, a declaration
13048      won't have any children at all.  */
13049
13050   while (child_die != NULL && child_die->tag)
13051     {
13052       if (child_die->tag == DW_TAG_member
13053           || child_die->tag == DW_TAG_variable
13054           || child_die->tag == DW_TAG_inheritance
13055           || child_die->tag == DW_TAG_template_value_param
13056           || child_die->tag == DW_TAG_template_type_param)
13057         {
13058           /* Do nothing.  */
13059         }
13060       else
13061         process_die (child_die, cu);
13062
13063       child_die = sibling_die (child_die);
13064     }
13065
13066   /* Do not consider external references.  According to the DWARF standard,
13067      these DIEs are identified by the fact that they have no byte_size
13068      attribute, and a declaration attribute.  */
13069   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13070       || !die_is_declaration (die, cu))
13071     new_symbol (die, type, cu);
13072 }
13073
13074 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
13075    update TYPE using some information only available in DIE's children.  */
13076
13077 static void
13078 update_enumeration_type_from_children (struct die_info *die,
13079                                        struct type *type,
13080                                        struct dwarf2_cu *cu)
13081 {
13082   struct obstack obstack;
13083   struct die_info *child_die = die->child;
13084   int unsigned_enum = 1;
13085   int flag_enum = 1;
13086   ULONGEST mask = 0;
13087   struct cleanup *old_chain;
13088
13089   obstack_init (&obstack);
13090   old_chain = make_cleanup_obstack_free (&obstack);
13091
13092   while (child_die != NULL && child_die->tag)
13093     {
13094       struct attribute *attr;
13095       LONGEST value;
13096       const gdb_byte *bytes;
13097       struct dwarf2_locexpr_baton *baton;
13098       const char *name;
13099       if (child_die->tag != DW_TAG_enumerator)
13100         continue;
13101
13102       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13103       if (attr == NULL)
13104         continue;
13105
13106       name = dwarf2_name (child_die, cu);
13107       if (name == NULL)
13108         name = "<anonymous enumerator>";
13109
13110       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13111                                &value, &bytes, &baton);
13112       if (value < 0)
13113         {
13114           unsigned_enum = 0;
13115           flag_enum = 0;
13116         }
13117       else if ((mask & value) != 0)
13118         flag_enum = 0;
13119       else
13120         mask |= value;
13121
13122       /* If we already know that the enum type is neither unsigned, nor
13123          a flag type, no need to look at the rest of the enumerates.  */
13124       if (!unsigned_enum && !flag_enum)
13125         break;
13126       child_die = sibling_die (child_die);
13127     }
13128
13129   if (unsigned_enum)
13130     TYPE_UNSIGNED (type) = 1;
13131   if (flag_enum)
13132     TYPE_FLAG_ENUM (type) = 1;
13133
13134   do_cleanups (old_chain);
13135 }
13136
13137 /* Given a DW_AT_enumeration_type die, set its type.  We do not
13138    complete the type's fields yet, or create any symbols.  */
13139
13140 static struct type *
13141 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
13142 {
13143   struct objfile *objfile = cu->objfile;
13144   struct type *type;
13145   struct attribute *attr;
13146   const char *name;
13147
13148   /* If the definition of this type lives in .debug_types, read that type.
13149      Don't follow DW_AT_specification though, that will take us back up
13150      the chain and we want to go down.  */
13151   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
13152   if (attr)
13153     {
13154       type = get_DW_AT_signature_type (die, attr, cu);
13155
13156       /* The type's CU may not be the same as CU.
13157          Ensure TYPE is recorded with CU in die_type_hash.  */
13158       return set_die_type (die, type, cu);
13159     }
13160
13161   type = alloc_type (objfile);
13162
13163   TYPE_CODE (type) = TYPE_CODE_ENUM;
13164   name = dwarf2_full_name (NULL, die, cu);
13165   if (name != NULL)
13166     TYPE_TAG_NAME (type) = name;
13167
13168   attr = dwarf2_attr (die, DW_AT_type, cu);
13169   if (attr != NULL)
13170     {
13171       struct type *underlying_type = die_type (die, cu);
13172
13173       TYPE_TARGET_TYPE (type) = underlying_type;
13174     }
13175
13176   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13177   if (attr)
13178     {
13179       TYPE_LENGTH (type) = DW_UNSND (attr);
13180     }
13181   else
13182     {
13183       TYPE_LENGTH (type) = 0;
13184     }
13185
13186   /* The enumeration DIE can be incomplete.  In Ada, any type can be
13187      declared as private in the package spec, and then defined only
13188      inside the package body.  Such types are known as Taft Amendment
13189      Types.  When another package uses such a type, an incomplete DIE
13190      may be generated by the compiler.  */
13191   if (die_is_declaration (die, cu))
13192     TYPE_STUB (type) = 1;
13193
13194   /* Finish the creation of this type by using the enum's children.
13195      We must call this even when the underlying type has been provided
13196      so that we can determine if we're looking at a "flag" enum.  */
13197   update_enumeration_type_from_children (die, type, cu);
13198
13199   /* If this type has an underlying type that is not a stub, then we
13200      may use its attributes.  We always use the "unsigned" attribute
13201      in this situation, because ordinarily we guess whether the type
13202      is unsigned -- but the guess can be wrong and the underlying type
13203      can tell us the reality.  However, we defer to a local size
13204      attribute if one exists, because this lets the compiler override
13205      the underlying type if needed.  */
13206   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13207     {
13208       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13209       if (TYPE_LENGTH (type) == 0)
13210         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13211     }
13212
13213   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13214
13215   return set_die_type (die, type, cu);
13216 }
13217
13218 /* Given a pointer to a die which begins an enumeration, process all
13219    the dies that define the members of the enumeration, and create the
13220    symbol for the enumeration type.
13221
13222    NOTE: We reverse the order of the element list.  */
13223
13224 static void
13225 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13226 {
13227   struct type *this_type;
13228
13229   this_type = get_die_type (die, cu);
13230   if (this_type == NULL)
13231     this_type = read_enumeration_type (die, cu);
13232
13233   if (die->child != NULL)
13234     {
13235       struct die_info *child_die;
13236       struct symbol *sym;
13237       struct field *fields = NULL;
13238       int num_fields = 0;
13239       const char *name;
13240
13241       child_die = die->child;
13242       while (child_die && child_die->tag)
13243         {
13244           if (child_die->tag != DW_TAG_enumerator)
13245             {
13246               process_die (child_die, cu);
13247             }
13248           else
13249             {
13250               name = dwarf2_name (child_die, cu);
13251               if (name)
13252                 {
13253                   sym = new_symbol (child_die, this_type, cu);
13254
13255                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13256                     {
13257                       fields = (struct field *)
13258                         xrealloc (fields,
13259                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
13260                                   * sizeof (struct field));
13261                     }
13262
13263                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
13264                   FIELD_TYPE (fields[num_fields]) = NULL;
13265                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
13266                   FIELD_BITSIZE (fields[num_fields]) = 0;
13267
13268                   num_fields++;
13269                 }
13270             }
13271
13272           child_die = sibling_die (child_die);
13273         }
13274
13275       if (num_fields)
13276         {
13277           TYPE_NFIELDS (this_type) = num_fields;
13278           TYPE_FIELDS (this_type) = (struct field *)
13279             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13280           memcpy (TYPE_FIELDS (this_type), fields,
13281                   sizeof (struct field) * num_fields);
13282           xfree (fields);
13283         }
13284     }
13285
13286   /* If we are reading an enum from a .debug_types unit, and the enum
13287      is a declaration, and the enum is not the signatured type in the
13288      unit, then we do not want to add a symbol for it.  Adding a
13289      symbol would in some cases obscure the true definition of the
13290      enum, giving users an incomplete type when the definition is
13291      actually available.  Note that we do not want to do this for all
13292      enums which are just declarations, because C++0x allows forward
13293      enum declarations.  */
13294   if (cu->per_cu->is_debug_types
13295       && die_is_declaration (die, cu))
13296     {
13297       struct signatured_type *sig_type;
13298
13299       sig_type = (struct signatured_type *) cu->per_cu;
13300       gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13301       if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
13302         return;
13303     }
13304
13305   new_symbol (die, this_type, cu);
13306 }
13307
13308 /* Extract all information from a DW_TAG_array_type DIE and put it in
13309    the DIE's type field.  For now, this only handles one dimensional
13310    arrays.  */
13311
13312 static struct type *
13313 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
13314 {
13315   struct objfile *objfile = cu->objfile;
13316   struct die_info *child_die;
13317   struct type *type;
13318   struct type *element_type, *range_type, *index_type;
13319   struct type **range_types = NULL;
13320   struct attribute *attr;
13321   int ndim = 0;
13322   struct cleanup *back_to;
13323   const char *name;
13324   unsigned int bit_stride = 0;
13325
13326   element_type = die_type (die, cu);
13327
13328   /* The die_type call above may have already set the type for this DIE.  */
13329   type = get_die_type (die, cu);
13330   if (type)
13331     return type;
13332
13333   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13334   if (attr != NULL)
13335     bit_stride = DW_UNSND (attr) * 8;
13336
13337   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13338   if (attr != NULL)
13339     bit_stride = DW_UNSND (attr);
13340
13341   /* Irix 6.2 native cc creates array types without children for
13342      arrays with unspecified length.  */
13343   if (die->child == NULL)
13344     {
13345       index_type = objfile_type (objfile)->builtin_int;
13346       range_type = create_static_range_type (NULL, index_type, 0, -1);
13347       type = create_array_type_with_stride (NULL, element_type, range_type,
13348                                             bit_stride);
13349       return set_die_type (die, type, cu);
13350     }
13351
13352   back_to = make_cleanup (null_cleanup, NULL);
13353   child_die = die->child;
13354   while (child_die && child_die->tag)
13355     {
13356       if (child_die->tag == DW_TAG_subrange_type)
13357         {
13358           struct type *child_type = read_type_die (child_die, cu);
13359
13360           if (child_type != NULL)
13361             {
13362               /* The range type was succesfully read.  Save it for the
13363                  array type creation.  */
13364               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13365                 {
13366                   range_types = (struct type **)
13367                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13368                               * sizeof (struct type *));
13369                   if (ndim == 0)
13370                     make_cleanup (free_current_contents, &range_types);
13371                 }
13372               range_types[ndim++] = child_type;
13373             }
13374         }
13375       child_die = sibling_die (child_die);
13376     }
13377
13378   /* Dwarf2 dimensions are output from left to right, create the
13379      necessary array types in backwards order.  */
13380
13381   type = element_type;
13382
13383   if (read_array_order (die, cu) == DW_ORD_col_major)
13384     {
13385       int i = 0;
13386
13387       while (i < ndim)
13388         type = create_array_type_with_stride (NULL, type, range_types[i++],
13389                                               bit_stride);
13390     }
13391   else
13392     {
13393       while (ndim-- > 0)
13394         type = create_array_type_with_stride (NULL, type, range_types[ndim],
13395                                               bit_stride);
13396     }
13397
13398   /* Understand Dwarf2 support for vector types (like they occur on
13399      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
13400      array type.  This is not part of the Dwarf2/3 standard yet, but a
13401      custom vendor extension.  The main difference between a regular
13402      array and the vector variant is that vectors are passed by value
13403      to functions.  */
13404   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
13405   if (attr)
13406     make_vector_type (type);
13407
13408   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
13409      implementation may choose to implement triple vectors using this
13410      attribute.  */
13411   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13412   if (attr)
13413     {
13414       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13415         TYPE_LENGTH (type) = DW_UNSND (attr);
13416       else
13417         complaint (&symfile_complaints,
13418                    _("DW_AT_byte_size for array type smaller "
13419                      "than the total size of elements"));
13420     }
13421
13422   name = dwarf2_name (die, cu);
13423   if (name)
13424     TYPE_NAME (type) = name;
13425
13426   /* Install the type in the die.  */
13427   set_die_type (die, type, cu);
13428
13429   /* set_die_type should be already done.  */
13430   set_descriptive_type (type, die, cu);
13431
13432   do_cleanups (back_to);
13433
13434   return type;
13435 }
13436
13437 static enum dwarf_array_dim_ordering
13438 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
13439 {
13440   struct attribute *attr;
13441
13442   attr = dwarf2_attr (die, DW_AT_ordering, cu);
13443
13444   if (attr) return DW_SND (attr);
13445
13446   /* GNU F77 is a special case, as at 08/2004 array type info is the
13447      opposite order to the dwarf2 specification, but data is still
13448      laid out as per normal fortran.
13449
13450      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13451      version checking.  */
13452
13453   if (cu->language == language_fortran
13454       && cu->producer && strstr (cu->producer, "GNU F77"))
13455     {
13456       return DW_ORD_row_major;
13457     }
13458
13459   switch (cu->language_defn->la_array_ordering)
13460     {
13461     case array_column_major:
13462       return DW_ORD_col_major;
13463     case array_row_major:
13464     default:
13465       return DW_ORD_row_major;
13466     };
13467 }
13468
13469 /* Extract all information from a DW_TAG_set_type DIE and put it in
13470    the DIE's type field.  */
13471
13472 static struct type *
13473 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13474 {
13475   struct type *domain_type, *set_type;
13476   struct attribute *attr;
13477
13478   domain_type = die_type (die, cu);
13479
13480   /* The die_type call above may have already set the type for this DIE.  */
13481   set_type = get_die_type (die, cu);
13482   if (set_type)
13483     return set_type;
13484
13485   set_type = create_set_type (NULL, domain_type);
13486
13487   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13488   if (attr)
13489     TYPE_LENGTH (set_type) = DW_UNSND (attr);
13490
13491   return set_die_type (die, set_type, cu);
13492 }
13493
13494 /* A helper for read_common_block that creates a locexpr baton.
13495    SYM is the symbol which we are marking as computed.
13496    COMMON_DIE is the DIE for the common block.
13497    COMMON_LOC is the location expression attribute for the common
13498    block itself.
13499    MEMBER_LOC is the location expression attribute for the particular
13500    member of the common block that we are processing.
13501    CU is the CU from which the above come.  */
13502
13503 static void
13504 mark_common_block_symbol_computed (struct symbol *sym,
13505                                    struct die_info *common_die,
13506                                    struct attribute *common_loc,
13507                                    struct attribute *member_loc,
13508                                    struct dwarf2_cu *cu)
13509 {
13510   struct objfile *objfile = dwarf2_per_objfile->objfile;
13511   struct dwarf2_locexpr_baton *baton;
13512   gdb_byte *ptr;
13513   unsigned int cu_off;
13514   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13515   LONGEST offset = 0;
13516
13517   gdb_assert (common_loc && member_loc);
13518   gdb_assert (attr_form_is_block (common_loc));
13519   gdb_assert (attr_form_is_block (member_loc)
13520               || attr_form_is_constant (member_loc));
13521
13522   baton = obstack_alloc (&objfile->objfile_obstack,
13523                          sizeof (struct dwarf2_locexpr_baton));
13524   baton->per_cu = cu->per_cu;
13525   gdb_assert (baton->per_cu);
13526
13527   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13528
13529   if (attr_form_is_constant (member_loc))
13530     {
13531       offset = dwarf2_get_attr_constant_value (member_loc, 0);
13532       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13533     }
13534   else
13535     baton->size += DW_BLOCK (member_loc)->size;
13536
13537   ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13538   baton->data = ptr;
13539
13540   *ptr++ = DW_OP_call4;
13541   cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13542   store_unsigned_integer (ptr, 4, byte_order, cu_off);
13543   ptr += 4;
13544
13545   if (attr_form_is_constant (member_loc))
13546     {
13547       *ptr++ = DW_OP_addr;
13548       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13549       ptr += cu->header.addr_size;
13550     }
13551   else
13552     {
13553       /* We have to copy the data here, because DW_OP_call4 will only
13554          use a DW_AT_location attribute.  */
13555       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13556       ptr += DW_BLOCK (member_loc)->size;
13557     }
13558
13559   *ptr++ = DW_OP_plus;
13560   gdb_assert (ptr - baton->data == baton->size);
13561
13562   SYMBOL_LOCATION_BATON (sym) = baton;
13563   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
13564 }
13565
13566 /* Create appropriate locally-scoped variables for all the
13567    DW_TAG_common_block entries.  Also create a struct common_block
13568    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
13569    is used to sepate the common blocks name namespace from regular
13570    variable names.  */
13571
13572 static void
13573 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
13574 {
13575   struct attribute *attr;
13576
13577   attr = dwarf2_attr (die, DW_AT_location, cu);
13578   if (attr)
13579     {
13580       /* Support the .debug_loc offsets.  */
13581       if (attr_form_is_block (attr))
13582         {
13583           /* Ok.  */
13584         }
13585       else if (attr_form_is_section_offset (attr))
13586         {
13587           dwarf2_complex_location_expr_complaint ();
13588           attr = NULL;
13589         }
13590       else
13591         {
13592           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13593                                                  "common block member");
13594           attr = NULL;
13595         }
13596     }
13597
13598   if (die->child != NULL)
13599     {
13600       struct objfile *objfile = cu->objfile;
13601       struct die_info *child_die;
13602       size_t n_entries = 0, size;
13603       struct common_block *common_block;
13604       struct symbol *sym;
13605
13606       for (child_die = die->child;
13607            child_die && child_die->tag;
13608            child_die = sibling_die (child_die))
13609         ++n_entries;
13610
13611       size = (sizeof (struct common_block)
13612               + (n_entries - 1) * sizeof (struct symbol *));
13613       common_block = obstack_alloc (&objfile->objfile_obstack, size);
13614       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13615       common_block->n_entries = 0;
13616
13617       for (child_die = die->child;
13618            child_die && child_die->tag;
13619            child_die = sibling_die (child_die))
13620         {
13621           /* Create the symbol in the DW_TAG_common_block block in the current
13622              symbol scope.  */
13623           sym = new_symbol (child_die, NULL, cu);
13624           if (sym != NULL)
13625             {
13626               struct attribute *member_loc;
13627
13628               common_block->contents[common_block->n_entries++] = sym;
13629
13630               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13631                                         cu);
13632               if (member_loc)
13633                 {
13634                   /* GDB has handled this for a long time, but it is
13635                      not specified by DWARF.  It seems to have been
13636                      emitted by gfortran at least as recently as:
13637                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
13638                   complaint (&symfile_complaints,
13639                              _("Variable in common block has "
13640                                "DW_AT_data_member_location "
13641                                "- DIE at 0x%x [in module %s]"),
13642                              child_die->offset.sect_off,
13643                              objfile_name (cu->objfile));
13644
13645                   if (attr_form_is_section_offset (member_loc))
13646                     dwarf2_complex_location_expr_complaint ();
13647                   else if (attr_form_is_constant (member_loc)
13648                            || attr_form_is_block (member_loc))
13649                     {
13650                       if (attr)
13651                         mark_common_block_symbol_computed (sym, die, attr,
13652                                                            member_loc, cu);
13653                     }
13654                   else
13655                     dwarf2_complex_location_expr_complaint ();
13656                 }
13657             }
13658         }
13659
13660       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
13661       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
13662     }
13663 }
13664
13665 /* Create a type for a C++ namespace.  */
13666
13667 static struct type *
13668 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
13669 {
13670   struct objfile *objfile = cu->objfile;
13671   const char *previous_prefix, *name;
13672   int is_anonymous;
13673   struct type *type;
13674
13675   /* For extensions, reuse the type of the original namespace.  */
13676   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
13677     {
13678       struct die_info *ext_die;
13679       struct dwarf2_cu *ext_cu = cu;
13680
13681       ext_die = dwarf2_extension (die, &ext_cu);
13682       type = read_type_die (ext_die, ext_cu);
13683
13684       /* EXT_CU may not be the same as CU.
13685          Ensure TYPE is recorded with CU in die_type_hash.  */
13686       return set_die_type (die, type, cu);
13687     }
13688
13689   name = namespace_name (die, &is_anonymous, cu);
13690
13691   /* Now build the name of the current namespace.  */
13692
13693   previous_prefix = determine_prefix (die, cu);
13694   if (previous_prefix[0] != '\0')
13695     name = typename_concat (&objfile->objfile_obstack,
13696                             previous_prefix, name, 0, cu);
13697
13698   /* Create the type.  */
13699   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
13700                     objfile);
13701   TYPE_NAME (type) = name;
13702   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13703
13704   return set_die_type (die, type, cu);
13705 }
13706
13707 /* Read a C++ namespace.  */
13708
13709 static void
13710 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
13711 {
13712   struct objfile *objfile = cu->objfile;
13713   int is_anonymous;
13714
13715   /* Add a symbol associated to this if we haven't seen the namespace
13716      before.  Also, add a using directive if it's an anonymous
13717      namespace.  */
13718
13719   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
13720     {
13721       struct type *type;
13722
13723       type = read_type_die (die, cu);
13724       new_symbol (die, type, cu);
13725
13726       namespace_name (die, &is_anonymous, cu);
13727       if (is_anonymous)
13728         {
13729           const char *previous_prefix = determine_prefix (die, cu);
13730
13731           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
13732                                   NULL, NULL, 0, &objfile->objfile_obstack);
13733         }
13734     }
13735
13736   if (die->child != NULL)
13737     {
13738       struct die_info *child_die = die->child;
13739
13740       while (child_die && child_die->tag)
13741         {
13742           process_die (child_die, cu);
13743           child_die = sibling_die (child_die);
13744         }
13745     }
13746 }
13747
13748 /* Read a Fortran module as type.  This DIE can be only a declaration used for
13749    imported module.  Still we need that type as local Fortran "use ... only"
13750    declaration imports depend on the created type in determine_prefix.  */
13751
13752 static struct type *
13753 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
13754 {
13755   struct objfile *objfile = cu->objfile;
13756   const char *module_name;
13757   struct type *type;
13758
13759   module_name = dwarf2_name (die, cu);
13760   if (!module_name)
13761     complaint (&symfile_complaints,
13762                _("DW_TAG_module has no name, offset 0x%x"),
13763                die->offset.sect_off);
13764   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
13765
13766   /* determine_prefix uses TYPE_TAG_NAME.  */
13767   TYPE_TAG_NAME (type) = TYPE_NAME (type);
13768
13769   return set_die_type (die, type, cu);
13770 }
13771
13772 /* Read a Fortran module.  */
13773
13774 static void
13775 read_module (struct die_info *die, struct dwarf2_cu *cu)
13776 {
13777   struct die_info *child_die = die->child;
13778   struct type *type;
13779
13780   type = read_type_die (die, cu);
13781   new_symbol (die, type, cu);
13782
13783   while (child_die && child_die->tag)
13784     {
13785       process_die (child_die, cu);
13786       child_die = sibling_die (child_die);
13787     }
13788 }
13789
13790 /* Return the name of the namespace represented by DIE.  Set
13791    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
13792    namespace.  */
13793
13794 static const char *
13795 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
13796 {
13797   struct die_info *current_die;
13798   const char *name = NULL;
13799
13800   /* Loop through the extensions until we find a name.  */
13801
13802   for (current_die = die;
13803        current_die != NULL;
13804        current_die = dwarf2_extension (die, &cu))
13805     {
13806       name = dwarf2_name (current_die, cu);
13807       if (name != NULL)
13808         break;
13809     }
13810
13811   /* Is it an anonymous namespace?  */
13812
13813   *is_anonymous = (name == NULL);
13814   if (*is_anonymous)
13815     name = CP_ANONYMOUS_NAMESPACE_STR;
13816
13817   return name;
13818 }
13819
13820 /* Extract all information from a DW_TAG_pointer_type DIE and add to
13821    the user defined type vector.  */
13822
13823 static struct type *
13824 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
13825 {
13826   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
13827   struct comp_unit_head *cu_header = &cu->header;
13828   struct type *type;
13829   struct attribute *attr_byte_size;
13830   struct attribute *attr_address_class;
13831   int byte_size, addr_class;
13832   struct type *target_type;
13833
13834   target_type = die_type (die, cu);
13835
13836   /* The die_type call above may have already set the type for this DIE.  */
13837   type = get_die_type (die, cu);
13838   if (type)
13839     return type;
13840
13841   type = lookup_pointer_type (target_type);
13842
13843   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
13844   if (attr_byte_size)
13845     byte_size = DW_UNSND (attr_byte_size);
13846   else
13847     byte_size = cu_header->addr_size;
13848
13849   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
13850   if (attr_address_class)
13851     addr_class = DW_UNSND (attr_address_class);
13852   else
13853     addr_class = DW_ADDR_none;
13854
13855   /* If the pointer size or address class is different than the
13856      default, create a type variant marked as such and set the
13857      length accordingly.  */
13858   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
13859     {
13860       if (gdbarch_address_class_type_flags_p (gdbarch))
13861         {
13862           int type_flags;
13863
13864           type_flags = gdbarch_address_class_type_flags
13865                          (gdbarch, byte_size, addr_class);
13866           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
13867                       == 0);
13868           type = make_type_with_address_space (type, type_flags);
13869         }
13870       else if (TYPE_LENGTH (type) != byte_size)
13871         {
13872           complaint (&symfile_complaints,
13873                      _("invalid pointer size %d"), byte_size);
13874         }
13875       else
13876         {
13877           /* Should we also complain about unhandled address classes?  */
13878         }
13879     }
13880
13881   TYPE_LENGTH (type) = byte_size;
13882   return set_die_type (die, type, cu);
13883 }
13884
13885 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
13886    the user defined type vector.  */
13887
13888 static struct type *
13889 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
13890 {
13891   struct type *type;
13892   struct type *to_type;
13893   struct type *domain;
13894
13895   to_type = die_type (die, cu);
13896   domain = die_containing_type (die, cu);
13897
13898   /* The calls above may have already set the type for this DIE.  */
13899   type = get_die_type (die, cu);
13900   if (type)
13901     return type;
13902
13903   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
13904     type = lookup_methodptr_type (to_type);
13905   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
13906     {
13907       struct type *new_type = alloc_type (cu->objfile);
13908
13909       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
13910                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
13911                             TYPE_VARARGS (to_type));
13912       type = lookup_methodptr_type (new_type);
13913     }
13914   else
13915     type = lookup_memberptr_type (to_type, domain);
13916
13917   return set_die_type (die, type, cu);
13918 }
13919
13920 /* Extract all information from a DW_TAG_reference_type DIE and add to
13921    the user defined type vector.  */
13922
13923 static struct type *
13924 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
13925 {
13926   struct comp_unit_head *cu_header = &cu->header;
13927   struct type *type, *target_type;
13928   struct attribute *attr;
13929
13930   target_type = die_type (die, cu);
13931
13932   /* The die_type call above may have already set the type for this DIE.  */
13933   type = get_die_type (die, cu);
13934   if (type)
13935     return type;
13936
13937   type = lookup_reference_type (target_type);
13938   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13939   if (attr)
13940     {
13941       TYPE_LENGTH (type) = DW_UNSND (attr);
13942     }
13943   else
13944     {
13945       TYPE_LENGTH (type) = cu_header->addr_size;
13946     }
13947   return set_die_type (die, type, cu);
13948 }
13949
13950 static struct type *
13951 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
13952 {
13953   struct type *base_type, *cv_type;
13954
13955   base_type = die_type (die, cu);
13956
13957   /* The die_type call above may have already set the type for this DIE.  */
13958   cv_type = get_die_type (die, cu);
13959   if (cv_type)
13960     return cv_type;
13961
13962   /* In case the const qualifier is applied to an array type, the element type
13963      is so qualified, not the array type (section 6.7.3 of C99).  */
13964   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
13965     {
13966       struct type *el_type, *inner_array;
13967
13968       base_type = copy_type (base_type);
13969       inner_array = base_type;
13970
13971       while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
13972         {
13973           TYPE_TARGET_TYPE (inner_array) =
13974             copy_type (TYPE_TARGET_TYPE (inner_array));
13975           inner_array = TYPE_TARGET_TYPE (inner_array);
13976         }
13977
13978       el_type = TYPE_TARGET_TYPE (inner_array);
13979       TYPE_TARGET_TYPE (inner_array) =
13980         make_cv_type (1, TYPE_VOLATILE (el_type), el_type, NULL);
13981
13982       return set_die_type (die, base_type, cu);
13983     }
13984
13985   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
13986   return set_die_type (die, cv_type, cu);
13987 }
13988
13989 static struct type *
13990 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
13991 {
13992   struct type *base_type, *cv_type;
13993
13994   base_type = die_type (die, cu);
13995
13996   /* The die_type call above may have already set the type for this DIE.  */
13997   cv_type = get_die_type (die, cu);
13998   if (cv_type)
13999     return cv_type;
14000
14001   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14002   return set_die_type (die, cv_type, cu);
14003 }
14004
14005 /* Handle DW_TAG_restrict_type.  */
14006
14007 static struct type *
14008 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14009 {
14010   struct type *base_type, *cv_type;
14011
14012   base_type = die_type (die, cu);
14013
14014   /* The die_type call above may have already set the type for this DIE.  */
14015   cv_type = get_die_type (die, cu);
14016   if (cv_type)
14017     return cv_type;
14018
14019   cv_type = make_restrict_type (base_type);
14020   return set_die_type (die, cv_type, cu);
14021 }
14022
14023 /* Extract all information from a DW_TAG_string_type DIE and add to
14024    the user defined type vector.  It isn't really a user defined type,
14025    but it behaves like one, with other DIE's using an AT_user_def_type
14026    attribute to reference it.  */
14027
14028 static struct type *
14029 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
14030 {
14031   struct objfile *objfile = cu->objfile;
14032   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14033   struct type *type, *range_type, *index_type, *char_type;
14034   struct attribute *attr;
14035   unsigned int length;
14036
14037   attr = dwarf2_attr (die, DW_AT_string_length, cu);
14038   if (attr)
14039     {
14040       length = DW_UNSND (attr);
14041     }
14042   else
14043     {
14044       /* Check for the DW_AT_byte_size attribute.  */
14045       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14046       if (attr)
14047         {
14048           length = DW_UNSND (attr);
14049         }
14050       else
14051         {
14052           length = 1;
14053         }
14054     }
14055
14056   index_type = objfile_type (objfile)->builtin_int;
14057   range_type = create_static_range_type (NULL, index_type, 1, length);
14058   char_type = language_string_char_type (cu->language_defn, gdbarch);
14059   type = create_string_type (NULL, char_type, range_type);
14060
14061   return set_die_type (die, type, cu);
14062 }
14063
14064 /* Assuming that DIE corresponds to a function, returns nonzero
14065    if the function is prototyped.  */
14066
14067 static int
14068 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14069 {
14070   struct attribute *attr;
14071
14072   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14073   if (attr && (DW_UNSND (attr) != 0))
14074     return 1;
14075
14076   /* The DWARF standard implies that the DW_AT_prototyped attribute
14077      is only meaninful for C, but the concept also extends to other
14078      languages that allow unprototyped functions (Eg: Objective C).
14079      For all other languages, assume that functions are always
14080      prototyped.  */
14081   if (cu->language != language_c
14082       && cu->language != language_objc
14083       && cu->language != language_opencl)
14084     return 1;
14085
14086   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
14087      prototyped and unprototyped functions; default to prototyped,
14088      since that is more common in modern code (and RealView warns
14089      about unprototyped functions).  */
14090   if (producer_is_realview (cu->producer))
14091     return 1;
14092
14093   return 0;
14094 }
14095
14096 /* Handle DIES due to C code like:
14097
14098    struct foo
14099    {
14100    int (*funcp)(int a, long l);
14101    int b;
14102    };
14103
14104    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
14105
14106 static struct type *
14107 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
14108 {
14109   struct objfile *objfile = cu->objfile;
14110   struct type *type;            /* Type that this function returns.  */
14111   struct type *ftype;           /* Function that returns above type.  */
14112   struct attribute *attr;
14113
14114   type = die_type (die, cu);
14115
14116   /* The die_type call above may have already set the type for this DIE.  */
14117   ftype = get_die_type (die, cu);
14118   if (ftype)
14119     return ftype;
14120
14121   ftype = lookup_function_type (type);
14122
14123   if (prototyped_function_p (die, cu))
14124     TYPE_PROTOTYPED (ftype) = 1;
14125
14126   /* Store the calling convention in the type if it's available in
14127      the subroutine die.  Otherwise set the calling convention to
14128      the default value DW_CC_normal.  */
14129   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
14130   if (attr)
14131     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14132   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14133     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14134   else
14135     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
14136
14137   /* We need to add the subroutine type to the die immediately so
14138      we don't infinitely recurse when dealing with parameters
14139      declared as the same subroutine type.  */
14140   set_die_type (die, ftype, cu);
14141
14142   if (die->child != NULL)
14143     {
14144       struct type *void_type = objfile_type (objfile)->builtin_void;
14145       struct die_info *child_die;
14146       int nparams, iparams;
14147
14148       /* Count the number of parameters.
14149          FIXME: GDB currently ignores vararg functions, but knows about
14150          vararg member functions.  */
14151       nparams = 0;
14152       child_die = die->child;
14153       while (child_die && child_die->tag)
14154         {
14155           if (child_die->tag == DW_TAG_formal_parameter)
14156             nparams++;
14157           else if (child_die->tag == DW_TAG_unspecified_parameters)
14158             TYPE_VARARGS (ftype) = 1;
14159           child_die = sibling_die (child_die);
14160         }
14161
14162       /* Allocate storage for parameters and fill them in.  */
14163       TYPE_NFIELDS (ftype) = nparams;
14164       TYPE_FIELDS (ftype) = (struct field *)
14165         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
14166
14167       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
14168          even if we error out during the parameters reading below.  */
14169       for (iparams = 0; iparams < nparams; iparams++)
14170         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14171
14172       iparams = 0;
14173       child_die = die->child;
14174       while (child_die && child_die->tag)
14175         {
14176           if (child_die->tag == DW_TAG_formal_parameter)
14177             {
14178               struct type *arg_type;
14179
14180               /* DWARF version 2 has no clean way to discern C++
14181                  static and non-static member functions.  G++ helps
14182                  GDB by marking the first parameter for non-static
14183                  member functions (which is the this pointer) as
14184                  artificial.  We pass this information to
14185                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14186
14187                  DWARF version 3 added DW_AT_object_pointer, which GCC
14188                  4.5 does not yet generate.  */
14189               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
14190               if (attr)
14191                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14192               else
14193                 {
14194                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14195
14196                   /* GCC/43521: In java, the formal parameter
14197                      "this" is sometimes not marked with DW_AT_artificial.  */
14198                   if (cu->language == language_java)
14199                     {
14200                       const char *name = dwarf2_name (child_die, cu);
14201
14202                       if (name && !strcmp (name, "this"))
14203                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14204                     }
14205                 }
14206               arg_type = die_type (child_die, cu);
14207
14208               /* RealView does not mark THIS as const, which the testsuite
14209                  expects.  GCC marks THIS as const in method definitions,
14210                  but not in the class specifications (GCC PR 43053).  */
14211               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14212                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14213                 {
14214                   int is_this = 0;
14215                   struct dwarf2_cu *arg_cu = cu;
14216                   const char *name = dwarf2_name (child_die, cu);
14217
14218                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14219                   if (attr)
14220                     {
14221                       /* If the compiler emits this, use it.  */
14222                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
14223                         is_this = 1;
14224                     }
14225                   else if (name && strcmp (name, "this") == 0)
14226                     /* Function definitions will have the argument names.  */
14227                     is_this = 1;
14228                   else if (name == NULL && iparams == 0)
14229                     /* Declarations may not have the names, so like
14230                        elsewhere in GDB, assume an artificial first
14231                        argument is "this".  */
14232                     is_this = 1;
14233
14234                   if (is_this)
14235                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14236                                              arg_type, 0);
14237                 }
14238
14239               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
14240               iparams++;
14241             }
14242           child_die = sibling_die (child_die);
14243         }
14244     }
14245
14246   return ftype;
14247 }
14248
14249 static struct type *
14250 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
14251 {
14252   struct objfile *objfile = cu->objfile;
14253   const char *name = NULL;
14254   struct type *this_type, *target_type;
14255
14256   name = dwarf2_full_name (NULL, die, cu);
14257   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
14258                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
14259   TYPE_NAME (this_type) = name;
14260   set_die_type (die, this_type, cu);
14261   target_type = die_type (die, cu);
14262   if (target_type != this_type)
14263     TYPE_TARGET_TYPE (this_type) = target_type;
14264   else
14265     {
14266       /* Self-referential typedefs are, it seems, not allowed by the DWARF
14267          spec and cause infinite loops in GDB.  */
14268       complaint (&symfile_complaints,
14269                  _("Self-referential DW_TAG_typedef "
14270                    "- DIE at 0x%x [in module %s]"),
14271                  die->offset.sect_off, objfile_name (objfile));
14272       TYPE_TARGET_TYPE (this_type) = NULL;
14273     }
14274   return this_type;
14275 }
14276
14277 /* Find a representation of a given base type and install
14278    it in the TYPE field of the die.  */
14279
14280 static struct type *
14281 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
14282 {
14283   struct objfile *objfile = cu->objfile;
14284   struct type *type;
14285   struct attribute *attr;
14286   int encoding = 0, size = 0;
14287   const char *name;
14288   enum type_code code = TYPE_CODE_INT;
14289   int type_flags = 0;
14290   struct type *target_type = NULL;
14291
14292   attr = dwarf2_attr (die, DW_AT_encoding, cu);
14293   if (attr)
14294     {
14295       encoding = DW_UNSND (attr);
14296     }
14297   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14298   if (attr)
14299     {
14300       size = DW_UNSND (attr);
14301     }
14302   name = dwarf2_name (die, cu);
14303   if (!name)
14304     {
14305       complaint (&symfile_complaints,
14306                  _("DW_AT_name missing from DW_TAG_base_type"));
14307     }
14308
14309   switch (encoding)
14310     {
14311       case DW_ATE_address:
14312         /* Turn DW_ATE_address into a void * pointer.  */
14313         code = TYPE_CODE_PTR;
14314         type_flags |= TYPE_FLAG_UNSIGNED;
14315         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14316         break;
14317       case DW_ATE_boolean:
14318         code = TYPE_CODE_BOOL;
14319         type_flags |= TYPE_FLAG_UNSIGNED;
14320         break;
14321       case DW_ATE_complex_float:
14322         code = TYPE_CODE_COMPLEX;
14323         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14324         break;
14325       case DW_ATE_decimal_float:
14326         code = TYPE_CODE_DECFLOAT;
14327         break;
14328       case DW_ATE_float:
14329         code = TYPE_CODE_FLT;
14330         break;
14331       case DW_ATE_signed:
14332         break;
14333       case DW_ATE_unsigned:
14334         type_flags |= TYPE_FLAG_UNSIGNED;
14335         if (cu->language == language_fortran
14336             && name
14337             && strncmp (name, "character(", sizeof ("character(") - 1) == 0)
14338           code = TYPE_CODE_CHAR;
14339         break;
14340       case DW_ATE_signed_char:
14341         if (cu->language == language_ada || cu->language == language_m2
14342             || cu->language == language_pascal
14343             || cu->language == language_fortran)
14344           code = TYPE_CODE_CHAR;
14345         break;
14346       case DW_ATE_unsigned_char:
14347         if (cu->language == language_ada || cu->language == language_m2
14348             || cu->language == language_pascal
14349             || cu->language == language_fortran)
14350           code = TYPE_CODE_CHAR;
14351         type_flags |= TYPE_FLAG_UNSIGNED;
14352         break;
14353       case DW_ATE_UTF:
14354         /* We just treat this as an integer and then recognize the
14355            type by name elsewhere.  */
14356         break;
14357
14358       default:
14359         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14360                    dwarf_type_encoding_name (encoding));
14361         break;
14362     }
14363
14364   type = init_type (code, size, type_flags, NULL, objfile);
14365   TYPE_NAME (type) = name;
14366   TYPE_TARGET_TYPE (type) = target_type;
14367
14368   if (name && strcmp (name, "char") == 0)
14369     TYPE_NOSIGN (type) = 1;
14370
14371   return set_die_type (die, type, cu);
14372 }
14373
14374 /* Parse dwarf attribute if it's a block, reference or constant and put the
14375    resulting value of the attribute into struct bound_prop.
14376    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
14377
14378 static int
14379 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14380                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
14381 {
14382   struct dwarf2_property_baton *baton;
14383   struct obstack *obstack = &cu->objfile->objfile_obstack;
14384
14385   if (attr == NULL || prop == NULL)
14386     return 0;
14387
14388   if (attr_form_is_block (attr))
14389     {
14390       baton = obstack_alloc (obstack, sizeof (*baton));
14391       baton->referenced_type = NULL;
14392       baton->locexpr.per_cu = cu->per_cu;
14393       baton->locexpr.size = DW_BLOCK (attr)->size;
14394       baton->locexpr.data = DW_BLOCK (attr)->data;
14395       prop->data.baton = baton;
14396       prop->kind = PROP_LOCEXPR;
14397       gdb_assert (prop->data.baton != NULL);
14398     }
14399   else if (attr_form_is_ref (attr))
14400     {
14401       struct dwarf2_cu *target_cu = cu;
14402       struct die_info *target_die;
14403       struct attribute *target_attr;
14404
14405       target_die = follow_die_ref (die, attr, &target_cu);
14406       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
14407       if (target_attr == NULL)
14408         return 0;
14409
14410       if (attr_form_is_section_offset (target_attr))
14411         {
14412           baton = obstack_alloc (obstack, sizeof (*baton));
14413           baton->referenced_type = die_type (target_die, target_cu);
14414           fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14415           prop->data.baton = baton;
14416           prop->kind = PROP_LOCLIST;
14417           gdb_assert (prop->data.baton != NULL);
14418         }
14419       else if (attr_form_is_block (target_attr))
14420         {
14421           baton = obstack_alloc (obstack, sizeof (*baton));
14422           baton->referenced_type = die_type (target_die, target_cu);
14423           baton->locexpr.per_cu = cu->per_cu;
14424           baton->locexpr.size = DW_BLOCK (target_attr)->size;
14425           baton->locexpr.data = DW_BLOCK (target_attr)->data;
14426           prop->data.baton = baton;
14427           prop->kind = PROP_LOCEXPR;
14428           gdb_assert (prop->data.baton != NULL);
14429         }
14430       else
14431         {
14432           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14433                                                  "dynamic property");
14434           return 0;
14435         }
14436     }
14437   else if (attr_form_is_constant (attr))
14438     {
14439       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14440       prop->kind = PROP_CONST;
14441     }
14442   else
14443     {
14444       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14445                                              dwarf2_name (die, cu));
14446       return 0;
14447     }
14448
14449   return 1;
14450 }
14451
14452 /* Read the given DW_AT_subrange DIE.  */
14453
14454 static struct type *
14455 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14456 {
14457   struct type *base_type, *orig_base_type;
14458   struct type *range_type;
14459   struct attribute *attr;
14460   struct dynamic_prop low, high;
14461   int low_default_is_valid;
14462   int high_bound_is_count = 0;
14463   const char *name;
14464   LONGEST negative_mask;
14465
14466   orig_base_type = die_type (die, cu);
14467   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14468      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
14469      creating the range type, but we use the result of check_typedef
14470      when examining properties of the type.  */
14471   base_type = check_typedef (orig_base_type);
14472
14473   /* The die_type call above may have already set the type for this DIE.  */
14474   range_type = get_die_type (die, cu);
14475   if (range_type)
14476     return range_type;
14477
14478   low.kind = PROP_CONST;
14479   high.kind = PROP_CONST;
14480   high.data.const_val = 0;
14481
14482   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14483      omitting DW_AT_lower_bound.  */
14484   switch (cu->language)
14485     {
14486     case language_c:
14487     case language_cplus:
14488       low.data.const_val = 0;
14489       low_default_is_valid = 1;
14490       break;
14491     case language_fortran:
14492       low.data.const_val = 1;
14493       low_default_is_valid = 1;
14494       break;
14495     case language_d:
14496     case language_java:
14497     case language_objc:
14498       low.data.const_val = 0;
14499       low_default_is_valid = (cu->header.version >= 4);
14500       break;
14501     case language_ada:
14502     case language_m2:
14503     case language_pascal:
14504       low.data.const_val = 1;
14505       low_default_is_valid = (cu->header.version >= 4);
14506       break;
14507     default:
14508       low.data.const_val = 0;
14509       low_default_is_valid = 0;
14510       break;
14511     }
14512
14513   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
14514   if (attr)
14515     attr_to_dynamic_prop (attr, die, cu, &low);
14516   else if (!low_default_is_valid)
14517     complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14518                                       "- DIE at 0x%x [in module %s]"),
14519                die->offset.sect_off, objfile_name (cu->objfile));
14520
14521   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
14522   if (!attr_to_dynamic_prop (attr, die, cu, &high))
14523     {
14524       attr = dwarf2_attr (die, DW_AT_count, cu);
14525       if (attr_to_dynamic_prop (attr, die, cu, &high))
14526         {
14527           /* If bounds are constant do the final calculation here.  */
14528           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14529             high.data.const_val = low.data.const_val + high.data.const_val - 1;
14530           else
14531             high_bound_is_count = 1;
14532         }
14533     }
14534
14535   /* Dwarf-2 specifications explicitly allows to create subrange types
14536      without specifying a base type.
14537      In that case, the base type must be set to the type of
14538      the lower bound, upper bound or count, in that order, if any of these
14539      three attributes references an object that has a type.
14540      If no base type is found, the Dwarf-2 specifications say that
14541      a signed integer type of size equal to the size of an address should
14542      be used.
14543      For the following C code: `extern char gdb_int [];'
14544      GCC produces an empty range DIE.
14545      FIXME: muller/2010-05-28: Possible references to object for low bound,
14546      high bound or count are not yet handled by this code.  */
14547   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14548     {
14549       struct objfile *objfile = cu->objfile;
14550       struct gdbarch *gdbarch = get_objfile_arch (objfile);
14551       int addr_size = gdbarch_addr_bit (gdbarch) /8;
14552       struct type *int_type = objfile_type (objfile)->builtin_int;
14553
14554       /* Test "int", "long int", and "long long int" objfile types,
14555          and select the first one having a size above or equal to the
14556          architecture address size.  */
14557       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14558         base_type = int_type;
14559       else
14560         {
14561           int_type = objfile_type (objfile)->builtin_long;
14562           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14563             base_type = int_type;
14564           else
14565             {
14566               int_type = objfile_type (objfile)->builtin_long_long;
14567               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14568                 base_type = int_type;
14569             }
14570         }
14571     }
14572
14573   /* Normally, the DWARF producers are expected to use a signed
14574      constant form (Eg. DW_FORM_sdata) to express negative bounds.
14575      But this is unfortunately not always the case, as witnessed
14576      with GCC, for instance, where the ambiguous DW_FORM_dataN form
14577      is used instead.  To work around that ambiguity, we treat
14578      the bounds as signed, and thus sign-extend their values, when
14579      the base type is signed.  */
14580   negative_mask =
14581     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
14582   if (low.kind == PROP_CONST
14583       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
14584     low.data.const_val |= negative_mask;
14585   if (high.kind == PROP_CONST
14586       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
14587     high.data.const_val |= negative_mask;
14588
14589   range_type = create_range_type (NULL, orig_base_type, &low, &high);
14590
14591   if (high_bound_is_count)
14592     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
14593
14594   /* Ada expects an empty array on no boundary attributes.  */
14595   if (attr == NULL && cu->language != language_ada)
14596     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
14597
14598   name = dwarf2_name (die, cu);
14599   if (name)
14600     TYPE_NAME (range_type) = name;
14601
14602   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14603   if (attr)
14604     TYPE_LENGTH (range_type) = DW_UNSND (attr);
14605
14606   set_die_type (die, range_type, cu);
14607
14608   /* set_die_type should be already done.  */
14609   set_descriptive_type (range_type, die, cu);
14610
14611   return range_type;
14612 }
14613
14614 static struct type *
14615 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
14616 {
14617   struct type *type;
14618
14619   /* For now, we only support the C meaning of an unspecified type: void.  */
14620
14621   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
14622   TYPE_NAME (type) = dwarf2_name (die, cu);
14623
14624   return set_die_type (die, type, cu);
14625 }
14626
14627 /* Read a single die and all its descendents.  Set the die's sibling
14628    field to NULL; set other fields in the die correctly, and set all
14629    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
14630    location of the info_ptr after reading all of those dies.  PARENT
14631    is the parent of the die in question.  */
14632
14633 static struct die_info *
14634 read_die_and_children (const struct die_reader_specs *reader,
14635                        const gdb_byte *info_ptr,
14636                        const gdb_byte **new_info_ptr,
14637                        struct die_info *parent)
14638 {
14639   struct die_info *die;
14640   const gdb_byte *cur_ptr;
14641   int has_children;
14642
14643   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
14644   if (die == NULL)
14645     {
14646       *new_info_ptr = cur_ptr;
14647       return NULL;
14648     }
14649   store_in_ref_table (die, reader->cu);
14650
14651   if (has_children)
14652     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
14653   else
14654     {
14655       die->child = NULL;
14656       *new_info_ptr = cur_ptr;
14657     }
14658
14659   die->sibling = NULL;
14660   die->parent = parent;
14661   return die;
14662 }
14663
14664 /* Read a die, all of its descendents, and all of its siblings; set
14665    all of the fields of all of the dies correctly.  Arguments are as
14666    in read_die_and_children.  */
14667
14668 static struct die_info *
14669 read_die_and_siblings_1 (const struct die_reader_specs *reader,
14670                          const gdb_byte *info_ptr,
14671                          const gdb_byte **new_info_ptr,
14672                          struct die_info *parent)
14673 {
14674   struct die_info *first_die, *last_sibling;
14675   const gdb_byte *cur_ptr;
14676
14677   cur_ptr = info_ptr;
14678   first_die = last_sibling = NULL;
14679
14680   while (1)
14681     {
14682       struct die_info *die
14683         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
14684
14685       if (die == NULL)
14686         {
14687           *new_info_ptr = cur_ptr;
14688           return first_die;
14689         }
14690
14691       if (!first_die)
14692         first_die = die;
14693       else
14694         last_sibling->sibling = die;
14695
14696       last_sibling = die;
14697     }
14698 }
14699
14700 /* Read a die, all of its descendents, and all of its siblings; set
14701    all of the fields of all of the dies correctly.  Arguments are as
14702    in read_die_and_children.
14703    This the main entry point for reading a DIE and all its children.  */
14704
14705 static struct die_info *
14706 read_die_and_siblings (const struct die_reader_specs *reader,
14707                        const gdb_byte *info_ptr,
14708                        const gdb_byte **new_info_ptr,
14709                        struct die_info *parent)
14710 {
14711   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
14712                                                   new_info_ptr, parent);
14713
14714   if (dwarf2_die_debug)
14715     {
14716       fprintf_unfiltered (gdb_stdlog,
14717                           "Read die from %s@0x%x of %s:\n",
14718                           get_section_name (reader->die_section),
14719                           (unsigned) (info_ptr - reader->die_section->buffer),
14720                           bfd_get_filename (reader->abfd));
14721       dump_die (die, dwarf2_die_debug);
14722     }
14723
14724   return die;
14725 }
14726
14727 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
14728    attributes.
14729    The caller is responsible for filling in the extra attributes
14730    and updating (*DIEP)->num_attrs.
14731    Set DIEP to point to a newly allocated die with its information,
14732    except for its child, sibling, and parent fields.
14733    Set HAS_CHILDREN to tell whether the die has children or not.  */
14734
14735 static const gdb_byte *
14736 read_full_die_1 (const struct die_reader_specs *reader,
14737                  struct die_info **diep, const gdb_byte *info_ptr,
14738                  int *has_children, int num_extra_attrs)
14739 {
14740   unsigned int abbrev_number, bytes_read, i;
14741   sect_offset offset;
14742   struct abbrev_info *abbrev;
14743   struct die_info *die;
14744   struct dwarf2_cu *cu = reader->cu;
14745   bfd *abfd = reader->abfd;
14746
14747   offset.sect_off = info_ptr - reader->buffer;
14748   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
14749   info_ptr += bytes_read;
14750   if (!abbrev_number)
14751     {
14752       *diep = NULL;
14753       *has_children = 0;
14754       return info_ptr;
14755     }
14756
14757   abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
14758   if (!abbrev)
14759     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
14760            abbrev_number,
14761            bfd_get_filename (abfd));
14762
14763   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
14764   die->offset = offset;
14765   die->tag = abbrev->tag;
14766   die->abbrev = abbrev_number;
14767
14768   /* Make the result usable.
14769      The caller needs to update num_attrs after adding the extra
14770      attributes.  */
14771   die->num_attrs = abbrev->num_attrs;
14772
14773   for (i = 0; i < abbrev->num_attrs; ++i)
14774     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
14775                                info_ptr);
14776
14777   *diep = die;
14778   *has_children = abbrev->has_children;
14779   return info_ptr;
14780 }
14781
14782 /* Read a die and all its attributes.
14783    Set DIEP to point to a newly allocated die with its information,
14784    except for its child, sibling, and parent fields.
14785    Set HAS_CHILDREN to tell whether the die has children or not.  */
14786
14787 static const gdb_byte *
14788 read_full_die (const struct die_reader_specs *reader,
14789                struct die_info **diep, const gdb_byte *info_ptr,
14790                int *has_children)
14791 {
14792   const gdb_byte *result;
14793
14794   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
14795
14796   if (dwarf2_die_debug)
14797     {
14798       fprintf_unfiltered (gdb_stdlog,
14799                           "Read die from %s@0x%x of %s:\n",
14800                           get_section_name (reader->die_section),
14801                           (unsigned) (info_ptr - reader->die_section->buffer),
14802                           bfd_get_filename (reader->abfd));
14803       dump_die (*diep, dwarf2_die_debug);
14804     }
14805
14806   return result;
14807 }
14808 \f
14809 /* Abbreviation tables.
14810
14811    In DWARF version 2, the description of the debugging information is
14812    stored in a separate .debug_abbrev section.  Before we read any
14813    dies from a section we read in all abbreviations and install them
14814    in a hash table.  */
14815
14816 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
14817
14818 static struct abbrev_info *
14819 abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
14820 {
14821   struct abbrev_info *abbrev;
14822
14823   abbrev = (struct abbrev_info *)
14824     obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
14825   memset (abbrev, 0, sizeof (struct abbrev_info));
14826   return abbrev;
14827 }
14828
14829 /* Add an abbreviation to the table.  */
14830
14831 static void
14832 abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
14833                          unsigned int abbrev_number,
14834                          struct abbrev_info *abbrev)
14835 {
14836   unsigned int hash_number;
14837
14838   hash_number = abbrev_number % ABBREV_HASH_SIZE;
14839   abbrev->next = abbrev_table->abbrevs[hash_number];
14840   abbrev_table->abbrevs[hash_number] = abbrev;
14841 }
14842
14843 /* Look up an abbrev in the table.
14844    Returns NULL if the abbrev is not found.  */
14845
14846 static struct abbrev_info *
14847 abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
14848                             unsigned int abbrev_number)
14849 {
14850   unsigned int hash_number;
14851   struct abbrev_info *abbrev;
14852
14853   hash_number = abbrev_number % ABBREV_HASH_SIZE;
14854   abbrev = abbrev_table->abbrevs[hash_number];
14855
14856   while (abbrev)
14857     {
14858       if (abbrev->number == abbrev_number)
14859         return abbrev;
14860       abbrev = abbrev->next;
14861     }
14862   return NULL;
14863 }
14864
14865 /* Read in an abbrev table.  */
14866
14867 static struct abbrev_table *
14868 abbrev_table_read_table (struct dwarf2_section_info *section,
14869                          sect_offset offset)
14870 {
14871   struct objfile *objfile = dwarf2_per_objfile->objfile;
14872   bfd *abfd = get_section_bfd_owner (section);
14873   struct abbrev_table *abbrev_table;
14874   const gdb_byte *abbrev_ptr;
14875   struct abbrev_info *cur_abbrev;
14876   unsigned int abbrev_number, bytes_read, abbrev_name;
14877   unsigned int abbrev_form;
14878   struct attr_abbrev *cur_attrs;
14879   unsigned int allocated_attrs;
14880
14881   abbrev_table = XNEW (struct abbrev_table);
14882   abbrev_table->offset = offset;
14883   obstack_init (&abbrev_table->abbrev_obstack);
14884   abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
14885                                          (ABBREV_HASH_SIZE
14886                                           * sizeof (struct abbrev_info *)));
14887   memset (abbrev_table->abbrevs, 0,
14888           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
14889
14890   dwarf2_read_section (objfile, section);
14891   abbrev_ptr = section->buffer + offset.sect_off;
14892   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14893   abbrev_ptr += bytes_read;
14894
14895   allocated_attrs = ATTR_ALLOC_CHUNK;
14896   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
14897
14898   /* Loop until we reach an abbrev number of 0.  */
14899   while (abbrev_number)
14900     {
14901       cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
14902
14903       /* read in abbrev header */
14904       cur_abbrev->number = abbrev_number;
14905       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14906       abbrev_ptr += bytes_read;
14907       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
14908       abbrev_ptr += 1;
14909
14910       /* now read in declarations */
14911       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14912       abbrev_ptr += bytes_read;
14913       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14914       abbrev_ptr += bytes_read;
14915       while (abbrev_name)
14916         {
14917           if (cur_abbrev->num_attrs == allocated_attrs)
14918             {
14919               allocated_attrs += ATTR_ALLOC_CHUNK;
14920               cur_attrs
14921                 = xrealloc (cur_attrs, (allocated_attrs
14922                                         * sizeof (struct attr_abbrev)));
14923             }
14924
14925           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
14926           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
14927           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14928           abbrev_ptr += bytes_read;
14929           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14930           abbrev_ptr += bytes_read;
14931         }
14932
14933       cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
14934                                          (cur_abbrev->num_attrs
14935                                           * sizeof (struct attr_abbrev)));
14936       memcpy (cur_abbrev->attrs, cur_attrs,
14937               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
14938
14939       abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
14940
14941       /* Get next abbreviation.
14942          Under Irix6 the abbreviations for a compilation unit are not
14943          always properly terminated with an abbrev number of 0.
14944          Exit loop if we encounter an abbreviation which we have
14945          already read (which means we are about to read the abbreviations
14946          for the next compile unit) or if the end of the abbreviation
14947          table is reached.  */
14948       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
14949         break;
14950       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
14951       abbrev_ptr += bytes_read;
14952       if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
14953         break;
14954     }
14955
14956   xfree (cur_attrs);
14957   return abbrev_table;
14958 }
14959
14960 /* Free the resources held by ABBREV_TABLE.  */
14961
14962 static void
14963 abbrev_table_free (struct abbrev_table *abbrev_table)
14964 {
14965   obstack_free (&abbrev_table->abbrev_obstack, NULL);
14966   xfree (abbrev_table);
14967 }
14968
14969 /* Same as abbrev_table_free but as a cleanup.
14970    We pass in a pointer to the pointer to the table so that we can
14971    set the pointer to NULL when we're done.  It also simplifies
14972    build_type_unit_groups.  */
14973
14974 static void
14975 abbrev_table_free_cleanup (void *table_ptr)
14976 {
14977   struct abbrev_table **abbrev_table_ptr = table_ptr;
14978
14979   if (*abbrev_table_ptr != NULL)
14980     abbrev_table_free (*abbrev_table_ptr);
14981   *abbrev_table_ptr = NULL;
14982 }
14983
14984 /* Read the abbrev table for CU from ABBREV_SECTION.  */
14985
14986 static void
14987 dwarf2_read_abbrevs (struct dwarf2_cu *cu,
14988                      struct dwarf2_section_info *abbrev_section)
14989 {
14990   cu->abbrev_table =
14991     abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
14992 }
14993
14994 /* Release the memory used by the abbrev table for a compilation unit.  */
14995
14996 static void
14997 dwarf2_free_abbrev_table (void *ptr_to_cu)
14998 {
14999   struct dwarf2_cu *cu = ptr_to_cu;
15000
15001   if (cu->abbrev_table != NULL)
15002     abbrev_table_free (cu->abbrev_table);
15003   /* Set this to NULL so that we SEGV if we try to read it later,
15004      and also because free_comp_unit verifies this is NULL.  */
15005   cu->abbrev_table = NULL;
15006 }
15007 \f
15008 /* Returns nonzero if TAG represents a type that we might generate a partial
15009    symbol for.  */
15010
15011 static int
15012 is_type_tag_for_partial (int tag)
15013 {
15014   switch (tag)
15015     {
15016 #if 0
15017     /* Some types that would be reasonable to generate partial symbols for,
15018        that we don't at present.  */
15019     case DW_TAG_array_type:
15020     case DW_TAG_file_type:
15021     case DW_TAG_ptr_to_member_type:
15022     case DW_TAG_set_type:
15023     case DW_TAG_string_type:
15024     case DW_TAG_subroutine_type:
15025 #endif
15026     case DW_TAG_base_type:
15027     case DW_TAG_class_type:
15028     case DW_TAG_interface_type:
15029     case DW_TAG_enumeration_type:
15030     case DW_TAG_structure_type:
15031     case DW_TAG_subrange_type:
15032     case DW_TAG_typedef:
15033     case DW_TAG_union_type:
15034       return 1;
15035     default:
15036       return 0;
15037     }
15038 }
15039
15040 /* Load all DIEs that are interesting for partial symbols into memory.  */
15041
15042 static struct partial_die_info *
15043 load_partial_dies (const struct die_reader_specs *reader,
15044                    const gdb_byte *info_ptr, int building_psymtab)
15045 {
15046   struct dwarf2_cu *cu = reader->cu;
15047   struct objfile *objfile = cu->objfile;
15048   struct partial_die_info *part_die;
15049   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15050   struct abbrev_info *abbrev;
15051   unsigned int bytes_read;
15052   unsigned int load_all = 0;
15053   int nesting_level = 1;
15054
15055   parent_die = NULL;
15056   last_die = NULL;
15057
15058   gdb_assert (cu->per_cu != NULL);
15059   if (cu->per_cu->load_all_dies)
15060     load_all = 1;
15061
15062   cu->partial_dies
15063     = htab_create_alloc_ex (cu->header.length / 12,
15064                             partial_die_hash,
15065                             partial_die_eq,
15066                             NULL,
15067                             &cu->comp_unit_obstack,
15068                             hashtab_obstack_allocate,
15069                             dummy_obstack_deallocate);
15070
15071   part_die = obstack_alloc (&cu->comp_unit_obstack,
15072                             sizeof (struct partial_die_info));
15073
15074   while (1)
15075     {
15076       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15077
15078       /* A NULL abbrev means the end of a series of children.  */
15079       if (abbrev == NULL)
15080         {
15081           if (--nesting_level == 0)
15082             {
15083               /* PART_DIE was probably the last thing allocated on the
15084                  comp_unit_obstack, so we could call obstack_free
15085                  here.  We don't do that because the waste is small,
15086                  and will be cleaned up when we're done with this
15087                  compilation unit.  This way, we're also more robust
15088                  against other users of the comp_unit_obstack.  */
15089               return first_die;
15090             }
15091           info_ptr += bytes_read;
15092           last_die = parent_die;
15093           parent_die = parent_die->die_parent;
15094           continue;
15095         }
15096
15097       /* Check for template arguments.  We never save these; if
15098          they're seen, we just mark the parent, and go on our way.  */
15099       if (parent_die != NULL
15100           && cu->language == language_cplus
15101           && (abbrev->tag == DW_TAG_template_type_param
15102               || abbrev->tag == DW_TAG_template_value_param))
15103         {
15104           parent_die->has_template_arguments = 1;
15105
15106           if (!load_all)
15107             {
15108               /* We don't need a partial DIE for the template argument.  */
15109               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15110               continue;
15111             }
15112         }
15113
15114       /* We only recurse into c++ subprograms looking for template arguments.
15115          Skip their other children.  */
15116       if (!load_all
15117           && cu->language == language_cplus
15118           && parent_die != NULL
15119           && parent_die->tag == DW_TAG_subprogram)
15120         {
15121           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15122           continue;
15123         }
15124
15125       /* Check whether this DIE is interesting enough to save.  Normally
15126          we would not be interested in members here, but there may be
15127          later variables referencing them via DW_AT_specification (for
15128          static members).  */
15129       if (!load_all
15130           && !is_type_tag_for_partial (abbrev->tag)
15131           && abbrev->tag != DW_TAG_constant
15132           && abbrev->tag != DW_TAG_enumerator
15133           && abbrev->tag != DW_TAG_subprogram
15134           && abbrev->tag != DW_TAG_lexical_block
15135           && abbrev->tag != DW_TAG_variable
15136           && abbrev->tag != DW_TAG_namespace
15137           && abbrev->tag != DW_TAG_module
15138           && abbrev->tag != DW_TAG_member
15139           && abbrev->tag != DW_TAG_imported_unit
15140           && abbrev->tag != DW_TAG_imported_declaration)
15141         {
15142           /* Otherwise we skip to the next sibling, if any.  */
15143           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
15144           continue;
15145         }
15146
15147       info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15148                                    info_ptr);
15149
15150       /* This two-pass algorithm for processing partial symbols has a
15151          high cost in cache pressure.  Thus, handle some simple cases
15152          here which cover the majority of C partial symbols.  DIEs
15153          which neither have specification tags in them, nor could have
15154          specification tags elsewhere pointing at them, can simply be
15155          processed and discarded.
15156
15157          This segment is also optional; scan_partial_symbols and
15158          add_partial_symbol will handle these DIEs if we chain
15159          them in normally.  When compilers which do not emit large
15160          quantities of duplicate debug information are more common,
15161          this code can probably be removed.  */
15162
15163       /* Any complete simple types at the top level (pretty much all
15164          of them, for a language without namespaces), can be processed
15165          directly.  */
15166       if (parent_die == NULL
15167           && part_die->has_specification == 0
15168           && part_die->is_declaration == 0
15169           && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
15170               || part_die->tag == DW_TAG_base_type
15171               || part_die->tag == DW_TAG_subrange_type))
15172         {
15173           if (building_psymtab && part_die->name != NULL)
15174             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15175                                  VAR_DOMAIN, LOC_TYPEDEF,
15176                                  &objfile->static_psymbols,
15177                                  0, (CORE_ADDR) 0, cu->language, objfile);
15178           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15179           continue;
15180         }
15181
15182       /* The exception for DW_TAG_typedef with has_children above is
15183          a workaround of GCC PR debug/47510.  In the case of this complaint
15184          type_name_no_tag_or_error will error on such types later.
15185
15186          GDB skipped children of DW_TAG_typedef by the shortcut above and then
15187          it could not find the child DIEs referenced later, this is checked
15188          above.  In correct DWARF DW_TAG_typedef should have no children.  */
15189
15190       if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15191         complaint (&symfile_complaints,
15192                    _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15193                      "- DIE at 0x%x [in module %s]"),
15194                    part_die->offset.sect_off, objfile_name (objfile));
15195
15196       /* If we're at the second level, and we're an enumerator, and
15197          our parent has no specification (meaning possibly lives in a
15198          namespace elsewhere), then we can add the partial symbol now
15199          instead of queueing it.  */
15200       if (part_die->tag == DW_TAG_enumerator
15201           && parent_die != NULL
15202           && parent_die->die_parent == NULL
15203           && parent_die->tag == DW_TAG_enumeration_type
15204           && parent_die->has_specification == 0)
15205         {
15206           if (part_die->name == NULL)
15207             complaint (&symfile_complaints,
15208                        _("malformed enumerator DIE ignored"));
15209           else if (building_psymtab)
15210             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
15211                                  VAR_DOMAIN, LOC_CONST,
15212                                  (cu->language == language_cplus
15213                                   || cu->language == language_java)
15214                                  ? &objfile->global_psymbols
15215                                  : &objfile->static_psymbols,
15216                                  0, (CORE_ADDR) 0, cu->language, objfile);
15217
15218           info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
15219           continue;
15220         }
15221
15222       /* We'll save this DIE so link it in.  */
15223       part_die->die_parent = parent_die;
15224       part_die->die_sibling = NULL;
15225       part_die->die_child = NULL;
15226
15227       if (last_die && last_die == parent_die)
15228         last_die->die_child = part_die;
15229       else if (last_die)
15230         last_die->die_sibling = part_die;
15231
15232       last_die = part_die;
15233
15234       if (first_die == NULL)
15235         first_die = part_die;
15236
15237       /* Maybe add the DIE to the hash table.  Not all DIEs that we
15238          find interesting need to be in the hash table, because we
15239          also have the parent/sibling/child chains; only those that we
15240          might refer to by offset later during partial symbol reading.
15241
15242          For now this means things that might have be the target of a
15243          DW_AT_specification, DW_AT_abstract_origin, or
15244          DW_AT_extension.  DW_AT_extension will refer only to
15245          namespaces; DW_AT_abstract_origin refers to functions (and
15246          many things under the function DIE, but we do not recurse
15247          into function DIEs during partial symbol reading) and
15248          possibly variables as well; DW_AT_specification refers to
15249          declarations.  Declarations ought to have the DW_AT_declaration
15250          flag.  It happens that GCC forgets to put it in sometimes, but
15251          only for functions, not for types.
15252
15253          Adding more things than necessary to the hash table is harmless
15254          except for the performance cost.  Adding too few will result in
15255          wasted time in find_partial_die, when we reread the compilation
15256          unit with load_all_dies set.  */
15257
15258       if (load_all
15259           || abbrev->tag == DW_TAG_constant
15260           || abbrev->tag == DW_TAG_subprogram
15261           || abbrev->tag == DW_TAG_variable
15262           || abbrev->tag == DW_TAG_namespace
15263           || part_die->is_declaration)
15264         {
15265           void **slot;
15266
15267           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
15268                                            part_die->offset.sect_off, INSERT);
15269           *slot = part_die;
15270         }
15271
15272       part_die = obstack_alloc (&cu->comp_unit_obstack,
15273                                 sizeof (struct partial_die_info));
15274
15275       /* For some DIEs we want to follow their children (if any).  For C
15276          we have no reason to follow the children of structures; for other
15277          languages we have to, so that we can get at method physnames
15278          to infer fully qualified class names, for DW_AT_specification,
15279          and for C++ template arguments.  For C++, we also look one level
15280          inside functions to find template arguments (if the name of the
15281          function does not already contain the template arguments).
15282
15283          For Ada, we need to scan the children of subprograms and lexical
15284          blocks as well because Ada allows the definition of nested
15285          entities that could be interesting for the debugger, such as
15286          nested subprograms for instance.  */
15287       if (last_die->has_children
15288           && (load_all
15289               || last_die->tag == DW_TAG_namespace
15290               || last_die->tag == DW_TAG_module
15291               || last_die->tag == DW_TAG_enumeration_type
15292               || (cu->language == language_cplus
15293                   && last_die->tag == DW_TAG_subprogram
15294                   && (last_die->name == NULL
15295                       || strchr (last_die->name, '<') == NULL))
15296               || (cu->language != language_c
15297                   && (last_die->tag == DW_TAG_class_type
15298                       || last_die->tag == DW_TAG_interface_type
15299                       || last_die->tag == DW_TAG_structure_type
15300                       || last_die->tag == DW_TAG_union_type))
15301               || (cu->language == language_ada
15302                   && (last_die->tag == DW_TAG_subprogram
15303                       || last_die->tag == DW_TAG_lexical_block))))
15304         {
15305           nesting_level++;
15306           parent_die = last_die;
15307           continue;
15308         }
15309
15310       /* Otherwise we skip to the next sibling, if any.  */
15311       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
15312
15313       /* Back to the top, do it again.  */
15314     }
15315 }
15316
15317 /* Read a minimal amount of information into the minimal die structure.  */
15318
15319 static const gdb_byte *
15320 read_partial_die (const struct die_reader_specs *reader,
15321                   struct partial_die_info *part_die,
15322                   struct abbrev_info *abbrev, unsigned int abbrev_len,
15323                   const gdb_byte *info_ptr)
15324 {
15325   struct dwarf2_cu *cu = reader->cu;
15326   struct objfile *objfile = cu->objfile;
15327   const gdb_byte *buffer = reader->buffer;
15328   unsigned int i;
15329   struct attribute attr;
15330   int has_low_pc_attr = 0;
15331   int has_high_pc_attr = 0;
15332   int high_pc_relative = 0;
15333
15334   memset (part_die, 0, sizeof (struct partial_die_info));
15335
15336   part_die->offset.sect_off = info_ptr - buffer;
15337
15338   info_ptr += abbrev_len;
15339
15340   if (abbrev == NULL)
15341     return info_ptr;
15342
15343   part_die->tag = abbrev->tag;
15344   part_die->has_children = abbrev->has_children;
15345
15346   for (i = 0; i < abbrev->num_attrs; ++i)
15347     {
15348       info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
15349
15350       /* Store the data if it is of an attribute we want to keep in a
15351          partial symbol table.  */
15352       switch (attr.name)
15353         {
15354         case DW_AT_name:
15355           switch (part_die->tag)
15356             {
15357             case DW_TAG_compile_unit:
15358             case DW_TAG_partial_unit:
15359             case DW_TAG_type_unit:
15360               /* Compilation units have a DW_AT_name that is a filename, not
15361                  a source language identifier.  */
15362             case DW_TAG_enumeration_type:
15363             case DW_TAG_enumerator:
15364               /* These tags always have simple identifiers already; no need
15365                  to canonicalize them.  */
15366               part_die->name = DW_STRING (&attr);
15367               break;
15368             default:
15369               part_die->name
15370                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
15371                                             &objfile->objfile_obstack);
15372               break;
15373             }
15374           break;
15375         case DW_AT_linkage_name:
15376         case DW_AT_MIPS_linkage_name:
15377           /* Note that both forms of linkage name might appear.  We
15378              assume they will be the same, and we only store the last
15379              one we see.  */
15380           if (cu->language == language_ada)
15381             part_die->name = DW_STRING (&attr);
15382           part_die->linkage_name = DW_STRING (&attr);
15383           break;
15384         case DW_AT_low_pc:
15385           has_low_pc_attr = 1;
15386           part_die->lowpc = attr_value_as_address (&attr);
15387           break;
15388         case DW_AT_high_pc:
15389           has_high_pc_attr = 1;
15390           part_die->highpc = attr_value_as_address (&attr);
15391           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15392                 high_pc_relative = 1;
15393           break;
15394         case DW_AT_location:
15395           /* Support the .debug_loc offsets.  */
15396           if (attr_form_is_block (&attr))
15397             {
15398                part_die->d.locdesc = DW_BLOCK (&attr);
15399             }
15400           else if (attr_form_is_section_offset (&attr))
15401             {
15402               dwarf2_complex_location_expr_complaint ();
15403             }
15404           else
15405             {
15406               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15407                                                      "partial symbol information");
15408             }
15409           break;
15410         case DW_AT_external:
15411           part_die->is_external = DW_UNSND (&attr);
15412           break;
15413         case DW_AT_declaration:
15414           part_die->is_declaration = DW_UNSND (&attr);
15415           break;
15416         case DW_AT_type:
15417           part_die->has_type = 1;
15418           break;
15419         case DW_AT_abstract_origin:
15420         case DW_AT_specification:
15421         case DW_AT_extension:
15422           part_die->has_specification = 1;
15423           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
15424           part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15425                                    || cu->per_cu->is_dwz);
15426           break;
15427         case DW_AT_sibling:
15428           /* Ignore absolute siblings, they might point outside of
15429              the current compile unit.  */
15430           if (attr.form == DW_FORM_ref_addr)
15431             complaint (&symfile_complaints,
15432                        _("ignoring absolute DW_AT_sibling"));
15433           else
15434             {
15435               unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15436               const gdb_byte *sibling_ptr = buffer + off;
15437
15438               if (sibling_ptr < info_ptr)
15439                 complaint (&symfile_complaints,
15440                            _("DW_AT_sibling points backwards"));
15441               else if (sibling_ptr > reader->buffer_end)
15442                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
15443               else
15444                 part_die->sibling = sibling_ptr;
15445             }
15446           break;
15447         case DW_AT_byte_size:
15448           part_die->has_byte_size = 1;
15449           break;
15450         case DW_AT_calling_convention:
15451           /* DWARF doesn't provide a way to identify a program's source-level
15452              entry point.  DW_AT_calling_convention attributes are only meant
15453              to describe functions' calling conventions.
15454
15455              However, because it's a necessary piece of information in
15456              Fortran, and because DW_CC_program is the only piece of debugging
15457              information whose definition refers to a 'main program' at all,
15458              several compilers have begun marking Fortran main programs with
15459              DW_CC_program --- even when those functions use the standard
15460              calling conventions.
15461
15462              So until DWARF specifies a way to provide this information and
15463              compilers pick up the new representation, we'll support this
15464              practice.  */
15465           if (DW_UNSND (&attr) == DW_CC_program
15466               && cu->language == language_fortran)
15467             set_objfile_main_name (objfile, part_die->name, language_fortran);
15468           break;
15469         case DW_AT_inline:
15470           if (DW_UNSND (&attr) == DW_INL_inlined
15471               || DW_UNSND (&attr) == DW_INL_declared_inlined)
15472             part_die->may_be_inlined = 1;
15473           break;
15474
15475         case DW_AT_import:
15476           if (part_die->tag == DW_TAG_imported_unit)
15477             {
15478               part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15479               part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15480                                   || cu->per_cu->is_dwz);
15481             }
15482           break;
15483
15484         default:
15485           break;
15486         }
15487     }
15488
15489   if (high_pc_relative)
15490     part_die->highpc += part_die->lowpc;
15491
15492   if (has_low_pc_attr && has_high_pc_attr)
15493     {
15494       /* When using the GNU linker, .gnu.linkonce. sections are used to
15495          eliminate duplicate copies of functions and vtables and such.
15496          The linker will arbitrarily choose one and discard the others.
15497          The AT_*_pc values for such functions refer to local labels in
15498          these sections.  If the section from that file was discarded, the
15499          labels are not in the output, so the relocs get a value of 0.
15500          If this is a discarded function, mark the pc bounds as invalid,
15501          so that GDB will ignore it.  */
15502       if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15503         {
15504           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15505
15506           complaint (&symfile_complaints,
15507                      _("DW_AT_low_pc %s is zero "
15508                        "for DIE at 0x%x [in module %s]"),
15509                      paddress (gdbarch, part_die->lowpc),
15510                      part_die->offset.sect_off, objfile_name (objfile));
15511         }
15512       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
15513       else if (part_die->lowpc >= part_die->highpc)
15514         {
15515           struct gdbarch *gdbarch = get_objfile_arch (objfile);
15516
15517           complaint (&symfile_complaints,
15518                      _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15519                        "for DIE at 0x%x [in module %s]"),
15520                      paddress (gdbarch, part_die->lowpc),
15521                      paddress (gdbarch, part_die->highpc),
15522                      part_die->offset.sect_off, objfile_name (objfile));
15523         }
15524       else
15525         part_die->has_pc_info = 1;
15526     }
15527
15528   return info_ptr;
15529 }
15530
15531 /* Find a cached partial DIE at OFFSET in CU.  */
15532
15533 static struct partial_die_info *
15534 find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
15535 {
15536   struct partial_die_info *lookup_die = NULL;
15537   struct partial_die_info part_die;
15538
15539   part_die.offset = offset;
15540   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15541                                     offset.sect_off);
15542
15543   return lookup_die;
15544 }
15545
15546 /* Find a partial DIE at OFFSET, which may or may not be in CU,
15547    except in the case of .debug_types DIEs which do not reference
15548    outside their CU (they do however referencing other types via
15549    DW_FORM_ref_sig8).  */
15550
15551 static struct partial_die_info *
15552 find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
15553 {
15554   struct objfile *objfile = cu->objfile;
15555   struct dwarf2_per_cu_data *per_cu = NULL;
15556   struct partial_die_info *pd = NULL;
15557
15558   if (offset_in_dwz == cu->per_cu->is_dwz
15559       && offset_in_cu_p (&cu->header, offset))
15560     {
15561       pd = find_partial_die_in_comp_unit (offset, cu);
15562       if (pd != NULL)
15563         return pd;
15564       /* We missed recording what we needed.
15565          Load all dies and try again.  */
15566       per_cu = cu->per_cu;
15567     }
15568   else
15569     {
15570       /* TUs don't reference other CUs/TUs (except via type signatures).  */
15571       if (cu->per_cu->is_debug_types)
15572         {
15573           error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
15574                    " external reference to offset 0x%lx [in module %s].\n"),
15575                  (long) cu->header.offset.sect_off, (long) offset.sect_off,
15576                  bfd_get_filename (objfile->obfd));
15577         }
15578       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
15579                                                  objfile);
15580
15581       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
15582         load_partial_comp_unit (per_cu);
15583
15584       per_cu->cu->last_used = 0;
15585       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15586     }
15587
15588   /* If we didn't find it, and not all dies have been loaded,
15589      load them all and try again.  */
15590
15591   if (pd == NULL && per_cu->load_all_dies == 0)
15592     {
15593       per_cu->load_all_dies = 1;
15594
15595       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
15596          THIS_CU->cu may already be in use.  So we can't just free it and
15597          replace its DIEs with the ones we read in.  Instead, we leave those
15598          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
15599          and clobber THIS_CU->cu->partial_dies with the hash table for the new
15600          set.  */
15601       load_partial_comp_unit (per_cu);
15602
15603       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
15604     }
15605
15606   if (pd == NULL)
15607     internal_error (__FILE__, __LINE__,
15608                     _("could not find partial DIE 0x%x "
15609                       "in cache [from module %s]\n"),
15610                     offset.sect_off, bfd_get_filename (objfile->obfd));
15611   return pd;
15612 }
15613
15614 /* See if we can figure out if the class lives in a namespace.  We do
15615    this by looking for a member function; its demangled name will
15616    contain namespace info, if there is any.  */
15617
15618 static void
15619 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
15620                                   struct dwarf2_cu *cu)
15621 {
15622   /* NOTE: carlton/2003-10-07: Getting the info this way changes
15623      what template types look like, because the demangler
15624      frequently doesn't give the same name as the debug info.  We
15625      could fix this by only using the demangled name to get the
15626      prefix (but see comment in read_structure_type).  */
15627
15628   struct partial_die_info *real_pdi;
15629   struct partial_die_info *child_pdi;
15630
15631   /* If this DIE (this DIE's specification, if any) has a parent, then
15632      we should not do this.  We'll prepend the parent's fully qualified
15633      name when we create the partial symbol.  */
15634
15635   real_pdi = struct_pdi;
15636   while (real_pdi->has_specification)
15637     real_pdi = find_partial_die (real_pdi->spec_offset,
15638                                  real_pdi->spec_is_dwz, cu);
15639
15640   if (real_pdi->die_parent != NULL)
15641     return;
15642
15643   for (child_pdi = struct_pdi->die_child;
15644        child_pdi != NULL;
15645        child_pdi = child_pdi->die_sibling)
15646     {
15647       if (child_pdi->tag == DW_TAG_subprogram
15648           && child_pdi->linkage_name != NULL)
15649         {
15650           char *actual_class_name
15651             = language_class_name_from_physname (cu->language_defn,
15652                                                  child_pdi->linkage_name);
15653           if (actual_class_name != NULL)
15654             {
15655               struct_pdi->name
15656                 = obstack_copy0 (&cu->objfile->objfile_obstack,
15657                                  actual_class_name,
15658                                  strlen (actual_class_name));
15659               xfree (actual_class_name);
15660             }
15661           break;
15662         }
15663     }
15664 }
15665
15666 /* Adjust PART_DIE before generating a symbol for it.  This function
15667    may set the is_external flag or change the DIE's name.  */
15668
15669 static void
15670 fixup_partial_die (struct partial_die_info *part_die,
15671                    struct dwarf2_cu *cu)
15672 {
15673   /* Once we've fixed up a die, there's no point in doing so again.
15674      This also avoids a memory leak if we were to call
15675      guess_partial_die_structure_name multiple times.  */
15676   if (part_die->fixup_called)
15677     return;
15678
15679   /* If we found a reference attribute and the DIE has no name, try
15680      to find a name in the referred to DIE.  */
15681
15682   if (part_die->name == NULL && part_die->has_specification)
15683     {
15684       struct partial_die_info *spec_die;
15685
15686       spec_die = find_partial_die (part_die->spec_offset,
15687                                    part_die->spec_is_dwz, cu);
15688
15689       fixup_partial_die (spec_die, cu);
15690
15691       if (spec_die->name)
15692         {
15693           part_die->name = spec_die->name;
15694
15695           /* Copy DW_AT_external attribute if it is set.  */
15696           if (spec_die->is_external)
15697             part_die->is_external = spec_die->is_external;
15698         }
15699     }
15700
15701   /* Set default names for some unnamed DIEs.  */
15702
15703   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
15704     part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
15705
15706   /* If there is no parent die to provide a namespace, and there are
15707      children, see if we can determine the namespace from their linkage
15708      name.  */
15709   if (cu->language == language_cplus
15710       && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
15711       && part_die->die_parent == NULL
15712       && part_die->has_children
15713       && (part_die->tag == DW_TAG_class_type
15714           || part_die->tag == DW_TAG_structure_type
15715           || part_die->tag == DW_TAG_union_type))
15716     guess_partial_die_structure_name (part_die, cu);
15717
15718   /* GCC might emit a nameless struct or union that has a linkage
15719      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
15720   if (part_die->name == NULL
15721       && (part_die->tag == DW_TAG_class_type
15722           || part_die->tag == DW_TAG_interface_type
15723           || part_die->tag == DW_TAG_structure_type
15724           || part_die->tag == DW_TAG_union_type)
15725       && part_die->linkage_name != NULL)
15726     {
15727       char *demangled;
15728
15729       demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
15730       if (demangled)
15731         {
15732           const char *base;
15733
15734           /* Strip any leading namespaces/classes, keep only the base name.
15735              DW_AT_name for named DIEs does not contain the prefixes.  */
15736           base = strrchr (demangled, ':');
15737           if (base && base > demangled && base[-1] == ':')
15738             base++;
15739           else
15740             base = demangled;
15741
15742           part_die->name = obstack_copy0 (&cu->objfile->objfile_obstack,
15743                                           base, strlen (base));
15744           xfree (demangled);
15745         }
15746     }
15747
15748   part_die->fixup_called = 1;
15749 }
15750
15751 /* Read an attribute value described by an attribute form.  */
15752
15753 static const gdb_byte *
15754 read_attribute_value (const struct die_reader_specs *reader,
15755                       struct attribute *attr, unsigned form,
15756                       const gdb_byte *info_ptr)
15757 {
15758   struct dwarf2_cu *cu = reader->cu;
15759   bfd *abfd = reader->abfd;
15760   struct comp_unit_head *cu_header = &cu->header;
15761   unsigned int bytes_read;
15762   struct dwarf_block *blk;
15763
15764   attr->form = form;
15765   switch (form)
15766     {
15767     case DW_FORM_ref_addr:
15768       if (cu->header.version == 2)
15769         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15770       else
15771         DW_UNSND (attr) = read_offset (abfd, info_ptr,
15772                                        &cu->header, &bytes_read);
15773       info_ptr += bytes_read;
15774       break;
15775     case DW_FORM_GNU_ref_alt:
15776       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15777       info_ptr += bytes_read;
15778       break;
15779     case DW_FORM_addr:
15780       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
15781       info_ptr += bytes_read;
15782       break;
15783     case DW_FORM_block2:
15784       blk = dwarf_alloc_block (cu);
15785       blk->size = read_2_bytes (abfd, info_ptr);
15786       info_ptr += 2;
15787       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15788       info_ptr += blk->size;
15789       DW_BLOCK (attr) = blk;
15790       break;
15791     case DW_FORM_block4:
15792       blk = dwarf_alloc_block (cu);
15793       blk->size = read_4_bytes (abfd, info_ptr);
15794       info_ptr += 4;
15795       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15796       info_ptr += blk->size;
15797       DW_BLOCK (attr) = blk;
15798       break;
15799     case DW_FORM_data2:
15800       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
15801       info_ptr += 2;
15802       break;
15803     case DW_FORM_data4:
15804       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
15805       info_ptr += 4;
15806       break;
15807     case DW_FORM_data8:
15808       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
15809       info_ptr += 8;
15810       break;
15811     case DW_FORM_sec_offset:
15812       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
15813       info_ptr += bytes_read;
15814       break;
15815     case DW_FORM_string:
15816       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
15817       DW_STRING_IS_CANONICAL (attr) = 0;
15818       info_ptr += bytes_read;
15819       break;
15820     case DW_FORM_strp:
15821       if (!cu->per_cu->is_dwz)
15822         {
15823           DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
15824                                                    &bytes_read);
15825           DW_STRING_IS_CANONICAL (attr) = 0;
15826           info_ptr += bytes_read;
15827           break;
15828         }
15829       /* FALLTHROUGH */
15830     case DW_FORM_GNU_strp_alt:
15831       {
15832         struct dwz_file *dwz = dwarf2_get_dwz_file ();
15833         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
15834                                           &bytes_read);
15835
15836         DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
15837         DW_STRING_IS_CANONICAL (attr) = 0;
15838         info_ptr += bytes_read;
15839       }
15840       break;
15841     case DW_FORM_exprloc:
15842     case DW_FORM_block:
15843       blk = dwarf_alloc_block (cu);
15844       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15845       info_ptr += bytes_read;
15846       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15847       info_ptr += blk->size;
15848       DW_BLOCK (attr) = blk;
15849       break;
15850     case DW_FORM_block1:
15851       blk = dwarf_alloc_block (cu);
15852       blk->size = read_1_byte (abfd, info_ptr);
15853       info_ptr += 1;
15854       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
15855       info_ptr += blk->size;
15856       DW_BLOCK (attr) = blk;
15857       break;
15858     case DW_FORM_data1:
15859       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
15860       info_ptr += 1;
15861       break;
15862     case DW_FORM_flag:
15863       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
15864       info_ptr += 1;
15865       break;
15866     case DW_FORM_flag_present:
15867       DW_UNSND (attr) = 1;
15868       break;
15869     case DW_FORM_sdata:
15870       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
15871       info_ptr += bytes_read;
15872       break;
15873     case DW_FORM_udata:
15874       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15875       info_ptr += bytes_read;
15876       break;
15877     case DW_FORM_ref1:
15878       DW_UNSND (attr) = (cu->header.offset.sect_off
15879                          + read_1_byte (abfd, info_ptr));
15880       info_ptr += 1;
15881       break;
15882     case DW_FORM_ref2:
15883       DW_UNSND (attr) = (cu->header.offset.sect_off
15884                          + read_2_bytes (abfd, info_ptr));
15885       info_ptr += 2;
15886       break;
15887     case DW_FORM_ref4:
15888       DW_UNSND (attr) = (cu->header.offset.sect_off
15889                          + read_4_bytes (abfd, info_ptr));
15890       info_ptr += 4;
15891       break;
15892     case DW_FORM_ref8:
15893       DW_UNSND (attr) = (cu->header.offset.sect_off
15894                          + read_8_bytes (abfd, info_ptr));
15895       info_ptr += 8;
15896       break;
15897     case DW_FORM_ref_sig8:
15898       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
15899       info_ptr += 8;
15900       break;
15901     case DW_FORM_ref_udata:
15902       DW_UNSND (attr) = (cu->header.offset.sect_off
15903                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
15904       info_ptr += bytes_read;
15905       break;
15906     case DW_FORM_indirect:
15907       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15908       info_ptr += bytes_read;
15909       info_ptr = read_attribute_value (reader, attr, form, info_ptr);
15910       break;
15911     case DW_FORM_GNU_addr_index:
15912       if (reader->dwo_file == NULL)
15913         {
15914           /* For now flag a hard error.
15915              Later we can turn this into a complaint.  */
15916           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
15917                  dwarf_form_name (form),
15918                  bfd_get_filename (abfd));
15919         }
15920       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
15921       info_ptr += bytes_read;
15922       break;
15923     case DW_FORM_GNU_str_index:
15924       if (reader->dwo_file == NULL)
15925         {
15926           /* For now flag a hard error.
15927              Later we can turn this into a complaint if warranted.  */
15928           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
15929                  dwarf_form_name (form),
15930                  bfd_get_filename (abfd));
15931         }
15932       {
15933         ULONGEST str_index =
15934           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15935
15936         DW_STRING (attr) = read_str_index (reader, str_index);
15937         DW_STRING_IS_CANONICAL (attr) = 0;
15938         info_ptr += bytes_read;
15939       }
15940       break;
15941     default:
15942       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
15943              dwarf_form_name (form),
15944              bfd_get_filename (abfd));
15945     }
15946
15947   /* Super hack.  */
15948   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
15949     attr->form = DW_FORM_GNU_ref_alt;
15950
15951   /* We have seen instances where the compiler tried to emit a byte
15952      size attribute of -1 which ended up being encoded as an unsigned
15953      0xffffffff.  Although 0xffffffff is technically a valid size value,
15954      an object of this size seems pretty unlikely so we can relatively
15955      safely treat these cases as if the size attribute was invalid and
15956      treat them as zero by default.  */
15957   if (attr->name == DW_AT_byte_size
15958       && form == DW_FORM_data4
15959       && DW_UNSND (attr) >= 0xffffffff)
15960     {
15961       complaint
15962         (&symfile_complaints,
15963          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
15964          hex_string (DW_UNSND (attr)));
15965       DW_UNSND (attr) = 0;
15966     }
15967
15968   return info_ptr;
15969 }
15970
15971 /* Read an attribute described by an abbreviated attribute.  */
15972
15973 static const gdb_byte *
15974 read_attribute (const struct die_reader_specs *reader,
15975                 struct attribute *attr, struct attr_abbrev *abbrev,
15976                 const gdb_byte *info_ptr)
15977 {
15978   attr->name = abbrev->name;
15979   return read_attribute_value (reader, attr, abbrev->form, info_ptr);
15980 }
15981
15982 /* Read dwarf information from a buffer.  */
15983
15984 static unsigned int
15985 read_1_byte (bfd *abfd, const gdb_byte *buf)
15986 {
15987   return bfd_get_8 (abfd, buf);
15988 }
15989
15990 static int
15991 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
15992 {
15993   return bfd_get_signed_8 (abfd, buf);
15994 }
15995
15996 static unsigned int
15997 read_2_bytes (bfd *abfd, const gdb_byte *buf)
15998 {
15999   return bfd_get_16 (abfd, buf);
16000 }
16001
16002 static int
16003 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
16004 {
16005   return bfd_get_signed_16 (abfd, buf);
16006 }
16007
16008 static unsigned int
16009 read_4_bytes (bfd *abfd, const gdb_byte *buf)
16010 {
16011   return bfd_get_32 (abfd, buf);
16012 }
16013
16014 static int
16015 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
16016 {
16017   return bfd_get_signed_32 (abfd, buf);
16018 }
16019
16020 static ULONGEST
16021 read_8_bytes (bfd *abfd, const gdb_byte *buf)
16022 {
16023   return bfd_get_64 (abfd, buf);
16024 }
16025
16026 static CORE_ADDR
16027 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
16028               unsigned int *bytes_read)
16029 {
16030   struct comp_unit_head *cu_header = &cu->header;
16031   CORE_ADDR retval = 0;
16032
16033   if (cu_header->signed_addr_p)
16034     {
16035       switch (cu_header->addr_size)
16036         {
16037         case 2:
16038           retval = bfd_get_signed_16 (abfd, buf);
16039           break;
16040         case 4:
16041           retval = bfd_get_signed_32 (abfd, buf);
16042           break;
16043         case 8:
16044           retval = bfd_get_signed_64 (abfd, buf);
16045           break;
16046         default:
16047           internal_error (__FILE__, __LINE__,
16048                           _("read_address: bad switch, signed [in module %s]"),
16049                           bfd_get_filename (abfd));
16050         }
16051     }
16052   else
16053     {
16054       switch (cu_header->addr_size)
16055         {
16056         case 2:
16057           retval = bfd_get_16 (abfd, buf);
16058           break;
16059         case 4:
16060           retval = bfd_get_32 (abfd, buf);
16061           break;
16062         case 8:
16063           retval = bfd_get_64 (abfd, buf);
16064           break;
16065         default:
16066           internal_error (__FILE__, __LINE__,
16067                           _("read_address: bad switch, "
16068                             "unsigned [in module %s]"),
16069                           bfd_get_filename (abfd));
16070         }
16071     }
16072
16073   *bytes_read = cu_header->addr_size;
16074   return retval;
16075 }
16076
16077 /* Read the initial length from a section.  The (draft) DWARF 3
16078    specification allows the initial length to take up either 4 bytes
16079    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
16080    bytes describe the length and all offsets will be 8 bytes in length
16081    instead of 4.
16082
16083    An older, non-standard 64-bit format is also handled by this
16084    function.  The older format in question stores the initial length
16085    as an 8-byte quantity without an escape value.  Lengths greater
16086    than 2^32 aren't very common which means that the initial 4 bytes
16087    is almost always zero.  Since a length value of zero doesn't make
16088    sense for the 32-bit format, this initial zero can be considered to
16089    be an escape value which indicates the presence of the older 64-bit
16090    format.  As written, the code can't detect (old format) lengths
16091    greater than 4GB.  If it becomes necessary to handle lengths
16092    somewhat larger than 4GB, we could allow other small values (such
16093    as the non-sensical values of 1, 2, and 3) to also be used as
16094    escape values indicating the presence of the old format.
16095
16096    The value returned via bytes_read should be used to increment the
16097    relevant pointer after calling read_initial_length().
16098
16099    [ Note:  read_initial_length() and read_offset() are based on the
16100      document entitled "DWARF Debugging Information Format", revision
16101      3, draft 8, dated November 19, 2001.  This document was obtained
16102      from:
16103
16104         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
16105
16106      This document is only a draft and is subject to change.  (So beware.)
16107
16108      Details regarding the older, non-standard 64-bit format were
16109      determined empirically by examining 64-bit ELF files produced by
16110      the SGI toolchain on an IRIX 6.5 machine.
16111
16112      - Kevin, July 16, 2002
16113    ] */
16114
16115 static LONGEST
16116 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
16117 {
16118   LONGEST length = bfd_get_32 (abfd, buf);
16119
16120   if (length == 0xffffffff)
16121     {
16122       length = bfd_get_64 (abfd, buf + 4);
16123       *bytes_read = 12;
16124     }
16125   else if (length == 0)
16126     {
16127       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
16128       length = bfd_get_64 (abfd, buf);
16129       *bytes_read = 8;
16130     }
16131   else
16132     {
16133       *bytes_read = 4;
16134     }
16135
16136   return length;
16137 }
16138
16139 /* Cover function for read_initial_length.
16140    Returns the length of the object at BUF, and stores the size of the
16141    initial length in *BYTES_READ and stores the size that offsets will be in
16142    *OFFSET_SIZE.
16143    If the initial length size is not equivalent to that specified in
16144    CU_HEADER then issue a complaint.
16145    This is useful when reading non-comp-unit headers.  */
16146
16147 static LONGEST
16148 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
16149                                         const struct comp_unit_head *cu_header,
16150                                         unsigned int *bytes_read,
16151                                         unsigned int *offset_size)
16152 {
16153   LONGEST length = read_initial_length (abfd, buf, bytes_read);
16154
16155   gdb_assert (cu_header->initial_length_size == 4
16156               || cu_header->initial_length_size == 8
16157               || cu_header->initial_length_size == 12);
16158
16159   if (cu_header->initial_length_size != *bytes_read)
16160     complaint (&symfile_complaints,
16161                _("intermixed 32-bit and 64-bit DWARF sections"));
16162
16163   *offset_size = (*bytes_read == 4) ? 4 : 8;
16164   return length;
16165 }
16166
16167 /* Read an offset from the data stream.  The size of the offset is
16168    given by cu_header->offset_size.  */
16169
16170 static LONGEST
16171 read_offset (bfd *abfd, const gdb_byte *buf,
16172              const struct comp_unit_head *cu_header,
16173              unsigned int *bytes_read)
16174 {
16175   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
16176
16177   *bytes_read = cu_header->offset_size;
16178   return offset;
16179 }
16180
16181 /* Read an offset from the data stream.  */
16182
16183 static LONGEST
16184 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
16185 {
16186   LONGEST retval = 0;
16187
16188   switch (offset_size)
16189     {
16190     case 4:
16191       retval = bfd_get_32 (abfd, buf);
16192       break;
16193     case 8:
16194       retval = bfd_get_64 (abfd, buf);
16195       break;
16196     default:
16197       internal_error (__FILE__, __LINE__,
16198                       _("read_offset_1: bad switch [in module %s]"),
16199                       bfd_get_filename (abfd));
16200     }
16201
16202   return retval;
16203 }
16204
16205 static const gdb_byte *
16206 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
16207 {
16208   /* If the size of a host char is 8 bits, we can return a pointer
16209      to the buffer, otherwise we have to copy the data to a buffer
16210      allocated on the temporary obstack.  */
16211   gdb_assert (HOST_CHAR_BIT == 8);
16212   return buf;
16213 }
16214
16215 static const char *
16216 read_direct_string (bfd *abfd, const gdb_byte *buf,
16217                     unsigned int *bytes_read_ptr)
16218 {
16219   /* If the size of a host char is 8 bits, we can return a pointer
16220      to the string, otherwise we have to copy the string to a buffer
16221      allocated on the temporary obstack.  */
16222   gdb_assert (HOST_CHAR_BIT == 8);
16223   if (*buf == '\0')
16224     {
16225       *bytes_read_ptr = 1;
16226       return NULL;
16227     }
16228   *bytes_read_ptr = strlen ((const char *) buf) + 1;
16229   return (const char *) buf;
16230 }
16231
16232 static const char *
16233 read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
16234 {
16235   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
16236   if (dwarf2_per_objfile->str.buffer == NULL)
16237     error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16238            bfd_get_filename (abfd));
16239   if (str_offset >= dwarf2_per_objfile->str.size)
16240     error (_("DW_FORM_strp pointing outside of "
16241              ".debug_str section [in module %s]"),
16242            bfd_get_filename (abfd));
16243   gdb_assert (HOST_CHAR_BIT == 8);
16244   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
16245     return NULL;
16246   return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
16247 }
16248
16249 /* Read a string at offset STR_OFFSET in the .debug_str section from
16250    the .dwz file DWZ.  Throw an error if the offset is too large.  If
16251    the string consists of a single NUL byte, return NULL; otherwise
16252    return a pointer to the string.  */
16253
16254 static const char *
16255 read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16256 {
16257   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16258
16259   if (dwz->str.buffer == NULL)
16260     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16261              "section [in module %s]"),
16262            bfd_get_filename (dwz->dwz_bfd));
16263   if (str_offset >= dwz->str.size)
16264     error (_("DW_FORM_GNU_strp_alt pointing outside of "
16265              ".debug_str section [in module %s]"),
16266            bfd_get_filename (dwz->dwz_bfd));
16267   gdb_assert (HOST_CHAR_BIT == 8);
16268   if (dwz->str.buffer[str_offset] == '\0')
16269     return NULL;
16270   return (const char *) (dwz->str.buffer + str_offset);
16271 }
16272
16273 static const char *
16274 read_indirect_string (bfd *abfd, const gdb_byte *buf,
16275                       const struct comp_unit_head *cu_header,
16276                       unsigned int *bytes_read_ptr)
16277 {
16278   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16279
16280   return read_indirect_string_at_offset (abfd, str_offset);
16281 }
16282
16283 static ULONGEST
16284 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16285                       unsigned int *bytes_read_ptr)
16286 {
16287   ULONGEST result;
16288   unsigned int num_read;
16289   int i, shift;
16290   unsigned char byte;
16291
16292   result = 0;
16293   shift = 0;
16294   num_read = 0;
16295   i = 0;
16296   while (1)
16297     {
16298       byte = bfd_get_8 (abfd, buf);
16299       buf++;
16300       num_read++;
16301       result |= ((ULONGEST) (byte & 127) << shift);
16302       if ((byte & 128) == 0)
16303         {
16304           break;
16305         }
16306       shift += 7;
16307     }
16308   *bytes_read_ptr = num_read;
16309   return result;
16310 }
16311
16312 static LONGEST
16313 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16314                     unsigned int *bytes_read_ptr)
16315 {
16316   LONGEST result;
16317   int i, shift, num_read;
16318   unsigned char byte;
16319
16320   result = 0;
16321   shift = 0;
16322   num_read = 0;
16323   i = 0;
16324   while (1)
16325     {
16326       byte = bfd_get_8 (abfd, buf);
16327       buf++;
16328       num_read++;
16329       result |= ((LONGEST) (byte & 127) << shift);
16330       shift += 7;
16331       if ((byte & 128) == 0)
16332         {
16333           break;
16334         }
16335     }
16336   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
16337     result |= -(((LONGEST) 1) << shift);
16338   *bytes_read_ptr = num_read;
16339   return result;
16340 }
16341
16342 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
16343    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16344    ADDR_SIZE is the size of addresses from the CU header.  */
16345
16346 static CORE_ADDR
16347 read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16348 {
16349   struct objfile *objfile = dwarf2_per_objfile->objfile;
16350   bfd *abfd = objfile->obfd;
16351   const gdb_byte *info_ptr;
16352
16353   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16354   if (dwarf2_per_objfile->addr.buffer == NULL)
16355     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
16356            objfile_name (objfile));
16357   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16358     error (_("DW_FORM_addr_index pointing outside of "
16359              ".debug_addr section [in module %s]"),
16360            objfile_name (objfile));
16361   info_ptr = (dwarf2_per_objfile->addr.buffer
16362               + addr_base + addr_index * addr_size);
16363   if (addr_size == 4)
16364     return bfd_get_32 (abfd, info_ptr);
16365   else
16366     return bfd_get_64 (abfd, info_ptr);
16367 }
16368
16369 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
16370
16371 static CORE_ADDR
16372 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16373 {
16374   return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16375 }
16376
16377 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
16378
16379 static CORE_ADDR
16380 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
16381                              unsigned int *bytes_read)
16382 {
16383   bfd *abfd = cu->objfile->obfd;
16384   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16385
16386   return read_addr_index (cu, addr_index);
16387 }
16388
16389 /* Data structure to pass results from dwarf2_read_addr_index_reader
16390    back to dwarf2_read_addr_index.  */
16391
16392 struct dwarf2_read_addr_index_data
16393 {
16394   ULONGEST addr_base;
16395   int addr_size;
16396 };
16397
16398 /* die_reader_func for dwarf2_read_addr_index.  */
16399
16400 static void
16401 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
16402                                const gdb_byte *info_ptr,
16403                                struct die_info *comp_unit_die,
16404                                int has_children,
16405                                void *data)
16406 {
16407   struct dwarf2_cu *cu = reader->cu;
16408   struct dwarf2_read_addr_index_data *aidata =
16409     (struct dwarf2_read_addr_index_data *) data;
16410
16411   aidata->addr_base = cu->addr_base;
16412   aidata->addr_size = cu->header.addr_size;
16413 }
16414
16415 /* Given an index in .debug_addr, fetch the value.
16416    NOTE: This can be called during dwarf expression evaluation,
16417    long after the debug information has been read, and thus per_cu->cu
16418    may no longer exist.  */
16419
16420 CORE_ADDR
16421 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16422                         unsigned int addr_index)
16423 {
16424   struct objfile *objfile = per_cu->objfile;
16425   struct dwarf2_cu *cu = per_cu->cu;
16426   ULONGEST addr_base;
16427   int addr_size;
16428
16429   /* This is intended to be called from outside this file.  */
16430   dw2_setup (objfile);
16431
16432   /* We need addr_base and addr_size.
16433      If we don't have PER_CU->cu, we have to get it.
16434      Nasty, but the alternative is storing the needed info in PER_CU,
16435      which at this point doesn't seem justified: it's not clear how frequently
16436      it would get used and it would increase the size of every PER_CU.
16437      Entry points like dwarf2_per_cu_addr_size do a similar thing
16438      so we're not in uncharted territory here.
16439      Alas we need to be a bit more complicated as addr_base is contained
16440      in the DIE.
16441
16442      We don't need to read the entire CU(/TU).
16443      We just need the header and top level die.
16444
16445      IWBN to use the aging mechanism to let us lazily later discard the CU.
16446      For now we skip this optimization.  */
16447
16448   if (cu != NULL)
16449     {
16450       addr_base = cu->addr_base;
16451       addr_size = cu->header.addr_size;
16452     }
16453   else
16454     {
16455       struct dwarf2_read_addr_index_data aidata;
16456
16457       /* Note: We can't use init_cutu_and_read_dies_simple here,
16458          we need addr_base.  */
16459       init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16460                                dwarf2_read_addr_index_reader, &aidata);
16461       addr_base = aidata.addr_base;
16462       addr_size = aidata.addr_size;
16463     }
16464
16465   return read_addr_index_1 (addr_index, addr_base, addr_size);
16466 }
16467
16468 /* Given a DW_FORM_GNU_str_index, fetch the string.
16469    This is only used by the Fission support.  */
16470
16471 static const char *
16472 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
16473 {
16474   struct objfile *objfile = dwarf2_per_objfile->objfile;
16475   const char *objf_name = objfile_name (objfile);
16476   bfd *abfd = objfile->obfd;
16477   struct dwarf2_cu *cu = reader->cu;
16478   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16479   struct dwarf2_section_info *str_offsets_section =
16480     &reader->dwo_file->sections.str_offsets;
16481   const gdb_byte *info_ptr;
16482   ULONGEST str_offset;
16483   static const char form_name[] = "DW_FORM_GNU_str_index";
16484
16485   dwarf2_read_section (objfile, str_section);
16486   dwarf2_read_section (objfile, str_offsets_section);
16487   if (str_section->buffer == NULL)
16488     error (_("%s used without .debug_str.dwo section"
16489              " in CU at offset 0x%lx [in module %s]"),
16490            form_name, (long) cu->header.offset.sect_off, objf_name);
16491   if (str_offsets_section->buffer == NULL)
16492     error (_("%s used without .debug_str_offsets.dwo section"
16493              " in CU at offset 0x%lx [in module %s]"),
16494            form_name, (long) cu->header.offset.sect_off, objf_name);
16495   if (str_index * cu->header.offset_size >= str_offsets_section->size)
16496     error (_("%s pointing outside of .debug_str_offsets.dwo"
16497              " section in CU at offset 0x%lx [in module %s]"),
16498            form_name, (long) cu->header.offset.sect_off, objf_name);
16499   info_ptr = (str_offsets_section->buffer
16500               + str_index * cu->header.offset_size);
16501   if (cu->header.offset_size == 4)
16502     str_offset = bfd_get_32 (abfd, info_ptr);
16503   else
16504     str_offset = bfd_get_64 (abfd, info_ptr);
16505   if (str_offset >= str_section->size)
16506     error (_("Offset from %s pointing outside of"
16507              " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
16508            form_name, (long) cu->header.offset.sect_off, objf_name);
16509   return (const char *) (str_section->buffer + str_offset);
16510 }
16511
16512 /* Return the length of an LEB128 number in BUF.  */
16513
16514 static int
16515 leb128_size (const gdb_byte *buf)
16516 {
16517   const gdb_byte *begin = buf;
16518   gdb_byte byte;
16519
16520   while (1)
16521     {
16522       byte = *buf++;
16523       if ((byte & 128) == 0)
16524         return buf - begin;
16525     }
16526 }
16527
16528 static void
16529 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
16530 {
16531   switch (lang)
16532     {
16533     case DW_LANG_C89:
16534     case DW_LANG_C99:
16535     case DW_LANG_C:
16536     case DW_LANG_UPC:
16537       cu->language = language_c;
16538       break;
16539     case DW_LANG_C_plus_plus:
16540       cu->language = language_cplus;
16541       break;
16542     case DW_LANG_D:
16543       cu->language = language_d;
16544       break;
16545     case DW_LANG_Fortran77:
16546     case DW_LANG_Fortran90:
16547     case DW_LANG_Fortran95:
16548       cu->language = language_fortran;
16549       break;
16550     case DW_LANG_Go:
16551       cu->language = language_go;
16552       break;
16553     case DW_LANG_Mips_Assembler:
16554       cu->language = language_asm;
16555       break;
16556     case DW_LANG_Java:
16557       cu->language = language_java;
16558       break;
16559     case DW_LANG_Ada83:
16560     case DW_LANG_Ada95:
16561       cu->language = language_ada;
16562       break;
16563     case DW_LANG_Modula2:
16564       cu->language = language_m2;
16565       break;
16566     case DW_LANG_Pascal83:
16567       cu->language = language_pascal;
16568       break;
16569     case DW_LANG_ObjC:
16570       cu->language = language_objc;
16571       break;
16572     case DW_LANG_Cobol74:
16573     case DW_LANG_Cobol85:
16574     default:
16575       cu->language = language_minimal;
16576       break;
16577     }
16578   cu->language_defn = language_def (cu->language);
16579 }
16580
16581 /* Return the named attribute or NULL if not there.  */
16582
16583 static struct attribute *
16584 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
16585 {
16586   for (;;)
16587     {
16588       unsigned int i;
16589       struct attribute *spec = NULL;
16590
16591       for (i = 0; i < die->num_attrs; ++i)
16592         {
16593           if (die->attrs[i].name == name)
16594             return &die->attrs[i];
16595           if (die->attrs[i].name == DW_AT_specification
16596               || die->attrs[i].name == DW_AT_abstract_origin)
16597             spec = &die->attrs[i];
16598         }
16599
16600       if (!spec)
16601         break;
16602
16603       die = follow_die_ref (die, spec, &cu);
16604     }
16605
16606   return NULL;
16607 }
16608
16609 /* Return the named attribute or NULL if not there,
16610    but do not follow DW_AT_specification, etc.
16611    This is for use in contexts where we're reading .debug_types dies.
16612    Following DW_AT_specification, DW_AT_abstract_origin will take us
16613    back up the chain, and we want to go down.  */
16614
16615 static struct attribute *
16616 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
16617 {
16618   unsigned int i;
16619
16620   for (i = 0; i < die->num_attrs; ++i)
16621     if (die->attrs[i].name == name)
16622       return &die->attrs[i];
16623
16624   return NULL;
16625 }
16626
16627 /* Return non-zero iff the attribute NAME is defined for the given DIE,
16628    and holds a non-zero value.  This function should only be used for
16629    DW_FORM_flag or DW_FORM_flag_present attributes.  */
16630
16631 static int
16632 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
16633 {
16634   struct attribute *attr = dwarf2_attr (die, name, cu);
16635
16636   return (attr && DW_UNSND (attr));
16637 }
16638
16639 static int
16640 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
16641 {
16642   /* A DIE is a declaration if it has a DW_AT_declaration attribute
16643      which value is non-zero.  However, we have to be careful with
16644      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
16645      (via dwarf2_flag_true_p) follows this attribute.  So we may
16646      end up accidently finding a declaration attribute that belongs
16647      to a different DIE referenced by the specification attribute,
16648      even though the given DIE does not have a declaration attribute.  */
16649   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
16650           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
16651 }
16652
16653 /* Return the die giving the specification for DIE, if there is
16654    one.  *SPEC_CU is the CU containing DIE on input, and the CU
16655    containing the return value on output.  If there is no
16656    specification, but there is an abstract origin, that is
16657    returned.  */
16658
16659 static struct die_info *
16660 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
16661 {
16662   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
16663                                              *spec_cu);
16664
16665   if (spec_attr == NULL)
16666     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
16667
16668   if (spec_attr == NULL)
16669     return NULL;
16670   else
16671     return follow_die_ref (die, spec_attr, spec_cu);
16672 }
16673
16674 /* Free the line_header structure *LH, and any arrays and strings it
16675    refers to.
16676    NOTE: This is also used as a "cleanup" function.  */
16677
16678 static void
16679 free_line_header (struct line_header *lh)
16680 {
16681   if (lh->standard_opcode_lengths)
16682     xfree (lh->standard_opcode_lengths);
16683
16684   /* Remember that all the lh->file_names[i].name pointers are
16685      pointers into debug_line_buffer, and don't need to be freed.  */
16686   if (lh->file_names)
16687     xfree (lh->file_names);
16688
16689   /* Similarly for the include directory names.  */
16690   if (lh->include_dirs)
16691     xfree (lh->include_dirs);
16692
16693   xfree (lh);
16694 }
16695
16696 /* Add an entry to LH's include directory table.  */
16697
16698 static void
16699 add_include_dir (struct line_header *lh, const char *include_dir)
16700 {
16701   /* Grow the array if necessary.  */
16702   if (lh->include_dirs_size == 0)
16703     {
16704       lh->include_dirs_size = 1; /* for testing */
16705       lh->include_dirs = xmalloc (lh->include_dirs_size
16706                                   * sizeof (*lh->include_dirs));
16707     }
16708   else if (lh->num_include_dirs >= lh->include_dirs_size)
16709     {
16710       lh->include_dirs_size *= 2;
16711       lh->include_dirs = xrealloc (lh->include_dirs,
16712                                    (lh->include_dirs_size
16713                                     * sizeof (*lh->include_dirs)));
16714     }
16715
16716   lh->include_dirs[lh->num_include_dirs++] = include_dir;
16717 }
16718
16719 /* Add an entry to LH's file name table.  */
16720
16721 static void
16722 add_file_name (struct line_header *lh,
16723                const char *name,
16724                unsigned int dir_index,
16725                unsigned int mod_time,
16726                unsigned int length)
16727 {
16728   struct file_entry *fe;
16729
16730   /* Grow the array if necessary.  */
16731   if (lh->file_names_size == 0)
16732     {
16733       lh->file_names_size = 1; /* for testing */
16734       lh->file_names = xmalloc (lh->file_names_size
16735                                 * sizeof (*lh->file_names));
16736     }
16737   else if (lh->num_file_names >= lh->file_names_size)
16738     {
16739       lh->file_names_size *= 2;
16740       lh->file_names = xrealloc (lh->file_names,
16741                                  (lh->file_names_size
16742                                   * sizeof (*lh->file_names)));
16743     }
16744
16745   fe = &lh->file_names[lh->num_file_names++];
16746   fe->name = name;
16747   fe->dir_index = dir_index;
16748   fe->mod_time = mod_time;
16749   fe->length = length;
16750   fe->included_p = 0;
16751   fe->symtab = NULL;
16752 }
16753
16754 /* A convenience function to find the proper .debug_line section for a
16755    CU.  */
16756
16757 static struct dwarf2_section_info *
16758 get_debug_line_section (struct dwarf2_cu *cu)
16759 {
16760   struct dwarf2_section_info *section;
16761
16762   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
16763      DWO file.  */
16764   if (cu->dwo_unit && cu->per_cu->is_debug_types)
16765     section = &cu->dwo_unit->dwo_file->sections.line;
16766   else if (cu->per_cu->is_dwz)
16767     {
16768       struct dwz_file *dwz = dwarf2_get_dwz_file ();
16769
16770       section = &dwz->line;
16771     }
16772   else
16773     section = &dwarf2_per_objfile->line;
16774
16775   return section;
16776 }
16777
16778 /* Read the statement program header starting at OFFSET in
16779    .debug_line, or .debug_line.dwo.  Return a pointer
16780    to a struct line_header, allocated using xmalloc.
16781
16782    NOTE: the strings in the include directory and file name tables of
16783    the returned object point into the dwarf line section buffer,
16784    and must not be freed.  */
16785
16786 static struct line_header *
16787 dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
16788 {
16789   struct cleanup *back_to;
16790   struct line_header *lh;
16791   const gdb_byte *line_ptr;
16792   unsigned int bytes_read, offset_size;
16793   int i;
16794   const char *cur_dir, *cur_file;
16795   struct dwarf2_section_info *section;
16796   bfd *abfd;
16797
16798   section = get_debug_line_section (cu);
16799   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
16800   if (section->buffer == NULL)
16801     {
16802       if (cu->dwo_unit && cu->per_cu->is_debug_types)
16803         complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
16804       else
16805         complaint (&symfile_complaints, _("missing .debug_line section"));
16806       return 0;
16807     }
16808
16809   /* We can't do this until we know the section is non-empty.
16810      Only then do we know we have such a section.  */
16811   abfd = get_section_bfd_owner (section);
16812
16813   /* Make sure that at least there's room for the total_length field.
16814      That could be 12 bytes long, but we're just going to fudge that.  */
16815   if (offset + 4 >= section->size)
16816     {
16817       dwarf2_statement_list_fits_in_line_number_section_complaint ();
16818       return 0;
16819     }
16820
16821   lh = xmalloc (sizeof (*lh));
16822   memset (lh, 0, sizeof (*lh));
16823   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
16824                           (void *) lh);
16825
16826   line_ptr = section->buffer + offset;
16827
16828   /* Read in the header.  */
16829   lh->total_length =
16830     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
16831                                             &bytes_read, &offset_size);
16832   line_ptr += bytes_read;
16833   if (line_ptr + lh->total_length > (section->buffer + section->size))
16834     {
16835       dwarf2_statement_list_fits_in_line_number_section_complaint ();
16836       do_cleanups (back_to);
16837       return 0;
16838     }
16839   lh->statement_program_end = line_ptr + lh->total_length;
16840   lh->version = read_2_bytes (abfd, line_ptr);
16841   line_ptr += 2;
16842   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
16843   line_ptr += offset_size;
16844   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
16845   line_ptr += 1;
16846   if (lh->version >= 4)
16847     {
16848       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
16849       line_ptr += 1;
16850     }
16851   else
16852     lh->maximum_ops_per_instruction = 1;
16853
16854   if (lh->maximum_ops_per_instruction == 0)
16855     {
16856       lh->maximum_ops_per_instruction = 1;
16857       complaint (&symfile_complaints,
16858                  _("invalid maximum_ops_per_instruction "
16859                    "in `.debug_line' section"));
16860     }
16861
16862   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
16863   line_ptr += 1;
16864   lh->line_base = read_1_signed_byte (abfd, line_ptr);
16865   line_ptr += 1;
16866   lh->line_range = read_1_byte (abfd, line_ptr);
16867   line_ptr += 1;
16868   lh->opcode_base = read_1_byte (abfd, line_ptr);
16869   line_ptr += 1;
16870   lh->standard_opcode_lengths
16871     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
16872
16873   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
16874   for (i = 1; i < lh->opcode_base; ++i)
16875     {
16876       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
16877       line_ptr += 1;
16878     }
16879
16880   /* Read directory table.  */
16881   while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
16882     {
16883       line_ptr += bytes_read;
16884       add_include_dir (lh, cur_dir);
16885     }
16886   line_ptr += bytes_read;
16887
16888   /* Read file name table.  */
16889   while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
16890     {
16891       unsigned int dir_index, mod_time, length;
16892
16893       line_ptr += bytes_read;
16894       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16895       line_ptr += bytes_read;
16896       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16897       line_ptr += bytes_read;
16898       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
16899       line_ptr += bytes_read;
16900
16901       add_file_name (lh, cur_file, dir_index, mod_time, length);
16902     }
16903   line_ptr += bytes_read;
16904   lh->statement_program_start = line_ptr;
16905
16906   if (line_ptr > (section->buffer + section->size))
16907     complaint (&symfile_complaints,
16908                _("line number info header doesn't "
16909                  "fit in `.debug_line' section"));
16910
16911   discard_cleanups (back_to);
16912   return lh;
16913 }
16914
16915 /* Subroutine of dwarf_decode_lines to simplify it.
16916    Return the file name of the psymtab for included file FILE_INDEX
16917    in line header LH of PST.
16918    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
16919    If space for the result is malloc'd, it will be freed by a cleanup.
16920    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
16921
16922    The function creates dangling cleanup registration.  */
16923
16924 static const char *
16925 psymtab_include_file_name (const struct line_header *lh, int file_index,
16926                            const struct partial_symtab *pst,
16927                            const char *comp_dir)
16928 {
16929   const struct file_entry fe = lh->file_names [file_index];
16930   const char *include_name = fe.name;
16931   const char *include_name_to_compare = include_name;
16932   const char *dir_name = NULL;
16933   const char *pst_filename;
16934   char *copied_name = NULL;
16935   int file_is_pst;
16936
16937   if (fe.dir_index)
16938     dir_name = lh->include_dirs[fe.dir_index - 1];
16939
16940   if (!IS_ABSOLUTE_PATH (include_name)
16941       && (dir_name != NULL || comp_dir != NULL))
16942     {
16943       /* Avoid creating a duplicate psymtab for PST.
16944          We do this by comparing INCLUDE_NAME and PST_FILENAME.
16945          Before we do the comparison, however, we need to account
16946          for DIR_NAME and COMP_DIR.
16947          First prepend dir_name (if non-NULL).  If we still don't
16948          have an absolute path prepend comp_dir (if non-NULL).
16949          However, the directory we record in the include-file's
16950          psymtab does not contain COMP_DIR (to match the
16951          corresponding symtab(s)).
16952
16953          Example:
16954
16955          bash$ cd /tmp
16956          bash$ gcc -g ./hello.c
16957          include_name = "hello.c"
16958          dir_name = "."
16959          DW_AT_comp_dir = comp_dir = "/tmp"
16960          DW_AT_name = "./hello.c"  */
16961
16962       if (dir_name != NULL)
16963         {
16964           char *tem = concat (dir_name, SLASH_STRING,
16965                               include_name, (char *)NULL);
16966
16967           make_cleanup (xfree, tem);
16968           include_name = tem;
16969           include_name_to_compare = include_name;
16970         }
16971       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
16972         {
16973           char *tem = concat (comp_dir, SLASH_STRING,
16974                               include_name, (char *)NULL);
16975
16976           make_cleanup (xfree, tem);
16977           include_name_to_compare = tem;
16978         }
16979     }
16980
16981   pst_filename = pst->filename;
16982   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
16983     {
16984       copied_name = concat (pst->dirname, SLASH_STRING,
16985                             pst_filename, (char *)NULL);
16986       pst_filename = copied_name;
16987     }
16988
16989   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
16990
16991   if (copied_name != NULL)
16992     xfree (copied_name);
16993
16994   if (file_is_pst)
16995     return NULL;
16996   return include_name;
16997 }
16998
16999 /* Ignore this record_line request.  */
17000
17001 static void
17002 noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17003 {
17004   return;
17005 }
17006
17007 /* Subroutine of dwarf_decode_lines to simplify it.
17008    Process the line number information in LH.  */
17009
17010 static void
17011 dwarf_decode_lines_1 (struct line_header *lh, const char *comp_dir,
17012                       struct dwarf2_cu *cu, struct partial_symtab *pst)
17013 {
17014   const gdb_byte *line_ptr, *extended_end;
17015   const gdb_byte *line_end;
17016   unsigned int bytes_read, extended_len;
17017   unsigned char op_code, extended_op, adj_opcode;
17018   CORE_ADDR baseaddr;
17019   struct objfile *objfile = cu->objfile;
17020   bfd *abfd = objfile->obfd;
17021   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17022   const int decode_for_pst_p = (pst != NULL);
17023   struct subfile *last_subfile = NULL;
17024   void (*p_record_line) (struct subfile *subfile, int line, CORE_ADDR pc)
17025     = record_line;
17026
17027   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17028
17029   line_ptr = lh->statement_program_start;
17030   line_end = lh->statement_program_end;
17031
17032   /* Read the statement sequences until there's nothing left.  */
17033   while (line_ptr < line_end)
17034     {
17035       /* state machine registers  */
17036       CORE_ADDR address = 0;
17037       unsigned int file = 1;
17038       unsigned int line = 1;
17039       unsigned int column = 0;
17040       int is_stmt = lh->default_is_stmt;
17041       int basic_block = 0;
17042       int end_sequence = 0;
17043       CORE_ADDR addr;
17044       unsigned char op_index = 0;
17045
17046       if (!decode_for_pst_p && lh->num_file_names >= file)
17047         {
17048           /* Start a subfile for the current file of the state machine.  */
17049           /* lh->include_dirs and lh->file_names are 0-based, but the
17050              directory and file name numbers in the statement program
17051              are 1-based.  */
17052           struct file_entry *fe = &lh->file_names[file - 1];
17053           const char *dir = NULL;
17054
17055           if (fe->dir_index)
17056             dir = lh->include_dirs[fe->dir_index - 1];
17057
17058           dwarf2_start_subfile (fe->name, dir, comp_dir);
17059         }
17060
17061       /* Decode the table.  */
17062       while (!end_sequence)
17063         {
17064           op_code = read_1_byte (abfd, line_ptr);
17065           line_ptr += 1;
17066           if (line_ptr > line_end)
17067             {
17068               dwarf2_debug_line_missing_end_sequence_complaint ();
17069               break;
17070             }
17071
17072           if (op_code >= lh->opcode_base)
17073             {
17074               /* Special operand.  */
17075               adj_opcode = op_code - lh->opcode_base;
17076               address += (((op_index + (adj_opcode / lh->line_range))
17077                            / lh->maximum_ops_per_instruction)
17078                           * lh->minimum_instruction_length);
17079               op_index = ((op_index + (adj_opcode / lh->line_range))
17080                           % lh->maximum_ops_per_instruction);
17081               line += lh->line_base + (adj_opcode % lh->line_range);
17082               if (lh->num_file_names < file || file == 0)
17083                 dwarf2_debug_line_missing_file_complaint ();
17084               /* For now we ignore lines not starting on an
17085                  instruction boundary.  */
17086               else if (op_index == 0)
17087                 {
17088                   lh->file_names[file - 1].included_p = 1;
17089                   if (!decode_for_pst_p && is_stmt)
17090                     {
17091                       if (last_subfile != current_subfile)
17092                         {
17093                           addr = gdbarch_addr_bits_remove (gdbarch, address);
17094                           if (last_subfile)
17095                             (*p_record_line) (last_subfile, 0, addr);
17096                           last_subfile = current_subfile;
17097                         }
17098                       /* Append row to matrix using current values.  */
17099                       addr = gdbarch_addr_bits_remove (gdbarch, address);
17100                       (*p_record_line) (current_subfile, line, addr);
17101                     }
17102                 }
17103               basic_block = 0;
17104             }
17105           else switch (op_code)
17106             {
17107             case DW_LNS_extended_op:
17108               extended_len = read_unsigned_leb128 (abfd, line_ptr,
17109                                                    &bytes_read);
17110               line_ptr += bytes_read;
17111               extended_end = line_ptr + extended_len;
17112               extended_op = read_1_byte (abfd, line_ptr);
17113               line_ptr += 1;
17114               switch (extended_op)
17115                 {
17116                 case DW_LNE_end_sequence:
17117                   p_record_line = record_line;
17118                   end_sequence = 1;
17119                   break;
17120                 case DW_LNE_set_address:
17121                   address = read_address (abfd, line_ptr, cu, &bytes_read);
17122
17123                   if (address == 0 && !dwarf2_per_objfile->has_section_at_zero)
17124                     {
17125                       /* This line table is for a function which has been
17126                          GCd by the linker.  Ignore it.  PR gdb/12528 */
17127
17128                       long line_offset
17129                         = line_ptr - get_debug_line_section (cu)->buffer;
17130
17131                       complaint (&symfile_complaints,
17132                                  _(".debug_line address at offset 0x%lx is 0 "
17133                                    "[in module %s]"),
17134                                  line_offset, objfile_name (objfile));
17135                       p_record_line = noop_record_line;
17136                     }
17137
17138                   op_index = 0;
17139                   line_ptr += bytes_read;
17140                   address += baseaddr;
17141                   break;
17142                 case DW_LNE_define_file:
17143                   {
17144                     const char *cur_file;
17145                     unsigned int dir_index, mod_time, length;
17146
17147                     cur_file = read_direct_string (abfd, line_ptr,
17148                                                    &bytes_read);
17149                     line_ptr += bytes_read;
17150                     dir_index =
17151                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17152                     line_ptr += bytes_read;
17153                     mod_time =
17154                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17155                     line_ptr += bytes_read;
17156                     length =
17157                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17158                     line_ptr += bytes_read;
17159                     add_file_name (lh, cur_file, dir_index, mod_time, length);
17160                   }
17161                   break;
17162                 case DW_LNE_set_discriminator:
17163                   /* The discriminator is not interesting to the debugger;
17164                      just ignore it.  */
17165                   line_ptr = extended_end;
17166                   break;
17167                 default:
17168                   complaint (&symfile_complaints,
17169                              _("mangled .debug_line section"));
17170                   return;
17171                 }
17172               /* Make sure that we parsed the extended op correctly.  If e.g.
17173                  we expected a different address size than the producer used,
17174                  we may have read the wrong number of bytes.  */
17175               if (line_ptr != extended_end)
17176                 {
17177                   complaint (&symfile_complaints,
17178                              _("mangled .debug_line section"));
17179                   return;
17180                 }
17181               break;
17182             case DW_LNS_copy:
17183               if (lh->num_file_names < file || file == 0)
17184                 dwarf2_debug_line_missing_file_complaint ();
17185               else
17186                 {
17187                   lh->file_names[file - 1].included_p = 1;
17188                   if (!decode_for_pst_p && is_stmt)
17189                     {
17190                       if (last_subfile != current_subfile)
17191                         {
17192                           addr = gdbarch_addr_bits_remove (gdbarch, address);
17193                           if (last_subfile)
17194                             (*p_record_line) (last_subfile, 0, addr);
17195                           last_subfile = current_subfile;
17196                         }
17197                       addr = gdbarch_addr_bits_remove (gdbarch, address);
17198                       (*p_record_line) (current_subfile, line, addr);
17199                     }
17200                 }
17201               basic_block = 0;
17202               break;
17203             case DW_LNS_advance_pc:
17204               {
17205                 CORE_ADDR adjust
17206                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17207
17208                 address += (((op_index + adjust)
17209                              / lh->maximum_ops_per_instruction)
17210                             * lh->minimum_instruction_length);
17211                 op_index = ((op_index + adjust)
17212                             % lh->maximum_ops_per_instruction);
17213                 line_ptr += bytes_read;
17214               }
17215               break;
17216             case DW_LNS_advance_line:
17217               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
17218               line_ptr += bytes_read;
17219               break;
17220             case DW_LNS_set_file:
17221               {
17222                 /* The arrays lh->include_dirs and lh->file_names are
17223                    0-based, but the directory and file name numbers in
17224                    the statement program are 1-based.  */
17225                 struct file_entry *fe;
17226                 const char *dir = NULL;
17227
17228                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17229                 line_ptr += bytes_read;
17230                 if (lh->num_file_names < file || file == 0)
17231                   dwarf2_debug_line_missing_file_complaint ();
17232                 else
17233                   {
17234                     fe = &lh->file_names[file - 1];
17235                     if (fe->dir_index)
17236                       dir = lh->include_dirs[fe->dir_index - 1];
17237                     if (!decode_for_pst_p)
17238                       {
17239                         last_subfile = current_subfile;
17240                         dwarf2_start_subfile (fe->name, dir, comp_dir);
17241                       }
17242                   }
17243               }
17244               break;
17245             case DW_LNS_set_column:
17246               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17247               line_ptr += bytes_read;
17248               break;
17249             case DW_LNS_negate_stmt:
17250               is_stmt = (!is_stmt);
17251               break;
17252             case DW_LNS_set_basic_block:
17253               basic_block = 1;
17254               break;
17255             /* Add to the address register of the state machine the
17256                address increment value corresponding to special opcode
17257                255.  I.e., this value is scaled by the minimum
17258                instruction length since special opcode 255 would have
17259                scaled the increment.  */
17260             case DW_LNS_const_add_pc:
17261               {
17262                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
17263
17264                 address += (((op_index + adjust)
17265                              / lh->maximum_ops_per_instruction)
17266                             * lh->minimum_instruction_length);
17267                 op_index = ((op_index + adjust)
17268                             % lh->maximum_ops_per_instruction);
17269               }
17270               break;
17271             case DW_LNS_fixed_advance_pc:
17272               address += read_2_bytes (abfd, line_ptr);
17273               op_index = 0;
17274               line_ptr += 2;
17275               break;
17276             default:
17277               {
17278                 /* Unknown standard opcode, ignore it.  */
17279                 int i;
17280
17281                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
17282                   {
17283                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17284                     line_ptr += bytes_read;
17285                   }
17286               }
17287             }
17288         }
17289       if (lh->num_file_names < file || file == 0)
17290         dwarf2_debug_line_missing_file_complaint ();
17291       else
17292         {
17293           lh->file_names[file - 1].included_p = 1;
17294           if (!decode_for_pst_p)
17295             {
17296               addr = gdbarch_addr_bits_remove (gdbarch, address);
17297               (*p_record_line) (current_subfile, 0, addr);
17298             }
17299         }
17300     }
17301 }
17302
17303 /* Decode the Line Number Program (LNP) for the given line_header
17304    structure and CU.  The actual information extracted and the type
17305    of structures created from the LNP depends on the value of PST.
17306
17307    1. If PST is NULL, then this procedure uses the data from the program
17308       to create all necessary symbol tables, and their linetables.
17309
17310    2. If PST is not NULL, this procedure reads the program to determine
17311       the list of files included by the unit represented by PST, and
17312       builds all the associated partial symbol tables.
17313
17314    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17315    It is used for relative paths in the line table.
17316    NOTE: When processing partial symtabs (pst != NULL),
17317    comp_dir == pst->dirname.
17318
17319    NOTE: It is important that psymtabs have the same file name (via strcmp)
17320    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
17321    symtab we don't use it in the name of the psymtabs we create.
17322    E.g. expand_line_sal requires this when finding psymtabs to expand.
17323    A good testcase for this is mb-inline.exp.  */
17324
17325 static void
17326 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
17327                     struct dwarf2_cu *cu, struct partial_symtab *pst,
17328                     int want_line_info)
17329 {
17330   struct objfile *objfile = cu->objfile;
17331   const int decode_for_pst_p = (pst != NULL);
17332   struct subfile *first_subfile = current_subfile;
17333
17334   if (want_line_info)
17335     dwarf_decode_lines_1 (lh, comp_dir, cu, pst);
17336
17337   if (decode_for_pst_p)
17338     {
17339       int file_index;
17340
17341       /* Now that we're done scanning the Line Header Program, we can
17342          create the psymtab of each included file.  */
17343       for (file_index = 0; file_index < lh->num_file_names; file_index++)
17344         if (lh->file_names[file_index].included_p == 1)
17345           {
17346             const char *include_name =
17347               psymtab_include_file_name (lh, file_index, pst, comp_dir);
17348             if (include_name != NULL)
17349               dwarf2_create_include_psymtab (include_name, pst, objfile);
17350           }
17351     }
17352   else
17353     {
17354       /* Make sure a symtab is created for every file, even files
17355          which contain only variables (i.e. no code with associated
17356          line numbers).  */
17357       int i;
17358
17359       for (i = 0; i < lh->num_file_names; i++)
17360         {
17361           const char *dir = NULL;
17362           struct file_entry *fe;
17363
17364           fe = &lh->file_names[i];
17365           if (fe->dir_index)
17366             dir = lh->include_dirs[fe->dir_index - 1];
17367           dwarf2_start_subfile (fe->name, dir, comp_dir);
17368
17369           /* Skip the main file; we don't need it, and it must be
17370              allocated last, so that it will show up before the
17371              non-primary symtabs in the objfile's symtab list.  */
17372           if (current_subfile == first_subfile)
17373             continue;
17374
17375           if (current_subfile->symtab == NULL)
17376             current_subfile->symtab = allocate_symtab (current_subfile->name,
17377                                                        objfile);
17378           fe->symtab = current_subfile->symtab;
17379         }
17380     }
17381 }
17382
17383 /* Start a subfile for DWARF.  FILENAME is the name of the file and
17384    DIRNAME the name of the source directory which contains FILENAME
17385    or NULL if not known.  COMP_DIR is the compilation directory for the
17386    linetable's compilation unit or NULL if not known.
17387    This routine tries to keep line numbers from identical absolute and
17388    relative file names in a common subfile.
17389
17390    Using the `list' example from the GDB testsuite, which resides in
17391    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
17392    of /srcdir/list0.c yields the following debugging information for list0.c:
17393
17394    DW_AT_name:          /srcdir/list0.c
17395    DW_AT_comp_dir:              /compdir
17396    files.files[0].name: list0.h
17397    files.files[0].dir:  /srcdir
17398    files.files[1].name: list0.c
17399    files.files[1].dir:  /srcdir
17400
17401    The line number information for list0.c has to end up in a single
17402    subfile, so that `break /srcdir/list0.c:1' works as expected.
17403    start_subfile will ensure that this happens provided that we pass the
17404    concatenation of files.files[1].dir and files.files[1].name as the
17405    subfile's name.  */
17406
17407 static void
17408 dwarf2_start_subfile (const char *filename, const char *dirname,
17409                       const char *comp_dir)
17410 {
17411   char *copy = NULL;
17412
17413   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
17414      `start_symtab' will always pass the contents of DW_AT_comp_dir as
17415      second argument to start_subfile.  To be consistent, we do the
17416      same here.  In order not to lose the line information directory,
17417      we concatenate it to the filename when it makes sense.
17418      Note that the Dwarf3 standard says (speaking of filenames in line
17419      information): ``The directory index is ignored for file names
17420      that represent full path names''.  Thus ignoring dirname in the
17421      `else' branch below isn't an issue.  */
17422
17423   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
17424     {
17425       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
17426       filename = copy;
17427     }
17428
17429   start_subfile (filename, comp_dir);
17430
17431   if (copy != NULL)
17432     xfree (copy);
17433 }
17434
17435 /* Start a symtab for DWARF.
17436    NAME, COMP_DIR, LOW_PC are passed to start_symtab.  */
17437
17438 static void
17439 dwarf2_start_symtab (struct dwarf2_cu *cu,
17440                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
17441 {
17442   start_symtab (name, comp_dir, low_pc);
17443   record_debugformat ("DWARF 2");
17444   record_producer (cu->producer);
17445
17446   /* We assume that we're processing GCC output.  */
17447   processing_gcc_compilation = 2;
17448
17449   cu->processing_has_namespace_info = 0;
17450 }
17451
17452 static void
17453 var_decode_location (struct attribute *attr, struct symbol *sym,
17454                      struct dwarf2_cu *cu)
17455 {
17456   struct objfile *objfile = cu->objfile;
17457   struct comp_unit_head *cu_header = &cu->header;
17458
17459   /* NOTE drow/2003-01-30: There used to be a comment and some special
17460      code here to turn a symbol with DW_AT_external and a
17461      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
17462      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
17463      with some versions of binutils) where shared libraries could have
17464      relocations against symbols in their debug information - the
17465      minimal symbol would have the right address, but the debug info
17466      would not.  It's no longer necessary, because we will explicitly
17467      apply relocations when we read in the debug information now.  */
17468
17469   /* A DW_AT_location attribute with no contents indicates that a
17470      variable has been optimized away.  */
17471   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
17472     {
17473       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17474       return;
17475     }
17476
17477   /* Handle one degenerate form of location expression specially, to
17478      preserve GDB's previous behavior when section offsets are
17479      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
17480      then mark this symbol as LOC_STATIC.  */
17481
17482   if (attr_form_is_block (attr)
17483       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
17484            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
17485           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
17486               && (DW_BLOCK (attr)->size
17487                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
17488     {
17489       unsigned int dummy;
17490
17491       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
17492         SYMBOL_VALUE_ADDRESS (sym) =
17493           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
17494       else
17495         SYMBOL_VALUE_ADDRESS (sym) =
17496           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
17497       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
17498       fixup_symbol_section (sym, objfile);
17499       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
17500                                               SYMBOL_SECTION (sym));
17501       return;
17502     }
17503
17504   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
17505      expression evaluator, and use LOC_COMPUTED only when necessary
17506      (i.e. when the value of a register or memory location is
17507      referenced, or a thread-local block, etc.).  Then again, it might
17508      not be worthwhile.  I'm assuming that it isn't unless performance
17509      or memory numbers show me otherwise.  */
17510
17511   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
17512
17513   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
17514     cu->has_loclist = 1;
17515 }
17516
17517 /* Given a pointer to a DWARF information entry, figure out if we need
17518    to make a symbol table entry for it, and if so, create a new entry
17519    and return a pointer to it.
17520    If TYPE is NULL, determine symbol type from the die, otherwise
17521    used the passed type.
17522    If SPACE is not NULL, use it to hold the new symbol.  If it is
17523    NULL, allocate a new symbol on the objfile's obstack.  */
17524
17525 static struct symbol *
17526 new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
17527                  struct symbol *space)
17528 {
17529   struct objfile *objfile = cu->objfile;
17530   struct symbol *sym = NULL;
17531   const char *name;
17532   struct attribute *attr = NULL;
17533   struct attribute *attr2 = NULL;
17534   CORE_ADDR baseaddr;
17535   struct pending **list_to_add = NULL;
17536
17537   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
17538
17539   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
17540
17541   name = dwarf2_name (die, cu);
17542   if (name)
17543     {
17544       const char *linkagename;
17545       int suppress_add = 0;
17546
17547       if (space)
17548         sym = space;
17549       else
17550         sym = allocate_symbol (objfile);
17551       OBJSTAT (objfile, n_syms++);
17552
17553       /* Cache this symbol's name and the name's demangled form (if any).  */
17554       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
17555       linkagename = dwarf2_physname (name, die, cu);
17556       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
17557
17558       /* Fortran does not have mangling standard and the mangling does differ
17559          between gfortran, iFort etc.  */
17560       if (cu->language == language_fortran
17561           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
17562         symbol_set_demangled_name (&(sym->ginfo),
17563                                    dwarf2_full_name (name, die, cu),
17564                                    NULL);
17565
17566       /* Default assumptions.
17567          Use the passed type or decode it from the die.  */
17568       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17569       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
17570       if (type != NULL)
17571         SYMBOL_TYPE (sym) = type;
17572       else
17573         SYMBOL_TYPE (sym) = die_type (die, cu);
17574       attr = dwarf2_attr (die,
17575                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
17576                           cu);
17577       if (attr)
17578         {
17579           SYMBOL_LINE (sym) = DW_UNSND (attr);
17580         }
17581
17582       attr = dwarf2_attr (die,
17583                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
17584                           cu);
17585       if (attr)
17586         {
17587           int file_index = DW_UNSND (attr);
17588
17589           if (cu->line_header == NULL
17590               || file_index > cu->line_header->num_file_names)
17591             complaint (&symfile_complaints,
17592                        _("file index out of range"));
17593           else if (file_index > 0)
17594             {
17595               struct file_entry *fe;
17596
17597               fe = &cu->line_header->file_names[file_index - 1];
17598               SYMBOL_SYMTAB (sym) = fe->symtab;
17599             }
17600         }
17601
17602       switch (die->tag)
17603         {
17604         case DW_TAG_label:
17605           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
17606           if (attr)
17607             SYMBOL_VALUE_ADDRESS (sym)
17608               = attr_value_as_address (attr) + baseaddr;
17609           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
17610           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
17611           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
17612           add_symbol_to_list (sym, cu->list_in_scope);
17613           break;
17614         case DW_TAG_subprogram:
17615           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17616              finish_block.  */
17617           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17618           attr2 = dwarf2_attr (die, DW_AT_external, cu);
17619           if ((attr2 && (DW_UNSND (attr2) != 0))
17620               || cu->language == language_ada)
17621             {
17622               /* Subprograms marked external are stored as a global symbol.
17623                  Ada subprograms, whether marked external or not, are always
17624                  stored as a global symbol, because we want to be able to
17625                  access them globally.  For instance, we want to be able
17626                  to break on a nested subprogram without having to
17627                  specify the context.  */
17628               list_to_add = &global_symbols;
17629             }
17630           else
17631             {
17632               list_to_add = cu->list_in_scope;
17633             }
17634           break;
17635         case DW_TAG_inlined_subroutine:
17636           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
17637              finish_block.  */
17638           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
17639           SYMBOL_INLINED (sym) = 1;
17640           list_to_add = cu->list_in_scope;
17641           break;
17642         case DW_TAG_template_value_param:
17643           suppress_add = 1;
17644           /* Fall through.  */
17645         case DW_TAG_constant:
17646         case DW_TAG_variable:
17647         case DW_TAG_member:
17648           /* Compilation with minimal debug info may result in
17649              variables with missing type entries.  Change the
17650              misleading `void' type to something sensible.  */
17651           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
17652             SYMBOL_TYPE (sym)
17653               = objfile_type (objfile)->nodebug_data_symbol;
17654
17655           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17656           /* In the case of DW_TAG_member, we should only be called for
17657              static const members.  */
17658           if (die->tag == DW_TAG_member)
17659             {
17660               /* dwarf2_add_field uses die_is_declaration,
17661                  so we do the same.  */
17662               gdb_assert (die_is_declaration (die, cu));
17663               gdb_assert (attr);
17664             }
17665           if (attr)
17666             {
17667               dwarf2_const_value (attr, sym, cu);
17668               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17669               if (!suppress_add)
17670                 {
17671                   if (attr2 && (DW_UNSND (attr2) != 0))
17672                     list_to_add = &global_symbols;
17673                   else
17674                     list_to_add = cu->list_in_scope;
17675                 }
17676               break;
17677             }
17678           attr = dwarf2_attr (die, DW_AT_location, cu);
17679           if (attr)
17680             {
17681               var_decode_location (attr, sym, cu);
17682               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17683
17684               /* Fortran explicitly imports any global symbols to the local
17685                  scope by DW_TAG_common_block.  */
17686               if (cu->language == language_fortran && die->parent
17687                   && die->parent->tag == DW_TAG_common_block)
17688                 attr2 = NULL;
17689
17690               if (SYMBOL_CLASS (sym) == LOC_STATIC
17691                   && SYMBOL_VALUE_ADDRESS (sym) == 0
17692                   && !dwarf2_per_objfile->has_section_at_zero)
17693                 {
17694                   /* When a static variable is eliminated by the linker,
17695                      the corresponding debug information is not stripped
17696                      out, but the variable address is set to null;
17697                      do not add such variables into symbol table.  */
17698                 }
17699               else if (attr2 && (DW_UNSND (attr2) != 0))
17700                 {
17701                   /* Workaround gfortran PR debug/40040 - it uses
17702                      DW_AT_location for variables in -fPIC libraries which may
17703                      get overriden by other libraries/executable and get
17704                      a different address.  Resolve it by the minimal symbol
17705                      which may come from inferior's executable using copy
17706                      relocation.  Make this workaround only for gfortran as for
17707                      other compilers GDB cannot guess the minimal symbol
17708                      Fortran mangling kind.  */
17709                   if (cu->language == language_fortran && die->parent
17710                       && die->parent->tag == DW_TAG_module
17711                       && cu->producer
17712                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
17713                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
17714
17715                   /* A variable with DW_AT_external is never static,
17716                      but it may be block-scoped.  */
17717                   list_to_add = (cu->list_in_scope == &file_symbols
17718                                  ? &global_symbols : cu->list_in_scope);
17719                 }
17720               else
17721                 list_to_add = cu->list_in_scope;
17722             }
17723           else
17724             {
17725               /* We do not know the address of this symbol.
17726                  If it is an external symbol and we have type information
17727                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
17728                  The address of the variable will then be determined from
17729                  the minimal symbol table whenever the variable is
17730                  referenced.  */
17731               attr2 = dwarf2_attr (die, DW_AT_external, cu);
17732
17733               /* Fortran explicitly imports any global symbols to the local
17734                  scope by DW_TAG_common_block.  */
17735               if (cu->language == language_fortran && die->parent
17736                   && die->parent->tag == DW_TAG_common_block)
17737                 {
17738                   /* SYMBOL_CLASS doesn't matter here because
17739                      read_common_block is going to reset it.  */
17740                   if (!suppress_add)
17741                     list_to_add = cu->list_in_scope;
17742                 }
17743               else if (attr2 && (DW_UNSND (attr2) != 0)
17744                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
17745                 {
17746                   /* A variable with DW_AT_external is never static, but it
17747                      may be block-scoped.  */
17748                   list_to_add = (cu->list_in_scope == &file_symbols
17749                                  ? &global_symbols : cu->list_in_scope);
17750
17751                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
17752                 }
17753               else if (!die_is_declaration (die, cu))
17754                 {
17755                   /* Use the default LOC_OPTIMIZED_OUT class.  */
17756                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
17757                   if (!suppress_add)
17758                     list_to_add = cu->list_in_scope;
17759                 }
17760             }
17761           break;
17762         case DW_TAG_formal_parameter:
17763           /* If we are inside a function, mark this as an argument.  If
17764              not, we might be looking at an argument to an inlined function
17765              when we do not have enough information to show inlined frames;
17766              pretend it's a local variable in that case so that the user can
17767              still see it.  */
17768           if (context_stack_depth > 0
17769               && context_stack[context_stack_depth - 1].name != NULL)
17770             SYMBOL_IS_ARGUMENT (sym) = 1;
17771           attr = dwarf2_attr (die, DW_AT_location, cu);
17772           if (attr)
17773             {
17774               var_decode_location (attr, sym, cu);
17775             }
17776           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17777           if (attr)
17778             {
17779               dwarf2_const_value (attr, sym, cu);
17780             }
17781
17782           list_to_add = cu->list_in_scope;
17783           break;
17784         case DW_TAG_unspecified_parameters:
17785           /* From varargs functions; gdb doesn't seem to have any
17786              interest in this information, so just ignore it for now.
17787              (FIXME?) */
17788           break;
17789         case DW_TAG_template_type_param:
17790           suppress_add = 1;
17791           /* Fall through.  */
17792         case DW_TAG_class_type:
17793         case DW_TAG_interface_type:
17794         case DW_TAG_structure_type:
17795         case DW_TAG_union_type:
17796         case DW_TAG_set_type:
17797         case DW_TAG_enumeration_type:
17798           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17799           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
17800
17801           {
17802             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
17803                really ever be static objects: otherwise, if you try
17804                to, say, break of a class's method and you're in a file
17805                which doesn't mention that class, it won't work unless
17806                the check for all static symbols in lookup_symbol_aux
17807                saves you.  See the OtherFileClass tests in
17808                gdb.c++/namespace.exp.  */
17809
17810             if (!suppress_add)
17811               {
17812                 list_to_add = (cu->list_in_scope == &file_symbols
17813                                && (cu->language == language_cplus
17814                                    || cu->language == language_java)
17815                                ? &global_symbols : cu->list_in_scope);
17816
17817                 /* The semantics of C++ state that "struct foo {
17818                    ... }" also defines a typedef for "foo".  A Java
17819                    class declaration also defines a typedef for the
17820                    class.  */
17821                 if (cu->language == language_cplus
17822                     || cu->language == language_java
17823                     || cu->language == language_ada)
17824                   {
17825                     /* The symbol's name is already allocated along
17826                        with this objfile, so we don't need to
17827                        duplicate it for the type.  */
17828                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
17829                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
17830                   }
17831               }
17832           }
17833           break;
17834         case DW_TAG_typedef:
17835           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17836           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17837           list_to_add = cu->list_in_scope;
17838           break;
17839         case DW_TAG_base_type:
17840         case DW_TAG_subrange_type:
17841           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17842           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
17843           list_to_add = cu->list_in_scope;
17844           break;
17845         case DW_TAG_enumerator:
17846           attr = dwarf2_attr (die, DW_AT_const_value, cu);
17847           if (attr)
17848             {
17849               dwarf2_const_value (attr, sym, cu);
17850             }
17851           {
17852             /* NOTE: carlton/2003-11-10: See comment above in the
17853                DW_TAG_class_type, etc. block.  */
17854
17855             list_to_add = (cu->list_in_scope == &file_symbols
17856                            && (cu->language == language_cplus
17857                                || cu->language == language_java)
17858                            ? &global_symbols : cu->list_in_scope);
17859           }
17860           break;
17861         case DW_TAG_imported_declaration:
17862         case DW_TAG_namespace:
17863           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17864           list_to_add = &global_symbols;
17865           break;
17866         case DW_TAG_module:
17867           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
17868           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
17869           list_to_add = &global_symbols;
17870           break;
17871         case DW_TAG_common_block:
17872           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
17873           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
17874           add_symbol_to_list (sym, cu->list_in_scope);
17875           break;
17876         default:
17877           /* Not a tag we recognize.  Hopefully we aren't processing
17878              trash data, but since we must specifically ignore things
17879              we don't recognize, there is nothing else we should do at
17880              this point.  */
17881           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
17882                      dwarf_tag_name (die->tag));
17883           break;
17884         }
17885
17886       if (suppress_add)
17887         {
17888           sym->hash_next = objfile->template_symbols;
17889           objfile->template_symbols = sym;
17890           list_to_add = NULL;
17891         }
17892
17893       if (list_to_add != NULL)
17894         add_symbol_to_list (sym, list_to_add);
17895
17896       /* For the benefit of old versions of GCC, check for anonymous
17897          namespaces based on the demangled name.  */
17898       if (!cu->processing_has_namespace_info
17899           && cu->language == language_cplus)
17900         cp_scan_for_anonymous_namespaces (sym, objfile);
17901     }
17902   return (sym);
17903 }
17904
17905 /* A wrapper for new_symbol_full that always allocates a new symbol.  */
17906
17907 static struct symbol *
17908 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
17909 {
17910   return new_symbol_full (die, type, cu, NULL);
17911 }
17912
17913 /* Given an attr with a DW_FORM_dataN value in host byte order,
17914    zero-extend it as appropriate for the symbol's type.  The DWARF
17915    standard (v4) is not entirely clear about the meaning of using
17916    DW_FORM_dataN for a constant with a signed type, where the type is
17917    wider than the data.  The conclusion of a discussion on the DWARF
17918    list was that this is unspecified.  We choose to always zero-extend
17919    because that is the interpretation long in use by GCC.  */
17920
17921 static gdb_byte *
17922 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
17923                          struct dwarf2_cu *cu, LONGEST *value, int bits)
17924 {
17925   struct objfile *objfile = cu->objfile;
17926   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
17927                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
17928   LONGEST l = DW_UNSND (attr);
17929
17930   if (bits < sizeof (*value) * 8)
17931     {
17932       l &= ((LONGEST) 1 << bits) - 1;
17933       *value = l;
17934     }
17935   else if (bits == sizeof (*value) * 8)
17936     *value = l;
17937   else
17938     {
17939       gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
17940       store_unsigned_integer (bytes, bits / 8, byte_order, l);
17941       return bytes;
17942     }
17943
17944   return NULL;
17945 }
17946
17947 /* Read a constant value from an attribute.  Either set *VALUE, or if
17948    the value does not fit in *VALUE, set *BYTES - either already
17949    allocated on the objfile obstack, or newly allocated on OBSTACK,
17950    or, set *BATON, if we translated the constant to a location
17951    expression.  */
17952
17953 static void
17954 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
17955                          const char *name, struct obstack *obstack,
17956                          struct dwarf2_cu *cu,
17957                          LONGEST *value, const gdb_byte **bytes,
17958                          struct dwarf2_locexpr_baton **baton)
17959 {
17960   struct objfile *objfile = cu->objfile;
17961   struct comp_unit_head *cu_header = &cu->header;
17962   struct dwarf_block *blk;
17963   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
17964                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
17965
17966   *value = 0;
17967   *bytes = NULL;
17968   *baton = NULL;
17969
17970   switch (attr->form)
17971     {
17972     case DW_FORM_addr:
17973     case DW_FORM_GNU_addr_index:
17974       {
17975         gdb_byte *data;
17976
17977         if (TYPE_LENGTH (type) != cu_header->addr_size)
17978           dwarf2_const_value_length_mismatch_complaint (name,
17979                                                         cu_header->addr_size,
17980                                                         TYPE_LENGTH (type));
17981         /* Symbols of this form are reasonably rare, so we just
17982            piggyback on the existing location code rather than writing
17983            a new implementation of symbol_computed_ops.  */
17984         *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
17985         (*baton)->per_cu = cu->per_cu;
17986         gdb_assert ((*baton)->per_cu);
17987
17988         (*baton)->size = 2 + cu_header->addr_size;
17989         data = obstack_alloc (obstack, (*baton)->size);
17990         (*baton)->data = data;
17991
17992         data[0] = DW_OP_addr;
17993         store_unsigned_integer (&data[1], cu_header->addr_size,
17994                                 byte_order, DW_ADDR (attr));
17995         data[cu_header->addr_size + 1] = DW_OP_stack_value;
17996       }
17997       break;
17998     case DW_FORM_string:
17999     case DW_FORM_strp:
18000     case DW_FORM_GNU_str_index:
18001     case DW_FORM_GNU_strp_alt:
18002       /* DW_STRING is already allocated on the objfile obstack, point
18003          directly to it.  */
18004       *bytes = (const gdb_byte *) DW_STRING (attr);
18005       break;
18006     case DW_FORM_block1:
18007     case DW_FORM_block2:
18008     case DW_FORM_block4:
18009     case DW_FORM_block:
18010     case DW_FORM_exprloc:
18011       blk = DW_BLOCK (attr);
18012       if (TYPE_LENGTH (type) != blk->size)
18013         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18014                                                       TYPE_LENGTH (type));
18015       *bytes = blk->data;
18016       break;
18017
18018       /* The DW_AT_const_value attributes are supposed to carry the
18019          symbol's value "represented as it would be on the target
18020          architecture."  By the time we get here, it's already been
18021          converted to host endianness, so we just need to sign- or
18022          zero-extend it as appropriate.  */
18023     case DW_FORM_data1:
18024       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
18025       break;
18026     case DW_FORM_data2:
18027       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
18028       break;
18029     case DW_FORM_data4:
18030       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
18031       break;
18032     case DW_FORM_data8:
18033       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
18034       break;
18035
18036     case DW_FORM_sdata:
18037       *value = DW_SND (attr);
18038       break;
18039
18040     case DW_FORM_udata:
18041       *value = DW_UNSND (attr);
18042       break;
18043
18044     default:
18045       complaint (&symfile_complaints,
18046                  _("unsupported const value attribute form: '%s'"),
18047                  dwarf_form_name (attr->form));
18048       *value = 0;
18049       break;
18050     }
18051 }
18052
18053
18054 /* Copy constant value from an attribute to a symbol.  */
18055
18056 static void
18057 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
18058                     struct dwarf2_cu *cu)
18059 {
18060   struct objfile *objfile = cu->objfile;
18061   struct comp_unit_head *cu_header = &cu->header;
18062   LONGEST value;
18063   const gdb_byte *bytes;
18064   struct dwarf2_locexpr_baton *baton;
18065
18066   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18067                            SYMBOL_PRINT_NAME (sym),
18068                            &objfile->objfile_obstack, cu,
18069                            &value, &bytes, &baton);
18070
18071   if (baton != NULL)
18072     {
18073       SYMBOL_LOCATION_BATON (sym) = baton;
18074       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
18075     }
18076   else if (bytes != NULL)
18077      {
18078       SYMBOL_VALUE_BYTES (sym) = bytes;
18079       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
18080     }
18081   else
18082     {
18083       SYMBOL_VALUE (sym) = value;
18084       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
18085     }
18086 }
18087
18088 /* Return the type of the die in question using its DW_AT_type attribute.  */
18089
18090 static struct type *
18091 die_type (struct die_info *die, struct dwarf2_cu *cu)
18092 {
18093   struct attribute *type_attr;
18094
18095   type_attr = dwarf2_attr (die, DW_AT_type, cu);
18096   if (!type_attr)
18097     {
18098       /* A missing DW_AT_type represents a void type.  */
18099       return objfile_type (cu->objfile)->builtin_void;
18100     }
18101
18102   return lookup_die_type (die, type_attr, cu);
18103 }
18104
18105 /* True iff CU's producer generates GNAT Ada auxiliary information
18106    that allows to find parallel types through that information instead
18107    of having to do expensive parallel lookups by type name.  */
18108
18109 static int
18110 need_gnat_info (struct dwarf2_cu *cu)
18111 {
18112   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18113      of GNAT produces this auxiliary information, without any indication
18114      that it is produced.  Part of enhancing the FSF version of GNAT
18115      to produce that information will be to put in place an indicator
18116      that we can use in order to determine whether the descriptive type
18117      info is available or not.  One suggestion that has been made is
18118      to use a new attribute, attached to the CU die.  For now, assume
18119      that the descriptive type info is not available.  */
18120   return 0;
18121 }
18122
18123 /* Return the auxiliary type of the die in question using its
18124    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
18125    attribute is not present.  */
18126
18127 static struct type *
18128 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18129 {
18130   struct attribute *type_attr;
18131
18132   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18133   if (!type_attr)
18134     return NULL;
18135
18136   return lookup_die_type (die, type_attr, cu);
18137 }
18138
18139 /* If DIE has a descriptive_type attribute, then set the TYPE's
18140    descriptive type accordingly.  */
18141
18142 static void
18143 set_descriptive_type (struct type *type, struct die_info *die,
18144                       struct dwarf2_cu *cu)
18145 {
18146   struct type *descriptive_type = die_descriptive_type (die, cu);
18147
18148   if (descriptive_type)
18149     {
18150       ALLOCATE_GNAT_AUX_TYPE (type);
18151       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18152     }
18153 }
18154
18155 /* Return the containing type of the die in question using its
18156    DW_AT_containing_type attribute.  */
18157
18158 static struct type *
18159 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
18160 {
18161   struct attribute *type_attr;
18162
18163   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
18164   if (!type_attr)
18165     error (_("Dwarf Error: Problem turning containing type into gdb type "
18166              "[in module %s]"), objfile_name (cu->objfile));
18167
18168   return lookup_die_type (die, type_attr, cu);
18169 }
18170
18171 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
18172
18173 static struct type *
18174 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18175 {
18176   struct objfile *objfile = dwarf2_per_objfile->objfile;
18177   char *message, *saved;
18178
18179   message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
18180                         objfile_name (objfile),
18181                         cu->header.offset.sect_off,
18182                         die->offset.sect_off);
18183   saved = obstack_copy0 (&objfile->objfile_obstack,
18184                          message, strlen (message));
18185   xfree (message);
18186
18187   return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18188 }
18189
18190 /* Look up the type of DIE in CU using its type attribute ATTR.
18191    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18192    DW_AT_containing_type.
18193    If there is no type substitute an error marker.  */
18194
18195 static struct type *
18196 lookup_die_type (struct die_info *die, const struct attribute *attr,
18197                  struct dwarf2_cu *cu)
18198 {
18199   struct objfile *objfile = cu->objfile;
18200   struct type *this_type;
18201
18202   gdb_assert (attr->name == DW_AT_type
18203               || attr->name == DW_AT_GNAT_descriptive_type
18204               || attr->name == DW_AT_containing_type);
18205
18206   /* First see if we have it cached.  */
18207
18208   if (attr->form == DW_FORM_GNU_ref_alt)
18209     {
18210       struct dwarf2_per_cu_data *per_cu;
18211       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18212
18213       per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18214       this_type = get_die_type_at_offset (offset, per_cu);
18215     }
18216   else if (attr_form_is_ref (attr))
18217     {
18218       sect_offset offset = dwarf2_get_ref_die_offset (attr);
18219
18220       this_type = get_die_type_at_offset (offset, cu->per_cu);
18221     }
18222   else if (attr->form == DW_FORM_ref_sig8)
18223     {
18224       ULONGEST signature = DW_SIGNATURE (attr);
18225
18226       return get_signatured_type (die, signature, cu);
18227     }
18228   else
18229     {
18230       complaint (&symfile_complaints,
18231                  _("Dwarf Error: Bad type attribute %s in DIE"
18232                    " at 0x%x [in module %s]"),
18233                  dwarf_attr_name (attr->name), die->offset.sect_off,
18234                  objfile_name (objfile));
18235       return build_error_marker_type (cu, die);
18236     }
18237
18238   /* If not cached we need to read it in.  */
18239
18240   if (this_type == NULL)
18241     {
18242       struct die_info *type_die = NULL;
18243       struct dwarf2_cu *type_cu = cu;
18244
18245       if (attr_form_is_ref (attr))
18246         type_die = follow_die_ref (die, attr, &type_cu);
18247       if (type_die == NULL)
18248         return build_error_marker_type (cu, die);
18249       /* If we find the type now, it's probably because the type came
18250          from an inter-CU reference and the type's CU got expanded before
18251          ours.  */
18252       this_type = read_type_die (type_die, type_cu);
18253     }
18254
18255   /* If we still don't have a type use an error marker.  */
18256
18257   if (this_type == NULL)
18258     return build_error_marker_type (cu, die);
18259
18260   return this_type;
18261 }
18262
18263 /* Return the type in DIE, CU.
18264    Returns NULL for invalid types.
18265
18266    This first does a lookup in die_type_hash,
18267    and only reads the die in if necessary.
18268
18269    NOTE: This can be called when reading in partial or full symbols.  */
18270
18271 static struct type *
18272 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
18273 {
18274   struct type *this_type;
18275
18276   this_type = get_die_type (die, cu);
18277   if (this_type)
18278     return this_type;
18279
18280   return read_type_die_1 (die, cu);
18281 }
18282
18283 /* Read the type in DIE, CU.
18284    Returns NULL for invalid types.  */
18285
18286 static struct type *
18287 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
18288 {
18289   struct type *this_type = NULL;
18290
18291   switch (die->tag)
18292     {
18293     case DW_TAG_class_type:
18294     case DW_TAG_interface_type:
18295     case DW_TAG_structure_type:
18296     case DW_TAG_union_type:
18297       this_type = read_structure_type (die, cu);
18298       break;
18299     case DW_TAG_enumeration_type:
18300       this_type = read_enumeration_type (die, cu);
18301       break;
18302     case DW_TAG_subprogram:
18303     case DW_TAG_subroutine_type:
18304     case DW_TAG_inlined_subroutine:
18305       this_type = read_subroutine_type (die, cu);
18306       break;
18307     case DW_TAG_array_type:
18308       this_type = read_array_type (die, cu);
18309       break;
18310     case DW_TAG_set_type:
18311       this_type = read_set_type (die, cu);
18312       break;
18313     case DW_TAG_pointer_type:
18314       this_type = read_tag_pointer_type (die, cu);
18315       break;
18316     case DW_TAG_ptr_to_member_type:
18317       this_type = read_tag_ptr_to_member_type (die, cu);
18318       break;
18319     case DW_TAG_reference_type:
18320       this_type = read_tag_reference_type (die, cu);
18321       break;
18322     case DW_TAG_const_type:
18323       this_type = read_tag_const_type (die, cu);
18324       break;
18325     case DW_TAG_volatile_type:
18326       this_type = read_tag_volatile_type (die, cu);
18327       break;
18328     case DW_TAG_restrict_type:
18329       this_type = read_tag_restrict_type (die, cu);
18330       break;
18331     case DW_TAG_string_type:
18332       this_type = read_tag_string_type (die, cu);
18333       break;
18334     case DW_TAG_typedef:
18335       this_type = read_typedef (die, cu);
18336       break;
18337     case DW_TAG_subrange_type:
18338       this_type = read_subrange_type (die, cu);
18339       break;
18340     case DW_TAG_base_type:
18341       this_type = read_base_type (die, cu);
18342       break;
18343     case DW_TAG_unspecified_type:
18344       this_type = read_unspecified_type (die, cu);
18345       break;
18346     case DW_TAG_namespace:
18347       this_type = read_namespace_type (die, cu);
18348       break;
18349     case DW_TAG_module:
18350       this_type = read_module_type (die, cu);
18351       break;
18352     default:
18353       complaint (&symfile_complaints,
18354                  _("unexpected tag in read_type_die: '%s'"),
18355                  dwarf_tag_name (die->tag));
18356       break;
18357     }
18358
18359   return this_type;
18360 }
18361
18362 /* See if we can figure out if the class lives in a namespace.  We do
18363    this by looking for a member function; its demangled name will
18364    contain namespace info, if there is any.
18365    Return the computed name or NULL.
18366    Space for the result is allocated on the objfile's obstack.
18367    This is the full-die version of guess_partial_die_structure_name.
18368    In this case we know DIE has no useful parent.  */
18369
18370 static char *
18371 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
18372 {
18373   struct die_info *spec_die;
18374   struct dwarf2_cu *spec_cu;
18375   struct die_info *child;
18376
18377   spec_cu = cu;
18378   spec_die = die_specification (die, &spec_cu);
18379   if (spec_die != NULL)
18380     {
18381       die = spec_die;
18382       cu = spec_cu;
18383     }
18384
18385   for (child = die->child;
18386        child != NULL;
18387        child = child->sibling)
18388     {
18389       if (child->tag == DW_TAG_subprogram)
18390         {
18391           struct attribute *attr;
18392
18393           attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
18394           if (attr == NULL)
18395             attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
18396           if (attr != NULL)
18397             {
18398               char *actual_name
18399                 = language_class_name_from_physname (cu->language_defn,
18400                                                      DW_STRING (attr));
18401               char *name = NULL;
18402
18403               if (actual_name != NULL)
18404                 {
18405                   const char *die_name = dwarf2_name (die, cu);
18406
18407                   if (die_name != NULL
18408                       && strcmp (die_name, actual_name) != 0)
18409                     {
18410                       /* Strip off the class name from the full name.
18411                          We want the prefix.  */
18412                       int die_name_len = strlen (die_name);
18413                       int actual_name_len = strlen (actual_name);
18414
18415                       /* Test for '::' as a sanity check.  */
18416                       if (actual_name_len > die_name_len + 2
18417                           && actual_name[actual_name_len
18418                                          - die_name_len - 1] == ':')
18419                         name =
18420                           obstack_copy0 (&cu->objfile->objfile_obstack,
18421                                          actual_name,
18422                                          actual_name_len - die_name_len - 2);
18423                     }
18424                 }
18425               xfree (actual_name);
18426               return name;
18427             }
18428         }
18429     }
18430
18431   return NULL;
18432 }
18433
18434 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
18435    prefix part in such case.  See
18436    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18437
18438 static char *
18439 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
18440 {
18441   struct attribute *attr;
18442   char *base;
18443
18444   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
18445       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
18446     return NULL;
18447
18448   attr = dwarf2_attr (die, DW_AT_name, cu);
18449   if (attr != NULL && DW_STRING (attr) != NULL)
18450     return NULL;
18451
18452   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18453   if (attr == NULL)
18454     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18455   if (attr == NULL || DW_STRING (attr) == NULL)
18456     return NULL;
18457
18458   /* dwarf2_name had to be already called.  */
18459   gdb_assert (DW_STRING_IS_CANONICAL (attr));
18460
18461   /* Strip the base name, keep any leading namespaces/classes.  */
18462   base = strrchr (DW_STRING (attr), ':');
18463   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
18464     return "";
18465
18466   return obstack_copy0 (&cu->objfile->objfile_obstack,
18467                         DW_STRING (attr), &base[-1] - DW_STRING (attr));
18468 }
18469
18470 /* Return the name of the namespace/class that DIE is defined within,
18471    or "" if we can't tell.  The caller should not xfree the result.
18472
18473    For example, if we're within the method foo() in the following
18474    code:
18475
18476    namespace N {
18477      class C {
18478        void foo () {
18479        }
18480      };
18481    }
18482
18483    then determine_prefix on foo's die will return "N::C".  */
18484
18485 static const char *
18486 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
18487 {
18488   struct die_info *parent, *spec_die;
18489   struct dwarf2_cu *spec_cu;
18490   struct type *parent_type;
18491   char *retval;
18492
18493   if (cu->language != language_cplus && cu->language != language_java
18494       && cu->language != language_fortran)
18495     return "";
18496
18497   retval = anonymous_struct_prefix (die, cu);
18498   if (retval)
18499     return retval;
18500
18501   /* We have to be careful in the presence of DW_AT_specification.
18502      For example, with GCC 3.4, given the code
18503
18504      namespace N {
18505        void foo() {
18506          // Definition of N::foo.
18507        }
18508      }
18509
18510      then we'll have a tree of DIEs like this:
18511
18512      1: DW_TAG_compile_unit
18513        2: DW_TAG_namespace        // N
18514          3: DW_TAG_subprogram     // declaration of N::foo
18515        4: DW_TAG_subprogram       // definition of N::foo
18516             DW_AT_specification   // refers to die #3
18517
18518      Thus, when processing die #4, we have to pretend that we're in
18519      the context of its DW_AT_specification, namely the contex of die
18520      #3.  */
18521   spec_cu = cu;
18522   spec_die = die_specification (die, &spec_cu);
18523   if (spec_die == NULL)
18524     parent = die->parent;
18525   else
18526     {
18527       parent = spec_die->parent;
18528       cu = spec_cu;
18529     }
18530
18531   if (parent == NULL)
18532     return "";
18533   else if (parent->building_fullname)
18534     {
18535       const char *name;
18536       const char *parent_name;
18537
18538       /* It has been seen on RealView 2.2 built binaries,
18539          DW_TAG_template_type_param types actually _defined_ as
18540          children of the parent class:
18541
18542          enum E {};
18543          template class <class Enum> Class{};
18544          Class<enum E> class_e;
18545
18546          1: DW_TAG_class_type (Class)
18547            2: DW_TAG_enumeration_type (E)
18548              3: DW_TAG_enumerator (enum1:0)
18549              3: DW_TAG_enumerator (enum2:1)
18550              ...
18551            2: DW_TAG_template_type_param
18552               DW_AT_type  DW_FORM_ref_udata (E)
18553
18554          Besides being broken debug info, it can put GDB into an
18555          infinite loop.  Consider:
18556
18557          When we're building the full name for Class<E>, we'll start
18558          at Class, and go look over its template type parameters,
18559          finding E.  We'll then try to build the full name of E, and
18560          reach here.  We're now trying to build the full name of E,
18561          and look over the parent DIE for containing scope.  In the
18562          broken case, if we followed the parent DIE of E, we'd again
18563          find Class, and once again go look at its template type
18564          arguments, etc., etc.  Simply don't consider such parent die
18565          as source-level parent of this die (it can't be, the language
18566          doesn't allow it), and break the loop here.  */
18567       name = dwarf2_name (die, cu);
18568       parent_name = dwarf2_name (parent, cu);
18569       complaint (&symfile_complaints,
18570                  _("template param type '%s' defined within parent '%s'"),
18571                  name ? name : "<unknown>",
18572                  parent_name ? parent_name : "<unknown>");
18573       return "";
18574     }
18575   else
18576     switch (parent->tag)
18577       {
18578       case DW_TAG_namespace:
18579         parent_type = read_type_die (parent, cu);
18580         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
18581            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
18582            Work around this problem here.  */
18583         if (cu->language == language_cplus
18584             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
18585           return "";
18586         /* We give a name to even anonymous namespaces.  */
18587         return TYPE_TAG_NAME (parent_type);
18588       case DW_TAG_class_type:
18589       case DW_TAG_interface_type:
18590       case DW_TAG_structure_type:
18591       case DW_TAG_union_type:
18592       case DW_TAG_module:
18593         parent_type = read_type_die (parent, cu);
18594         if (TYPE_TAG_NAME (parent_type) != NULL)
18595           return TYPE_TAG_NAME (parent_type);
18596         else
18597           /* An anonymous structure is only allowed non-static data
18598              members; no typedefs, no member functions, et cetera.
18599              So it does not need a prefix.  */
18600           return "";
18601       case DW_TAG_compile_unit:
18602       case DW_TAG_partial_unit:
18603         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
18604         if (cu->language == language_cplus
18605             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
18606             && die->child != NULL
18607             && (die->tag == DW_TAG_class_type
18608                 || die->tag == DW_TAG_structure_type
18609                 || die->tag == DW_TAG_union_type))
18610           {
18611             char *name = guess_full_die_structure_name (die, cu);
18612             if (name != NULL)
18613               return name;
18614           }
18615         return "";
18616       case DW_TAG_enumeration_type:
18617         parent_type = read_type_die (parent, cu);
18618         if (TYPE_DECLARED_CLASS (parent_type))
18619           {
18620             if (TYPE_TAG_NAME (parent_type) != NULL)
18621               return TYPE_TAG_NAME (parent_type);
18622             return "";
18623           }
18624         /* Fall through.  */
18625       default:
18626         return determine_prefix (parent, cu);
18627       }
18628 }
18629
18630 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
18631    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
18632    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
18633    an obconcat, otherwise allocate storage for the result.  The CU argument is
18634    used to determine the language and hence, the appropriate separator.  */
18635
18636 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
18637
18638 static char *
18639 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
18640                  int physname, struct dwarf2_cu *cu)
18641 {
18642   const char *lead = "";
18643   const char *sep;
18644
18645   if (suffix == NULL || suffix[0] == '\0'
18646       || prefix == NULL || prefix[0] == '\0')
18647     sep = "";
18648   else if (cu->language == language_java)
18649     sep = ".";
18650   else if (cu->language == language_fortran && physname)
18651     {
18652       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
18653          DW_AT_MIPS_linkage_name is preferred and used instead.  */
18654
18655       lead = "__";
18656       sep = "_MOD_";
18657     }
18658   else
18659     sep = "::";
18660
18661   if (prefix == NULL)
18662     prefix = "";
18663   if (suffix == NULL)
18664     suffix = "";
18665
18666   if (obs == NULL)
18667     {
18668       char *retval
18669         = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
18670
18671       strcpy (retval, lead);
18672       strcat (retval, prefix);
18673       strcat (retval, sep);
18674       strcat (retval, suffix);
18675       return retval;
18676     }
18677   else
18678     {
18679       /* We have an obstack.  */
18680       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
18681     }
18682 }
18683
18684 /* Return sibling of die, NULL if no sibling.  */
18685
18686 static struct die_info *
18687 sibling_die (struct die_info *die)
18688 {
18689   return die->sibling;
18690 }
18691
18692 /* Get name of a die, return NULL if not found.  */
18693
18694 static const char *
18695 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
18696                           struct obstack *obstack)
18697 {
18698   if (name && cu->language == language_cplus)
18699     {
18700       char *canon_name = cp_canonicalize_string (name);
18701
18702       if (canon_name != NULL)
18703         {
18704           if (strcmp (canon_name, name) != 0)
18705             name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
18706           xfree (canon_name);
18707         }
18708     }
18709
18710   return name;
18711 }
18712
18713 /* Get name of a die, return NULL if not found.  */
18714
18715 static const char *
18716 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
18717 {
18718   struct attribute *attr;
18719
18720   attr = dwarf2_attr (die, DW_AT_name, cu);
18721   if ((!attr || !DW_STRING (attr))
18722       && die->tag != DW_TAG_class_type
18723       && die->tag != DW_TAG_interface_type
18724       && die->tag != DW_TAG_structure_type
18725       && die->tag != DW_TAG_union_type)
18726     return NULL;
18727
18728   switch (die->tag)
18729     {
18730     case DW_TAG_compile_unit:
18731     case DW_TAG_partial_unit:
18732       /* Compilation units have a DW_AT_name that is a filename, not
18733          a source language identifier.  */
18734     case DW_TAG_enumeration_type:
18735     case DW_TAG_enumerator:
18736       /* These tags always have simple identifiers already; no need
18737          to canonicalize them.  */
18738       return DW_STRING (attr);
18739
18740     case DW_TAG_subprogram:
18741       /* Java constructors will all be named "<init>", so return
18742          the class name when we see this special case.  */
18743       if (cu->language == language_java
18744           && DW_STRING (attr) != NULL
18745           && strcmp (DW_STRING (attr), "<init>") == 0)
18746         {
18747           struct dwarf2_cu *spec_cu = cu;
18748           struct die_info *spec_die;
18749
18750           /* GCJ will output '<init>' for Java constructor names.
18751              For this special case, return the name of the parent class.  */
18752
18753           /* GCJ may output suprogram DIEs with AT_specification set.
18754              If so, use the name of the specified DIE.  */
18755           spec_die = die_specification (die, &spec_cu);
18756           if (spec_die != NULL)
18757             return dwarf2_name (spec_die, spec_cu);
18758
18759           do
18760             {
18761               die = die->parent;
18762               if (die->tag == DW_TAG_class_type)
18763                 return dwarf2_name (die, cu);
18764             }
18765           while (die->tag != DW_TAG_compile_unit
18766                  && die->tag != DW_TAG_partial_unit);
18767         }
18768       break;
18769
18770     case DW_TAG_class_type:
18771     case DW_TAG_interface_type:
18772     case DW_TAG_structure_type:
18773     case DW_TAG_union_type:
18774       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
18775          structures or unions.  These were of the form "._%d" in GCC 4.1,
18776          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
18777          and GCC 4.4.  We work around this problem by ignoring these.  */
18778       if (attr && DW_STRING (attr)
18779           && (strncmp (DW_STRING (attr), "._", 2) == 0
18780               || strncmp (DW_STRING (attr), "<anonymous", 10) == 0))
18781         return NULL;
18782
18783       /* GCC might emit a nameless typedef that has a linkage name.  See
18784          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18785       if (!attr || DW_STRING (attr) == NULL)
18786         {
18787           char *demangled = NULL;
18788
18789           attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
18790           if (attr == NULL)
18791             attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
18792
18793           if (attr == NULL || DW_STRING (attr) == NULL)
18794             return NULL;
18795
18796           /* Avoid demangling DW_STRING (attr) the second time on a second
18797              call for the same DIE.  */
18798           if (!DW_STRING_IS_CANONICAL (attr))
18799             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
18800
18801           if (demangled)
18802             {
18803               char *base;
18804
18805               /* FIXME: we already did this for the partial symbol... */
18806               DW_STRING (attr) = obstack_copy0 (&cu->objfile->objfile_obstack,
18807                                                 demangled, strlen (demangled));
18808               DW_STRING_IS_CANONICAL (attr) = 1;
18809               xfree (demangled);
18810
18811               /* Strip any leading namespaces/classes, keep only the base name.
18812                  DW_AT_name for named DIEs does not contain the prefixes.  */
18813               base = strrchr (DW_STRING (attr), ':');
18814               if (base && base > DW_STRING (attr) && base[-1] == ':')
18815                 return &base[1];
18816               else
18817                 return DW_STRING (attr);
18818             }
18819         }
18820       break;
18821
18822     default:
18823       break;
18824     }
18825
18826   if (!DW_STRING_IS_CANONICAL (attr))
18827     {
18828       DW_STRING (attr)
18829         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
18830                                     &cu->objfile->objfile_obstack);
18831       DW_STRING_IS_CANONICAL (attr) = 1;
18832     }
18833   return DW_STRING (attr);
18834 }
18835
18836 /* Return the die that this die in an extension of, or NULL if there
18837    is none.  *EXT_CU is the CU containing DIE on input, and the CU
18838    containing the return value on output.  */
18839
18840 static struct die_info *
18841 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
18842 {
18843   struct attribute *attr;
18844
18845   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
18846   if (attr == NULL)
18847     return NULL;
18848
18849   return follow_die_ref (die, attr, ext_cu);
18850 }
18851
18852 /* Convert a DIE tag into its string name.  */
18853
18854 static const char *
18855 dwarf_tag_name (unsigned tag)
18856 {
18857   const char *name = get_DW_TAG_name (tag);
18858
18859   if (name == NULL)
18860     return "DW_TAG_<unknown>";
18861
18862   return name;
18863 }
18864
18865 /* Convert a DWARF attribute code into its string name.  */
18866
18867 static const char *
18868 dwarf_attr_name (unsigned attr)
18869 {
18870   const char *name;
18871
18872 #ifdef MIPS /* collides with DW_AT_HP_block_index */
18873   if (attr == DW_AT_MIPS_fde)
18874     return "DW_AT_MIPS_fde";
18875 #else
18876   if (attr == DW_AT_HP_block_index)
18877     return "DW_AT_HP_block_index";
18878 #endif
18879
18880   name = get_DW_AT_name (attr);
18881
18882   if (name == NULL)
18883     return "DW_AT_<unknown>";
18884
18885   return name;
18886 }
18887
18888 /* Convert a DWARF value form code into its string name.  */
18889
18890 static const char *
18891 dwarf_form_name (unsigned form)
18892 {
18893   const char *name = get_DW_FORM_name (form);
18894
18895   if (name == NULL)
18896     return "DW_FORM_<unknown>";
18897
18898   return name;
18899 }
18900
18901 static char *
18902 dwarf_bool_name (unsigned mybool)
18903 {
18904   if (mybool)
18905     return "TRUE";
18906   else
18907     return "FALSE";
18908 }
18909
18910 /* Convert a DWARF type code into its string name.  */
18911
18912 static const char *
18913 dwarf_type_encoding_name (unsigned enc)
18914 {
18915   const char *name = get_DW_ATE_name (enc);
18916
18917   if (name == NULL)
18918     return "DW_ATE_<unknown>";
18919
18920   return name;
18921 }
18922
18923 static void
18924 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
18925 {
18926   unsigned int i;
18927
18928   print_spaces (indent, f);
18929   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
18930            dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
18931
18932   if (die->parent != NULL)
18933     {
18934       print_spaces (indent, f);
18935       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
18936                           die->parent->offset.sect_off);
18937     }
18938
18939   print_spaces (indent, f);
18940   fprintf_unfiltered (f, "  has children: %s\n",
18941            dwarf_bool_name (die->child != NULL));
18942
18943   print_spaces (indent, f);
18944   fprintf_unfiltered (f, "  attributes:\n");
18945
18946   for (i = 0; i < die->num_attrs; ++i)
18947     {
18948       print_spaces (indent, f);
18949       fprintf_unfiltered (f, "    %s (%s) ",
18950                dwarf_attr_name (die->attrs[i].name),
18951                dwarf_form_name (die->attrs[i].form));
18952
18953       switch (die->attrs[i].form)
18954         {
18955         case DW_FORM_addr:
18956         case DW_FORM_GNU_addr_index:
18957           fprintf_unfiltered (f, "address: ");
18958           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
18959           break;
18960         case DW_FORM_block2:
18961         case DW_FORM_block4:
18962         case DW_FORM_block:
18963         case DW_FORM_block1:
18964           fprintf_unfiltered (f, "block: size %s",
18965                               pulongest (DW_BLOCK (&die->attrs[i])->size));
18966           break;
18967         case DW_FORM_exprloc:
18968           fprintf_unfiltered (f, "expression: size %s",
18969                               pulongest (DW_BLOCK (&die->attrs[i])->size));
18970           break;
18971         case DW_FORM_ref_addr:
18972           fprintf_unfiltered (f, "ref address: ");
18973           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
18974           break;
18975         case DW_FORM_GNU_ref_alt:
18976           fprintf_unfiltered (f, "alt ref address: ");
18977           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
18978           break;
18979         case DW_FORM_ref1:
18980         case DW_FORM_ref2:
18981         case DW_FORM_ref4:
18982         case DW_FORM_ref8:
18983         case DW_FORM_ref_udata:
18984           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
18985                               (long) (DW_UNSND (&die->attrs[i])));
18986           break;
18987         case DW_FORM_data1:
18988         case DW_FORM_data2:
18989         case DW_FORM_data4:
18990         case DW_FORM_data8:
18991         case DW_FORM_udata:
18992         case DW_FORM_sdata:
18993           fprintf_unfiltered (f, "constant: %s",
18994                               pulongest (DW_UNSND (&die->attrs[i])));
18995           break;
18996         case DW_FORM_sec_offset:
18997           fprintf_unfiltered (f, "section offset: %s",
18998                               pulongest (DW_UNSND (&die->attrs[i])));
18999           break;
19000         case DW_FORM_ref_sig8:
19001           fprintf_unfiltered (f, "signature: %s",
19002                               hex_string (DW_SIGNATURE (&die->attrs[i])));
19003           break;
19004         case DW_FORM_string:
19005         case DW_FORM_strp:
19006         case DW_FORM_GNU_str_index:
19007         case DW_FORM_GNU_strp_alt:
19008           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
19009                    DW_STRING (&die->attrs[i])
19010                    ? DW_STRING (&die->attrs[i]) : "",
19011                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
19012           break;
19013         case DW_FORM_flag:
19014           if (DW_UNSND (&die->attrs[i]))
19015             fprintf_unfiltered (f, "flag: TRUE");
19016           else
19017             fprintf_unfiltered (f, "flag: FALSE");
19018           break;
19019         case DW_FORM_flag_present:
19020           fprintf_unfiltered (f, "flag: TRUE");
19021           break;
19022         case DW_FORM_indirect:
19023           /* The reader will have reduced the indirect form to
19024              the "base form" so this form should not occur.  */
19025           fprintf_unfiltered (f, 
19026                               "unexpected attribute form: DW_FORM_indirect");
19027           break;
19028         default:
19029           fprintf_unfiltered (f, "unsupported attribute form: %d.",
19030                    die->attrs[i].form);
19031           break;
19032         }
19033       fprintf_unfiltered (f, "\n");
19034     }
19035 }
19036
19037 static void
19038 dump_die_for_error (struct die_info *die)
19039 {
19040   dump_die_shallow (gdb_stderr, 0, die);
19041 }
19042
19043 static void
19044 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19045 {
19046   int indent = level * 4;
19047
19048   gdb_assert (die != NULL);
19049
19050   if (level >= max_level)
19051     return;
19052
19053   dump_die_shallow (f, indent, die);
19054
19055   if (die->child != NULL)
19056     {
19057       print_spaces (indent, f);
19058       fprintf_unfiltered (f, "  Children:");
19059       if (level + 1 < max_level)
19060         {
19061           fprintf_unfiltered (f, "\n");
19062           dump_die_1 (f, level + 1, max_level, die->child);
19063         }
19064       else
19065         {
19066           fprintf_unfiltered (f,
19067                               " [not printed, max nesting level reached]\n");
19068         }
19069     }
19070
19071   if (die->sibling != NULL && level > 0)
19072     {
19073       dump_die_1 (f, level, max_level, die->sibling);
19074     }
19075 }
19076
19077 /* This is called from the pdie macro in gdbinit.in.
19078    It's not static so gcc will keep a copy callable from gdb.  */
19079
19080 void
19081 dump_die (struct die_info *die, int max_level)
19082 {
19083   dump_die_1 (gdb_stdlog, 0, max_level, die);
19084 }
19085
19086 static void
19087 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
19088 {
19089   void **slot;
19090
19091   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19092                                    INSERT);
19093
19094   *slot = die;
19095 }
19096
19097 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
19098    required kind.  */
19099
19100 static sect_offset
19101 dwarf2_get_ref_die_offset (const struct attribute *attr)
19102 {
19103   sect_offset retval = { DW_UNSND (attr) };
19104
19105   if (attr_form_is_ref (attr))
19106     return retval;
19107
19108   retval.sect_off = 0;
19109   complaint (&symfile_complaints,
19110              _("unsupported die ref attribute form: '%s'"),
19111              dwarf_form_name (attr->form));
19112   return retval;
19113 }
19114
19115 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
19116  * the value held by the attribute is not constant.  */
19117
19118 static LONGEST
19119 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
19120 {
19121   if (attr->form == DW_FORM_sdata)
19122     return DW_SND (attr);
19123   else if (attr->form == DW_FORM_udata
19124            || attr->form == DW_FORM_data1
19125            || attr->form == DW_FORM_data2
19126            || attr->form == DW_FORM_data4
19127            || attr->form == DW_FORM_data8)
19128     return DW_UNSND (attr);
19129   else
19130     {
19131       complaint (&symfile_complaints,
19132                  _("Attribute value is not a constant (%s)"),
19133                  dwarf_form_name (attr->form));
19134       return default_value;
19135     }
19136 }
19137
19138 /* Follow reference or signature attribute ATTR of SRC_DIE.
19139    On entry *REF_CU is the CU of SRC_DIE.
19140    On exit *REF_CU is the CU of the result.  */
19141
19142 static struct die_info *
19143 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
19144                        struct dwarf2_cu **ref_cu)
19145 {
19146   struct die_info *die;
19147
19148   if (attr_form_is_ref (attr))
19149     die = follow_die_ref (src_die, attr, ref_cu);
19150   else if (attr->form == DW_FORM_ref_sig8)
19151     die = follow_die_sig (src_die, attr, ref_cu);
19152   else
19153     {
19154       dump_die_for_error (src_die);
19155       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
19156              objfile_name ((*ref_cu)->objfile));
19157     }
19158
19159   return die;
19160 }
19161
19162 /* Follow reference OFFSET.
19163    On entry *REF_CU is the CU of the source die referencing OFFSET.
19164    On exit *REF_CU is the CU of the result.
19165    Returns NULL if OFFSET is invalid.  */
19166
19167 static struct die_info *
19168 follow_die_offset (sect_offset offset, int offset_in_dwz,
19169                    struct dwarf2_cu **ref_cu)
19170 {
19171   struct die_info temp_die;
19172   struct dwarf2_cu *target_cu, *cu = *ref_cu;
19173
19174   gdb_assert (cu->per_cu != NULL);
19175
19176   target_cu = cu;
19177
19178   if (cu->per_cu->is_debug_types)
19179     {
19180       /* .debug_types CUs cannot reference anything outside their CU.
19181          If they need to, they have to reference a signatured type via
19182          DW_FORM_ref_sig8.  */
19183       if (! offset_in_cu_p (&cu->header, offset))
19184         return NULL;
19185     }
19186   else if (offset_in_dwz != cu->per_cu->is_dwz
19187            || ! offset_in_cu_p (&cu->header, offset))
19188     {
19189       struct dwarf2_per_cu_data *per_cu;
19190
19191       per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19192                                                  cu->objfile);
19193
19194       /* If necessary, add it to the queue and load its DIEs.  */
19195       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19196         load_full_comp_unit (per_cu, cu->language);
19197
19198       target_cu = per_cu->cu;
19199     }
19200   else if (cu->dies == NULL)
19201     {
19202       /* We're loading full DIEs during partial symbol reading.  */
19203       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
19204       load_full_comp_unit (cu->per_cu, language_minimal);
19205     }
19206
19207   *ref_cu = target_cu;
19208   temp_die.offset = offset;
19209   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
19210 }
19211
19212 /* Follow reference attribute ATTR of SRC_DIE.
19213    On entry *REF_CU is the CU of SRC_DIE.
19214    On exit *REF_CU is the CU of the result.  */
19215
19216 static struct die_info *
19217 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
19218                 struct dwarf2_cu **ref_cu)
19219 {
19220   sect_offset offset = dwarf2_get_ref_die_offset (attr);
19221   struct dwarf2_cu *cu = *ref_cu;
19222   struct die_info *die;
19223
19224   die = follow_die_offset (offset,
19225                            (attr->form == DW_FORM_GNU_ref_alt
19226                             || cu->per_cu->is_dwz),
19227                            ref_cu);
19228   if (!die)
19229     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19230            "at 0x%x [in module %s]"),
19231            offset.sect_off, src_die->offset.sect_off,
19232            objfile_name (cu->objfile));
19233
19234   return die;
19235 }
19236
19237 /* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19238    Returned value is intended for DW_OP_call*.  Returned
19239    dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE.  */
19240
19241 struct dwarf2_locexpr_baton
19242 dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19243                                struct dwarf2_per_cu_data *per_cu,
19244                                CORE_ADDR (*get_frame_pc) (void *baton),
19245                                void *baton)
19246 {
19247   struct dwarf2_cu *cu;
19248   struct die_info *die;
19249   struct attribute *attr;
19250   struct dwarf2_locexpr_baton retval;
19251
19252   dw2_setup (per_cu->objfile);
19253
19254   if (per_cu->cu == NULL)
19255     load_cu (per_cu);
19256   cu = per_cu->cu;
19257
19258   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19259   if (!die)
19260     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19261            offset.sect_off, objfile_name (per_cu->objfile));
19262
19263   attr = dwarf2_attr (die, DW_AT_location, cu);
19264   if (!attr)
19265     {
19266       /* DWARF: "If there is no such attribute, then there is no effect.".
19267          DATA is ignored if SIZE is 0.  */
19268
19269       retval.data = NULL;
19270       retval.size = 0;
19271     }
19272   else if (attr_form_is_section_offset (attr))
19273     {
19274       struct dwarf2_loclist_baton loclist_baton;
19275       CORE_ADDR pc = (*get_frame_pc) (baton);
19276       size_t size;
19277
19278       fill_in_loclist_baton (cu, &loclist_baton, attr);
19279
19280       retval.data = dwarf2_find_location_expression (&loclist_baton,
19281                                                      &size, pc);
19282       retval.size = size;
19283     }
19284   else
19285     {
19286       if (!attr_form_is_block (attr))
19287         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
19288                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
19289                offset.sect_off, objfile_name (per_cu->objfile));
19290
19291       retval.data = DW_BLOCK (attr)->data;
19292       retval.size = DW_BLOCK (attr)->size;
19293     }
19294   retval.per_cu = cu->per_cu;
19295
19296   age_cached_comp_units ();
19297
19298   return retval;
19299 }
19300
19301 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
19302    offset.  */
19303
19304 struct dwarf2_locexpr_baton
19305 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
19306                              struct dwarf2_per_cu_data *per_cu,
19307                              CORE_ADDR (*get_frame_pc) (void *baton),
19308                              void *baton)
19309 {
19310   sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
19311
19312   return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
19313 }
19314
19315 /* Write a constant of a given type as target-ordered bytes into
19316    OBSTACK.  */
19317
19318 static const gdb_byte *
19319 write_constant_as_bytes (struct obstack *obstack,
19320                          enum bfd_endian byte_order,
19321                          struct type *type,
19322                          ULONGEST value,
19323                          LONGEST *len)
19324 {
19325   gdb_byte *result;
19326
19327   *len = TYPE_LENGTH (type);
19328   result = obstack_alloc (obstack, *len);
19329   store_unsigned_integer (result, *len, byte_order, value);
19330
19331   return result;
19332 }
19333
19334 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
19335    pointer to the constant bytes and set LEN to the length of the
19336    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
19337    does not have a DW_AT_const_value, return NULL.  */
19338
19339 const gdb_byte *
19340 dwarf2_fetch_constant_bytes (sect_offset offset,
19341                              struct dwarf2_per_cu_data *per_cu,
19342                              struct obstack *obstack,
19343                              LONGEST *len)
19344 {
19345   struct dwarf2_cu *cu;
19346   struct die_info *die;
19347   struct attribute *attr;
19348   const gdb_byte *result = NULL;
19349   struct type *type;
19350   LONGEST value;
19351   enum bfd_endian byte_order;
19352
19353   dw2_setup (per_cu->objfile);
19354
19355   if (per_cu->cu == NULL)
19356     load_cu (per_cu);
19357   cu = per_cu->cu;
19358
19359   die = follow_die_offset (offset, per_cu->is_dwz, &cu);
19360   if (!die)
19361     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
19362            offset.sect_off, objfile_name (per_cu->objfile));
19363
19364
19365   attr = dwarf2_attr (die, DW_AT_const_value, cu);
19366   if (attr == NULL)
19367     return NULL;
19368
19369   byte_order = (bfd_big_endian (per_cu->objfile->obfd)
19370                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
19371
19372   switch (attr->form)
19373     {
19374     case DW_FORM_addr:
19375     case DW_FORM_GNU_addr_index:
19376       {
19377         gdb_byte *tem;
19378
19379         *len = cu->header.addr_size;
19380         tem = obstack_alloc (obstack, *len);
19381         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
19382         result = tem;
19383       }
19384       break;
19385     case DW_FORM_string:
19386     case DW_FORM_strp:
19387     case DW_FORM_GNU_str_index:
19388     case DW_FORM_GNU_strp_alt:
19389       /* DW_STRING is already allocated on the objfile obstack, point
19390          directly to it.  */
19391       result = (const gdb_byte *) DW_STRING (attr);
19392       *len = strlen (DW_STRING (attr));
19393       break;
19394     case DW_FORM_block1:
19395     case DW_FORM_block2:
19396     case DW_FORM_block4:
19397     case DW_FORM_block:
19398     case DW_FORM_exprloc:
19399       result = DW_BLOCK (attr)->data;
19400       *len = DW_BLOCK (attr)->size;
19401       break;
19402
19403       /* The DW_AT_const_value attributes are supposed to carry the
19404          symbol's value "represented as it would be on the target
19405          architecture."  By the time we get here, it's already been
19406          converted to host endianness, so we just need to sign- or
19407          zero-extend it as appropriate.  */
19408     case DW_FORM_data1:
19409       type = die_type (die, cu);
19410       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
19411       if (result == NULL)
19412         result = write_constant_as_bytes (obstack, byte_order,
19413                                           type, value, len);
19414       break;
19415     case DW_FORM_data2:
19416       type = die_type (die, cu);
19417       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
19418       if (result == NULL)
19419         result = write_constant_as_bytes (obstack, byte_order,
19420                                           type, value, len);
19421       break;
19422     case DW_FORM_data4:
19423       type = die_type (die, cu);
19424       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
19425       if (result == NULL)
19426         result = write_constant_as_bytes (obstack, byte_order,
19427                                           type, value, len);
19428       break;
19429     case DW_FORM_data8:
19430       type = die_type (die, cu);
19431       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
19432       if (result == NULL)
19433         result = write_constant_as_bytes (obstack, byte_order,
19434                                           type, value, len);
19435       break;
19436
19437     case DW_FORM_sdata:
19438       type = die_type (die, cu);
19439       result = write_constant_as_bytes (obstack, byte_order,
19440                                         type, DW_SND (attr), len);
19441       break;
19442
19443     case DW_FORM_udata:
19444       type = die_type (die, cu);
19445       result = write_constant_as_bytes (obstack, byte_order,
19446                                         type, DW_UNSND (attr), len);
19447       break;
19448
19449     default:
19450       complaint (&symfile_complaints,
19451                  _("unsupported const value attribute form: '%s'"),
19452                  dwarf_form_name (attr->form));
19453       break;
19454     }
19455
19456   return result;
19457 }
19458
19459 /* Return the type of the DIE at DIE_OFFSET in the CU named by
19460    PER_CU.  */
19461
19462 struct type *
19463 dwarf2_get_die_type (cu_offset die_offset,
19464                      struct dwarf2_per_cu_data *per_cu)
19465 {
19466   sect_offset die_offset_sect;
19467
19468   dw2_setup (per_cu->objfile);
19469
19470   die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
19471   return get_die_type_at_offset (die_offset_sect, per_cu);
19472 }
19473
19474 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
19475    On entry *REF_CU is the CU of SRC_DIE.
19476    On exit *REF_CU is the CU of the result.
19477    Returns NULL if the referenced DIE isn't found.  */
19478
19479 static struct die_info *
19480 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
19481                   struct dwarf2_cu **ref_cu)
19482 {
19483   struct objfile *objfile = (*ref_cu)->objfile;
19484   struct die_info temp_die;
19485   struct dwarf2_cu *sig_cu;
19486   struct die_info *die;
19487
19488   /* While it might be nice to assert sig_type->type == NULL here,
19489      we can get here for DW_AT_imported_declaration where we need
19490      the DIE not the type.  */
19491
19492   /* If necessary, add it to the queue and load its DIEs.  */
19493
19494   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
19495     read_signatured_type (sig_type);
19496
19497   sig_cu = sig_type->per_cu.cu;
19498   gdb_assert (sig_cu != NULL);
19499   gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
19500   temp_die.offset = sig_type->type_offset_in_section;
19501   die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
19502                              temp_die.offset.sect_off);
19503   if (die)
19504     {
19505       /* For .gdb_index version 7 keep track of included TUs.
19506          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
19507       if (dwarf2_per_objfile->index_table != NULL
19508           && dwarf2_per_objfile->index_table->version <= 7)
19509         {
19510           VEC_safe_push (dwarf2_per_cu_ptr,
19511                          (*ref_cu)->per_cu->imported_symtabs,
19512                          sig_cu->per_cu);
19513         }
19514
19515       *ref_cu = sig_cu;
19516       return die;
19517     }
19518
19519   return NULL;
19520 }
19521
19522 /* Follow signatured type referenced by ATTR in SRC_DIE.
19523    On entry *REF_CU is the CU of SRC_DIE.
19524    On exit *REF_CU is the CU of the result.
19525    The result is the DIE of the type.
19526    If the referenced type cannot be found an error is thrown.  */
19527
19528 static struct die_info *
19529 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
19530                 struct dwarf2_cu **ref_cu)
19531 {
19532   ULONGEST signature = DW_SIGNATURE (attr);
19533   struct signatured_type *sig_type;
19534   struct die_info *die;
19535
19536   gdb_assert (attr->form == DW_FORM_ref_sig8);
19537
19538   sig_type = lookup_signatured_type (*ref_cu, signature);
19539   /* sig_type will be NULL if the signatured type is missing from
19540      the debug info.  */
19541   if (sig_type == NULL)
19542     {
19543       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
19544                " from DIE at 0x%x [in module %s]"),
19545              hex_string (signature), src_die->offset.sect_off,
19546              objfile_name ((*ref_cu)->objfile));
19547     }
19548
19549   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
19550   if (die == NULL)
19551     {
19552       dump_die_for_error (src_die);
19553       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
19554                " from DIE at 0x%x [in module %s]"),
19555              hex_string (signature), src_die->offset.sect_off,
19556              objfile_name ((*ref_cu)->objfile));
19557     }
19558
19559   return die;
19560 }
19561
19562 /* Get the type specified by SIGNATURE referenced in DIE/CU,
19563    reading in and processing the type unit if necessary.  */
19564
19565 static struct type *
19566 get_signatured_type (struct die_info *die, ULONGEST signature,
19567                      struct dwarf2_cu *cu)
19568 {
19569   struct signatured_type *sig_type;
19570   struct dwarf2_cu *type_cu;
19571   struct die_info *type_die;
19572   struct type *type;
19573
19574   sig_type = lookup_signatured_type (cu, signature);
19575   /* sig_type will be NULL if the signatured type is missing from
19576      the debug info.  */
19577   if (sig_type == NULL)
19578     {
19579       complaint (&symfile_complaints,
19580                  _("Dwarf Error: Cannot find signatured DIE %s referenced"
19581                    " from DIE at 0x%x [in module %s]"),
19582                  hex_string (signature), die->offset.sect_off,
19583                  objfile_name (dwarf2_per_objfile->objfile));
19584       return build_error_marker_type (cu, die);
19585     }
19586
19587   /* If we already know the type we're done.  */
19588   if (sig_type->type != NULL)
19589     return sig_type->type;
19590
19591   type_cu = cu;
19592   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
19593   if (type_die != NULL)
19594     {
19595       /* N.B. We need to call get_die_type to ensure only one type for this DIE
19596          is created.  This is important, for example, because for c++ classes
19597          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
19598       type = read_type_die (type_die, type_cu);
19599       if (type == NULL)
19600         {
19601           complaint (&symfile_complaints,
19602                      _("Dwarf Error: Cannot build signatured type %s"
19603                        " referenced from DIE at 0x%x [in module %s]"),
19604                      hex_string (signature), die->offset.sect_off,
19605                      objfile_name (dwarf2_per_objfile->objfile));
19606           type = build_error_marker_type (cu, die);
19607         }
19608     }
19609   else
19610     {
19611       complaint (&symfile_complaints,
19612                  _("Dwarf Error: Problem reading signatured DIE %s referenced"
19613                    " from DIE at 0x%x [in module %s]"),
19614                  hex_string (signature), die->offset.sect_off,
19615                  objfile_name (dwarf2_per_objfile->objfile));
19616       type = build_error_marker_type (cu, die);
19617     }
19618   sig_type->type = type;
19619
19620   return type;
19621 }
19622
19623 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
19624    reading in and processing the type unit if necessary.  */
19625
19626 static struct type *
19627 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
19628                           struct dwarf2_cu *cu) /* ARI: editCase function */
19629 {
19630   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
19631   if (attr_form_is_ref (attr))
19632     {
19633       struct dwarf2_cu *type_cu = cu;
19634       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
19635
19636       return read_type_die (type_die, type_cu);
19637     }
19638   else if (attr->form == DW_FORM_ref_sig8)
19639     {
19640       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
19641     }
19642   else
19643     {
19644       complaint (&symfile_complaints,
19645                  _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
19646                    " at 0x%x [in module %s]"),
19647                  dwarf_form_name (attr->form), die->offset.sect_off,
19648                  objfile_name (dwarf2_per_objfile->objfile));
19649       return build_error_marker_type (cu, die);
19650     }
19651 }
19652
19653 /* Load the DIEs associated with type unit PER_CU into memory.  */
19654
19655 static void
19656 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
19657 {
19658   struct signatured_type *sig_type;
19659
19660   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
19661   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
19662
19663   /* We have the per_cu, but we need the signatured_type.
19664      Fortunately this is an easy translation.  */
19665   gdb_assert (per_cu->is_debug_types);
19666   sig_type = (struct signatured_type *) per_cu;
19667
19668   gdb_assert (per_cu->cu == NULL);
19669
19670   read_signatured_type (sig_type);
19671
19672   gdb_assert (per_cu->cu != NULL);
19673 }
19674
19675 /* die_reader_func for read_signatured_type.
19676    This is identical to load_full_comp_unit_reader,
19677    but is kept separate for now.  */
19678
19679 static void
19680 read_signatured_type_reader (const struct die_reader_specs *reader,
19681                              const gdb_byte *info_ptr,
19682                              struct die_info *comp_unit_die,
19683                              int has_children,
19684                              void *data)
19685 {
19686   struct dwarf2_cu *cu = reader->cu;
19687
19688   gdb_assert (cu->die_hash == NULL);
19689   cu->die_hash =
19690     htab_create_alloc_ex (cu->header.length / 12,
19691                           die_hash,
19692                           die_eq,
19693                           NULL,
19694                           &cu->comp_unit_obstack,
19695                           hashtab_obstack_allocate,
19696                           dummy_obstack_deallocate);
19697
19698   if (has_children)
19699     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
19700                                                   &info_ptr, comp_unit_die);
19701   cu->dies = comp_unit_die;
19702   /* comp_unit_die is not stored in die_hash, no need.  */
19703
19704   /* We try not to read any attributes in this function, because not
19705      all CUs needed for references have been loaded yet, and symbol
19706      table processing isn't initialized.  But we have to set the CU language,
19707      or we won't be able to build types correctly.
19708      Similarly, if we do not read the producer, we can not apply
19709      producer-specific interpretation.  */
19710   prepare_one_comp_unit (cu, cu->dies, language_minimal);
19711 }
19712
19713 /* Read in a signatured type and build its CU and DIEs.
19714    If the type is a stub for the real type in a DWO file,
19715    read in the real type from the DWO file as well.  */
19716
19717 static void
19718 read_signatured_type (struct signatured_type *sig_type)
19719 {
19720   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
19721
19722   gdb_assert (per_cu->is_debug_types);
19723   gdb_assert (per_cu->cu == NULL);
19724
19725   init_cutu_and_read_dies (per_cu, NULL, 0, 1,
19726                            read_signatured_type_reader, NULL);
19727   sig_type->per_cu.tu_read = 1;
19728 }
19729
19730 /* Decode simple location descriptions.
19731    Given a pointer to a dwarf block that defines a location, compute
19732    the location and return the value.
19733
19734    NOTE drow/2003-11-18: This function is called in two situations
19735    now: for the address of static or global variables (partial symbols
19736    only) and for offsets into structures which are expected to be
19737    (more or less) constant.  The partial symbol case should go away,
19738    and only the constant case should remain.  That will let this
19739    function complain more accurately.  A few special modes are allowed
19740    without complaint for global variables (for instance, global
19741    register values and thread-local values).
19742
19743    A location description containing no operations indicates that the
19744    object is optimized out.  The return value is 0 for that case.
19745    FIXME drow/2003-11-16: No callers check for this case any more; soon all
19746    callers will only want a very basic result and this can become a
19747    complaint.
19748
19749    Note that stack[0] is unused except as a default error return.  */
19750
19751 static CORE_ADDR
19752 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
19753 {
19754   struct objfile *objfile = cu->objfile;
19755   size_t i;
19756   size_t size = blk->size;
19757   const gdb_byte *data = blk->data;
19758   CORE_ADDR stack[64];
19759   int stacki;
19760   unsigned int bytes_read, unsnd;
19761   gdb_byte op;
19762
19763   i = 0;
19764   stacki = 0;
19765   stack[stacki] = 0;
19766   stack[++stacki] = 0;
19767
19768   while (i < size)
19769     {
19770       op = data[i++];
19771       switch (op)
19772         {
19773         case DW_OP_lit0:
19774         case DW_OP_lit1:
19775         case DW_OP_lit2:
19776         case DW_OP_lit3:
19777         case DW_OP_lit4:
19778         case DW_OP_lit5:
19779         case DW_OP_lit6:
19780         case DW_OP_lit7:
19781         case DW_OP_lit8:
19782         case DW_OP_lit9:
19783         case DW_OP_lit10:
19784         case DW_OP_lit11:
19785         case DW_OP_lit12:
19786         case DW_OP_lit13:
19787         case DW_OP_lit14:
19788         case DW_OP_lit15:
19789         case DW_OP_lit16:
19790         case DW_OP_lit17:
19791         case DW_OP_lit18:
19792         case DW_OP_lit19:
19793         case DW_OP_lit20:
19794         case DW_OP_lit21:
19795         case DW_OP_lit22:
19796         case DW_OP_lit23:
19797         case DW_OP_lit24:
19798         case DW_OP_lit25:
19799         case DW_OP_lit26:
19800         case DW_OP_lit27:
19801         case DW_OP_lit28:
19802         case DW_OP_lit29:
19803         case DW_OP_lit30:
19804         case DW_OP_lit31:
19805           stack[++stacki] = op - DW_OP_lit0;
19806           break;
19807
19808         case DW_OP_reg0:
19809         case DW_OP_reg1:
19810         case DW_OP_reg2:
19811         case DW_OP_reg3:
19812         case DW_OP_reg4:
19813         case DW_OP_reg5:
19814         case DW_OP_reg6:
19815         case DW_OP_reg7:
19816         case DW_OP_reg8:
19817         case DW_OP_reg9:
19818         case DW_OP_reg10:
19819         case DW_OP_reg11:
19820         case DW_OP_reg12:
19821         case DW_OP_reg13:
19822         case DW_OP_reg14:
19823         case DW_OP_reg15:
19824         case DW_OP_reg16:
19825         case DW_OP_reg17:
19826         case DW_OP_reg18:
19827         case DW_OP_reg19:
19828         case DW_OP_reg20:
19829         case DW_OP_reg21:
19830         case DW_OP_reg22:
19831         case DW_OP_reg23:
19832         case DW_OP_reg24:
19833         case DW_OP_reg25:
19834         case DW_OP_reg26:
19835         case DW_OP_reg27:
19836         case DW_OP_reg28:
19837         case DW_OP_reg29:
19838         case DW_OP_reg30:
19839         case DW_OP_reg31:
19840           stack[++stacki] = op - DW_OP_reg0;
19841           if (i < size)
19842             dwarf2_complex_location_expr_complaint ();
19843           break;
19844
19845         case DW_OP_regx:
19846           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
19847           i += bytes_read;
19848           stack[++stacki] = unsnd;
19849           if (i < size)
19850             dwarf2_complex_location_expr_complaint ();
19851           break;
19852
19853         case DW_OP_addr:
19854           stack[++stacki] = read_address (objfile->obfd, &data[i],
19855                                           cu, &bytes_read);
19856           i += bytes_read;
19857           break;
19858
19859         case DW_OP_const1u:
19860           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
19861           i += 1;
19862           break;
19863
19864         case DW_OP_const1s:
19865           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
19866           i += 1;
19867           break;
19868
19869         case DW_OP_const2u:
19870           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
19871           i += 2;
19872           break;
19873
19874         case DW_OP_const2s:
19875           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
19876           i += 2;
19877           break;
19878
19879         case DW_OP_const4u:
19880           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
19881           i += 4;
19882           break;
19883
19884         case DW_OP_const4s:
19885           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
19886           i += 4;
19887           break;
19888
19889         case DW_OP_const8u:
19890           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
19891           i += 8;
19892           break;
19893
19894         case DW_OP_constu:
19895           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
19896                                                   &bytes_read);
19897           i += bytes_read;
19898           break;
19899
19900         case DW_OP_consts:
19901           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
19902           i += bytes_read;
19903           break;
19904
19905         case DW_OP_dup:
19906           stack[stacki + 1] = stack[stacki];
19907           stacki++;
19908           break;
19909
19910         case DW_OP_plus:
19911           stack[stacki - 1] += stack[stacki];
19912           stacki--;
19913           break;
19914
19915         case DW_OP_plus_uconst:
19916           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
19917                                                  &bytes_read);
19918           i += bytes_read;
19919           break;
19920
19921         case DW_OP_minus:
19922           stack[stacki - 1] -= stack[stacki];
19923           stacki--;
19924           break;
19925
19926         case DW_OP_deref:
19927           /* If we're not the last op, then we definitely can't encode
19928              this using GDB's address_class enum.  This is valid for partial
19929              global symbols, although the variable's address will be bogus
19930              in the psymtab.  */
19931           if (i < size)
19932             dwarf2_complex_location_expr_complaint ();
19933           break;
19934
19935         case DW_OP_GNU_push_tls_address:
19936           /* The top of the stack has the offset from the beginning
19937              of the thread control block at which the variable is located.  */
19938           /* Nothing should follow this operator, so the top of stack would
19939              be returned.  */
19940           /* This is valid for partial global symbols, but the variable's
19941              address will be bogus in the psymtab.  Make it always at least
19942              non-zero to not look as a variable garbage collected by linker
19943              which have DW_OP_addr 0.  */
19944           if (i < size)
19945             dwarf2_complex_location_expr_complaint ();
19946           stack[stacki]++;
19947           break;
19948
19949         case DW_OP_GNU_uninit:
19950           break;
19951
19952         case DW_OP_GNU_addr_index:
19953         case DW_OP_GNU_const_index:
19954           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
19955                                                          &bytes_read);
19956           i += bytes_read;
19957           break;
19958
19959         default:
19960           {
19961             const char *name = get_DW_OP_name (op);
19962
19963             if (name)
19964               complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
19965                          name);
19966             else
19967               complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
19968                          op);
19969           }
19970
19971           return (stack[stacki]);
19972         }
19973
19974       /* Enforce maximum stack depth of SIZE-1 to avoid writing
19975          outside of the allocated space.  Also enforce minimum>0.  */
19976       if (stacki >= ARRAY_SIZE (stack) - 1)
19977         {
19978           complaint (&symfile_complaints,
19979                      _("location description stack overflow"));
19980           return 0;
19981         }
19982
19983       if (stacki <= 0)
19984         {
19985           complaint (&symfile_complaints,
19986                      _("location description stack underflow"));
19987           return 0;
19988         }
19989     }
19990   return (stack[stacki]);
19991 }
19992
19993 /* memory allocation interface */
19994
19995 static struct dwarf_block *
19996 dwarf_alloc_block (struct dwarf2_cu *cu)
19997 {
19998   struct dwarf_block *blk;
19999
20000   blk = (struct dwarf_block *)
20001     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
20002   return (blk);
20003 }
20004
20005 static struct die_info *
20006 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
20007 {
20008   struct die_info *die;
20009   size_t size = sizeof (struct die_info);
20010
20011   if (num_attrs > 1)
20012     size += (num_attrs - 1) * sizeof (struct attribute);
20013
20014   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
20015   memset (die, 0, sizeof (struct die_info));
20016   return (die);
20017 }
20018
20019 \f
20020 /* Macro support.  */
20021
20022 /* Return file name relative to the compilation directory of file number I in
20023    *LH's file name table.  The result is allocated using xmalloc; the caller is
20024    responsible for freeing it.  */
20025
20026 static char *
20027 file_file_name (int file, struct line_header *lh)
20028 {
20029   /* Is the file number a valid index into the line header's file name
20030      table?  Remember that file numbers start with one, not zero.  */
20031   if (1 <= file && file <= lh->num_file_names)
20032     {
20033       struct file_entry *fe = &lh->file_names[file - 1];
20034
20035       if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0)
20036         return xstrdup (fe->name);
20037       return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20038                      fe->name, NULL);
20039     }
20040   else
20041     {
20042       /* The compiler produced a bogus file number.  We can at least
20043          record the macro definitions made in the file, even if we
20044          won't be able to find the file by name.  */
20045       char fake_name[80];
20046
20047       xsnprintf (fake_name, sizeof (fake_name),
20048                  "<bad macro file number %d>", file);
20049
20050       complaint (&symfile_complaints,
20051                  _("bad file number in macro information (%d)"),
20052                  file);
20053
20054       return xstrdup (fake_name);
20055     }
20056 }
20057
20058 /* Return the full name of file number I in *LH's file name table.
20059    Use COMP_DIR as the name of the current directory of the
20060    compilation.  The result is allocated using xmalloc; the caller is
20061    responsible for freeing it.  */
20062 static char *
20063 file_full_name (int file, struct line_header *lh, const char *comp_dir)
20064 {
20065   /* Is the file number a valid index into the line header's file name
20066      table?  Remember that file numbers start with one, not zero.  */
20067   if (1 <= file && file <= lh->num_file_names)
20068     {
20069       char *relative = file_file_name (file, lh);
20070
20071       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20072         return relative;
20073       return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20074     }
20075   else
20076     return file_file_name (file, lh);
20077 }
20078
20079
20080 static struct macro_source_file *
20081 macro_start_file (int file, int line,
20082                   struct macro_source_file *current_file,
20083                   const char *comp_dir,
20084                   struct line_header *lh, struct objfile *objfile)
20085 {
20086   /* File name relative to the compilation directory of this source file.  */
20087   char *file_name = file_file_name (file, lh);
20088
20089   if (! current_file)
20090     {
20091       /* Note: We don't create a macro table for this compilation unit
20092          at all until we actually get a filename.  */
20093       struct macro_table *macro_table = get_macro_table (objfile, comp_dir);
20094
20095       /* If we have no current file, then this must be the start_file
20096          directive for the compilation unit's main source file.  */
20097       current_file = macro_set_main (macro_table, file_name);
20098       macro_define_special (macro_table);
20099     }
20100   else
20101     current_file = macro_include (current_file, line, file_name);
20102
20103   xfree (file_name);
20104
20105   return current_file;
20106 }
20107
20108
20109 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20110    followed by a null byte.  */
20111 static char *
20112 copy_string (const char *buf, int len)
20113 {
20114   char *s = xmalloc (len + 1);
20115
20116   memcpy (s, buf, len);
20117   s[len] = '\0';
20118   return s;
20119 }
20120
20121
20122 static const char *
20123 consume_improper_spaces (const char *p, const char *body)
20124 {
20125   if (*p == ' ')
20126     {
20127       complaint (&symfile_complaints,
20128                  _("macro definition contains spaces "
20129                    "in formal argument list:\n`%s'"),
20130                  body);
20131
20132       while (*p == ' ')
20133         p++;
20134     }
20135
20136   return p;
20137 }
20138
20139
20140 static void
20141 parse_macro_definition (struct macro_source_file *file, int line,
20142                         const char *body)
20143 {
20144   const char *p;
20145
20146   /* The body string takes one of two forms.  For object-like macro
20147      definitions, it should be:
20148
20149         <macro name> " " <definition>
20150
20151      For function-like macro definitions, it should be:
20152
20153         <macro name> "() " <definition>
20154      or
20155         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20156
20157      Spaces may appear only where explicitly indicated, and in the
20158      <definition>.
20159
20160      The Dwarf 2 spec says that an object-like macro's name is always
20161      followed by a space, but versions of GCC around March 2002 omit
20162      the space when the macro's definition is the empty string.
20163
20164      The Dwarf 2 spec says that there should be no spaces between the
20165      formal arguments in a function-like macro's formal argument list,
20166      but versions of GCC around March 2002 include spaces after the
20167      commas.  */
20168
20169
20170   /* Find the extent of the macro name.  The macro name is terminated
20171      by either a space or null character (for an object-like macro) or
20172      an opening paren (for a function-like macro).  */
20173   for (p = body; *p; p++)
20174     if (*p == ' ' || *p == '(')
20175       break;
20176
20177   if (*p == ' ' || *p == '\0')
20178     {
20179       /* It's an object-like macro.  */
20180       int name_len = p - body;
20181       char *name = copy_string (body, name_len);
20182       const char *replacement;
20183
20184       if (*p == ' ')
20185         replacement = body + name_len + 1;
20186       else
20187         {
20188           dwarf2_macro_malformed_definition_complaint (body);
20189           replacement = body + name_len;
20190         }
20191
20192       macro_define_object (file, line, name, replacement);
20193
20194       xfree (name);
20195     }
20196   else if (*p == '(')
20197     {
20198       /* It's a function-like macro.  */
20199       char *name = copy_string (body, p - body);
20200       int argc = 0;
20201       int argv_size = 1;
20202       char **argv = xmalloc (argv_size * sizeof (*argv));
20203
20204       p++;
20205
20206       p = consume_improper_spaces (p, body);
20207
20208       /* Parse the formal argument list.  */
20209       while (*p && *p != ')')
20210         {
20211           /* Find the extent of the current argument name.  */
20212           const char *arg_start = p;
20213
20214           while (*p && *p != ',' && *p != ')' && *p != ' ')
20215             p++;
20216
20217           if (! *p || p == arg_start)
20218             dwarf2_macro_malformed_definition_complaint (body);
20219           else
20220             {
20221               /* Make sure argv has room for the new argument.  */
20222               if (argc >= argv_size)
20223                 {
20224                   argv_size *= 2;
20225                   argv = xrealloc (argv, argv_size * sizeof (*argv));
20226                 }
20227
20228               argv[argc++] = copy_string (arg_start, p - arg_start);
20229             }
20230
20231           p = consume_improper_spaces (p, body);
20232
20233           /* Consume the comma, if present.  */
20234           if (*p == ',')
20235             {
20236               p++;
20237
20238               p = consume_improper_spaces (p, body);
20239             }
20240         }
20241
20242       if (*p == ')')
20243         {
20244           p++;
20245
20246           if (*p == ' ')
20247             /* Perfectly formed definition, no complaints.  */
20248             macro_define_function (file, line, name,
20249                                    argc, (const char **) argv,
20250                                    p + 1);
20251           else if (*p == '\0')
20252             {
20253               /* Complain, but do define it.  */
20254               dwarf2_macro_malformed_definition_complaint (body);
20255               macro_define_function (file, line, name,
20256                                      argc, (const char **) argv,
20257                                      p);
20258             }
20259           else
20260             /* Just complain.  */
20261             dwarf2_macro_malformed_definition_complaint (body);
20262         }
20263       else
20264         /* Just complain.  */
20265         dwarf2_macro_malformed_definition_complaint (body);
20266
20267       xfree (name);
20268       {
20269         int i;
20270
20271         for (i = 0; i < argc; i++)
20272           xfree (argv[i]);
20273       }
20274       xfree (argv);
20275     }
20276   else
20277     dwarf2_macro_malformed_definition_complaint (body);
20278 }
20279
20280 /* Skip some bytes from BYTES according to the form given in FORM.
20281    Returns the new pointer.  */
20282
20283 static const gdb_byte *
20284 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
20285                  enum dwarf_form form,
20286                  unsigned int offset_size,
20287                  struct dwarf2_section_info *section)
20288 {
20289   unsigned int bytes_read;
20290
20291   switch (form)
20292     {
20293     case DW_FORM_data1:
20294     case DW_FORM_flag:
20295       ++bytes;
20296       break;
20297
20298     case DW_FORM_data2:
20299       bytes += 2;
20300       break;
20301
20302     case DW_FORM_data4:
20303       bytes += 4;
20304       break;
20305
20306     case DW_FORM_data8:
20307       bytes += 8;
20308       break;
20309
20310     case DW_FORM_string:
20311       read_direct_string (abfd, bytes, &bytes_read);
20312       bytes += bytes_read;
20313       break;
20314
20315     case DW_FORM_sec_offset:
20316     case DW_FORM_strp:
20317     case DW_FORM_GNU_strp_alt:
20318       bytes += offset_size;
20319       break;
20320
20321     case DW_FORM_block:
20322       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
20323       bytes += bytes_read;
20324       break;
20325
20326     case DW_FORM_block1:
20327       bytes += 1 + read_1_byte (abfd, bytes);
20328       break;
20329     case DW_FORM_block2:
20330       bytes += 2 + read_2_bytes (abfd, bytes);
20331       break;
20332     case DW_FORM_block4:
20333       bytes += 4 + read_4_bytes (abfd, bytes);
20334       break;
20335
20336     case DW_FORM_sdata:
20337     case DW_FORM_udata:
20338     case DW_FORM_GNU_addr_index:
20339     case DW_FORM_GNU_str_index:
20340       bytes = gdb_skip_leb128 (bytes, buffer_end);
20341       if (bytes == NULL)
20342         {
20343           dwarf2_section_buffer_overflow_complaint (section);
20344           return NULL;
20345         }
20346       break;
20347
20348     default:
20349       {
20350       complain:
20351         complaint (&symfile_complaints,
20352                    _("invalid form 0x%x in `%s'"),
20353                    form, get_section_name (section));
20354         return NULL;
20355       }
20356     }
20357
20358   return bytes;
20359 }
20360
20361 /* A helper for dwarf_decode_macros that handles skipping an unknown
20362    opcode.  Returns an updated pointer to the macro data buffer; or,
20363    on error, issues a complaint and returns NULL.  */
20364
20365 static const gdb_byte *
20366 skip_unknown_opcode (unsigned int opcode,
20367                      const gdb_byte **opcode_definitions,
20368                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20369                      bfd *abfd,
20370                      unsigned int offset_size,
20371                      struct dwarf2_section_info *section)
20372 {
20373   unsigned int bytes_read, i;
20374   unsigned long arg;
20375   const gdb_byte *defn;
20376
20377   if (opcode_definitions[opcode] == NULL)
20378     {
20379       complaint (&symfile_complaints,
20380                  _("unrecognized DW_MACFINO opcode 0x%x"),
20381                  opcode);
20382       return NULL;
20383     }
20384
20385   defn = opcode_definitions[opcode];
20386   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
20387   defn += bytes_read;
20388
20389   for (i = 0; i < arg; ++i)
20390     {
20391       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
20392                                  section);
20393       if (mac_ptr == NULL)
20394         {
20395           /* skip_form_bytes already issued the complaint.  */
20396           return NULL;
20397         }
20398     }
20399
20400   return mac_ptr;
20401 }
20402
20403 /* A helper function which parses the header of a macro section.
20404    If the macro section is the extended (for now called "GNU") type,
20405    then this updates *OFFSET_SIZE.  Returns a pointer to just after
20406    the header, or issues a complaint and returns NULL on error.  */
20407
20408 static const gdb_byte *
20409 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
20410                           bfd *abfd,
20411                           const gdb_byte *mac_ptr,
20412                           unsigned int *offset_size,
20413                           int section_is_gnu)
20414 {
20415   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
20416
20417   if (section_is_gnu)
20418     {
20419       unsigned int version, flags;
20420
20421       version = read_2_bytes (abfd, mac_ptr);
20422       if (version != 4)
20423         {
20424           complaint (&symfile_complaints,
20425                      _("unrecognized version `%d' in .debug_macro section"),
20426                      version);
20427           return NULL;
20428         }
20429       mac_ptr += 2;
20430
20431       flags = read_1_byte (abfd, mac_ptr);
20432       ++mac_ptr;
20433       *offset_size = (flags & 1) ? 8 : 4;
20434
20435       if ((flags & 2) != 0)
20436         /* We don't need the line table offset.  */
20437         mac_ptr += *offset_size;
20438
20439       /* Vendor opcode descriptions.  */
20440       if ((flags & 4) != 0)
20441         {
20442           unsigned int i, count;
20443
20444           count = read_1_byte (abfd, mac_ptr);
20445           ++mac_ptr;
20446           for (i = 0; i < count; ++i)
20447             {
20448               unsigned int opcode, bytes_read;
20449               unsigned long arg;
20450
20451               opcode = read_1_byte (abfd, mac_ptr);
20452               ++mac_ptr;
20453               opcode_definitions[opcode] = mac_ptr;
20454               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20455               mac_ptr += bytes_read;
20456               mac_ptr += arg;
20457             }
20458         }
20459     }
20460
20461   return mac_ptr;
20462 }
20463
20464 /* A helper for dwarf_decode_macros that handles the GNU extensions,
20465    including DW_MACRO_GNU_transparent_include.  */
20466
20467 static void
20468 dwarf_decode_macro_bytes (bfd *abfd,
20469                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
20470                           struct macro_source_file *current_file,
20471                           struct line_header *lh, const char *comp_dir,
20472                           struct dwarf2_section_info *section,
20473                           int section_is_gnu, int section_is_dwz,
20474                           unsigned int offset_size,
20475                           struct objfile *objfile,
20476                           htab_t include_hash)
20477 {
20478   enum dwarf_macro_record_type macinfo_type;
20479   int at_commandline;
20480   const gdb_byte *opcode_definitions[256];
20481
20482   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20483                                       &offset_size, section_is_gnu);
20484   if (mac_ptr == NULL)
20485     {
20486       /* We already issued a complaint.  */
20487       return;
20488     }
20489
20490   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
20491      GDB is still reading the definitions from command line.  First
20492      DW_MACINFO_start_file will need to be ignored as it was already executed
20493      to create CURRENT_FILE for the main source holding also the command line
20494      definitions.  On first met DW_MACINFO_start_file this flag is reset to
20495      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
20496
20497   at_commandline = 1;
20498
20499   do
20500     {
20501       /* Do we at least have room for a macinfo type byte?  */
20502       if (mac_ptr >= mac_end)
20503         {
20504           dwarf2_section_buffer_overflow_complaint (section);
20505           break;
20506         }
20507
20508       macinfo_type = read_1_byte (abfd, mac_ptr);
20509       mac_ptr++;
20510
20511       /* Note that we rely on the fact that the corresponding GNU and
20512          DWARF constants are the same.  */
20513       switch (macinfo_type)
20514         {
20515           /* A zero macinfo type indicates the end of the macro
20516              information.  */
20517         case 0:
20518           break;
20519
20520         case DW_MACRO_GNU_define:
20521         case DW_MACRO_GNU_undef:
20522         case DW_MACRO_GNU_define_indirect:
20523         case DW_MACRO_GNU_undef_indirect:
20524         case DW_MACRO_GNU_define_indirect_alt:
20525         case DW_MACRO_GNU_undef_indirect_alt:
20526           {
20527             unsigned int bytes_read;
20528             int line;
20529             const char *body;
20530             int is_define;
20531
20532             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20533             mac_ptr += bytes_read;
20534
20535             if (macinfo_type == DW_MACRO_GNU_define
20536                 || macinfo_type == DW_MACRO_GNU_undef)
20537               {
20538                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
20539                 mac_ptr += bytes_read;
20540               }
20541             else
20542               {
20543                 LONGEST str_offset;
20544
20545                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
20546                 mac_ptr += offset_size;
20547
20548                 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
20549                     || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
20550                     || section_is_dwz)
20551                   {
20552                     struct dwz_file *dwz = dwarf2_get_dwz_file ();
20553
20554                     body = read_indirect_string_from_dwz (dwz, str_offset);
20555                   }
20556                 else
20557                   body = read_indirect_string_at_offset (abfd, str_offset);
20558               }
20559
20560             is_define = (macinfo_type == DW_MACRO_GNU_define
20561                          || macinfo_type == DW_MACRO_GNU_define_indirect
20562                          || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
20563             if (! current_file)
20564               {
20565                 /* DWARF violation as no main source is present.  */
20566                 complaint (&symfile_complaints,
20567                            _("debug info with no main source gives macro %s "
20568                              "on line %d: %s"),
20569                            is_define ? _("definition") : _("undefinition"),
20570                            line, body);
20571                 break;
20572               }
20573             if ((line == 0 && !at_commandline)
20574                 || (line != 0 && at_commandline))
20575               complaint (&symfile_complaints,
20576                          _("debug info gives %s macro %s with %s line %d: %s"),
20577                          at_commandline ? _("command-line") : _("in-file"),
20578                          is_define ? _("definition") : _("undefinition"),
20579                          line == 0 ? _("zero") : _("non-zero"), line, body);
20580
20581             if (is_define)
20582               parse_macro_definition (current_file, line, body);
20583             else
20584               {
20585                 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
20586                             || macinfo_type == DW_MACRO_GNU_undef_indirect
20587                             || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
20588                 macro_undef (current_file, line, body);
20589               }
20590           }
20591           break;
20592
20593         case DW_MACRO_GNU_start_file:
20594           {
20595             unsigned int bytes_read;
20596             int line, file;
20597
20598             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20599             mac_ptr += bytes_read;
20600             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20601             mac_ptr += bytes_read;
20602
20603             if ((line == 0 && !at_commandline)
20604                 || (line != 0 && at_commandline))
20605               complaint (&symfile_complaints,
20606                          _("debug info gives source %d included "
20607                            "from %s at %s line %d"),
20608                          file, at_commandline ? _("command-line") : _("file"),
20609                          line == 0 ? _("zero") : _("non-zero"), line);
20610
20611             if (at_commandline)
20612               {
20613                 /* This DW_MACRO_GNU_start_file was executed in the
20614                    pass one.  */
20615                 at_commandline = 0;
20616               }
20617             else
20618               current_file = macro_start_file (file, line,
20619                                                current_file, comp_dir,
20620                                                lh, objfile);
20621           }
20622           break;
20623
20624         case DW_MACRO_GNU_end_file:
20625           if (! current_file)
20626             complaint (&symfile_complaints,
20627                        _("macro debug info has an unmatched "
20628                          "`close_file' directive"));
20629           else
20630             {
20631               current_file = current_file->included_by;
20632               if (! current_file)
20633                 {
20634                   enum dwarf_macro_record_type next_type;
20635
20636                   /* GCC circa March 2002 doesn't produce the zero
20637                      type byte marking the end of the compilation
20638                      unit.  Complain if it's not there, but exit no
20639                      matter what.  */
20640
20641                   /* Do we at least have room for a macinfo type byte?  */
20642                   if (mac_ptr >= mac_end)
20643                     {
20644                       dwarf2_section_buffer_overflow_complaint (section);
20645                       return;
20646                     }
20647
20648                   /* We don't increment mac_ptr here, so this is just
20649                      a look-ahead.  */
20650                   next_type = read_1_byte (abfd, mac_ptr);
20651                   if (next_type != 0)
20652                     complaint (&symfile_complaints,
20653                                _("no terminating 0-type entry for "
20654                                  "macros in `.debug_macinfo' section"));
20655
20656                   return;
20657                 }
20658             }
20659           break;
20660
20661         case DW_MACRO_GNU_transparent_include:
20662         case DW_MACRO_GNU_transparent_include_alt:
20663           {
20664             LONGEST offset;
20665             void **slot;
20666             bfd *include_bfd = abfd;
20667             struct dwarf2_section_info *include_section = section;
20668             struct dwarf2_section_info alt_section;
20669             const gdb_byte *include_mac_end = mac_end;
20670             int is_dwz = section_is_dwz;
20671             const gdb_byte *new_mac_ptr;
20672
20673             offset = read_offset_1 (abfd, mac_ptr, offset_size);
20674             mac_ptr += offset_size;
20675
20676             if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
20677               {
20678                 struct dwz_file *dwz = dwarf2_get_dwz_file ();
20679
20680                 dwarf2_read_section (dwarf2_per_objfile->objfile,
20681                                      &dwz->macro);
20682
20683                 include_section = &dwz->macro;
20684                 include_bfd = get_section_bfd_owner (include_section);
20685                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
20686                 is_dwz = 1;
20687               }
20688
20689             new_mac_ptr = include_section->buffer + offset;
20690             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
20691
20692             if (*slot != NULL)
20693               {
20694                 /* This has actually happened; see
20695                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
20696                 complaint (&symfile_complaints,
20697                            _("recursive DW_MACRO_GNU_transparent_include in "
20698                              ".debug_macro section"));
20699               }
20700             else
20701               {
20702                 *slot = (void *) new_mac_ptr;
20703
20704                 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
20705                                           include_mac_end, current_file,
20706                                           lh, comp_dir,
20707                                           section, section_is_gnu, is_dwz,
20708                                           offset_size, objfile, include_hash);
20709
20710                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
20711               }
20712           }
20713           break;
20714
20715         case DW_MACINFO_vendor_ext:
20716           if (!section_is_gnu)
20717             {
20718               unsigned int bytes_read;
20719               int constant;
20720
20721               constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20722               mac_ptr += bytes_read;
20723               read_direct_string (abfd, mac_ptr, &bytes_read);
20724               mac_ptr += bytes_read;
20725
20726               /* We don't recognize any vendor extensions.  */
20727               break;
20728             }
20729           /* FALLTHROUGH */
20730
20731         default:
20732           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
20733                                          mac_ptr, mac_end, abfd, offset_size,
20734                                          section);
20735           if (mac_ptr == NULL)
20736             return;
20737           break;
20738         }
20739     } while (macinfo_type != 0);
20740 }
20741
20742 static void
20743 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
20744                      const char *comp_dir, int section_is_gnu)
20745 {
20746   struct objfile *objfile = dwarf2_per_objfile->objfile;
20747   struct line_header *lh = cu->line_header;
20748   bfd *abfd;
20749   const gdb_byte *mac_ptr, *mac_end;
20750   struct macro_source_file *current_file = 0;
20751   enum dwarf_macro_record_type macinfo_type;
20752   unsigned int offset_size = cu->header.offset_size;
20753   const gdb_byte *opcode_definitions[256];
20754   struct cleanup *cleanup;
20755   htab_t include_hash;
20756   void **slot;
20757   struct dwarf2_section_info *section;
20758   const char *section_name;
20759
20760   if (cu->dwo_unit != NULL)
20761     {
20762       if (section_is_gnu)
20763         {
20764           section = &cu->dwo_unit->dwo_file->sections.macro;
20765           section_name = ".debug_macro.dwo";
20766         }
20767       else
20768         {
20769           section = &cu->dwo_unit->dwo_file->sections.macinfo;
20770           section_name = ".debug_macinfo.dwo";
20771         }
20772     }
20773   else
20774     {
20775       if (section_is_gnu)
20776         {
20777           section = &dwarf2_per_objfile->macro;
20778           section_name = ".debug_macro";
20779         }
20780       else
20781         {
20782           section = &dwarf2_per_objfile->macinfo;
20783           section_name = ".debug_macinfo";
20784         }
20785     }
20786
20787   dwarf2_read_section (objfile, section);
20788   if (section->buffer == NULL)
20789     {
20790       complaint (&symfile_complaints, _("missing %s section"), section_name);
20791       return;
20792     }
20793   abfd = get_section_bfd_owner (section);
20794
20795   /* First pass: Find the name of the base filename.
20796      This filename is needed in order to process all macros whose definition
20797      (or undefinition) comes from the command line.  These macros are defined
20798      before the first DW_MACINFO_start_file entry, and yet still need to be
20799      associated to the base file.
20800
20801      To determine the base file name, we scan the macro definitions until we
20802      reach the first DW_MACINFO_start_file entry.  We then initialize
20803      CURRENT_FILE accordingly so that any macro definition found before the
20804      first DW_MACINFO_start_file can still be associated to the base file.  */
20805
20806   mac_ptr = section->buffer + offset;
20807   mac_end = section->buffer + section->size;
20808
20809   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
20810                                       &offset_size, section_is_gnu);
20811   if (mac_ptr == NULL)
20812     {
20813       /* We already issued a complaint.  */
20814       return;
20815     }
20816
20817   do
20818     {
20819       /* Do we at least have room for a macinfo type byte?  */
20820       if (mac_ptr >= mac_end)
20821         {
20822           /* Complaint is printed during the second pass as GDB will probably
20823              stop the first pass earlier upon finding
20824              DW_MACINFO_start_file.  */
20825           break;
20826         }
20827
20828       macinfo_type = read_1_byte (abfd, mac_ptr);
20829       mac_ptr++;
20830
20831       /* Note that we rely on the fact that the corresponding GNU and
20832          DWARF constants are the same.  */
20833       switch (macinfo_type)
20834         {
20835           /* A zero macinfo type indicates the end of the macro
20836              information.  */
20837         case 0:
20838           break;
20839
20840         case DW_MACRO_GNU_define:
20841         case DW_MACRO_GNU_undef:
20842           /* Only skip the data by MAC_PTR.  */
20843           {
20844             unsigned int bytes_read;
20845
20846             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20847             mac_ptr += bytes_read;
20848             read_direct_string (abfd, mac_ptr, &bytes_read);
20849             mac_ptr += bytes_read;
20850           }
20851           break;
20852
20853         case DW_MACRO_GNU_start_file:
20854           {
20855             unsigned int bytes_read;
20856             int line, file;
20857
20858             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20859             mac_ptr += bytes_read;
20860             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20861             mac_ptr += bytes_read;
20862
20863             current_file = macro_start_file (file, line, current_file,
20864                                              comp_dir, lh, objfile);
20865           }
20866           break;
20867
20868         case DW_MACRO_GNU_end_file:
20869           /* No data to skip by MAC_PTR.  */
20870           break;
20871
20872         case DW_MACRO_GNU_define_indirect:
20873         case DW_MACRO_GNU_undef_indirect:
20874         case DW_MACRO_GNU_define_indirect_alt:
20875         case DW_MACRO_GNU_undef_indirect_alt:
20876           {
20877             unsigned int bytes_read;
20878
20879             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20880             mac_ptr += bytes_read;
20881             mac_ptr += offset_size;
20882           }
20883           break;
20884
20885         case DW_MACRO_GNU_transparent_include:
20886         case DW_MACRO_GNU_transparent_include_alt:
20887           /* Note that, according to the spec, a transparent include
20888              chain cannot call DW_MACRO_GNU_start_file.  So, we can just
20889              skip this opcode.  */
20890           mac_ptr += offset_size;
20891           break;
20892
20893         case DW_MACINFO_vendor_ext:
20894           /* Only skip the data by MAC_PTR.  */
20895           if (!section_is_gnu)
20896             {
20897               unsigned int bytes_read;
20898
20899               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
20900               mac_ptr += bytes_read;
20901               read_direct_string (abfd, mac_ptr, &bytes_read);
20902               mac_ptr += bytes_read;
20903             }
20904           /* FALLTHROUGH */
20905
20906         default:
20907           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
20908                                          mac_ptr, mac_end, abfd, offset_size,
20909                                          section);
20910           if (mac_ptr == NULL)
20911             return;
20912           break;
20913         }
20914     } while (macinfo_type != 0 && current_file == NULL);
20915
20916   /* Second pass: Process all entries.
20917
20918      Use the AT_COMMAND_LINE flag to determine whether we are still processing
20919      command-line macro definitions/undefinitions.  This flag is unset when we
20920      reach the first DW_MACINFO_start_file entry.  */
20921
20922   include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
20923                                     NULL, xcalloc, xfree);
20924   cleanup = make_cleanup_htab_delete (include_hash);
20925   mac_ptr = section->buffer + offset;
20926   slot = htab_find_slot (include_hash, mac_ptr, INSERT);
20927   *slot = (void *) mac_ptr;
20928   dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
20929                             current_file, lh, comp_dir, section,
20930                             section_is_gnu, 0,
20931                             offset_size, objfile, include_hash);
20932   do_cleanups (cleanup);
20933 }
20934
20935 /* Check if the attribute's form is a DW_FORM_block*
20936    if so return true else false.  */
20937
20938 static int
20939 attr_form_is_block (const struct attribute *attr)
20940 {
20941   return (attr == NULL ? 0 :
20942       attr->form == DW_FORM_block1
20943       || attr->form == DW_FORM_block2
20944       || attr->form == DW_FORM_block4
20945       || attr->form == DW_FORM_block
20946       || attr->form == DW_FORM_exprloc);
20947 }
20948
20949 /* Return non-zero if ATTR's value is a section offset --- classes
20950    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
20951    You may use DW_UNSND (attr) to retrieve such offsets.
20952
20953    Section 7.5.4, "Attribute Encodings", explains that no attribute
20954    may have a value that belongs to more than one of these classes; it
20955    would be ambiguous if we did, because we use the same forms for all
20956    of them.  */
20957
20958 static int
20959 attr_form_is_section_offset (const struct attribute *attr)
20960 {
20961   return (attr->form == DW_FORM_data4
20962           || attr->form == DW_FORM_data8
20963           || attr->form == DW_FORM_sec_offset);
20964 }
20965
20966 /* Return non-zero if ATTR's value falls in the 'constant' class, or
20967    zero otherwise.  When this function returns true, you can apply
20968    dwarf2_get_attr_constant_value to it.
20969
20970    However, note that for some attributes you must check
20971    attr_form_is_section_offset before using this test.  DW_FORM_data4
20972    and DW_FORM_data8 are members of both the constant class, and of
20973    the classes that contain offsets into other debug sections
20974    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
20975    that, if an attribute's can be either a constant or one of the
20976    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
20977    taken as section offsets, not constants.  */
20978
20979 static int
20980 attr_form_is_constant (const struct attribute *attr)
20981 {
20982   switch (attr->form)
20983     {
20984     case DW_FORM_sdata:
20985     case DW_FORM_udata:
20986     case DW_FORM_data1:
20987     case DW_FORM_data2:
20988     case DW_FORM_data4:
20989     case DW_FORM_data8:
20990       return 1;
20991     default:
20992       return 0;
20993     }
20994 }
20995
20996
20997 /* DW_ADDR is always stored already as sect_offset; despite for the forms
20998    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
20999
21000 static int
21001 attr_form_is_ref (const struct attribute *attr)
21002 {
21003   switch (attr->form)
21004     {
21005     case DW_FORM_ref_addr:
21006     case DW_FORM_ref1:
21007     case DW_FORM_ref2:
21008     case DW_FORM_ref4:
21009     case DW_FORM_ref8:
21010     case DW_FORM_ref_udata:
21011     case DW_FORM_GNU_ref_alt:
21012       return 1;
21013     default:
21014       return 0;
21015     }
21016 }
21017
21018 /* Return the .debug_loc section to use for CU.
21019    For DWO files use .debug_loc.dwo.  */
21020
21021 static struct dwarf2_section_info *
21022 cu_debug_loc_section (struct dwarf2_cu *cu)
21023 {
21024   if (cu->dwo_unit)
21025     return &cu->dwo_unit->dwo_file->sections.loc;
21026   return &dwarf2_per_objfile->loc;
21027 }
21028
21029 /* A helper function that fills in a dwarf2_loclist_baton.  */
21030
21031 static void
21032 fill_in_loclist_baton (struct dwarf2_cu *cu,
21033                        struct dwarf2_loclist_baton *baton,
21034                        const struct attribute *attr)
21035 {
21036   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21037
21038   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
21039
21040   baton->per_cu = cu->per_cu;
21041   gdb_assert (baton->per_cu);
21042   /* We don't know how long the location list is, but make sure we
21043      don't run off the edge of the section.  */
21044   baton->size = section->size - DW_UNSND (attr);
21045   baton->data = section->buffer + DW_UNSND (attr);
21046   baton->base_address = cu->base_address;
21047   baton->from_dwo = cu->dwo_unit != NULL;
21048 }
21049
21050 static void
21051 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
21052                              struct dwarf2_cu *cu, int is_block)
21053 {
21054   struct objfile *objfile = dwarf2_per_objfile->objfile;
21055   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21056
21057   if (attr_form_is_section_offset (attr)
21058       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
21059          the section.  If so, fall through to the complaint in the
21060          other branch.  */
21061       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
21062     {
21063       struct dwarf2_loclist_baton *baton;
21064
21065       baton = obstack_alloc (&objfile->objfile_obstack,
21066                              sizeof (struct dwarf2_loclist_baton));
21067
21068       fill_in_loclist_baton (cu, baton, attr);
21069
21070       if (cu->base_known == 0)
21071         complaint (&symfile_complaints,
21072                    _("Location list used without "
21073                      "specifying the CU base address."));
21074
21075       SYMBOL_ACLASS_INDEX (sym) = (is_block
21076                                    ? dwarf2_loclist_block_index
21077                                    : dwarf2_loclist_index);
21078       SYMBOL_LOCATION_BATON (sym) = baton;
21079     }
21080   else
21081     {
21082       struct dwarf2_locexpr_baton *baton;
21083
21084       baton = obstack_alloc (&objfile->objfile_obstack,
21085                              sizeof (struct dwarf2_locexpr_baton));
21086       baton->per_cu = cu->per_cu;
21087       gdb_assert (baton->per_cu);
21088
21089       if (attr_form_is_block (attr))
21090         {
21091           /* Note that we're just copying the block's data pointer
21092              here, not the actual data.  We're still pointing into the
21093              info_buffer for SYM's objfile; right now we never release
21094              that buffer, but when we do clean up properly this may
21095              need to change.  */
21096           baton->size = DW_BLOCK (attr)->size;
21097           baton->data = DW_BLOCK (attr)->data;
21098         }
21099       else
21100         {
21101           dwarf2_invalid_attrib_class_complaint ("location description",
21102                                                  SYMBOL_NATURAL_NAME (sym));
21103           baton->size = 0;
21104         }
21105
21106       SYMBOL_ACLASS_INDEX (sym) = (is_block
21107                                    ? dwarf2_locexpr_block_index
21108                                    : dwarf2_locexpr_index);
21109       SYMBOL_LOCATION_BATON (sym) = baton;
21110     }
21111 }
21112
21113 /* Return the OBJFILE associated with the compilation unit CU.  If CU
21114    came from a separate debuginfo file, then the master objfile is
21115    returned.  */
21116
21117 struct objfile *
21118 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21119 {
21120   struct objfile *objfile = per_cu->objfile;
21121
21122   /* Return the master objfile, so that we can report and look up the
21123      correct file containing this variable.  */
21124   if (objfile->separate_debug_objfile_backlink)
21125     objfile = objfile->separate_debug_objfile_backlink;
21126
21127   return objfile;
21128 }
21129
21130 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21131    (CU_HEADERP is unused in such case) or prepare a temporary copy at
21132    CU_HEADERP first.  */
21133
21134 static const struct comp_unit_head *
21135 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21136                        struct dwarf2_per_cu_data *per_cu)
21137 {
21138   const gdb_byte *info_ptr;
21139
21140   if (per_cu->cu)
21141     return &per_cu->cu->header;
21142
21143   info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
21144
21145   memset (cu_headerp, 0, sizeof (*cu_headerp));
21146   read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
21147
21148   return cu_headerp;
21149 }
21150
21151 /* Return the address size given in the compilation unit header for CU.  */
21152
21153 int
21154 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21155 {
21156   struct comp_unit_head cu_header_local;
21157   const struct comp_unit_head *cu_headerp;
21158
21159   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21160
21161   return cu_headerp->addr_size;
21162 }
21163
21164 /* Return the offset size given in the compilation unit header for CU.  */
21165
21166 int
21167 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21168 {
21169   struct comp_unit_head cu_header_local;
21170   const struct comp_unit_head *cu_headerp;
21171
21172   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21173
21174   return cu_headerp->offset_size;
21175 }
21176
21177 /* See its dwarf2loc.h declaration.  */
21178
21179 int
21180 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21181 {
21182   struct comp_unit_head cu_header_local;
21183   const struct comp_unit_head *cu_headerp;
21184
21185   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21186
21187   if (cu_headerp->version == 2)
21188     return cu_headerp->addr_size;
21189   else
21190     return cu_headerp->offset_size;
21191 }
21192
21193 /* Return the text offset of the CU.  The returned offset comes from
21194    this CU's objfile.  If this objfile came from a separate debuginfo
21195    file, then the offset may be different from the corresponding
21196    offset in the parent objfile.  */
21197
21198 CORE_ADDR
21199 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21200 {
21201   struct objfile *objfile = per_cu->objfile;
21202
21203   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21204 }
21205
21206 /* Locate the .debug_info compilation unit from CU's objfile which contains
21207    the DIE at OFFSET.  Raises an error on failure.  */
21208
21209 static struct dwarf2_per_cu_data *
21210 dwarf2_find_containing_comp_unit (sect_offset offset,
21211                                   unsigned int offset_in_dwz,
21212                                   struct objfile *objfile)
21213 {
21214   struct dwarf2_per_cu_data *this_cu;
21215   int low, high;
21216   const sect_offset *cu_off;
21217
21218   low = 0;
21219   high = dwarf2_per_objfile->n_comp_units - 1;
21220   while (high > low)
21221     {
21222       struct dwarf2_per_cu_data *mid_cu;
21223       int mid = low + (high - low) / 2;
21224
21225       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21226       cu_off = &mid_cu->offset;
21227       if (mid_cu->is_dwz > offset_in_dwz
21228           || (mid_cu->is_dwz == offset_in_dwz
21229               && cu_off->sect_off >= offset.sect_off))
21230         high = mid;
21231       else
21232         low = mid + 1;
21233     }
21234   gdb_assert (low == high);
21235   this_cu = dwarf2_per_objfile->all_comp_units[low];
21236   cu_off = &this_cu->offset;
21237   if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
21238     {
21239       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
21240         error (_("Dwarf Error: could not find partial DIE containing "
21241                "offset 0x%lx [in module %s]"),
21242                (long) offset.sect_off, bfd_get_filename (objfile->obfd));
21243
21244       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21245                   <= offset.sect_off);
21246       return dwarf2_per_objfile->all_comp_units[low-1];
21247     }
21248   else
21249     {
21250       this_cu = dwarf2_per_objfile->all_comp_units[low];
21251       if (low == dwarf2_per_objfile->n_comp_units - 1
21252           && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21253         error (_("invalid dwarf2 offset %u"), offset.sect_off);
21254       gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
21255       return this_cu;
21256     }
21257 }
21258
21259 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
21260
21261 static void
21262 init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
21263 {
21264   memset (cu, 0, sizeof (*cu));
21265   per_cu->cu = cu;
21266   cu->per_cu = per_cu;
21267   cu->objfile = per_cu->objfile;
21268   obstack_init (&cu->comp_unit_obstack);
21269 }
21270
21271 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
21272
21273 static void
21274 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
21275                        enum language pretend_language)
21276 {
21277   struct attribute *attr;
21278
21279   /* Set the language we're debugging.  */
21280   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
21281   if (attr)
21282     set_cu_language (DW_UNSND (attr), cu);
21283   else
21284     {
21285       cu->language = pretend_language;
21286       cu->language_defn = language_def (cu->language);
21287     }
21288
21289   attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
21290   if (attr)
21291     cu->producer = DW_STRING (attr);
21292 }
21293
21294 /* Release one cached compilation unit, CU.  We unlink it from the tree
21295    of compilation units, but we don't remove it from the read_in_chain;
21296    the caller is responsible for that.
21297    NOTE: DATA is a void * because this function is also used as a
21298    cleanup routine.  */
21299
21300 static void
21301 free_heap_comp_unit (void *data)
21302 {
21303   struct dwarf2_cu *cu = data;
21304
21305   gdb_assert (cu->per_cu != NULL);
21306   cu->per_cu->cu = NULL;
21307   cu->per_cu = NULL;
21308
21309   obstack_free (&cu->comp_unit_obstack, NULL);
21310
21311   xfree (cu);
21312 }
21313
21314 /* This cleanup function is passed the address of a dwarf2_cu on the stack
21315    when we're finished with it.  We can't free the pointer itself, but be
21316    sure to unlink it from the cache.  Also release any associated storage.  */
21317
21318 static void
21319 free_stack_comp_unit (void *data)
21320 {
21321   struct dwarf2_cu *cu = data;
21322
21323   gdb_assert (cu->per_cu != NULL);
21324   cu->per_cu->cu = NULL;
21325   cu->per_cu = NULL;
21326
21327   obstack_free (&cu->comp_unit_obstack, NULL);
21328   cu->partial_dies = NULL;
21329 }
21330
21331 /* Free all cached compilation units.  */
21332
21333 static void
21334 free_cached_comp_units (void *data)
21335 {
21336   struct dwarf2_per_cu_data *per_cu, **last_chain;
21337
21338   per_cu = dwarf2_per_objfile->read_in_chain;
21339   last_chain = &dwarf2_per_objfile->read_in_chain;
21340   while (per_cu != NULL)
21341     {
21342       struct dwarf2_per_cu_data *next_cu;
21343
21344       next_cu = per_cu->cu->read_in_chain;
21345
21346       free_heap_comp_unit (per_cu->cu);
21347       *last_chain = next_cu;
21348
21349       per_cu = next_cu;
21350     }
21351 }
21352
21353 /* Increase the age counter on each cached compilation unit, and free
21354    any that are too old.  */
21355
21356 static void
21357 age_cached_comp_units (void)
21358 {
21359   struct dwarf2_per_cu_data *per_cu, **last_chain;
21360
21361   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
21362   per_cu = dwarf2_per_objfile->read_in_chain;
21363   while (per_cu != NULL)
21364     {
21365       per_cu->cu->last_used ++;
21366       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
21367         dwarf2_mark (per_cu->cu);
21368       per_cu = per_cu->cu->read_in_chain;
21369     }
21370
21371   per_cu = dwarf2_per_objfile->read_in_chain;
21372   last_chain = &dwarf2_per_objfile->read_in_chain;
21373   while (per_cu != NULL)
21374     {
21375       struct dwarf2_per_cu_data *next_cu;
21376
21377       next_cu = per_cu->cu->read_in_chain;
21378
21379       if (!per_cu->cu->mark)
21380         {
21381           free_heap_comp_unit (per_cu->cu);
21382           *last_chain = next_cu;
21383         }
21384       else
21385         last_chain = &per_cu->cu->read_in_chain;
21386
21387       per_cu = next_cu;
21388     }
21389 }
21390
21391 /* Remove a single compilation unit from the cache.  */
21392
21393 static void
21394 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
21395 {
21396   struct dwarf2_per_cu_data *per_cu, **last_chain;
21397
21398   per_cu = dwarf2_per_objfile->read_in_chain;
21399   last_chain = &dwarf2_per_objfile->read_in_chain;
21400   while (per_cu != NULL)
21401     {
21402       struct dwarf2_per_cu_data *next_cu;
21403
21404       next_cu = per_cu->cu->read_in_chain;
21405
21406       if (per_cu == target_per_cu)
21407         {
21408           free_heap_comp_unit (per_cu->cu);
21409           per_cu->cu = NULL;
21410           *last_chain = next_cu;
21411           break;
21412         }
21413       else
21414         last_chain = &per_cu->cu->read_in_chain;
21415
21416       per_cu = next_cu;
21417     }
21418 }
21419
21420 /* Release all extra memory associated with OBJFILE.  */
21421
21422 void
21423 dwarf2_free_objfile (struct objfile *objfile)
21424 {
21425   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
21426
21427   if (dwarf2_per_objfile == NULL)
21428     return;
21429
21430   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
21431   free_cached_comp_units (NULL);
21432
21433   if (dwarf2_per_objfile->quick_file_names_table)
21434     htab_delete (dwarf2_per_objfile->quick_file_names_table);
21435
21436   /* Everything else should be on the objfile obstack.  */
21437 }
21438
21439 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
21440    We store these in a hash table separate from the DIEs, and preserve them
21441    when the DIEs are flushed out of cache.
21442
21443    The CU "per_cu" pointer is needed because offset alone is not enough to
21444    uniquely identify the type.  A file may have multiple .debug_types sections,
21445    or the type may come from a DWO file.  Furthermore, while it's more logical
21446    to use per_cu->section+offset, with Fission the section with the data is in
21447    the DWO file but we don't know that section at the point we need it.
21448    We have to use something in dwarf2_per_cu_data (or the pointer to it)
21449    because we can enter the lookup routine, get_die_type_at_offset, from
21450    outside this file, and thus won't necessarily have PER_CU->cu.
21451    Fortunately, PER_CU is stable for the life of the objfile.  */
21452
21453 struct dwarf2_per_cu_offset_and_type
21454 {
21455   const struct dwarf2_per_cu_data *per_cu;
21456   sect_offset offset;
21457   struct type *type;
21458 };
21459
21460 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
21461
21462 static hashval_t
21463 per_cu_offset_and_type_hash (const void *item)
21464 {
21465   const struct dwarf2_per_cu_offset_and_type *ofs = item;
21466
21467   return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
21468 }
21469
21470 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
21471
21472 static int
21473 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
21474 {
21475   const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
21476   const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
21477
21478   return (ofs_lhs->per_cu == ofs_rhs->per_cu
21479           && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
21480 }
21481
21482 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
21483    table if necessary.  For convenience, return TYPE.
21484
21485    The DIEs reading must have careful ordering to:
21486     * Not cause infite loops trying to read in DIEs as a prerequisite for
21487       reading current DIE.
21488     * Not trying to dereference contents of still incompletely read in types
21489       while reading in other DIEs.
21490     * Enable referencing still incompletely read in types just by a pointer to
21491       the type without accessing its fields.
21492
21493    Therefore caller should follow these rules:
21494      * Try to fetch any prerequisite types we may need to build this DIE type
21495        before building the type and calling set_die_type.
21496      * After building type call set_die_type for current DIE as soon as
21497        possible before fetching more types to complete the current type.
21498      * Make the type as complete as possible before fetching more types.  */
21499
21500 static struct type *
21501 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
21502 {
21503   struct dwarf2_per_cu_offset_and_type **slot, ofs;
21504   struct objfile *objfile = cu->objfile;
21505
21506   /* For Ada types, make sure that the gnat-specific data is always
21507      initialized (if not already set).  There are a few types where
21508      we should not be doing so, because the type-specific area is
21509      already used to hold some other piece of info (eg: TYPE_CODE_FLT
21510      where the type-specific area is used to store the floatformat).
21511      But this is not a problem, because the gnat-specific information
21512      is actually not needed for these types.  */
21513   if (need_gnat_info (cu)
21514       && TYPE_CODE (type) != TYPE_CODE_FUNC
21515       && TYPE_CODE (type) != TYPE_CODE_FLT
21516       && !HAVE_GNAT_AUX_INFO (type))
21517     INIT_GNAT_SPECIFIC (type);
21518
21519   if (dwarf2_per_objfile->die_type_hash == NULL)
21520     {
21521       dwarf2_per_objfile->die_type_hash =
21522         htab_create_alloc_ex (127,
21523                               per_cu_offset_and_type_hash,
21524                               per_cu_offset_and_type_eq,
21525                               NULL,
21526                               &objfile->objfile_obstack,
21527                               hashtab_obstack_allocate,
21528                               dummy_obstack_deallocate);
21529     }
21530
21531   ofs.per_cu = cu->per_cu;
21532   ofs.offset = die->offset;
21533   ofs.type = type;
21534   slot = (struct dwarf2_per_cu_offset_and_type **)
21535     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
21536   if (*slot)
21537     complaint (&symfile_complaints,
21538                _("A problem internal to GDB: DIE 0x%x has type already set"),
21539                die->offset.sect_off);
21540   *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
21541   **slot = ofs;
21542   return type;
21543 }
21544
21545 /* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
21546    or return NULL if the die does not have a saved type.  */
21547
21548 static struct type *
21549 get_die_type_at_offset (sect_offset offset,
21550                         struct dwarf2_per_cu_data *per_cu)
21551 {
21552   struct dwarf2_per_cu_offset_and_type *slot, ofs;
21553
21554   if (dwarf2_per_objfile->die_type_hash == NULL)
21555     return NULL;
21556
21557   ofs.per_cu = per_cu;
21558   ofs.offset = offset;
21559   slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
21560   if (slot)
21561     return slot->type;
21562   else
21563     return NULL;
21564 }
21565
21566 /* Look up the type for DIE in CU in die_type_hash,
21567    or return NULL if DIE does not have a saved type.  */
21568
21569 static struct type *
21570 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
21571 {
21572   return get_die_type_at_offset (die->offset, cu->per_cu);
21573 }
21574
21575 /* Add a dependence relationship from CU to REF_PER_CU.  */
21576
21577 static void
21578 dwarf2_add_dependence (struct dwarf2_cu *cu,
21579                        struct dwarf2_per_cu_data *ref_per_cu)
21580 {
21581   void **slot;
21582
21583   if (cu->dependencies == NULL)
21584     cu->dependencies
21585       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
21586                               NULL, &cu->comp_unit_obstack,
21587                               hashtab_obstack_allocate,
21588                               dummy_obstack_deallocate);
21589
21590   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
21591   if (*slot == NULL)
21592     *slot = ref_per_cu;
21593 }
21594
21595 /* Subroutine of dwarf2_mark to pass to htab_traverse.
21596    Set the mark field in every compilation unit in the
21597    cache that we must keep because we are keeping CU.  */
21598
21599 static int
21600 dwarf2_mark_helper (void **slot, void *data)
21601 {
21602   struct dwarf2_per_cu_data *per_cu;
21603
21604   per_cu = (struct dwarf2_per_cu_data *) *slot;
21605
21606   /* cu->dependencies references may not yet have been ever read if QUIT aborts
21607      reading of the chain.  As such dependencies remain valid it is not much
21608      useful to track and undo them during QUIT cleanups.  */
21609   if (per_cu->cu == NULL)
21610     return 1;
21611
21612   if (per_cu->cu->mark)
21613     return 1;
21614   per_cu->cu->mark = 1;
21615
21616   if (per_cu->cu->dependencies != NULL)
21617     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
21618
21619   return 1;
21620 }
21621
21622 /* Set the mark field in CU and in every other compilation unit in the
21623    cache that we must keep because we are keeping CU.  */
21624
21625 static void
21626 dwarf2_mark (struct dwarf2_cu *cu)
21627 {
21628   if (cu->mark)
21629     return;
21630   cu->mark = 1;
21631   if (cu->dependencies != NULL)
21632     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
21633 }
21634
21635 static void
21636 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
21637 {
21638   while (per_cu)
21639     {
21640       per_cu->cu->mark = 0;
21641       per_cu = per_cu->cu->read_in_chain;
21642     }
21643 }
21644
21645 /* Trivial hash function for partial_die_info: the hash value of a DIE
21646    is its offset in .debug_info for this objfile.  */
21647
21648 static hashval_t
21649 partial_die_hash (const void *item)
21650 {
21651   const struct partial_die_info *part_die = item;
21652
21653   return part_die->offset.sect_off;
21654 }
21655
21656 /* Trivial comparison function for partial_die_info structures: two DIEs
21657    are equal if they have the same offset.  */
21658
21659 static int
21660 partial_die_eq (const void *item_lhs, const void *item_rhs)
21661 {
21662   const struct partial_die_info *part_die_lhs = item_lhs;
21663   const struct partial_die_info *part_die_rhs = item_rhs;
21664
21665   return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
21666 }
21667
21668 static struct cmd_list_element *set_dwarf2_cmdlist;
21669 static struct cmd_list_element *show_dwarf2_cmdlist;
21670
21671 static void
21672 set_dwarf2_cmd (char *args, int from_tty)
21673 {
21674   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
21675 }
21676
21677 static void
21678 show_dwarf2_cmd (char *args, int from_tty)
21679 {
21680   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
21681 }
21682
21683 /* Free data associated with OBJFILE, if necessary.  */
21684
21685 static void
21686 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
21687 {
21688   struct dwarf2_per_objfile *data = d;
21689   int ix;
21690
21691   /* Make sure we don't accidentally use dwarf2_per_objfile while
21692      cleaning up.  */
21693   dwarf2_per_objfile = NULL;
21694
21695   for (ix = 0; ix < data->n_comp_units; ++ix)
21696    VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
21697
21698   for (ix = 0; ix < data->n_type_units; ++ix)
21699     VEC_free (dwarf2_per_cu_ptr,
21700               data->all_type_units[ix]->per_cu.imported_symtabs);
21701   xfree (data->all_type_units);
21702
21703   VEC_free (dwarf2_section_info_def, data->types);
21704
21705   if (data->dwo_files)
21706     free_dwo_files (data->dwo_files, objfile);
21707   if (data->dwp_file)
21708     gdb_bfd_unref (data->dwp_file->dbfd);
21709
21710   if (data->dwz_file && data->dwz_file->dwz_bfd)
21711     gdb_bfd_unref (data->dwz_file->dwz_bfd);
21712 }
21713
21714 \f
21715 /* The "save gdb-index" command.  */
21716
21717 /* The contents of the hash table we create when building the string
21718    table.  */
21719 struct strtab_entry
21720 {
21721   offset_type offset;
21722   const char *str;
21723 };
21724
21725 /* Hash function for a strtab_entry.
21726
21727    Function is used only during write_hash_table so no index format backward
21728    compatibility is needed.  */
21729
21730 static hashval_t
21731 hash_strtab_entry (const void *e)
21732 {
21733   const struct strtab_entry *entry = e;
21734   return mapped_index_string_hash (INT_MAX, entry->str);
21735 }
21736
21737 /* Equality function for a strtab_entry.  */
21738
21739 static int
21740 eq_strtab_entry (const void *a, const void *b)
21741 {
21742   const struct strtab_entry *ea = a;
21743   const struct strtab_entry *eb = b;
21744   return !strcmp (ea->str, eb->str);
21745 }
21746
21747 /* Create a strtab_entry hash table.  */
21748
21749 static htab_t
21750 create_strtab (void)
21751 {
21752   return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
21753                             xfree, xcalloc, xfree);
21754 }
21755
21756 /* Add a string to the constant pool.  Return the string's offset in
21757    host order.  */
21758
21759 static offset_type
21760 add_string (htab_t table, struct obstack *cpool, const char *str)
21761 {
21762   void **slot;
21763   struct strtab_entry entry;
21764   struct strtab_entry *result;
21765
21766   entry.str = str;
21767   slot = htab_find_slot (table, &entry, INSERT);
21768   if (*slot)
21769     result = *slot;
21770   else
21771     {
21772       result = XNEW (struct strtab_entry);
21773       result->offset = obstack_object_size (cpool);
21774       result->str = str;
21775       obstack_grow_str0 (cpool, str);
21776       *slot = result;
21777     }
21778   return result->offset;
21779 }
21780
21781 /* An entry in the symbol table.  */
21782 struct symtab_index_entry
21783 {
21784   /* The name of the symbol.  */
21785   const char *name;
21786   /* The offset of the name in the constant pool.  */
21787   offset_type index_offset;
21788   /* A sorted vector of the indices of all the CUs that hold an object
21789      of this name.  */
21790   VEC (offset_type) *cu_indices;
21791 };
21792
21793 /* The symbol table.  This is a power-of-2-sized hash table.  */
21794 struct mapped_symtab
21795 {
21796   offset_type n_elements;
21797   offset_type size;
21798   struct symtab_index_entry **data;
21799 };
21800
21801 /* Hash function for a symtab_index_entry.  */
21802
21803 static hashval_t
21804 hash_symtab_entry (const void *e)
21805 {
21806   const struct symtab_index_entry *entry = e;
21807   return iterative_hash (VEC_address (offset_type, entry->cu_indices),
21808                          sizeof (offset_type) * VEC_length (offset_type,
21809                                                             entry->cu_indices),
21810                          0);
21811 }
21812
21813 /* Equality function for a symtab_index_entry.  */
21814
21815 static int
21816 eq_symtab_entry (const void *a, const void *b)
21817 {
21818   const struct symtab_index_entry *ea = a;
21819   const struct symtab_index_entry *eb = b;
21820   int len = VEC_length (offset_type, ea->cu_indices);
21821   if (len != VEC_length (offset_type, eb->cu_indices))
21822     return 0;
21823   return !memcmp (VEC_address (offset_type, ea->cu_indices),
21824                   VEC_address (offset_type, eb->cu_indices),
21825                   sizeof (offset_type) * len);
21826 }
21827
21828 /* Destroy a symtab_index_entry.  */
21829
21830 static void
21831 delete_symtab_entry (void *p)
21832 {
21833   struct symtab_index_entry *entry = p;
21834   VEC_free (offset_type, entry->cu_indices);
21835   xfree (entry);
21836 }
21837
21838 /* Create a hash table holding symtab_index_entry objects.  */
21839
21840 static htab_t
21841 create_symbol_hash_table (void)
21842 {
21843   return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
21844                             delete_symtab_entry, xcalloc, xfree);
21845 }
21846
21847 /* Create a new mapped symtab object.  */
21848
21849 static struct mapped_symtab *
21850 create_mapped_symtab (void)
21851 {
21852   struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
21853   symtab->n_elements = 0;
21854   symtab->size = 1024;
21855   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
21856   return symtab;
21857 }
21858
21859 /* Destroy a mapped_symtab.  */
21860
21861 static void
21862 cleanup_mapped_symtab (void *p)
21863 {
21864   struct mapped_symtab *symtab = p;
21865   /* The contents of the array are freed when the other hash table is
21866      destroyed.  */
21867   xfree (symtab->data);
21868   xfree (symtab);
21869 }
21870
21871 /* Find a slot in SYMTAB for the symbol NAME.  Returns a pointer to
21872    the slot.
21873    
21874    Function is used only during write_hash_table so no index format backward
21875    compatibility is needed.  */
21876
21877 static struct symtab_index_entry **
21878 find_slot (struct mapped_symtab *symtab, const char *name)
21879 {
21880   offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
21881
21882   index = hash & (symtab->size - 1);
21883   step = ((hash * 17) & (symtab->size - 1)) | 1;
21884
21885   for (;;)
21886     {
21887       if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
21888         return &symtab->data[index];
21889       index = (index + step) & (symtab->size - 1);
21890     }
21891 }
21892
21893 /* Expand SYMTAB's hash table.  */
21894
21895 static void
21896 hash_expand (struct mapped_symtab *symtab)
21897 {
21898   offset_type old_size = symtab->size;
21899   offset_type i;
21900   struct symtab_index_entry **old_entries = symtab->data;
21901
21902   symtab->size *= 2;
21903   symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
21904
21905   for (i = 0; i < old_size; ++i)
21906     {
21907       if (old_entries[i])
21908         {
21909           struct symtab_index_entry **slot = find_slot (symtab,
21910                                                         old_entries[i]->name);
21911           *slot = old_entries[i];
21912         }
21913     }
21914
21915   xfree (old_entries);
21916 }
21917
21918 /* Add an entry to SYMTAB.  NAME is the name of the symbol.
21919    CU_INDEX is the index of the CU in which the symbol appears.
21920    IS_STATIC is one if the symbol is static, otherwise zero (global).  */
21921
21922 static void
21923 add_index_entry (struct mapped_symtab *symtab, const char *name,
21924                  int is_static, gdb_index_symbol_kind kind,
21925                  offset_type cu_index)
21926 {
21927   struct symtab_index_entry **slot;
21928   offset_type cu_index_and_attrs;
21929
21930   ++symtab->n_elements;
21931   if (4 * symtab->n_elements / 3 >= symtab->size)
21932     hash_expand (symtab);
21933
21934   slot = find_slot (symtab, name);
21935   if (!*slot)
21936     {
21937       *slot = XNEW (struct symtab_index_entry);
21938       (*slot)->name = name;
21939       /* index_offset is set later.  */
21940       (*slot)->cu_indices = NULL;
21941     }
21942
21943   cu_index_and_attrs = 0;
21944   DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
21945   DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
21946   DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
21947
21948   /* We don't want to record an index value twice as we want to avoid the
21949      duplication.
21950      We process all global symbols and then all static symbols
21951      (which would allow us to avoid the duplication by only having to check
21952      the last entry pushed), but a symbol could have multiple kinds in one CU.
21953      To keep things simple we don't worry about the duplication here and
21954      sort and uniqufy the list after we've processed all symbols.  */
21955   VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
21956 }
21957
21958 /* qsort helper routine for uniquify_cu_indices.  */
21959
21960 static int
21961 offset_type_compare (const void *ap, const void *bp)
21962 {
21963   offset_type a = *(offset_type *) ap;
21964   offset_type b = *(offset_type *) bp;
21965
21966   return (a > b) - (b > a);
21967 }
21968
21969 /* Sort and remove duplicates of all symbols' cu_indices lists.  */
21970
21971 static void
21972 uniquify_cu_indices (struct mapped_symtab *symtab)
21973 {
21974   int i;
21975
21976   for (i = 0; i < symtab->size; ++i)
21977     {
21978       struct symtab_index_entry *entry = symtab->data[i];
21979
21980       if (entry
21981           && entry->cu_indices != NULL)
21982         {
21983           unsigned int next_to_insert, next_to_check;
21984           offset_type last_value;
21985
21986           qsort (VEC_address (offset_type, entry->cu_indices),
21987                  VEC_length (offset_type, entry->cu_indices),
21988                  sizeof (offset_type), offset_type_compare);
21989
21990           last_value = VEC_index (offset_type, entry->cu_indices, 0);
21991           next_to_insert = 1;
21992           for (next_to_check = 1;
21993                next_to_check < VEC_length (offset_type, entry->cu_indices);
21994                ++next_to_check)
21995             {
21996               if (VEC_index (offset_type, entry->cu_indices, next_to_check)
21997                   != last_value)
21998                 {
21999                   last_value = VEC_index (offset_type, entry->cu_indices,
22000                                           next_to_check);
22001                   VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22002                                last_value);
22003                   ++next_to_insert;
22004                 }
22005             }
22006           VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22007         }
22008     }
22009 }
22010
22011 /* Add a vector of indices to the constant pool.  */
22012
22013 static offset_type
22014 add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
22015                       struct symtab_index_entry *entry)
22016 {
22017   void **slot;
22018
22019   slot = htab_find_slot (symbol_hash_table, entry, INSERT);
22020   if (!*slot)
22021     {
22022       offset_type len = VEC_length (offset_type, entry->cu_indices);
22023       offset_type val = MAYBE_SWAP (len);
22024       offset_type iter;
22025       int i;
22026
22027       *slot = entry;
22028       entry->index_offset = obstack_object_size (cpool);
22029
22030       obstack_grow (cpool, &val, sizeof (val));
22031       for (i = 0;
22032            VEC_iterate (offset_type, entry->cu_indices, i, iter);
22033            ++i)
22034         {
22035           val = MAYBE_SWAP (iter);
22036           obstack_grow (cpool, &val, sizeof (val));
22037         }
22038     }
22039   else
22040     {
22041       struct symtab_index_entry *old_entry = *slot;
22042       entry->index_offset = old_entry->index_offset;
22043       entry = old_entry;
22044     }
22045   return entry->index_offset;
22046 }
22047
22048 /* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22049    constant pool entries going into the obstack CPOOL.  */
22050
22051 static void
22052 write_hash_table (struct mapped_symtab *symtab,
22053                   struct obstack *output, struct obstack *cpool)
22054 {
22055   offset_type i;
22056   htab_t symbol_hash_table;
22057   htab_t str_table;
22058
22059   symbol_hash_table = create_symbol_hash_table ();
22060   str_table = create_strtab ();
22061
22062   /* We add all the index vectors to the constant pool first, to
22063      ensure alignment is ok.  */
22064   for (i = 0; i < symtab->size; ++i)
22065     {
22066       if (symtab->data[i])
22067         add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
22068     }
22069
22070   /* Now write out the hash table.  */
22071   for (i = 0; i < symtab->size; ++i)
22072     {
22073       offset_type str_off, vec_off;
22074
22075       if (symtab->data[i])
22076         {
22077           str_off = add_string (str_table, cpool, symtab->data[i]->name);
22078           vec_off = symtab->data[i]->index_offset;
22079         }
22080       else
22081         {
22082           /* While 0 is a valid constant pool index, it is not valid
22083              to have 0 for both offsets.  */
22084           str_off = 0;
22085           vec_off = 0;
22086         }
22087
22088       str_off = MAYBE_SWAP (str_off);
22089       vec_off = MAYBE_SWAP (vec_off);
22090
22091       obstack_grow (output, &str_off, sizeof (str_off));
22092       obstack_grow (output, &vec_off, sizeof (vec_off));
22093     }
22094
22095   htab_delete (str_table);
22096   htab_delete (symbol_hash_table);
22097 }
22098
22099 /* Struct to map psymtab to CU index in the index file.  */
22100 struct psymtab_cu_index_map
22101 {
22102   struct partial_symtab *psymtab;
22103   unsigned int cu_index;
22104 };
22105
22106 static hashval_t
22107 hash_psymtab_cu_index (const void *item)
22108 {
22109   const struct psymtab_cu_index_map *map = item;
22110
22111   return htab_hash_pointer (map->psymtab);
22112 }
22113
22114 static int
22115 eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22116 {
22117   const struct psymtab_cu_index_map *lhs = item_lhs;
22118   const struct psymtab_cu_index_map *rhs = item_rhs;
22119
22120   return lhs->psymtab == rhs->psymtab;
22121 }
22122
22123 /* Helper struct for building the address table.  */
22124 struct addrmap_index_data
22125 {
22126   struct objfile *objfile;
22127   struct obstack *addr_obstack;
22128   htab_t cu_index_htab;
22129
22130   /* Non-zero if the previous_* fields are valid.
22131      We can't write an entry until we see the next entry (since it is only then
22132      that we know the end of the entry).  */
22133   int previous_valid;
22134   /* Index of the CU in the table of all CUs in the index file.  */
22135   unsigned int previous_cu_index;
22136   /* Start address of the CU.  */
22137   CORE_ADDR previous_cu_start;
22138 };
22139
22140 /* Write an address entry to OBSTACK.  */
22141
22142 static void
22143 add_address_entry (struct objfile *objfile, struct obstack *obstack,
22144                    CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
22145 {
22146   offset_type cu_index_to_write;
22147   gdb_byte addr[8];
22148   CORE_ADDR baseaddr;
22149
22150   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22151
22152   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22153   obstack_grow (obstack, addr, 8);
22154   store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22155   obstack_grow (obstack, addr, 8);
22156   cu_index_to_write = MAYBE_SWAP (cu_index);
22157   obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22158 }
22159
22160 /* Worker function for traversing an addrmap to build the address table.  */
22161
22162 static int
22163 add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22164 {
22165   struct addrmap_index_data *data = datap;
22166   struct partial_symtab *pst = obj;
22167
22168   if (data->previous_valid)
22169     add_address_entry (data->objfile, data->addr_obstack,
22170                        data->previous_cu_start, start_addr,
22171                        data->previous_cu_index);
22172
22173   data->previous_cu_start = start_addr;
22174   if (pst != NULL)
22175     {
22176       struct psymtab_cu_index_map find_map, *map;
22177       find_map.psymtab = pst;
22178       map = htab_find (data->cu_index_htab, &find_map);
22179       gdb_assert (map != NULL);
22180       data->previous_cu_index = map->cu_index;
22181       data->previous_valid = 1;
22182     }
22183   else
22184       data->previous_valid = 0;
22185
22186   return 0;
22187 }
22188
22189 /* Write OBJFILE's address map to OBSTACK.
22190    CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22191    in the index file.  */
22192
22193 static void
22194 write_address_map (struct objfile *objfile, struct obstack *obstack,
22195                    htab_t cu_index_htab)
22196 {
22197   struct addrmap_index_data addrmap_index_data;
22198
22199   /* When writing the address table, we have to cope with the fact that
22200      the addrmap iterator only provides the start of a region; we have to
22201      wait until the next invocation to get the start of the next region.  */
22202
22203   addrmap_index_data.objfile = objfile;
22204   addrmap_index_data.addr_obstack = obstack;
22205   addrmap_index_data.cu_index_htab = cu_index_htab;
22206   addrmap_index_data.previous_valid = 0;
22207
22208   addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22209                    &addrmap_index_data);
22210
22211   /* It's highly unlikely the last entry (end address = 0xff...ff)
22212      is valid, but we should still handle it.
22213      The end address is recorded as the start of the next region, but that
22214      doesn't work here.  To cope we pass 0xff...ff, this is a rare situation
22215      anyway.  */
22216   if (addrmap_index_data.previous_valid)
22217     add_address_entry (objfile, obstack,
22218                        addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22219                        addrmap_index_data.previous_cu_index);
22220 }
22221
22222 /* Return the symbol kind of PSYM.  */
22223
22224 static gdb_index_symbol_kind
22225 symbol_kind (struct partial_symbol *psym)
22226 {
22227   domain_enum domain = PSYMBOL_DOMAIN (psym);
22228   enum address_class aclass = PSYMBOL_CLASS (psym);
22229
22230   switch (domain)
22231     {
22232     case VAR_DOMAIN:
22233       switch (aclass)
22234         {
22235         case LOC_BLOCK:
22236           return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22237         case LOC_TYPEDEF:
22238           return GDB_INDEX_SYMBOL_KIND_TYPE;
22239         case LOC_COMPUTED:
22240         case LOC_CONST_BYTES:
22241         case LOC_OPTIMIZED_OUT:
22242         case LOC_STATIC:
22243           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22244         case LOC_CONST:
22245           /* Note: It's currently impossible to recognize psyms as enum values
22246              short of reading the type info.  For now punt.  */
22247           return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22248         default:
22249           /* There are other LOC_FOO values that one might want to classify
22250              as variables, but dwarf2read.c doesn't currently use them.  */
22251           return GDB_INDEX_SYMBOL_KIND_OTHER;
22252         }
22253     case STRUCT_DOMAIN:
22254       return GDB_INDEX_SYMBOL_KIND_TYPE;
22255     default:
22256       return GDB_INDEX_SYMBOL_KIND_OTHER;
22257     }
22258 }
22259
22260 /* Add a list of partial symbols to SYMTAB.  */
22261
22262 static void
22263 write_psymbols (struct mapped_symtab *symtab,
22264                 htab_t psyms_seen,
22265                 struct partial_symbol **psymp,
22266                 int count,
22267                 offset_type cu_index,
22268                 int is_static)
22269 {
22270   for (; count-- > 0; ++psymp)
22271     {
22272       struct partial_symbol *psym = *psymp;
22273       void **slot;
22274
22275       if (SYMBOL_LANGUAGE (psym) == language_ada)
22276         error (_("Ada is not currently supported by the index"));
22277
22278       /* Only add a given psymbol once.  */
22279       slot = htab_find_slot (psyms_seen, psym, INSERT);
22280       if (!*slot)
22281         {
22282           gdb_index_symbol_kind kind = symbol_kind (psym);
22283
22284           *slot = psym;
22285           add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
22286                            is_static, kind, cu_index);
22287         }
22288     }
22289 }
22290
22291 /* Write the contents of an ("unfinished") obstack to FILE.  Throw an
22292    exception if there is an error.  */
22293
22294 static void
22295 write_obstack (FILE *file, struct obstack *obstack)
22296 {
22297   if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
22298               file)
22299       != obstack_object_size (obstack))
22300     error (_("couldn't data write to file"));
22301 }
22302
22303 /* Unlink a file if the argument is not NULL.  */
22304
22305 static void
22306 unlink_if_set (void *p)
22307 {
22308   char **filename = p;
22309   if (*filename)
22310     unlink (*filename);
22311 }
22312
22313 /* A helper struct used when iterating over debug_types.  */
22314 struct signatured_type_index_data
22315 {
22316   struct objfile *objfile;
22317   struct mapped_symtab *symtab;
22318   struct obstack *types_list;
22319   htab_t psyms_seen;
22320   int cu_index;
22321 };
22322
22323 /* A helper function that writes a single signatured_type to an
22324    obstack.  */
22325
22326 static int
22327 write_one_signatured_type (void **slot, void *d)
22328 {
22329   struct signatured_type_index_data *info = d;
22330   struct signatured_type *entry = (struct signatured_type *) *slot;
22331   struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
22332   gdb_byte val[8];
22333
22334   write_psymbols (info->symtab,
22335                   info->psyms_seen,
22336                   info->objfile->global_psymbols.list
22337                   + psymtab->globals_offset,
22338                   psymtab->n_global_syms, info->cu_index,
22339                   0);
22340   write_psymbols (info->symtab,
22341                   info->psyms_seen,
22342                   info->objfile->static_psymbols.list
22343                   + psymtab->statics_offset,
22344                   psymtab->n_static_syms, info->cu_index,
22345                   1);
22346
22347   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22348                           entry->per_cu.offset.sect_off);
22349   obstack_grow (info->types_list, val, 8);
22350   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22351                           entry->type_offset_in_tu.cu_off);
22352   obstack_grow (info->types_list, val, 8);
22353   store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
22354   obstack_grow (info->types_list, val, 8);
22355
22356   ++info->cu_index;
22357
22358   return 1;
22359 }
22360
22361 /* Recurse into all "included" dependencies and write their symbols as
22362    if they appeared in this psymtab.  */
22363
22364 static void
22365 recursively_write_psymbols (struct objfile *objfile,
22366                             struct partial_symtab *psymtab,
22367                             struct mapped_symtab *symtab,
22368                             htab_t psyms_seen,
22369                             offset_type cu_index)
22370 {
22371   int i;
22372
22373   for (i = 0; i < psymtab->number_of_dependencies; ++i)
22374     if (psymtab->dependencies[i]->user != NULL)
22375       recursively_write_psymbols (objfile, psymtab->dependencies[i],
22376                                   symtab, psyms_seen, cu_index);
22377
22378   write_psymbols (symtab,
22379                   psyms_seen,
22380                   objfile->global_psymbols.list + psymtab->globals_offset,
22381                   psymtab->n_global_syms, cu_index,
22382                   0);
22383   write_psymbols (symtab,
22384                   psyms_seen,
22385                   objfile->static_psymbols.list + psymtab->statics_offset,
22386                   psymtab->n_static_syms, cu_index,
22387                   1);
22388 }
22389
22390 /* Create an index file for OBJFILE in the directory DIR.  */
22391
22392 static void
22393 write_psymtabs_to_index (struct objfile *objfile, const char *dir)
22394 {
22395   struct cleanup *cleanup;
22396   char *filename, *cleanup_filename;
22397   struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
22398   struct obstack cu_list, types_cu_list;
22399   int i;
22400   FILE *out_file;
22401   struct mapped_symtab *symtab;
22402   offset_type val, size_of_contents, total_len;
22403   struct stat st;
22404   htab_t psyms_seen;
22405   htab_t cu_index_htab;
22406   struct psymtab_cu_index_map *psymtab_cu_index_map;
22407
22408   if (dwarf2_per_objfile->using_index)
22409     error (_("Cannot use an index to create the index"));
22410
22411   if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
22412     error (_("Cannot make an index when the file has multiple .debug_types sections"));
22413
22414   if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
22415     return;
22416
22417   if (stat (objfile_name (objfile), &st) < 0)
22418     perror_with_name (objfile_name (objfile));
22419
22420   filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
22421                      INDEX_SUFFIX, (char *) NULL);
22422   cleanup = make_cleanup (xfree, filename);
22423
22424   out_file = gdb_fopen_cloexec (filename, "wb");
22425   if (!out_file)
22426     error (_("Can't open `%s' for writing"), filename);
22427
22428   cleanup_filename = filename;
22429   make_cleanup (unlink_if_set, &cleanup_filename);
22430
22431   symtab = create_mapped_symtab ();
22432   make_cleanup (cleanup_mapped_symtab, symtab);
22433
22434   obstack_init (&addr_obstack);
22435   make_cleanup_obstack_free (&addr_obstack);
22436
22437   obstack_init (&cu_list);
22438   make_cleanup_obstack_free (&cu_list);
22439
22440   obstack_init (&types_cu_list);
22441   make_cleanup_obstack_free (&types_cu_list);
22442
22443   psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
22444                                   NULL, xcalloc, xfree);
22445   make_cleanup_htab_delete (psyms_seen);
22446
22447   /* While we're scanning CU's create a table that maps a psymtab pointer
22448      (which is what addrmap records) to its index (which is what is recorded
22449      in the index file).  This will later be needed to write the address
22450      table.  */
22451   cu_index_htab = htab_create_alloc (100,
22452                                      hash_psymtab_cu_index,
22453                                      eq_psymtab_cu_index,
22454                                      NULL, xcalloc, xfree);
22455   make_cleanup_htab_delete (cu_index_htab);
22456   psymtab_cu_index_map = (struct psymtab_cu_index_map *)
22457     xmalloc (sizeof (struct psymtab_cu_index_map)
22458              * dwarf2_per_objfile->n_comp_units);
22459   make_cleanup (xfree, psymtab_cu_index_map);
22460
22461   /* The CU list is already sorted, so we don't need to do additional
22462      work here.  Also, the debug_types entries do not appear in
22463      all_comp_units, but only in their own hash table.  */
22464   for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
22465     {
22466       struct dwarf2_per_cu_data *per_cu
22467         = dwarf2_per_objfile->all_comp_units[i];
22468       struct partial_symtab *psymtab = per_cu->v.psymtab;
22469       gdb_byte val[8];
22470       struct psymtab_cu_index_map *map;
22471       void **slot;
22472
22473       /* CU of a shared file from 'dwz -m' may be unused by this main file.
22474          It may be referenced from a local scope but in such case it does not
22475          need to be present in .gdb_index.  */
22476       if (psymtab == NULL)
22477         continue;
22478
22479       if (psymtab->user == NULL)
22480         recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
22481
22482       map = &psymtab_cu_index_map[i];
22483       map->psymtab = psymtab;
22484       map->cu_index = i;
22485       slot = htab_find_slot (cu_index_htab, map, INSERT);
22486       gdb_assert (slot != NULL);
22487       gdb_assert (*slot == NULL);
22488       *slot = map;
22489
22490       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
22491                               per_cu->offset.sect_off);
22492       obstack_grow (&cu_list, val, 8);
22493       store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
22494       obstack_grow (&cu_list, val, 8);
22495     }
22496
22497   /* Dump the address map.  */
22498   write_address_map (objfile, &addr_obstack, cu_index_htab);
22499
22500   /* Write out the .debug_type entries, if any.  */
22501   if (dwarf2_per_objfile->signatured_types)
22502     {
22503       struct signatured_type_index_data sig_data;
22504
22505       sig_data.objfile = objfile;
22506       sig_data.symtab = symtab;
22507       sig_data.types_list = &types_cu_list;
22508       sig_data.psyms_seen = psyms_seen;
22509       sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
22510       htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
22511                               write_one_signatured_type, &sig_data);
22512     }
22513
22514   /* Now that we've processed all symbols we can shrink their cu_indices
22515      lists.  */
22516   uniquify_cu_indices (symtab);
22517
22518   obstack_init (&constant_pool);
22519   make_cleanup_obstack_free (&constant_pool);
22520   obstack_init (&symtab_obstack);
22521   make_cleanup_obstack_free (&symtab_obstack);
22522   write_hash_table (symtab, &symtab_obstack, &constant_pool);
22523
22524   obstack_init (&contents);
22525   make_cleanup_obstack_free (&contents);
22526   size_of_contents = 6 * sizeof (offset_type);
22527   total_len = size_of_contents;
22528
22529   /* The version number.  */
22530   val = MAYBE_SWAP (8);
22531   obstack_grow (&contents, &val, sizeof (val));
22532
22533   /* The offset of the CU list from the start of the file.  */
22534   val = MAYBE_SWAP (total_len);
22535   obstack_grow (&contents, &val, sizeof (val));
22536   total_len += obstack_object_size (&cu_list);
22537
22538   /* The offset of the types CU list from the start of the file.  */
22539   val = MAYBE_SWAP (total_len);
22540   obstack_grow (&contents, &val, sizeof (val));
22541   total_len += obstack_object_size (&types_cu_list);
22542
22543   /* The offset of the address table from the start of the file.  */
22544   val = MAYBE_SWAP (total_len);
22545   obstack_grow (&contents, &val, sizeof (val));
22546   total_len += obstack_object_size (&addr_obstack);
22547
22548   /* The offset of the symbol table from the start of the file.  */
22549   val = MAYBE_SWAP (total_len);
22550   obstack_grow (&contents, &val, sizeof (val));
22551   total_len += obstack_object_size (&symtab_obstack);
22552
22553   /* The offset of the constant pool from the start of the file.  */
22554   val = MAYBE_SWAP (total_len);
22555   obstack_grow (&contents, &val, sizeof (val));
22556   total_len += obstack_object_size (&constant_pool);
22557
22558   gdb_assert (obstack_object_size (&contents) == size_of_contents);
22559
22560   write_obstack (out_file, &contents);
22561   write_obstack (out_file, &cu_list);
22562   write_obstack (out_file, &types_cu_list);
22563   write_obstack (out_file, &addr_obstack);
22564   write_obstack (out_file, &symtab_obstack);
22565   write_obstack (out_file, &constant_pool);
22566
22567   fclose (out_file);
22568
22569   /* We want to keep the file, so we set cleanup_filename to NULL
22570      here.  See unlink_if_set.  */
22571   cleanup_filename = NULL;
22572
22573   do_cleanups (cleanup);
22574 }
22575
22576 /* Implementation of the `save gdb-index' command.
22577    
22578    Note that the file format used by this command is documented in the
22579    GDB manual.  Any changes here must be documented there.  */
22580
22581 static void
22582 save_gdb_index_command (char *arg, int from_tty)
22583 {
22584   struct objfile *objfile;
22585
22586   if (!arg || !*arg)
22587     error (_("usage: save gdb-index DIRECTORY"));
22588
22589   ALL_OBJFILES (objfile)
22590   {
22591     struct stat st;
22592
22593     /* If the objfile does not correspond to an actual file, skip it.  */
22594     if (stat (objfile_name (objfile), &st) < 0)
22595       continue;
22596
22597     dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22598     if (dwarf2_per_objfile)
22599       {
22600         volatile struct gdb_exception except;
22601
22602         TRY_CATCH (except, RETURN_MASK_ERROR)
22603           {
22604             write_psymtabs_to_index (objfile, arg);
22605           }
22606         if (except.reason < 0)
22607           exception_fprintf (gdb_stderr, except,
22608                              _("Error while writing index for `%s': "),
22609                              objfile_name (objfile));
22610       }
22611   }
22612 }
22613
22614 \f
22615
22616 int dwarf2_always_disassemble;
22617
22618 static void
22619 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
22620                                 struct cmd_list_element *c, const char *value)
22621 {
22622   fprintf_filtered (file,
22623                     _("Whether to always disassemble "
22624                       "DWARF expressions is %s.\n"),
22625                     value);
22626 }
22627
22628 static void
22629 show_check_physname (struct ui_file *file, int from_tty,
22630                      struct cmd_list_element *c, const char *value)
22631 {
22632   fprintf_filtered (file,
22633                     _("Whether to check \"physname\" is %s.\n"),
22634                     value);
22635 }
22636
22637 void _initialize_dwarf2_read (void);
22638
22639 void
22640 _initialize_dwarf2_read (void)
22641 {
22642   struct cmd_list_element *c;
22643
22644   dwarf2_objfile_data_key
22645     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
22646
22647   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
22648 Set DWARF 2 specific variables.\n\
22649 Configure DWARF 2 variables such as the cache size"),
22650                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
22651                   0/*allow-unknown*/, &maintenance_set_cmdlist);
22652
22653   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
22654 Show DWARF 2 specific variables\n\
22655 Show DWARF 2 variables such as the cache size"),
22656                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
22657                   0/*allow-unknown*/, &maintenance_show_cmdlist);
22658
22659   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
22660                             &dwarf2_max_cache_age, _("\
22661 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
22662 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
22663 A higher limit means that cached compilation units will be stored\n\
22664 in memory longer, and more total memory will be used.  Zero disables\n\
22665 caching, which can slow down startup."),
22666                             NULL,
22667                             show_dwarf2_max_cache_age,
22668                             &set_dwarf2_cmdlist,
22669                             &show_dwarf2_cmdlist);
22670
22671   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
22672                            &dwarf2_always_disassemble, _("\
22673 Set whether `info address' always disassembles DWARF expressions."), _("\
22674 Show whether `info address' always disassembles DWARF expressions."), _("\
22675 When enabled, DWARF expressions are always printed in an assembly-like\n\
22676 syntax.  When disabled, expressions will be printed in a more\n\
22677 conversational style, when possible."),
22678                            NULL,
22679                            show_dwarf2_always_disassemble,
22680                            &set_dwarf2_cmdlist,
22681                            &show_dwarf2_cmdlist);
22682
22683   add_setshow_zuinteger_cmd ("dwarf2-read", no_class, &dwarf2_read_debug, _("\
22684 Set debugging of the dwarf2 reader."), _("\
22685 Show debugging of the dwarf2 reader."), _("\
22686 When enabled (non-zero), debugging messages are printed during dwarf2\n\
22687 reading and symtab expansion.  A value of 1 (one) provides basic\n\
22688 information.  A value greater than 1 provides more verbose information."),
22689                             NULL,
22690                             NULL,
22691                             &setdebuglist, &showdebuglist);
22692
22693   add_setshow_zuinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
22694 Set debugging of the dwarf2 DIE reader."), _("\
22695 Show debugging of the dwarf2 DIE reader."), _("\
22696 When enabled (non-zero), DIEs are dumped after they are read in.\n\
22697 The value is the maximum depth to print."),
22698                              NULL,
22699                              NULL,
22700                              &setdebuglist, &showdebuglist);
22701
22702   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
22703 Set cross-checking of \"physname\" code against demangler."), _("\
22704 Show cross-checking of \"physname\" code against demangler."), _("\
22705 When enabled, GDB's internal \"physname\" code is checked against\n\
22706 the demangler."),
22707                            NULL, show_check_physname,
22708                            &setdebuglist, &showdebuglist);
22709
22710   add_setshow_boolean_cmd ("use-deprecated-index-sections",
22711                            no_class, &use_deprecated_index_sections, _("\
22712 Set whether to use deprecated gdb_index sections."), _("\
22713 Show whether to use deprecated gdb_index sections."), _("\
22714 When enabled, deprecated .gdb_index sections are used anyway.\n\
22715 Normally they are ignored either because of a missing feature or\n\
22716 performance issue.\n\
22717 Warning: This option must be enabled before gdb reads the file."),
22718                            NULL,
22719                            NULL,
22720                            &setlist, &showlist);
22721
22722   c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
22723                _("\
22724 Save a gdb-index file.\n\
22725 Usage: save gdb-index DIRECTORY"),
22726                &save_cmdlist);
22727   set_cmd_completer (c, filename_completer);
22728
22729   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
22730                                                         &dwarf2_locexpr_funcs);
22731   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
22732                                                         &dwarf2_loclist_funcs);
22733
22734   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
22735                                         &dwarf2_block_frame_base_locexpr_funcs);
22736   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
22737                                         &dwarf2_block_frame_base_loclist_funcs);
22738 }