Add DWARF index cache
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2018 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 "dwarf2read.h"
33 #include "dwarf-index-cache.h"
34 #include "dwarf-index-common.h"
35 #include "bfd.h"
36 #include "elf-bfd.h"
37 #include "symtab.h"
38 #include "gdbtypes.h"
39 #include "objfiles.h"
40 #include "dwarf2.h"
41 #include "buildsym.h"
42 #include "demangle.h"
43 #include "gdb-demangle.h"
44 #include "expression.h"
45 #include "filenames.h"  /* for DOSish file names */
46 #include "macrotab.h"
47 #include "language.h"
48 #include "complaints.h"
49 #include "bcache.h"
50 #include "dwarf2expr.h"
51 #include "dwarf2loc.h"
52 #include "cp-support.h"
53 #include "hashtab.h"
54 #include "command.h"
55 #include "gdbcmd.h"
56 #include "block.h"
57 #include "addrmap.h"
58 #include "typeprint.h"
59 #include "psympriv.h"
60 #include <sys/stat.h>
61 #include "completer.h"
62 #include "vec.h"
63 #include "c-lang.h"
64 #include "go-lang.h"
65 #include "valprint.h"
66 #include "gdbcore.h" /* for gnutarget */
67 #include "gdb/gdb-index.h"
68 #include <ctype.h>
69 #include "gdb_bfd.h"
70 #include "f-lang.h"
71 #include "source.h"
72 #include "filestuff.h"
73 #include "build-id.h"
74 #include "namespace.h"
75 #include "common/gdb_unlinker.h"
76 #include "common/function-view.h"
77 #include "common/gdb_optional.h"
78 #include "common/underlying.h"
79 #include "common/byte-vector.h"
80 #include "common/hash_enum.h"
81 #include "filename-seen-cache.h"
82 #include "producer.h"
83 #include <fcntl.h>
84 #include <sys/types.h>
85 #include <algorithm>
86 #include <unordered_set>
87 #include <unordered_map>
88 #include "selftest.h"
89 #include <cmath>
90 #include <set>
91 #include <forward_list>
92 #include "rust-lang.h"
93 #include "common/pathstuff.h"
94
95 /* When == 1, print basic high level tracing messages.
96    When > 1, be more verbose.
97    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
98 static unsigned int dwarf_read_debug = 0;
99
100 /* When non-zero, dump DIEs after they are read in.  */
101 static unsigned int dwarf_die_debug = 0;
102
103 /* When non-zero, dump line number entries as they are read in.  */
104 static unsigned int dwarf_line_debug = 0;
105
106 /* When non-zero, cross-check physname against demangler.  */
107 static int check_physname = 0;
108
109 /* When non-zero, do not reject deprecated .gdb_index sections.  */
110 static int use_deprecated_index_sections = 0;
111
112 static const struct objfile_data *dwarf2_objfile_data_key;
113
114 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
115
116 static int dwarf2_locexpr_index;
117 static int dwarf2_loclist_index;
118 static int dwarf2_locexpr_block_index;
119 static int dwarf2_loclist_block_index;
120
121 /* An index into a (C++) symbol name component in a symbol name as
122    recorded in the mapped_index's symbol table.  For each C++ symbol
123    in the symbol table, we record one entry for the start of each
124    component in the symbol in a table of name components, and then
125    sort the table, in order to be able to binary search symbol names,
126    ignoring leading namespaces, both completion and regular look up.
127    For example, for symbol "A::B::C", we'll have an entry that points
128    to "A::B::C", another that points to "B::C", and another for "C".
129    Note that function symbols in GDB index have no parameter
130    information, just the function/method names.  You can convert a
131    name_component to a "const char *" using the
132    'mapped_index::symbol_name_at(offset_type)' method.  */
133
134 struct name_component
135 {
136   /* Offset in the symbol name where the component starts.  Stored as
137      a (32-bit) offset instead of a pointer to save memory and improve
138      locality on 64-bit architectures.  */
139   offset_type name_offset;
140
141   /* The symbol's index in the symbol and constant pool tables of a
142      mapped_index.  */
143   offset_type idx;
144 };
145
146 /* Base class containing bits shared by both .gdb_index and
147    .debug_name indexes.  */
148
149 struct mapped_index_base
150 {
151   mapped_index_base () = default;
152   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
153
154   /* The name_component table (a sorted vector).  See name_component's
155      description above.  */
156   std::vector<name_component> name_components;
157
158   /* How NAME_COMPONENTS is sorted.  */
159   enum case_sensitivity name_components_casing;
160
161   /* Return the number of names in the symbol table.  */
162   virtual size_t symbol_name_count () const = 0;
163
164   /* Get the name of the symbol at IDX in the symbol table.  */
165   virtual const char *symbol_name_at (offset_type idx) const = 0;
166
167   /* Return whether the name at IDX in the symbol table should be
168      ignored.  */
169   virtual bool symbol_name_slot_invalid (offset_type idx) const
170   {
171     return false;
172   }
173
174   /* Build the symbol name component sorted vector, if we haven't
175      yet.  */
176   void build_name_components ();
177
178   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
179      possible matches for LN_NO_PARAMS in the name component
180      vector.  */
181   std::pair<std::vector<name_component>::const_iterator,
182             std::vector<name_component>::const_iterator>
183     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
184
185   /* Prevent deleting/destroying via a base class pointer.  */
186 protected:
187   ~mapped_index_base() = default;
188 };
189
190 /* A description of the mapped index.  The file format is described in
191    a comment by the code that writes the index.  */
192 struct mapped_index final : public mapped_index_base
193 {
194   /* A slot/bucket in the symbol table hash.  */
195   struct symbol_table_slot
196   {
197     const offset_type name;
198     const offset_type vec;
199   };
200
201   /* Index data format version.  */
202   int version = 0;
203
204   /* The address table data.  */
205   gdb::array_view<const gdb_byte> address_table;
206
207   /* The symbol table, implemented as a hash table.  */
208   gdb::array_view<symbol_table_slot> symbol_table;
209
210   /* A pointer to the constant pool.  */
211   const char *constant_pool = nullptr;
212
213   bool symbol_name_slot_invalid (offset_type idx) const override
214   {
215     const auto &bucket = this->symbol_table[idx];
216     return bucket.name == 0 && bucket.vec;
217   }
218
219   /* Convenience method to get at the name of the symbol at IDX in the
220      symbol table.  */
221   const char *symbol_name_at (offset_type idx) const override
222   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
223
224   size_t symbol_name_count () const override
225   { return this->symbol_table.size (); }
226 };
227
228 /* A description of the mapped .debug_names.
229    Uninitialized map has CU_COUNT 0.  */
230 struct mapped_debug_names final : public mapped_index_base
231 {
232   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
233   : dwarf2_per_objfile (dwarf2_per_objfile_)
234   {}
235
236   struct dwarf2_per_objfile *dwarf2_per_objfile;
237   bfd_endian dwarf5_byte_order;
238   bool dwarf5_is_dwarf64;
239   bool augmentation_is_gdb;
240   uint8_t offset_size;
241   uint32_t cu_count = 0;
242   uint32_t tu_count, bucket_count, name_count;
243   const gdb_byte *cu_table_reordered, *tu_table_reordered;
244   const uint32_t *bucket_table_reordered, *hash_table_reordered;
245   const gdb_byte *name_table_string_offs_reordered;
246   const gdb_byte *name_table_entry_offs_reordered;
247   const gdb_byte *entry_pool;
248
249   struct index_val
250   {
251     ULONGEST dwarf_tag;
252     struct attr
253     {
254       /* Attribute name DW_IDX_*.  */
255       ULONGEST dw_idx;
256
257       /* Attribute form DW_FORM_*.  */
258       ULONGEST form;
259
260       /* Value if FORM is DW_FORM_implicit_const.  */
261       LONGEST implicit_const;
262     };
263     std::vector<attr> attr_vec;
264   };
265
266   std::unordered_map<ULONGEST, index_val> abbrev_map;
267
268   const char *namei_to_name (uint32_t namei) const;
269
270   /* Implementation of the mapped_index_base virtual interface, for
271      the name_components cache.  */
272
273   const char *symbol_name_at (offset_type idx) const override
274   { return namei_to_name (idx); }
275
276   size_t symbol_name_count () const override
277   { return this->name_count; }
278 };
279
280 /* See dwarf2read.h.  */
281
282 dwarf2_per_objfile *
283 get_dwarf2_per_objfile (struct objfile *objfile)
284 {
285   return ((struct dwarf2_per_objfile *)
286           objfile_data (objfile, dwarf2_objfile_data_key));
287 }
288
289 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
290
291 void
292 set_dwarf2_per_objfile (struct objfile *objfile,
293                         struct dwarf2_per_objfile *dwarf2_per_objfile)
294 {
295   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
296   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
297 }
298
299 /* Default names of the debugging sections.  */
300
301 /* Note that if the debugging section has been compressed, it might
302    have a name like .zdebug_info.  */
303
304 static const struct dwarf2_debug_sections dwarf2_elf_names =
305 {
306   { ".debug_info", ".zdebug_info" },
307   { ".debug_abbrev", ".zdebug_abbrev" },
308   { ".debug_line", ".zdebug_line" },
309   { ".debug_loc", ".zdebug_loc" },
310   { ".debug_loclists", ".zdebug_loclists" },
311   { ".debug_macinfo", ".zdebug_macinfo" },
312   { ".debug_macro", ".zdebug_macro" },
313   { ".debug_str", ".zdebug_str" },
314   { ".debug_line_str", ".zdebug_line_str" },
315   { ".debug_ranges", ".zdebug_ranges" },
316   { ".debug_rnglists", ".zdebug_rnglists" },
317   { ".debug_types", ".zdebug_types" },
318   { ".debug_addr", ".zdebug_addr" },
319   { ".debug_frame", ".zdebug_frame" },
320   { ".eh_frame", NULL },
321   { ".gdb_index", ".zgdb_index" },
322   { ".debug_names", ".zdebug_names" },
323   { ".debug_aranges", ".zdebug_aranges" },
324   23
325 };
326
327 /* List of DWO/DWP sections.  */
328
329 static const struct dwop_section_names
330 {
331   struct dwarf2_section_names abbrev_dwo;
332   struct dwarf2_section_names info_dwo;
333   struct dwarf2_section_names line_dwo;
334   struct dwarf2_section_names loc_dwo;
335   struct dwarf2_section_names loclists_dwo;
336   struct dwarf2_section_names macinfo_dwo;
337   struct dwarf2_section_names macro_dwo;
338   struct dwarf2_section_names str_dwo;
339   struct dwarf2_section_names str_offsets_dwo;
340   struct dwarf2_section_names types_dwo;
341   struct dwarf2_section_names cu_index;
342   struct dwarf2_section_names tu_index;
343 }
344 dwop_section_names =
345 {
346   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
347   { ".debug_info.dwo", ".zdebug_info.dwo" },
348   { ".debug_line.dwo", ".zdebug_line.dwo" },
349   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
350   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
351   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
352   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
353   { ".debug_str.dwo", ".zdebug_str.dwo" },
354   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
355   { ".debug_types.dwo", ".zdebug_types.dwo" },
356   { ".debug_cu_index", ".zdebug_cu_index" },
357   { ".debug_tu_index", ".zdebug_tu_index" },
358 };
359
360 /* local data types */
361
362 /* The data in a compilation unit header, after target2host
363    translation, looks like this.  */
364 struct comp_unit_head
365 {
366   unsigned int length;
367   short version;
368   unsigned char addr_size;
369   unsigned char signed_addr_p;
370   sect_offset abbrev_sect_off;
371
372   /* Size of file offsets; either 4 or 8.  */
373   unsigned int offset_size;
374
375   /* Size of the length field; either 4 or 12.  */
376   unsigned int initial_length_size;
377
378   enum dwarf_unit_type unit_type;
379
380   /* Offset to the first byte of this compilation unit header in the
381      .debug_info section, for resolving relative reference dies.  */
382   sect_offset sect_off;
383
384   /* Offset to first die in this cu from the start of the cu.
385      This will be the first byte following the compilation unit header.  */
386   cu_offset first_die_cu_offset;
387
388   /* 64-bit signature of this type unit - it is valid only for
389      UNIT_TYPE DW_UT_type.  */
390   ULONGEST signature;
391
392   /* For types, offset in the type's DIE of the type defined by this TU.  */
393   cu_offset type_cu_offset_in_tu;
394 };
395
396 /* Type used for delaying computation of method physnames.
397    See comments for compute_delayed_physnames.  */
398 struct delayed_method_info
399 {
400   /* The type to which the method is attached, i.e., its parent class.  */
401   struct type *type;
402
403   /* The index of the method in the type's function fieldlists.  */
404   int fnfield_index;
405
406   /* The index of the method in the fieldlist.  */
407   int index;
408
409   /* The name of the DIE.  */
410   const char *name;
411
412   /*  The DIE associated with this method.  */
413   struct die_info *die;
414 };
415
416 /* Internal state when decoding a particular compilation unit.  */
417 struct dwarf2_cu
418 {
419   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
420   ~dwarf2_cu ();
421
422   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
423
424   /* The header of the compilation unit.  */
425   struct comp_unit_head header {};
426
427   /* Base address of this compilation unit.  */
428   CORE_ADDR base_address = 0;
429
430   /* Non-zero if base_address has been set.  */
431   int base_known = 0;
432
433   /* The language we are debugging.  */
434   enum language language = language_unknown;
435   const struct language_defn *language_defn = nullptr;
436
437   const char *producer = nullptr;
438
439   /* The symtab builder for this CU.  This is only non-NULL when full
440      symbols are being read.  */
441   std::unique_ptr<buildsym_compunit> builder;
442
443   /* The generic symbol table building routines have separate lists for
444      file scope symbols and all all other scopes (local scopes).  So
445      we need to select the right one to pass to add_symbol_to_list().
446      We do it by keeping a pointer to the correct list in list_in_scope.
447
448      FIXME: The original dwarf code just treated the file scope as the
449      first local scope, and all other local scopes as nested local
450      scopes, and worked fine.  Check to see if we really need to
451      distinguish these in buildsym.c.  */
452   struct pending **list_in_scope = nullptr;
453
454   /* Hash table holding all the loaded partial DIEs
455      with partial_die->offset.SECT_OFF as hash.  */
456   htab_t partial_dies = nullptr;
457
458   /* Storage for things with the same lifetime as this read-in compilation
459      unit, including partial DIEs.  */
460   auto_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 = nullptr;
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 = 0;
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 = nullptr;
477
478   /* Full DIEs if read in.  */
479   struct die_info *dies = nullptr;
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 = nullptr;
485
486   /* Header data from the line table, during full symbol processing.  */
487   struct line_header *line_header = nullptr;
488   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
489      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
490      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
491      to the line header as long as this DIE is being processed.  See
492      process_die_scope.  */
493   die_info *line_header_die_owner = nullptr;
494
495   /* A list of methods which need to have physnames computed
496      after all type information has been read.  */
497   std::vector<delayed_method_info> method_list;
498
499   /* To be copied to symtab->call_site_htab.  */
500   htab_t call_site_htab = nullptr;
501
502   /* Non-NULL if this CU came from a DWO file.
503      There is an invariant here that is important to remember:
504      Except for attributes copied from the top level DIE in the "main"
505      (or "stub") file in preparation for reading the DWO file
506      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
507      Either there isn't a DWO file (in which case this is NULL and the point
508      is moot), or there is and either we're not going to read it (in which
509      case this is NULL) or there is and we are reading it (in which case this
510      is non-NULL).  */
511   struct dwo_unit *dwo_unit = nullptr;
512
513   /* The DW_AT_addr_base attribute if present, zero otherwise
514      (zero is a valid value though).
515      Note this value comes from the Fission stub CU/TU's DIE.  */
516   ULONGEST addr_base = 0;
517
518   /* The DW_AT_ranges_base attribute if present, zero otherwise
519      (zero is a valid value though).
520      Note this value comes from the Fission stub CU/TU's DIE.
521      Also note that the value is zero in the non-DWO case so this value can
522      be used without needing to know whether DWO files are in use or not.
523      N.B. This does not apply to DW_AT_ranges appearing in
524      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
525      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
526      DW_AT_ranges_base *would* have to be applied, and we'd have to care
527      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
528   ULONGEST ranges_base = 0;
529
530   /* When reading debug info generated by older versions of rustc, we
531      have to rewrite some union types to be struct types with a
532      variant part.  This rewriting must be done after the CU is fully
533      read in, because otherwise at the point of rewriting some struct
534      type might not have been fully processed.  So, we keep a list of
535      all such types here and process them after expansion.  */
536   std::vector<struct type *> rust_unions;
537
538   /* Mark used when releasing cached dies.  */
539   unsigned int mark : 1;
540
541   /* This CU references .debug_loc.  See the symtab->locations_valid field.
542      This test is imperfect as there may exist optimized debug code not using
543      any location list and still facing inlining issues if handled as
544      unoptimized code.  For a future better test see GCC PR other/32998.  */
545   unsigned int has_loclist : 1;
546
547   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
548      if all the producer_is_* fields are valid.  This information is cached
549      because profiling CU expansion showed excessive time spent in
550      producer_is_gxx_lt_4_6.  */
551   unsigned int checked_producer : 1;
552   unsigned int producer_is_gxx_lt_4_6 : 1;
553   unsigned int producer_is_gcc_lt_4_3 : 1;
554   unsigned int producer_is_icc_lt_14 : 1;
555
556   /* When set, the file that we're processing is known to have
557      debugging info for C++ namespaces.  GCC 3.3.x did not produce
558      this information, but later versions do.  */
559
560   unsigned int processing_has_namespace_info : 1;
561
562   struct partial_die_info *find_partial_die (sect_offset sect_off);
563 };
564
565 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
566    This includes type_unit_group and quick_file_names.  */
567
568 struct stmt_list_hash
569 {
570   /* The DWO unit this table is from or NULL if there is none.  */
571   struct dwo_unit *dwo_unit;
572
573   /* Offset in .debug_line or .debug_line.dwo.  */
574   sect_offset line_sect_off;
575 };
576
577 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
578    an object of this type.  */
579
580 struct type_unit_group
581 {
582   /* dwarf2read.c's main "handle" on a TU symtab.
583      To simplify things we create an artificial CU that "includes" all the
584      type units using this stmt_list so that the rest of the code still has
585      a "per_cu" handle on the symtab.
586      This PER_CU is recognized by having no section.  */
587 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
588   struct dwarf2_per_cu_data per_cu;
589
590   /* The TUs that share this DW_AT_stmt_list entry.
591      This is added to while parsing type units to build partial symtabs,
592      and is deleted afterwards and not used again.  */
593   VEC (sig_type_ptr) *tus;
594
595   /* The compunit symtab.
596      Type units in a group needn't all be defined in the same source file,
597      so we create an essentially anonymous symtab as the compunit symtab.  */
598   struct compunit_symtab *compunit_symtab;
599
600   /* The data used to construct the hash key.  */
601   struct stmt_list_hash hash;
602
603   /* The number of symtabs from the line header.
604      The value here must match line_header.num_file_names.  */
605   unsigned int num_symtabs;
606
607   /* The symbol tables for this TU (obtained from the files listed in
608      DW_AT_stmt_list).
609      WARNING: The order of entries here must match the order of entries
610      in the line header.  After the first TU using this type_unit_group, the
611      line header for the subsequent TUs is recreated from this.  This is done
612      because we need to use the same symtabs for each TU using the same
613      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
614      there's no guarantee the line header doesn't have duplicate entries.  */
615   struct symtab **symtabs;
616 };
617
618 /* These sections are what may appear in a (real or virtual) DWO file.  */
619
620 struct dwo_sections
621 {
622   struct dwarf2_section_info abbrev;
623   struct dwarf2_section_info line;
624   struct dwarf2_section_info loc;
625   struct dwarf2_section_info loclists;
626   struct dwarf2_section_info macinfo;
627   struct dwarf2_section_info macro;
628   struct dwarf2_section_info str;
629   struct dwarf2_section_info str_offsets;
630   /* In the case of a virtual DWO file, these two are unused.  */
631   struct dwarf2_section_info info;
632   VEC (dwarf2_section_info_def) *types;
633 };
634
635 /* CUs/TUs in DWP/DWO files.  */
636
637 struct dwo_unit
638 {
639   /* Backlink to the containing struct dwo_file.  */
640   struct dwo_file *dwo_file;
641
642   /* The "id" that distinguishes this CU/TU.
643      .debug_info calls this "dwo_id", .debug_types calls this "signature".
644      Since signatures came first, we stick with it for consistency.  */
645   ULONGEST signature;
646
647   /* The section this CU/TU lives in, in the DWO file.  */
648   struct dwarf2_section_info *section;
649
650   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
651   sect_offset sect_off;
652   unsigned int length;
653
654   /* For types, offset in the type's DIE of the type defined by this TU.  */
655   cu_offset type_offset_in_tu;
656 };
657
658 /* include/dwarf2.h defines the DWP section codes.
659    It defines a max value but it doesn't define a min value, which we
660    use for error checking, so provide one.  */
661
662 enum dwp_v2_section_ids
663 {
664   DW_SECT_MIN = 1
665 };
666
667 /* Data for one DWO file.
668
669    This includes virtual DWO files (a virtual DWO file is a DWO file as it
670    appears in a DWP file).  DWP files don't really have DWO files per se -
671    comdat folding of types "loses" the DWO file they came from, and from
672    a high level view DWP files appear to contain a mass of random types.
673    However, to maintain consistency with the non-DWP case we pretend DWP
674    files contain virtual DWO files, and we assign each TU with one virtual
675    DWO file (generally based on the line and abbrev section offsets -
676    a heuristic that seems to work in practice).  */
677
678 struct dwo_file
679 {
680   /* The DW_AT_GNU_dwo_name attribute.
681      For virtual DWO files the name is constructed from the section offsets
682      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
683      from related CU+TUs.  */
684   const char *dwo_name;
685
686   /* The DW_AT_comp_dir attribute.  */
687   const char *comp_dir;
688
689   /* The bfd, when the file is open.  Otherwise this is NULL.
690      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
691   bfd *dbfd;
692
693   /* The sections that make up this DWO file.
694      Remember that for virtual DWO files in DWP V2, these are virtual
695      sections (for lack of a better name).  */
696   struct dwo_sections sections;
697
698   /* The CUs in the file.
699      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
700      an extension to handle LLVM's Link Time Optimization output (where
701      multiple source files may be compiled into a single object/dwo pair). */
702   htab_t cus;
703
704   /* Table of TUs in the file.
705      Each element is a struct dwo_unit.  */
706   htab_t tus;
707 };
708
709 /* These sections are what may appear in a DWP file.  */
710
711 struct dwp_sections
712 {
713   /* These are used by both DWP version 1 and 2.  */
714   struct dwarf2_section_info str;
715   struct dwarf2_section_info cu_index;
716   struct dwarf2_section_info tu_index;
717
718   /* These are only used by DWP version 2 files.
719      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
720      sections are referenced by section number, and are not recorded here.
721      In DWP version 2 there is at most one copy of all these sections, each
722      section being (effectively) comprised of the concatenation of all of the
723      individual sections that exist in the version 1 format.
724      To keep the code simple we treat each of these concatenated pieces as a
725      section itself (a virtual section?).  */
726   struct dwarf2_section_info abbrev;
727   struct dwarf2_section_info info;
728   struct dwarf2_section_info line;
729   struct dwarf2_section_info loc;
730   struct dwarf2_section_info macinfo;
731   struct dwarf2_section_info macro;
732   struct dwarf2_section_info str_offsets;
733   struct dwarf2_section_info types;
734 };
735
736 /* These sections are what may appear in a virtual DWO file in DWP version 1.
737    A virtual DWO file is a DWO file as it appears in a DWP file.  */
738
739 struct virtual_v1_dwo_sections
740 {
741   struct dwarf2_section_info abbrev;
742   struct dwarf2_section_info line;
743   struct dwarf2_section_info loc;
744   struct dwarf2_section_info macinfo;
745   struct dwarf2_section_info macro;
746   struct dwarf2_section_info str_offsets;
747   /* Each DWP hash table entry records one CU or one TU.
748      That is recorded here, and copied to dwo_unit.section.  */
749   struct dwarf2_section_info info_or_types;
750 };
751
752 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
753    In version 2, the sections of the DWO files are concatenated together
754    and stored in one section of that name.  Thus each ELF section contains
755    several "virtual" sections.  */
756
757 struct virtual_v2_dwo_sections
758 {
759   bfd_size_type abbrev_offset;
760   bfd_size_type abbrev_size;
761
762   bfd_size_type line_offset;
763   bfd_size_type line_size;
764
765   bfd_size_type loc_offset;
766   bfd_size_type loc_size;
767
768   bfd_size_type macinfo_offset;
769   bfd_size_type macinfo_size;
770
771   bfd_size_type macro_offset;
772   bfd_size_type macro_size;
773
774   bfd_size_type str_offsets_offset;
775   bfd_size_type str_offsets_size;
776
777   /* Each DWP hash table entry records one CU or one TU.
778      That is recorded here, and copied to dwo_unit.section.  */
779   bfd_size_type info_or_types_offset;
780   bfd_size_type info_or_types_size;
781 };
782
783 /* Contents of DWP hash tables.  */
784
785 struct dwp_hash_table
786 {
787   uint32_t version, nr_columns;
788   uint32_t nr_units, nr_slots;
789   const gdb_byte *hash_table, *unit_table;
790   union
791   {
792     struct
793     {
794       const gdb_byte *indices;
795     } v1;
796     struct
797     {
798       /* This is indexed by column number and gives the id of the section
799          in that column.  */
800 #define MAX_NR_V2_DWO_SECTIONS \
801   (1 /* .debug_info or .debug_types */ \
802    + 1 /* .debug_abbrev */ \
803    + 1 /* .debug_line */ \
804    + 1 /* .debug_loc */ \
805    + 1 /* .debug_str_offsets */ \
806    + 1 /* .debug_macro or .debug_macinfo */)
807       int section_ids[MAX_NR_V2_DWO_SECTIONS];
808       const gdb_byte *offsets;
809       const gdb_byte *sizes;
810     } v2;
811   } section_pool;
812 };
813
814 /* Data for one DWP file.  */
815
816 struct dwp_file
817 {
818   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
819     : name (name_),
820       dbfd (std::move (abfd))
821   {
822   }
823
824   /* Name of the file.  */
825   const char *name;
826
827   /* File format version.  */
828   int version = 0;
829
830   /* The bfd.  */
831   gdb_bfd_ref_ptr dbfd;
832
833   /* Section info for this file.  */
834   struct dwp_sections sections {};
835
836   /* Table of CUs in the file.  */
837   const struct dwp_hash_table *cus = nullptr;
838
839   /* Table of TUs in the file.  */
840   const struct dwp_hash_table *tus = nullptr;
841
842   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
843   htab_t loaded_cus {};
844   htab_t loaded_tus {};
845
846   /* Table to map ELF section numbers to their sections.
847      This is only needed for the DWP V1 file format.  */
848   unsigned int num_sections = 0;
849   asection **elf_sections = nullptr;
850 };
851
852 /* This represents a '.dwz' file.  */
853
854 struct dwz_file
855 {
856   dwz_file (gdb_bfd_ref_ptr &&bfd)
857     : dwz_bfd (std::move (bfd))
858   {
859   }
860
861   /* A dwz file can only contain a few sections.  */
862   struct dwarf2_section_info abbrev {};
863   struct dwarf2_section_info info {};
864   struct dwarf2_section_info str {};
865   struct dwarf2_section_info line {};
866   struct dwarf2_section_info macro {};
867   struct dwarf2_section_info gdb_index {};
868   struct dwarf2_section_info debug_names {};
869
870   /* The dwz's BFD.  */
871   gdb_bfd_ref_ptr dwz_bfd;
872
873   /* If we loaded the index from an external file, this contains the
874      resources associated to the open file, memory mapping, etc.  */
875   std::unique_ptr<index_cache_resource> index_cache_res;
876 };
877
878 /* Struct used to pass misc. parameters to read_die_and_children, et
879    al.  which are used for both .debug_info and .debug_types dies.
880    All parameters here are unchanging for the life of the call.  This
881    struct exists to abstract away the constant parameters of die reading.  */
882
883 struct die_reader_specs
884 {
885   /* The bfd of die_section.  */
886   bfd* abfd;
887
888   /* The CU of the DIE we are parsing.  */
889   struct dwarf2_cu *cu;
890
891   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
892   struct dwo_file *dwo_file;
893
894   /* The section the die comes from.
895      This is either .debug_info or .debug_types, or the .dwo variants.  */
896   struct dwarf2_section_info *die_section;
897
898   /* die_section->buffer.  */
899   const gdb_byte *buffer;
900
901   /* The end of the buffer.  */
902   const gdb_byte *buffer_end;
903
904   /* The value of the DW_AT_comp_dir attribute.  */
905   const char *comp_dir;
906
907   /* The abbreviation table to use when reading the DIEs.  */
908   struct abbrev_table *abbrev_table;
909 };
910
911 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
912 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
913                                       const gdb_byte *info_ptr,
914                                       struct die_info *comp_unit_die,
915                                       int has_children,
916                                       void *data);
917
918 /* A 1-based directory index.  This is a strong typedef to prevent
919    accidentally using a directory index as a 0-based index into an
920    array/vector.  */
921 enum class dir_index : unsigned int {};
922
923 /* Likewise, a 1-based file name index.  */
924 enum class file_name_index : unsigned int {};
925
926 struct file_entry
927 {
928   file_entry () = default;
929
930   file_entry (const char *name_, dir_index d_index_,
931               unsigned int mod_time_, unsigned int length_)
932     : name (name_),
933       d_index (d_index_),
934       mod_time (mod_time_),
935       length (length_)
936   {}
937
938   /* Return the include directory at D_INDEX stored in LH.  Returns
939      NULL if D_INDEX is out of bounds.  */
940   const char *include_dir (const line_header *lh) const;
941
942   /* The file name.  Note this is an observing pointer.  The memory is
943      owned by debug_line_buffer.  */
944   const char *name {};
945
946   /* The directory index (1-based).  */
947   dir_index d_index {};
948
949   unsigned int mod_time {};
950
951   unsigned int length {};
952
953   /* True if referenced by the Line Number Program.  */
954   bool included_p {};
955
956   /* The associated symbol table, if any.  */
957   struct symtab *symtab {};
958 };
959
960 /* The line number information for a compilation unit (found in the
961    .debug_line section) begins with a "statement program header",
962    which contains the following information.  */
963 struct line_header
964 {
965   line_header ()
966     : offset_in_dwz {}
967   {}
968
969   /* Add an entry to the include directory table.  */
970   void add_include_dir (const char *include_dir);
971
972   /* Add an entry to the file name table.  */
973   void add_file_name (const char *name, dir_index d_index,
974                       unsigned int mod_time, unsigned int length);
975
976   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
977      is out of bounds.  */
978   const char *include_dir_at (dir_index index) const
979   {
980     /* Convert directory index number (1-based) to vector index
981        (0-based).  */
982     size_t vec_index = to_underlying (index) - 1;
983
984     if (vec_index >= include_dirs.size ())
985       return NULL;
986     return include_dirs[vec_index];
987   }
988
989   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
990      is out of bounds.  */
991   file_entry *file_name_at (file_name_index index)
992   {
993     /* Convert file name index number (1-based) to vector index
994        (0-based).  */
995     size_t vec_index = to_underlying (index) - 1;
996
997     if (vec_index >= file_names.size ())
998       return NULL;
999     return &file_names[vec_index];
1000   }
1001
1002   /* Const version of the above.  */
1003   const file_entry *file_name_at (unsigned int index) const
1004   {
1005     if (index >= file_names.size ())
1006       return NULL;
1007     return &file_names[index];
1008   }
1009
1010   /* Offset of line number information in .debug_line section.  */
1011   sect_offset sect_off {};
1012
1013   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1014   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1015
1016   unsigned int total_length {};
1017   unsigned short version {};
1018   unsigned int header_length {};
1019   unsigned char minimum_instruction_length {};
1020   unsigned char maximum_ops_per_instruction {};
1021   unsigned char default_is_stmt {};
1022   int line_base {};
1023   unsigned char line_range {};
1024   unsigned char opcode_base {};
1025
1026   /* standard_opcode_lengths[i] is the number of operands for the
1027      standard opcode whose value is i.  This means that
1028      standard_opcode_lengths[0] is unused, and the last meaningful
1029      element is standard_opcode_lengths[opcode_base - 1].  */
1030   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1031
1032   /* The include_directories table.  Note these are observing
1033      pointers.  The memory is owned by debug_line_buffer.  */
1034   std::vector<const char *> include_dirs;
1035
1036   /* The file_names table.  */
1037   std::vector<file_entry> file_names;
1038
1039   /* The start and end of the statement program following this
1040      header.  These point into dwarf2_per_objfile->line_buffer.  */
1041   const gdb_byte *statement_program_start {}, *statement_program_end {};
1042 };
1043
1044 typedef std::unique_ptr<line_header> line_header_up;
1045
1046 const char *
1047 file_entry::include_dir (const line_header *lh) const
1048 {
1049   return lh->include_dir_at (d_index);
1050 }
1051
1052 /* When we construct a partial symbol table entry we only
1053    need this much information.  */
1054 struct partial_die_info : public allocate_on_obstack
1055   {
1056     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1057
1058     /* Disable assign but still keep copy ctor, which is needed
1059        load_partial_dies.   */
1060     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1061
1062     /* Adjust the partial die before generating a symbol for it.  This
1063        function may set the is_external flag or change the DIE's
1064        name.  */
1065     void fixup (struct dwarf2_cu *cu);
1066
1067     /* Read a minimal amount of information into the minimal die
1068        structure.  */
1069     const gdb_byte *read (const struct die_reader_specs *reader,
1070                           const struct abbrev_info &abbrev,
1071                           const gdb_byte *info_ptr);
1072
1073     /* Offset of this DIE.  */
1074     const sect_offset sect_off;
1075
1076     /* DWARF-2 tag for this DIE.  */
1077     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1078
1079     /* Assorted flags describing the data found in this DIE.  */
1080     const unsigned int has_children : 1;
1081
1082     unsigned int is_external : 1;
1083     unsigned int is_declaration : 1;
1084     unsigned int has_type : 1;
1085     unsigned int has_specification : 1;
1086     unsigned int has_pc_info : 1;
1087     unsigned int may_be_inlined : 1;
1088
1089     /* This DIE has been marked DW_AT_main_subprogram.  */
1090     unsigned int main_subprogram : 1;
1091
1092     /* Flag set if the SCOPE field of this structure has been
1093        computed.  */
1094     unsigned int scope_set : 1;
1095
1096     /* Flag set if the DIE has a byte_size attribute.  */
1097     unsigned int has_byte_size : 1;
1098
1099     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1100     unsigned int has_const_value : 1;
1101
1102     /* Flag set if any of the DIE's children are template arguments.  */
1103     unsigned int has_template_arguments : 1;
1104
1105     /* Flag set if fixup has been called on this die.  */
1106     unsigned int fixup_called : 1;
1107
1108     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1109     unsigned int is_dwz : 1;
1110
1111     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1112     unsigned int spec_is_dwz : 1;
1113
1114     /* The name of this DIE.  Normally the value of DW_AT_name, but
1115        sometimes a default name for unnamed DIEs.  */
1116     const char *name = nullptr;
1117
1118     /* The linkage name, if present.  */
1119     const char *linkage_name = nullptr;
1120
1121     /* The scope to prepend to our children.  This is generally
1122        allocated on the comp_unit_obstack, so will disappear
1123        when this compilation unit leaves the cache.  */
1124     const char *scope = nullptr;
1125
1126     /* Some data associated with the partial DIE.  The tag determines
1127        which field is live.  */
1128     union
1129     {
1130       /* The location description associated with this DIE, if any.  */
1131       struct dwarf_block *locdesc;
1132       /* The offset of an import, for DW_TAG_imported_unit.  */
1133       sect_offset sect_off;
1134     } d {};
1135
1136     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1137     CORE_ADDR lowpc = 0;
1138     CORE_ADDR highpc = 0;
1139
1140     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1141        DW_AT_sibling, if any.  */
1142     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1143        could return DW_AT_sibling values to its caller load_partial_dies.  */
1144     const gdb_byte *sibling = nullptr;
1145
1146     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1147        DW_AT_specification (or DW_AT_abstract_origin or
1148        DW_AT_extension).  */
1149     sect_offset spec_offset {};
1150
1151     /* Pointers to this DIE's parent, first child, and next sibling,
1152        if any.  */
1153     struct partial_die_info *die_parent = nullptr;
1154     struct partial_die_info *die_child = nullptr;
1155     struct partial_die_info *die_sibling = nullptr;
1156
1157     friend struct partial_die_info *
1158     dwarf2_cu::find_partial_die (sect_offset sect_off);
1159
1160   private:
1161     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1162     partial_die_info (sect_offset sect_off)
1163       : partial_die_info (sect_off, DW_TAG_padding, 0)
1164     {
1165     }
1166
1167     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1168                       int has_children_)
1169       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1170     {
1171       is_external = 0;
1172       is_declaration = 0;
1173       has_type = 0;
1174       has_specification = 0;
1175       has_pc_info = 0;
1176       may_be_inlined = 0;
1177       main_subprogram = 0;
1178       scope_set = 0;
1179       has_byte_size = 0;
1180       has_const_value = 0;
1181       has_template_arguments = 0;
1182       fixup_called = 0;
1183       is_dwz = 0;
1184       spec_is_dwz = 0;
1185     }
1186   };
1187
1188 /* This data structure holds the information of an abbrev.  */
1189 struct abbrev_info
1190   {
1191     unsigned int number;        /* number identifying abbrev */
1192     enum dwarf_tag tag;         /* dwarf tag */
1193     unsigned short has_children;                /* boolean */
1194     unsigned short num_attrs;   /* number of attributes */
1195     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1196     struct abbrev_info *next;   /* next in chain */
1197   };
1198
1199 struct attr_abbrev
1200   {
1201     ENUM_BITFIELD(dwarf_attribute) name : 16;
1202     ENUM_BITFIELD(dwarf_form) form : 16;
1203
1204     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1205     LONGEST implicit_const;
1206   };
1207
1208 /* Size of abbrev_table.abbrev_hash_table.  */
1209 #define ABBREV_HASH_SIZE 121
1210
1211 /* Top level data structure to contain an abbreviation table.  */
1212
1213 struct abbrev_table
1214 {
1215   explicit abbrev_table (sect_offset off)
1216     : sect_off (off)
1217   {
1218     m_abbrevs =
1219       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1220     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1221   }
1222
1223   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1224
1225   /* Allocate space for a struct abbrev_info object in
1226      ABBREV_TABLE.  */
1227   struct abbrev_info *alloc_abbrev ();
1228
1229   /* Add an abbreviation to the table.  */
1230   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1231
1232   /* Look up an abbrev in the table.
1233      Returns NULL if the abbrev is not found.  */
1234
1235   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1236
1237
1238   /* Where the abbrev table came from.
1239      This is used as a sanity check when the table is used.  */
1240   const sect_offset sect_off;
1241
1242   /* Storage for the abbrev table.  */
1243   auto_obstack abbrev_obstack;
1244
1245 private:
1246
1247   /* Hash table of abbrevs.
1248      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1249      It could be statically allocated, but the previous code didn't so we
1250      don't either.  */
1251   struct abbrev_info **m_abbrevs;
1252 };
1253
1254 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1255
1256 /* Attributes have a name and a value.  */
1257 struct attribute
1258   {
1259     ENUM_BITFIELD(dwarf_attribute) name : 16;
1260     ENUM_BITFIELD(dwarf_form) form : 15;
1261
1262     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1263        field should be in u.str (existing only for DW_STRING) but it is kept
1264        here for better struct attribute alignment.  */
1265     unsigned int string_is_canonical : 1;
1266
1267     union
1268       {
1269         const char *str;
1270         struct dwarf_block *blk;
1271         ULONGEST unsnd;
1272         LONGEST snd;
1273         CORE_ADDR addr;
1274         ULONGEST signature;
1275       }
1276     u;
1277   };
1278
1279 /* This data structure holds a complete die structure.  */
1280 struct die_info
1281   {
1282     /* DWARF-2 tag for this DIE.  */
1283     ENUM_BITFIELD(dwarf_tag) tag : 16;
1284
1285     /* Number of attributes */
1286     unsigned char num_attrs;
1287
1288     /* True if we're presently building the full type name for the
1289        type derived from this DIE.  */
1290     unsigned char building_fullname : 1;
1291
1292     /* True if this die is in process.  PR 16581.  */
1293     unsigned char in_process : 1;
1294
1295     /* Abbrev number */
1296     unsigned int abbrev;
1297
1298     /* Offset in .debug_info or .debug_types section.  */
1299     sect_offset sect_off;
1300
1301     /* The dies in a compilation unit form an n-ary tree.  PARENT
1302        points to this die's parent; CHILD points to the first child of
1303        this node; and all the children of a given node are chained
1304        together via their SIBLING fields.  */
1305     struct die_info *child;     /* Its first child, if any.  */
1306     struct die_info *sibling;   /* Its next sibling, if any.  */
1307     struct die_info *parent;    /* Its parent, if any.  */
1308
1309     /* An array of attributes, with NUM_ATTRS elements.  There may be
1310        zero, but it's not common and zero-sized arrays are not
1311        sufficiently portable C.  */
1312     struct attribute attrs[1];
1313   };
1314
1315 /* Get at parts of an attribute structure.  */
1316
1317 #define DW_STRING(attr)    ((attr)->u.str)
1318 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1319 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1320 #define DW_BLOCK(attr)     ((attr)->u.blk)
1321 #define DW_SND(attr)       ((attr)->u.snd)
1322 #define DW_ADDR(attr)      ((attr)->u.addr)
1323 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1324
1325 /* Blocks are a bunch of untyped bytes.  */
1326 struct dwarf_block
1327   {
1328     size_t size;
1329
1330     /* Valid only if SIZE is not zero.  */
1331     const gdb_byte *data;
1332   };
1333
1334 #ifndef ATTR_ALLOC_CHUNK
1335 #define ATTR_ALLOC_CHUNK 4
1336 #endif
1337
1338 /* Allocate fields for structs, unions and enums in this size.  */
1339 #ifndef DW_FIELD_ALLOC_CHUNK
1340 #define DW_FIELD_ALLOC_CHUNK 4
1341 #endif
1342
1343 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1344    but this would require a corresponding change in unpack_field_as_long
1345    and friends.  */
1346 static int bits_per_byte = 8;
1347
1348 /* When reading a variant or variant part, we track a bit more
1349    information about the field, and store it in an object of this
1350    type.  */
1351
1352 struct variant_field
1353 {
1354   /* If we see a DW_TAG_variant, then this will be the discriminant
1355      value.  */
1356   ULONGEST discriminant_value;
1357   /* If we see a DW_TAG_variant, then this will be set if this is the
1358      default branch.  */
1359   bool default_branch;
1360   /* While reading a DW_TAG_variant_part, this will be set if this
1361      field is the discriminant.  */
1362   bool is_discriminant;
1363 };
1364
1365 struct nextfield
1366 {
1367   int accessibility = 0;
1368   int virtuality = 0;
1369   /* Extra information to describe a variant or variant part.  */
1370   struct variant_field variant {};
1371   struct field field {};
1372 };
1373
1374 struct fnfieldlist
1375 {
1376   const char *name = nullptr;
1377   std::vector<struct fn_field> fnfields;
1378 };
1379
1380 /* The routines that read and process dies for a C struct or C++ class
1381    pass lists of data member fields and lists of member function fields
1382    in an instance of a field_info structure, as defined below.  */
1383 struct field_info
1384   {
1385     /* List of data member and baseclasses fields.  */
1386     std::vector<struct nextfield> fields;
1387     std::vector<struct nextfield> baseclasses;
1388
1389     /* Number of fields (including baseclasses).  */
1390     int nfields = 0;
1391
1392     /* Set if the accesibility of one of the fields is not public.  */
1393     int non_public_fields = 0;
1394
1395     /* Member function fieldlist array, contains name of possibly overloaded
1396        member function, number of overloaded member functions and a pointer
1397        to the head of the member function field chain.  */
1398     std::vector<struct fnfieldlist> fnfieldlists;
1399
1400     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1401        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1402     std::vector<struct decl_field> typedef_field_list;
1403
1404     /* Nested types defined by this class and the number of elements in this
1405        list.  */
1406     std::vector<struct decl_field> nested_types_list;
1407   };
1408
1409 /* One item on the queue of compilation units to read in full symbols
1410    for.  */
1411 struct dwarf2_queue_item
1412 {
1413   struct dwarf2_per_cu_data *per_cu;
1414   enum language pretend_language;
1415   struct dwarf2_queue_item *next;
1416 };
1417
1418 /* The current queue.  */
1419 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1420
1421 /* Loaded secondary compilation units are kept in memory until they
1422    have not been referenced for the processing of this many
1423    compilation units.  Set this to zero to disable caching.  Cache
1424    sizes of up to at least twenty will improve startup time for
1425    typical inter-CU-reference binaries, at an obvious memory cost.  */
1426 static int dwarf_max_cache_age = 5;
1427 static void
1428 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1429                           struct cmd_list_element *c, const char *value)
1430 {
1431   fprintf_filtered (file, _("The upper bound on the age of cached "
1432                             "DWARF compilation units is %s.\n"),
1433                     value);
1434 }
1435 \f
1436 /* local function prototypes */
1437
1438 static const char *get_section_name (const struct dwarf2_section_info *);
1439
1440 static const char *get_section_file_name (const struct dwarf2_section_info *);
1441
1442 static void dwarf2_find_base_address (struct die_info *die,
1443                                       struct dwarf2_cu *cu);
1444
1445 static struct partial_symtab *create_partial_symtab
1446   (struct dwarf2_per_cu_data *per_cu, const char *name);
1447
1448 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1449                                         const gdb_byte *info_ptr,
1450                                         struct die_info *type_unit_die,
1451                                         int has_children, void *data);
1452
1453 static void dwarf2_build_psymtabs_hard
1454   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1455
1456 static void scan_partial_symbols (struct partial_die_info *,
1457                                   CORE_ADDR *, CORE_ADDR *,
1458                                   int, struct dwarf2_cu *);
1459
1460 static void add_partial_symbol (struct partial_die_info *,
1461                                 struct dwarf2_cu *);
1462
1463 static void add_partial_namespace (struct partial_die_info *pdi,
1464                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1465                                    int set_addrmap, struct dwarf2_cu *cu);
1466
1467 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1468                                 CORE_ADDR *highpc, int set_addrmap,
1469                                 struct dwarf2_cu *cu);
1470
1471 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1472                                      struct dwarf2_cu *cu);
1473
1474 static void add_partial_subprogram (struct partial_die_info *pdi,
1475                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1476                                     int need_pc, struct dwarf2_cu *cu);
1477
1478 static void dwarf2_read_symtab (struct partial_symtab *,
1479                                 struct objfile *);
1480
1481 static void psymtab_to_symtab_1 (struct partial_symtab *);
1482
1483 static abbrev_table_up abbrev_table_read_table
1484   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1485    sect_offset);
1486
1487 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1488
1489 static struct partial_die_info *load_partial_dies
1490   (const struct die_reader_specs *, const gdb_byte *, int);
1491
1492 static struct partial_die_info *find_partial_die (sect_offset, int,
1493                                                   struct dwarf2_cu *);
1494
1495 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1496                                        struct attribute *, struct attr_abbrev *,
1497                                        const gdb_byte *);
1498
1499 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1500
1501 static int read_1_signed_byte (bfd *, const gdb_byte *);
1502
1503 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1504
1505 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1506
1507 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1508
1509 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1510                                unsigned int *);
1511
1512 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1513
1514 static LONGEST read_checked_initial_length_and_offset
1515   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1516    unsigned int *, unsigned int *);
1517
1518 static LONGEST read_offset (bfd *, const gdb_byte *,
1519                             const struct comp_unit_head *,
1520                             unsigned int *);
1521
1522 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1523
1524 static sect_offset read_abbrev_offset
1525   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1526    struct dwarf2_section_info *, sect_offset);
1527
1528 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1529
1530 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1531
1532 static const char *read_indirect_string
1533   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1534    const struct comp_unit_head *, unsigned int *);
1535
1536 static const char *read_indirect_line_string
1537   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1538    const struct comp_unit_head *, unsigned int *);
1539
1540 static const char *read_indirect_string_at_offset
1541   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1542    LONGEST str_offset);
1543
1544 static const char *read_indirect_string_from_dwz
1545   (struct objfile *objfile, struct dwz_file *, LONGEST);
1546
1547 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1548
1549 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1550                                               const gdb_byte *,
1551                                               unsigned int *);
1552
1553 static const char *read_str_index (const struct die_reader_specs *reader,
1554                                    ULONGEST str_index);
1555
1556 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1557
1558 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1559                                       struct dwarf2_cu *);
1560
1561 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1562                                                 unsigned int);
1563
1564 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1565                                        struct dwarf2_cu *cu);
1566
1567 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1568                                struct dwarf2_cu *cu);
1569
1570 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1571
1572 static struct die_info *die_specification (struct die_info *die,
1573                                            struct dwarf2_cu **);
1574
1575 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1576                                                 struct dwarf2_cu *cu);
1577
1578 static void dwarf_decode_lines (struct line_header *, const char *,
1579                                 struct dwarf2_cu *, struct partial_symtab *,
1580                                 CORE_ADDR, int decode_mapping);
1581
1582 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1583                                   const char *);
1584
1585 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1586                                                     const char *, const char *,
1587                                                     CORE_ADDR);
1588
1589 static struct symbol *new_symbol (struct die_info *, struct type *,
1590                                   struct dwarf2_cu *, struct symbol * = NULL);
1591
1592 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1593                                 struct dwarf2_cu *);
1594
1595 static void dwarf2_const_value_attr (const struct attribute *attr,
1596                                      struct type *type,
1597                                      const char *name,
1598                                      struct obstack *obstack,
1599                                      struct dwarf2_cu *cu, LONGEST *value,
1600                                      const gdb_byte **bytes,
1601                                      struct dwarf2_locexpr_baton **baton);
1602
1603 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1604
1605 static int need_gnat_info (struct dwarf2_cu *);
1606
1607 static struct type *die_descriptive_type (struct die_info *,
1608                                           struct dwarf2_cu *);
1609
1610 static void set_descriptive_type (struct type *, struct die_info *,
1611                                   struct dwarf2_cu *);
1612
1613 static struct type *die_containing_type (struct die_info *,
1614                                          struct dwarf2_cu *);
1615
1616 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1617                                      struct dwarf2_cu *);
1618
1619 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1620
1621 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1622
1623 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1624
1625 static char *typename_concat (struct obstack *obs, const char *prefix,
1626                               const char *suffix, int physname,
1627                               struct dwarf2_cu *cu);
1628
1629 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1630
1631 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1632
1633 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1634
1635 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1636
1637 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1638
1639 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1640
1641 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1642                                struct dwarf2_cu *, struct partial_symtab *);
1643
1644 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1645    values.  Keep the items ordered with increasing constraints compliance.  */
1646 enum pc_bounds_kind
1647 {
1648   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1649   PC_BOUNDS_NOT_PRESENT,
1650
1651   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1652      were present but they do not form a valid range of PC addresses.  */
1653   PC_BOUNDS_INVALID,
1654
1655   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1656   PC_BOUNDS_RANGES,
1657
1658   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1659   PC_BOUNDS_HIGH_LOW,
1660 };
1661
1662 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1663                                                  CORE_ADDR *, CORE_ADDR *,
1664                                                  struct dwarf2_cu *,
1665                                                  struct partial_symtab *);
1666
1667 static void get_scope_pc_bounds (struct die_info *,
1668                                  CORE_ADDR *, CORE_ADDR *,
1669                                  struct dwarf2_cu *);
1670
1671 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1672                                         CORE_ADDR, struct dwarf2_cu *);
1673
1674 static void dwarf2_add_field (struct field_info *, struct die_info *,
1675                               struct dwarf2_cu *);
1676
1677 static void dwarf2_attach_fields_to_type (struct field_info *,
1678                                           struct type *, struct dwarf2_cu *);
1679
1680 static void dwarf2_add_member_fn (struct field_info *,
1681                                   struct die_info *, struct type *,
1682                                   struct dwarf2_cu *);
1683
1684 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1685                                              struct type *,
1686                                              struct dwarf2_cu *);
1687
1688 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1689
1690 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1691
1692 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1693
1694 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1695
1696 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1697
1698 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1699
1700 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1701
1702 static struct type *read_module_type (struct die_info *die,
1703                                       struct dwarf2_cu *cu);
1704
1705 static const char *namespace_name (struct die_info *die,
1706                                    int *is_anonymous, struct dwarf2_cu *);
1707
1708 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1709
1710 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1711
1712 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1713                                                        struct dwarf2_cu *);
1714
1715 static struct die_info *read_die_and_siblings_1
1716   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1717    struct die_info *);
1718
1719 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1720                                                const gdb_byte *info_ptr,
1721                                                const gdb_byte **new_info_ptr,
1722                                                struct die_info *parent);
1723
1724 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1725                                         struct die_info **, const gdb_byte *,
1726                                         int *, int);
1727
1728 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1729                                       struct die_info **, const gdb_byte *,
1730                                       int *);
1731
1732 static void process_die (struct die_info *, struct dwarf2_cu *);
1733
1734 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1735                                              struct obstack *);
1736
1737 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1738
1739 static const char *dwarf2_full_name (const char *name,
1740                                      struct die_info *die,
1741                                      struct dwarf2_cu *cu);
1742
1743 static const char *dwarf2_physname (const char *name, struct die_info *die,
1744                                     struct dwarf2_cu *cu);
1745
1746 static struct die_info *dwarf2_extension (struct die_info *die,
1747                                           struct dwarf2_cu **);
1748
1749 static const char *dwarf_tag_name (unsigned int);
1750
1751 static const char *dwarf_attr_name (unsigned int);
1752
1753 static const char *dwarf_form_name (unsigned int);
1754
1755 static const char *dwarf_bool_name (unsigned int);
1756
1757 static const char *dwarf_type_encoding_name (unsigned int);
1758
1759 static struct die_info *sibling_die (struct die_info *);
1760
1761 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1762
1763 static void dump_die_for_error (struct die_info *);
1764
1765 static void dump_die_1 (struct ui_file *, int level, int max_level,
1766                         struct die_info *);
1767
1768 /*static*/ void dump_die (struct die_info *, int max_level);
1769
1770 static void store_in_ref_table (struct die_info *,
1771                                 struct dwarf2_cu *);
1772
1773 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1774
1775 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1776
1777 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1778                                                const struct attribute *,
1779                                                struct dwarf2_cu **);
1780
1781 static struct die_info *follow_die_ref (struct die_info *,
1782                                         const struct attribute *,
1783                                         struct dwarf2_cu **);
1784
1785 static struct die_info *follow_die_sig (struct die_info *,
1786                                         const struct attribute *,
1787                                         struct dwarf2_cu **);
1788
1789 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1790                                          struct dwarf2_cu *);
1791
1792 static struct type *get_DW_AT_signature_type (struct die_info *,
1793                                               const struct attribute *,
1794                                               struct dwarf2_cu *);
1795
1796 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1797
1798 static void read_signatured_type (struct signatured_type *);
1799
1800 static int attr_to_dynamic_prop (const struct attribute *attr,
1801                                  struct die_info *die, struct dwarf2_cu *cu,
1802                                  struct dynamic_prop *prop);
1803
1804 /* memory allocation interface */
1805
1806 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1807
1808 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1809
1810 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1811
1812 static int attr_form_is_block (const struct attribute *);
1813
1814 static int attr_form_is_section_offset (const struct attribute *);
1815
1816 static int attr_form_is_constant (const struct attribute *);
1817
1818 static int attr_form_is_ref (const struct attribute *);
1819
1820 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1821                                    struct dwarf2_loclist_baton *baton,
1822                                    const struct attribute *attr);
1823
1824 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1825                                          struct symbol *sym,
1826                                          struct dwarf2_cu *cu,
1827                                          int is_block);
1828
1829 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1830                                      const gdb_byte *info_ptr,
1831                                      struct abbrev_info *abbrev);
1832
1833 static hashval_t partial_die_hash (const void *item);
1834
1835 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1836
1837 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1838   (sect_offset sect_off, unsigned int offset_in_dwz,
1839    struct dwarf2_per_objfile *dwarf2_per_objfile);
1840
1841 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1842                                    struct die_info *comp_unit_die,
1843                                    enum language pretend_language);
1844
1845 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1846
1847 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1848
1849 static struct type *set_die_type (struct die_info *, struct type *,
1850                                   struct dwarf2_cu *);
1851
1852 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1853
1854 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1855
1856 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1857                                  enum language);
1858
1859 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1860                                     enum language);
1861
1862 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1863                                     enum language);
1864
1865 static void dwarf2_add_dependence (struct dwarf2_cu *,
1866                                    struct dwarf2_per_cu_data *);
1867
1868 static void dwarf2_mark (struct dwarf2_cu *);
1869
1870 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1871
1872 static struct type *get_die_type_at_offset (sect_offset,
1873                                             struct dwarf2_per_cu_data *);
1874
1875 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1876
1877 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1878                              enum language pretend_language);
1879
1880 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1881
1882 /* Class, the destructor of which frees all allocated queue entries.  This
1883    will only have work to do if an error was thrown while processing the
1884    dwarf.  If no error was thrown then the queue entries should have all
1885    been processed, and freed, as we went along.  */
1886
1887 class dwarf2_queue_guard
1888 {
1889 public:
1890   dwarf2_queue_guard () = default;
1891
1892   /* Free any entries remaining on the queue.  There should only be
1893      entries left if we hit an error while processing the dwarf.  */
1894   ~dwarf2_queue_guard ()
1895   {
1896     struct dwarf2_queue_item *item, *last;
1897
1898     item = dwarf2_queue;
1899     while (item)
1900       {
1901         /* Anything still marked queued is likely to be in an
1902            inconsistent state, so discard it.  */
1903         if (item->per_cu->queued)
1904           {
1905             if (item->per_cu->cu != NULL)
1906               free_one_cached_comp_unit (item->per_cu);
1907             item->per_cu->queued = 0;
1908           }
1909
1910         last = item;
1911         item = item->next;
1912         xfree (last);
1913       }
1914
1915     dwarf2_queue = dwarf2_queue_tail = NULL;
1916   }
1917 };
1918
1919 /* The return type of find_file_and_directory.  Note, the enclosed
1920    string pointers are only valid while this object is valid.  */
1921
1922 struct file_and_directory
1923 {
1924   /* The filename.  This is never NULL.  */
1925   const char *name;
1926
1927   /* The compilation directory.  NULL if not known.  If we needed to
1928      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1929      points directly to the DW_AT_comp_dir string attribute owned by
1930      the obstack that owns the DIE.  */
1931   const char *comp_dir;
1932
1933   /* If we needed to build a new string for comp_dir, this is what
1934      owns the storage.  */
1935   std::string comp_dir_storage;
1936 };
1937
1938 static file_and_directory find_file_and_directory (struct die_info *die,
1939                                                    struct dwarf2_cu *cu);
1940
1941 static char *file_full_name (int file, struct line_header *lh,
1942                              const char *comp_dir);
1943
1944 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1945 enum class rcuh_kind { COMPILE, TYPE };
1946
1947 static const gdb_byte *read_and_check_comp_unit_head
1948   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1949    struct comp_unit_head *header,
1950    struct dwarf2_section_info *section,
1951    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1952    rcuh_kind section_kind);
1953
1954 static void init_cutu_and_read_dies
1955   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1956    int use_existing_cu, int keep, bool skip_partial,
1957    die_reader_func_ftype *die_reader_func, void *data);
1958
1959 static void init_cutu_and_read_dies_simple
1960   (struct dwarf2_per_cu_data *this_cu,
1961    die_reader_func_ftype *die_reader_func, void *data);
1962
1963 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1964
1965 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1966
1967 static struct dwo_unit *lookup_dwo_unit_in_dwp
1968   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1969    struct dwp_file *dwp_file, const char *comp_dir,
1970    ULONGEST signature, int is_debug_types);
1971
1972 static struct dwp_file *get_dwp_file
1973   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1974
1975 static struct dwo_unit *lookup_dwo_comp_unit
1976   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1977
1978 static struct dwo_unit *lookup_dwo_type_unit
1979   (struct signatured_type *, const char *, const char *);
1980
1981 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1982
1983 static void free_dwo_file (struct dwo_file *);
1984
1985 /* A unique_ptr helper to free a dwo_file.  */
1986
1987 struct dwo_file_deleter
1988 {
1989   void operator() (struct dwo_file *df) const
1990   {
1991     free_dwo_file (df);
1992   }
1993 };
1994
1995 /* A unique pointer to a dwo_file.  */
1996
1997 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1998
1999 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2000
2001 static void check_producer (struct dwarf2_cu *cu);
2002
2003 static void free_line_header_voidp (void *arg);
2004 \f
2005 /* Various complaints about symbol reading that don't abort the process.  */
2006
2007 static void
2008 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2009 {
2010   complaint (_("statement list doesn't fit in .debug_line section"));
2011 }
2012
2013 static void
2014 dwarf2_debug_line_missing_file_complaint (void)
2015 {
2016   complaint (_(".debug_line section has line data without a file"));
2017 }
2018
2019 static void
2020 dwarf2_debug_line_missing_end_sequence_complaint (void)
2021 {
2022   complaint (_(".debug_line section has line "
2023                "program sequence without an end"));
2024 }
2025
2026 static void
2027 dwarf2_complex_location_expr_complaint (void)
2028 {
2029   complaint (_("location expression too complex"));
2030 }
2031
2032 static void
2033 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2034                                               int arg3)
2035 {
2036   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2037              arg1, arg2, arg3);
2038 }
2039
2040 static void
2041 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2042 {
2043   complaint (_("debug info runs off end of %s section"
2044                " [in module %s]"),
2045              get_section_name (section),
2046              get_section_file_name (section));
2047 }
2048
2049 static void
2050 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2051 {
2052   complaint (_("macro debug info contains a "
2053                "malformed macro definition:\n`%s'"),
2054              arg1);
2055 }
2056
2057 static void
2058 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2059 {
2060   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2061              arg1, arg2);
2062 }
2063
2064 /* Hash function for line_header_hash.  */
2065
2066 static hashval_t
2067 line_header_hash (const struct line_header *ofs)
2068 {
2069   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2070 }
2071
2072 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2073
2074 static hashval_t
2075 line_header_hash_voidp (const void *item)
2076 {
2077   const struct line_header *ofs = (const struct line_header *) item;
2078
2079   return line_header_hash (ofs);
2080 }
2081
2082 /* Equality function for line_header_hash.  */
2083
2084 static int
2085 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2086 {
2087   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2088   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2089
2090   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2091           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2092 }
2093
2094 \f
2095
2096 /* Read the given attribute value as an address, taking the attribute's
2097    form into account.  */
2098
2099 static CORE_ADDR
2100 attr_value_as_address (struct attribute *attr)
2101 {
2102   CORE_ADDR addr;
2103
2104   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2105     {
2106       /* Aside from a few clearly defined exceptions, attributes that
2107          contain an address must always be in DW_FORM_addr form.
2108          Unfortunately, some compilers happen to be violating this
2109          requirement by encoding addresses using other forms, such
2110          as DW_FORM_data4 for example.  For those broken compilers,
2111          we try to do our best, without any guarantee of success,
2112          to interpret the address correctly.  It would also be nice
2113          to generate a complaint, but that would require us to maintain
2114          a list of legitimate cases where a non-address form is allowed,
2115          as well as update callers to pass in at least the CU's DWARF
2116          version.  This is more overhead than what we're willing to
2117          expand for a pretty rare case.  */
2118       addr = DW_UNSND (attr);
2119     }
2120   else
2121     addr = DW_ADDR (attr);
2122
2123   return addr;
2124 }
2125
2126 /* See declaration.  */
2127
2128 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2129                                         const dwarf2_debug_sections *names)
2130   : objfile (objfile_)
2131 {
2132   if (names == NULL)
2133     names = &dwarf2_elf_names;
2134
2135   bfd *obfd = objfile->obfd;
2136
2137   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2138     locate_sections (obfd, sec, *names);
2139 }
2140
2141 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2142
2143 dwarf2_per_objfile::~dwarf2_per_objfile ()
2144 {
2145   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2146   free_cached_comp_units ();
2147
2148   if (quick_file_names_table)
2149     htab_delete (quick_file_names_table);
2150
2151   if (line_header_hash)
2152     htab_delete (line_header_hash);
2153
2154   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2155     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2156
2157   for (signatured_type *sig_type : all_type_units)
2158     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2159
2160   VEC_free (dwarf2_section_info_def, types);
2161
2162   if (dwo_files != NULL)
2163     free_dwo_files (dwo_files, objfile);
2164
2165   /* Everything else should be on the objfile obstack.  */
2166 }
2167
2168 /* See declaration.  */
2169
2170 void
2171 dwarf2_per_objfile::free_cached_comp_units ()
2172 {
2173   dwarf2_per_cu_data *per_cu = read_in_chain;
2174   dwarf2_per_cu_data **last_chain = &read_in_chain;
2175   while (per_cu != NULL)
2176     {
2177       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2178
2179       delete per_cu->cu;
2180       *last_chain = next_cu;
2181       per_cu = next_cu;
2182     }
2183 }
2184
2185 /* A helper class that calls free_cached_comp_units on
2186    destruction.  */
2187
2188 class free_cached_comp_units
2189 {
2190 public:
2191
2192   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2193     : m_per_objfile (per_objfile)
2194   {
2195   }
2196
2197   ~free_cached_comp_units ()
2198   {
2199     m_per_objfile->free_cached_comp_units ();
2200   }
2201
2202   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2203
2204 private:
2205
2206   dwarf2_per_objfile *m_per_objfile;
2207 };
2208
2209 /* Try to locate the sections we need for DWARF 2 debugging
2210    information and return true if we have enough to do something.
2211    NAMES points to the dwarf2 section names, or is NULL if the standard
2212    ELF names are used.  */
2213
2214 int
2215 dwarf2_has_info (struct objfile *objfile,
2216                  const struct dwarf2_debug_sections *names)
2217 {
2218   if (objfile->flags & OBJF_READNEVER)
2219     return 0;
2220
2221   struct dwarf2_per_objfile *dwarf2_per_objfile
2222     = get_dwarf2_per_objfile (objfile);
2223
2224   if (dwarf2_per_objfile == NULL)
2225     {
2226       /* Initialize per-objfile state.  */
2227       dwarf2_per_objfile
2228         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2229                                                                      names);
2230       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2231     }
2232   return (!dwarf2_per_objfile->info.is_virtual
2233           && dwarf2_per_objfile->info.s.section != NULL
2234           && !dwarf2_per_objfile->abbrev.is_virtual
2235           && dwarf2_per_objfile->abbrev.s.section != NULL);
2236 }
2237
2238 /* Return the containing section of virtual section SECTION.  */
2239
2240 static struct dwarf2_section_info *
2241 get_containing_section (const struct dwarf2_section_info *section)
2242 {
2243   gdb_assert (section->is_virtual);
2244   return section->s.containing_section;
2245 }
2246
2247 /* Return the bfd owner of SECTION.  */
2248
2249 static struct bfd *
2250 get_section_bfd_owner (const struct dwarf2_section_info *section)
2251 {
2252   if (section->is_virtual)
2253     {
2254       section = get_containing_section (section);
2255       gdb_assert (!section->is_virtual);
2256     }
2257   return section->s.section->owner;
2258 }
2259
2260 /* Return the bfd section of SECTION.
2261    Returns NULL if the section is not present.  */
2262
2263 static asection *
2264 get_section_bfd_section (const struct dwarf2_section_info *section)
2265 {
2266   if (section->is_virtual)
2267     {
2268       section = get_containing_section (section);
2269       gdb_assert (!section->is_virtual);
2270     }
2271   return section->s.section;
2272 }
2273
2274 /* Return the name of SECTION.  */
2275
2276 static const char *
2277 get_section_name (const struct dwarf2_section_info *section)
2278 {
2279   asection *sectp = get_section_bfd_section (section);
2280
2281   gdb_assert (sectp != NULL);
2282   return bfd_section_name (get_section_bfd_owner (section), sectp);
2283 }
2284
2285 /* Return the name of the file SECTION is in.  */
2286
2287 static const char *
2288 get_section_file_name (const struct dwarf2_section_info *section)
2289 {
2290   bfd *abfd = get_section_bfd_owner (section);
2291
2292   return bfd_get_filename (abfd);
2293 }
2294
2295 /* Return the id of SECTION.
2296    Returns 0 if SECTION doesn't exist.  */
2297
2298 static int
2299 get_section_id (const struct dwarf2_section_info *section)
2300 {
2301   asection *sectp = get_section_bfd_section (section);
2302
2303   if (sectp == NULL)
2304     return 0;
2305   return sectp->id;
2306 }
2307
2308 /* Return the flags of SECTION.
2309    SECTION (or containing section if this is a virtual section) must exist.  */
2310
2311 static int
2312 get_section_flags (const struct dwarf2_section_info *section)
2313 {
2314   asection *sectp = get_section_bfd_section (section);
2315
2316   gdb_assert (sectp != NULL);
2317   return bfd_get_section_flags (sectp->owner, sectp);
2318 }
2319
2320 /* When loading sections, we look either for uncompressed section or for
2321    compressed section names.  */
2322
2323 static int
2324 section_is_p (const char *section_name,
2325               const struct dwarf2_section_names *names)
2326 {
2327   if (names->normal != NULL
2328       && strcmp (section_name, names->normal) == 0)
2329     return 1;
2330   if (names->compressed != NULL
2331       && strcmp (section_name, names->compressed) == 0)
2332     return 1;
2333   return 0;
2334 }
2335
2336 /* See declaration.  */
2337
2338 void
2339 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2340                                      const dwarf2_debug_sections &names)
2341 {
2342   flagword aflag = bfd_get_section_flags (abfd, sectp);
2343
2344   if ((aflag & SEC_HAS_CONTENTS) == 0)
2345     {
2346     }
2347   else if (section_is_p (sectp->name, &names.info))
2348     {
2349       this->info.s.section = sectp;
2350       this->info.size = bfd_get_section_size (sectp);
2351     }
2352   else if (section_is_p (sectp->name, &names.abbrev))
2353     {
2354       this->abbrev.s.section = sectp;
2355       this->abbrev.size = bfd_get_section_size (sectp);
2356     }
2357   else if (section_is_p (sectp->name, &names.line))
2358     {
2359       this->line.s.section = sectp;
2360       this->line.size = bfd_get_section_size (sectp);
2361     }
2362   else if (section_is_p (sectp->name, &names.loc))
2363     {
2364       this->loc.s.section = sectp;
2365       this->loc.size = bfd_get_section_size (sectp);
2366     }
2367   else if (section_is_p (sectp->name, &names.loclists))
2368     {
2369       this->loclists.s.section = sectp;
2370       this->loclists.size = bfd_get_section_size (sectp);
2371     }
2372   else if (section_is_p (sectp->name, &names.macinfo))
2373     {
2374       this->macinfo.s.section = sectp;
2375       this->macinfo.size = bfd_get_section_size (sectp);
2376     }
2377   else if (section_is_p (sectp->name, &names.macro))
2378     {
2379       this->macro.s.section = sectp;
2380       this->macro.size = bfd_get_section_size (sectp);
2381     }
2382   else if (section_is_p (sectp->name, &names.str))
2383     {
2384       this->str.s.section = sectp;
2385       this->str.size = bfd_get_section_size (sectp);
2386     }
2387   else if (section_is_p (sectp->name, &names.line_str))
2388     {
2389       this->line_str.s.section = sectp;
2390       this->line_str.size = bfd_get_section_size (sectp);
2391     }
2392   else if (section_is_p (sectp->name, &names.addr))
2393     {
2394       this->addr.s.section = sectp;
2395       this->addr.size = bfd_get_section_size (sectp);
2396     }
2397   else if (section_is_p (sectp->name, &names.frame))
2398     {
2399       this->frame.s.section = sectp;
2400       this->frame.size = bfd_get_section_size (sectp);
2401     }
2402   else if (section_is_p (sectp->name, &names.eh_frame))
2403     {
2404       this->eh_frame.s.section = sectp;
2405       this->eh_frame.size = bfd_get_section_size (sectp);
2406     }
2407   else if (section_is_p (sectp->name, &names.ranges))
2408     {
2409       this->ranges.s.section = sectp;
2410       this->ranges.size = bfd_get_section_size (sectp);
2411     }
2412   else if (section_is_p (sectp->name, &names.rnglists))
2413     {
2414       this->rnglists.s.section = sectp;
2415       this->rnglists.size = bfd_get_section_size (sectp);
2416     }
2417   else if (section_is_p (sectp->name, &names.types))
2418     {
2419       struct dwarf2_section_info type_section;
2420
2421       memset (&type_section, 0, sizeof (type_section));
2422       type_section.s.section = sectp;
2423       type_section.size = bfd_get_section_size (sectp);
2424
2425       VEC_safe_push (dwarf2_section_info_def, this->types,
2426                      &type_section);
2427     }
2428   else if (section_is_p (sectp->name, &names.gdb_index))
2429     {
2430       this->gdb_index.s.section = sectp;
2431       this->gdb_index.size = bfd_get_section_size (sectp);
2432     }
2433   else if (section_is_p (sectp->name, &names.debug_names))
2434     {
2435       this->debug_names.s.section = sectp;
2436       this->debug_names.size = bfd_get_section_size (sectp);
2437     }
2438   else if (section_is_p (sectp->name, &names.debug_aranges))
2439     {
2440       this->debug_aranges.s.section = sectp;
2441       this->debug_aranges.size = bfd_get_section_size (sectp);
2442     }
2443
2444   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2445       && bfd_section_vma (abfd, sectp) == 0)
2446     this->has_section_at_zero = true;
2447 }
2448
2449 /* A helper function that decides whether a section is empty,
2450    or not present.  */
2451
2452 static int
2453 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2454 {
2455   if (section->is_virtual)
2456     return section->size == 0;
2457   return section->s.section == NULL || section->size == 0;
2458 }
2459
2460 /* See dwarf2read.h.  */
2461
2462 void
2463 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2464 {
2465   asection *sectp;
2466   bfd *abfd;
2467   gdb_byte *buf, *retbuf;
2468
2469   if (info->readin)
2470     return;
2471   info->buffer = NULL;
2472   info->readin = 1;
2473
2474   if (dwarf2_section_empty_p (info))
2475     return;
2476
2477   sectp = get_section_bfd_section (info);
2478
2479   /* If this is a virtual section we need to read in the real one first.  */
2480   if (info->is_virtual)
2481     {
2482       struct dwarf2_section_info *containing_section =
2483         get_containing_section (info);
2484
2485       gdb_assert (sectp != NULL);
2486       if ((sectp->flags & SEC_RELOC) != 0)
2487         {
2488           error (_("Dwarf Error: DWP format V2 with relocations is not"
2489                    " supported in section %s [in module %s]"),
2490                  get_section_name (info), get_section_file_name (info));
2491         }
2492       dwarf2_read_section (objfile, containing_section);
2493       /* Other code should have already caught virtual sections that don't
2494          fit.  */
2495       gdb_assert (info->virtual_offset + info->size
2496                   <= containing_section->size);
2497       /* If the real section is empty or there was a problem reading the
2498          section we shouldn't get here.  */
2499       gdb_assert (containing_section->buffer != NULL);
2500       info->buffer = containing_section->buffer + info->virtual_offset;
2501       return;
2502     }
2503
2504   /* If the section has relocations, we must read it ourselves.
2505      Otherwise we attach it to the BFD.  */
2506   if ((sectp->flags & SEC_RELOC) == 0)
2507     {
2508       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2509       return;
2510     }
2511
2512   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2513   info->buffer = buf;
2514
2515   /* When debugging .o files, we may need to apply relocations; see
2516      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2517      We never compress sections in .o files, so we only need to
2518      try this when the section is not compressed.  */
2519   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2520   if (retbuf != NULL)
2521     {
2522       info->buffer = retbuf;
2523       return;
2524     }
2525
2526   abfd = get_section_bfd_owner (info);
2527   gdb_assert (abfd != NULL);
2528
2529   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2530       || bfd_bread (buf, info->size, abfd) != info->size)
2531     {
2532       error (_("Dwarf Error: Can't read DWARF data"
2533                " in section %s [in module %s]"),
2534              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2535     }
2536 }
2537
2538 /* A helper function that returns the size of a section in a safe way.
2539    If you are positive that the section has been read before using the
2540    size, then it is safe to refer to the dwarf2_section_info object's
2541    "size" field directly.  In other cases, you must call this
2542    function, because for compressed sections the size field is not set
2543    correctly until the section has been read.  */
2544
2545 static bfd_size_type
2546 dwarf2_section_size (struct objfile *objfile,
2547                      struct dwarf2_section_info *info)
2548 {
2549   if (!info->readin)
2550     dwarf2_read_section (objfile, info);
2551   return info->size;
2552 }
2553
2554 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2555    SECTION_NAME.  */
2556
2557 void
2558 dwarf2_get_section_info (struct objfile *objfile,
2559                          enum dwarf2_section_enum sect,
2560                          asection **sectp, const gdb_byte **bufp,
2561                          bfd_size_type *sizep)
2562 {
2563   struct dwarf2_per_objfile *data
2564     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2565                                                   dwarf2_objfile_data_key);
2566   struct dwarf2_section_info *info;
2567
2568   /* We may see an objfile without any DWARF, in which case we just
2569      return nothing.  */
2570   if (data == NULL)
2571     {
2572       *sectp = NULL;
2573       *bufp = NULL;
2574       *sizep = 0;
2575       return;
2576     }
2577   switch (sect)
2578     {
2579     case DWARF2_DEBUG_FRAME:
2580       info = &data->frame;
2581       break;
2582     case DWARF2_EH_FRAME:
2583       info = &data->eh_frame;
2584       break;
2585     default:
2586       gdb_assert_not_reached ("unexpected section");
2587     }
2588
2589   dwarf2_read_section (objfile, info);
2590
2591   *sectp = get_section_bfd_section (info);
2592   *bufp = info->buffer;
2593   *sizep = info->size;
2594 }
2595
2596 /* A helper function to find the sections for a .dwz file.  */
2597
2598 static void
2599 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2600 {
2601   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2602
2603   /* Note that we only support the standard ELF names, because .dwz
2604      is ELF-only (at the time of writing).  */
2605   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2606     {
2607       dwz_file->abbrev.s.section = sectp;
2608       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2609     }
2610   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2611     {
2612       dwz_file->info.s.section = sectp;
2613       dwz_file->info.size = bfd_get_section_size (sectp);
2614     }
2615   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2616     {
2617       dwz_file->str.s.section = sectp;
2618       dwz_file->str.size = bfd_get_section_size (sectp);
2619     }
2620   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2621     {
2622       dwz_file->line.s.section = sectp;
2623       dwz_file->line.size = bfd_get_section_size (sectp);
2624     }
2625   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2626     {
2627       dwz_file->macro.s.section = sectp;
2628       dwz_file->macro.size = bfd_get_section_size (sectp);
2629     }
2630   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2631     {
2632       dwz_file->gdb_index.s.section = sectp;
2633       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2634     }
2635   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2636     {
2637       dwz_file->debug_names.s.section = sectp;
2638       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2639     }
2640 }
2641
2642 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2643    there is no .gnu_debugaltlink section in the file.  Error if there
2644    is such a section but the file cannot be found.  */
2645
2646 static struct dwz_file *
2647 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2648 {
2649   const char *filename;
2650   bfd_size_type buildid_len_arg;
2651   size_t buildid_len;
2652   bfd_byte *buildid;
2653
2654   if (dwarf2_per_objfile->dwz_file != NULL)
2655     return dwarf2_per_objfile->dwz_file.get ();
2656
2657   bfd_set_error (bfd_error_no_error);
2658   gdb::unique_xmalloc_ptr<char> data
2659     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2660                                   &buildid_len_arg, &buildid));
2661   if (data == NULL)
2662     {
2663       if (bfd_get_error () == bfd_error_no_error)
2664         return NULL;
2665       error (_("could not read '.gnu_debugaltlink' section: %s"),
2666              bfd_errmsg (bfd_get_error ()));
2667     }
2668
2669   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2670
2671   buildid_len = (size_t) buildid_len_arg;
2672
2673   filename = data.get ();
2674
2675   std::string abs_storage;
2676   if (!IS_ABSOLUTE_PATH (filename))
2677     {
2678       gdb::unique_xmalloc_ptr<char> abs
2679         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2680
2681       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2682       filename = abs_storage.c_str ();
2683     }
2684
2685   /* First try the file name given in the section.  If that doesn't
2686      work, try to use the build-id instead.  */
2687   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2688   if (dwz_bfd != NULL)
2689     {
2690       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2691         dwz_bfd.release ();
2692     }
2693
2694   if (dwz_bfd == NULL)
2695     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2696
2697   if (dwz_bfd == NULL)
2698     error (_("could not find '.gnu_debugaltlink' file for %s"),
2699            objfile_name (dwarf2_per_objfile->objfile));
2700
2701   std::unique_ptr<struct dwz_file> result
2702     (new struct dwz_file (std::move (dwz_bfd)));
2703
2704   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2705                          result.get ());
2706
2707   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2708                             result->dwz_bfd.get ());
2709   dwarf2_per_objfile->dwz_file = std::move (result);
2710   return dwarf2_per_objfile->dwz_file.get ();
2711 }
2712 \f
2713 /* DWARF quick_symbols_functions support.  */
2714
2715 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2716    unique line tables, so we maintain a separate table of all .debug_line
2717    derived entries to support the sharing.
2718    All the quick functions need is the list of file names.  We discard the
2719    line_header when we're done and don't need to record it here.  */
2720 struct quick_file_names
2721 {
2722   /* The data used to construct the hash key.  */
2723   struct stmt_list_hash hash;
2724
2725   /* The number of entries in file_names, real_names.  */
2726   unsigned int num_file_names;
2727
2728   /* The file names from the line table, after being run through
2729      file_full_name.  */
2730   const char **file_names;
2731
2732   /* The file names from the line table after being run through
2733      gdb_realpath.  These are computed lazily.  */
2734   const char **real_names;
2735 };
2736
2737 /* When using the index (and thus not using psymtabs), each CU has an
2738    object of this type.  This is used to hold information needed by
2739    the various "quick" methods.  */
2740 struct dwarf2_per_cu_quick_data
2741 {
2742   /* The file table.  This can be NULL if there was no file table
2743      or it's currently not read in.
2744      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2745   struct quick_file_names *file_names;
2746
2747   /* The corresponding symbol table.  This is NULL if symbols for this
2748      CU have not yet been read.  */
2749   struct compunit_symtab *compunit_symtab;
2750
2751   /* A temporary mark bit used when iterating over all CUs in
2752      expand_symtabs_matching.  */
2753   unsigned int mark : 1;
2754
2755   /* True if we've tried to read the file table and found there isn't one.
2756      There will be no point in trying to read it again next time.  */
2757   unsigned int no_file_data : 1;
2758 };
2759
2760 /* Utility hash function for a stmt_list_hash.  */
2761
2762 static hashval_t
2763 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2764 {
2765   hashval_t v = 0;
2766
2767   if (stmt_list_hash->dwo_unit != NULL)
2768     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2769   v += to_underlying (stmt_list_hash->line_sect_off);
2770   return v;
2771 }
2772
2773 /* Utility equality function for a stmt_list_hash.  */
2774
2775 static int
2776 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2777                     const struct stmt_list_hash *rhs)
2778 {
2779   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2780     return 0;
2781   if (lhs->dwo_unit != NULL
2782       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2783     return 0;
2784
2785   return lhs->line_sect_off == rhs->line_sect_off;
2786 }
2787
2788 /* Hash function for a quick_file_names.  */
2789
2790 static hashval_t
2791 hash_file_name_entry (const void *e)
2792 {
2793   const struct quick_file_names *file_data
2794     = (const struct quick_file_names *) e;
2795
2796   return hash_stmt_list_entry (&file_data->hash);
2797 }
2798
2799 /* Equality function for a quick_file_names.  */
2800
2801 static int
2802 eq_file_name_entry (const void *a, const void *b)
2803 {
2804   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2805   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2806
2807   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2808 }
2809
2810 /* Delete function for a quick_file_names.  */
2811
2812 static void
2813 delete_file_name_entry (void *e)
2814 {
2815   struct quick_file_names *file_data = (struct quick_file_names *) e;
2816   int i;
2817
2818   for (i = 0; i < file_data->num_file_names; ++i)
2819     {
2820       xfree ((void*) file_data->file_names[i]);
2821       if (file_data->real_names)
2822         xfree ((void*) file_data->real_names[i]);
2823     }
2824
2825   /* The space for the struct itself lives on objfile_obstack,
2826      so we don't free it here.  */
2827 }
2828
2829 /* Create a quick_file_names hash table.  */
2830
2831 static htab_t
2832 create_quick_file_names_table (unsigned int nr_initial_entries)
2833 {
2834   return htab_create_alloc (nr_initial_entries,
2835                             hash_file_name_entry, eq_file_name_entry,
2836                             delete_file_name_entry, xcalloc, xfree);
2837 }
2838
2839 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2840    have to be created afterwards.  You should call age_cached_comp_units after
2841    processing PER_CU->CU.  dw2_setup must have been already called.  */
2842
2843 static void
2844 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2845 {
2846   if (per_cu->is_debug_types)
2847     load_full_type_unit (per_cu);
2848   else
2849     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2850
2851   if (per_cu->cu == NULL)
2852     return;  /* Dummy CU.  */
2853
2854   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2855 }
2856
2857 /* Read in the symbols for PER_CU.  */
2858
2859 static void
2860 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2861 {
2862   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2863
2864   /* Skip type_unit_groups, reading the type units they contain
2865      is handled elsewhere.  */
2866   if (IS_TYPE_UNIT_GROUP (per_cu))
2867     return;
2868
2869   /* The destructor of dwarf2_queue_guard frees any entries left on
2870      the queue.  After this point we're guaranteed to leave this function
2871      with the dwarf queue empty.  */
2872   dwarf2_queue_guard q_guard;
2873
2874   if (dwarf2_per_objfile->using_index
2875       ? per_cu->v.quick->compunit_symtab == NULL
2876       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2877     {
2878       queue_comp_unit (per_cu, language_minimal);
2879       load_cu (per_cu, skip_partial);
2880
2881       /* If we just loaded a CU from a DWO, and we're working with an index
2882          that may badly handle TUs, load all the TUs in that DWO as well.
2883          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2884       if (!per_cu->is_debug_types
2885           && per_cu->cu != NULL
2886           && per_cu->cu->dwo_unit != NULL
2887           && dwarf2_per_objfile->index_table != NULL
2888           && dwarf2_per_objfile->index_table->version <= 7
2889           /* DWP files aren't supported yet.  */
2890           && get_dwp_file (dwarf2_per_objfile) == NULL)
2891         queue_and_load_all_dwo_tus (per_cu);
2892     }
2893
2894   process_queue (dwarf2_per_objfile);
2895
2896   /* Age the cache, releasing compilation units that have not
2897      been used recently.  */
2898   age_cached_comp_units (dwarf2_per_objfile);
2899 }
2900
2901 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2902    the objfile from which this CU came.  Returns the resulting symbol
2903    table.  */
2904
2905 static struct compunit_symtab *
2906 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2907 {
2908   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2909
2910   gdb_assert (dwarf2_per_objfile->using_index);
2911   if (!per_cu->v.quick->compunit_symtab)
2912     {
2913       free_cached_comp_units freer (dwarf2_per_objfile);
2914       scoped_restore decrementer = increment_reading_symtab ();
2915       dw2_do_instantiate_symtab (per_cu, skip_partial);
2916       process_cu_includes (dwarf2_per_objfile);
2917     }
2918
2919   return per_cu->v.quick->compunit_symtab;
2920 }
2921
2922 /* See declaration.  */
2923
2924 dwarf2_per_cu_data *
2925 dwarf2_per_objfile::get_cutu (int index)
2926 {
2927   if (index >= this->all_comp_units.size ())
2928     {
2929       index -= this->all_comp_units.size ();
2930       gdb_assert (index < this->all_type_units.size ());
2931       return &this->all_type_units[index]->per_cu;
2932     }
2933
2934   return this->all_comp_units[index];
2935 }
2936
2937 /* See declaration.  */
2938
2939 dwarf2_per_cu_data *
2940 dwarf2_per_objfile::get_cu (int index)
2941 {
2942   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2943
2944   return this->all_comp_units[index];
2945 }
2946
2947 /* See declaration.  */
2948
2949 signatured_type *
2950 dwarf2_per_objfile::get_tu (int index)
2951 {
2952   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2953
2954   return this->all_type_units[index];
2955 }
2956
2957 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2958    objfile_obstack, and constructed with the specified field
2959    values.  */
2960
2961 static dwarf2_per_cu_data *
2962 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2963                           struct dwarf2_section_info *section,
2964                           int is_dwz,
2965                           sect_offset sect_off, ULONGEST length)
2966 {
2967   struct objfile *objfile = dwarf2_per_objfile->objfile;
2968   dwarf2_per_cu_data *the_cu
2969     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970                      struct dwarf2_per_cu_data);
2971   the_cu->sect_off = sect_off;
2972   the_cu->length = length;
2973   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2974   the_cu->section = section;
2975   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2976                                    struct dwarf2_per_cu_quick_data);
2977   the_cu->is_dwz = is_dwz;
2978   return the_cu;
2979 }
2980
2981 /* A helper for create_cus_from_index that handles a given list of
2982    CUs.  */
2983
2984 static void
2985 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2986                             const gdb_byte *cu_list, offset_type n_elements,
2987                             struct dwarf2_section_info *section,
2988                             int is_dwz)
2989 {
2990   for (offset_type i = 0; i < n_elements; i += 2)
2991     {
2992       gdb_static_assert (sizeof (ULONGEST) >= 8);
2993
2994       sect_offset sect_off
2995         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2996       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2997       cu_list += 2 * 8;
2998
2999       dwarf2_per_cu_data *per_cu
3000         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3001                                      sect_off, length);
3002       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3003     }
3004 }
3005
3006 /* Read the CU list from the mapped index, and use it to create all
3007    the CU objects for this objfile.  */
3008
3009 static void
3010 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3011                        const gdb_byte *cu_list, offset_type cu_list_elements,
3012                        const gdb_byte *dwz_list, offset_type dwz_elements)
3013 {
3014   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3015   dwarf2_per_objfile->all_comp_units.reserve
3016     ((cu_list_elements + dwz_elements) / 2);
3017
3018   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3019                               &dwarf2_per_objfile->info, 0);
3020
3021   if (dwz_elements == 0)
3022     return;
3023
3024   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3025   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3026                               &dwz->info, 1);
3027 }
3028
3029 /* Create the signatured type hash table from the index.  */
3030
3031 static void
3032 create_signatured_type_table_from_index
3033   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3034    struct dwarf2_section_info *section,
3035    const gdb_byte *bytes,
3036    offset_type elements)
3037 {
3038   struct objfile *objfile = dwarf2_per_objfile->objfile;
3039
3040   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3041   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3042
3043   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3044
3045   for (offset_type i = 0; i < elements; i += 3)
3046     {
3047       struct signatured_type *sig_type;
3048       ULONGEST signature;
3049       void **slot;
3050       cu_offset type_offset_in_tu;
3051
3052       gdb_static_assert (sizeof (ULONGEST) >= 8);
3053       sect_offset sect_off
3054         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3055       type_offset_in_tu
3056         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3057                                                 BFD_ENDIAN_LITTLE);
3058       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3059       bytes += 3 * 8;
3060
3061       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3062                                  struct signatured_type);
3063       sig_type->signature = signature;
3064       sig_type->type_offset_in_tu = type_offset_in_tu;
3065       sig_type->per_cu.is_debug_types = 1;
3066       sig_type->per_cu.section = section;
3067       sig_type->per_cu.sect_off = sect_off;
3068       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3069       sig_type->per_cu.v.quick
3070         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3071                           struct dwarf2_per_cu_quick_data);
3072
3073       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3074       *slot = sig_type;
3075
3076       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3077     }
3078
3079   dwarf2_per_objfile->signatured_types = sig_types_hash;
3080 }
3081
3082 /* Create the signatured type hash table from .debug_names.  */
3083
3084 static void
3085 create_signatured_type_table_from_debug_names
3086   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3087    const mapped_debug_names &map,
3088    struct dwarf2_section_info *section,
3089    struct dwarf2_section_info *abbrev_section)
3090 {
3091   struct objfile *objfile = dwarf2_per_objfile->objfile;
3092
3093   dwarf2_read_section (objfile, section);
3094   dwarf2_read_section (objfile, abbrev_section);
3095
3096   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3097   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3098
3099   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3100
3101   for (uint32_t i = 0; i < map.tu_count; ++i)
3102     {
3103       struct signatured_type *sig_type;
3104       void **slot;
3105
3106       sect_offset sect_off
3107         = (sect_offset) (extract_unsigned_integer
3108                          (map.tu_table_reordered + i * map.offset_size,
3109                           map.offset_size,
3110                           map.dwarf5_byte_order));
3111
3112       comp_unit_head cu_header;
3113       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3114                                      abbrev_section,
3115                                      section->buffer + to_underlying (sect_off),
3116                                      rcuh_kind::TYPE);
3117
3118       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3119                                  struct signatured_type);
3120       sig_type->signature = cu_header.signature;
3121       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3122       sig_type->per_cu.is_debug_types = 1;
3123       sig_type->per_cu.section = section;
3124       sig_type->per_cu.sect_off = sect_off;
3125       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3126       sig_type->per_cu.v.quick
3127         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3128                           struct dwarf2_per_cu_quick_data);
3129
3130       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3131       *slot = sig_type;
3132
3133       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3134     }
3135
3136   dwarf2_per_objfile->signatured_types = sig_types_hash;
3137 }
3138
3139 /* Read the address map data from the mapped index, and use it to
3140    populate the objfile's psymtabs_addrmap.  */
3141
3142 static void
3143 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3144                            struct mapped_index *index)
3145 {
3146   struct objfile *objfile = dwarf2_per_objfile->objfile;
3147   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3148   const gdb_byte *iter, *end;
3149   struct addrmap *mutable_map;
3150   CORE_ADDR baseaddr;
3151
3152   auto_obstack temp_obstack;
3153
3154   mutable_map = addrmap_create_mutable (&temp_obstack);
3155
3156   iter = index->address_table.data ();
3157   end = iter + index->address_table.size ();
3158
3159   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3160
3161   while (iter < end)
3162     {
3163       ULONGEST hi, lo, cu_index;
3164       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3165       iter += 8;
3166       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3167       iter += 8;
3168       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3169       iter += 4;
3170
3171       if (lo > hi)
3172         {
3173           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3174                      hex_string (lo), hex_string (hi));
3175           continue;
3176         }
3177
3178       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3179         {
3180           complaint (_(".gdb_index address table has invalid CU number %u"),
3181                      (unsigned) cu_index);
3182           continue;
3183         }
3184
3185       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3186       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3187       addrmap_set_empty (mutable_map, lo, hi - 1,
3188                          dwarf2_per_objfile->get_cu (cu_index));
3189     }
3190
3191   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3192                                                     &objfile->objfile_obstack);
3193 }
3194
3195 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3196    populate the objfile's psymtabs_addrmap.  */
3197
3198 static void
3199 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3200                              struct dwarf2_section_info *section)
3201 {
3202   struct objfile *objfile = dwarf2_per_objfile->objfile;
3203   bfd *abfd = objfile->obfd;
3204   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3205   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3206                                        SECT_OFF_TEXT (objfile));
3207
3208   auto_obstack temp_obstack;
3209   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3210
3211   std::unordered_map<sect_offset,
3212                      dwarf2_per_cu_data *,
3213                      gdb::hash_enum<sect_offset>>
3214     debug_info_offset_to_per_cu;
3215   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3216     {
3217       const auto insertpair
3218         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3219       if (!insertpair.second)
3220         {
3221           warning (_("Section .debug_aranges in %s has duplicate "
3222                      "debug_info_offset %s, ignoring .debug_aranges."),
3223                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3224           return;
3225         }
3226     }
3227
3228   dwarf2_read_section (objfile, section);
3229
3230   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3231
3232   const gdb_byte *addr = section->buffer;
3233
3234   while (addr < section->buffer + section->size)
3235     {
3236       const gdb_byte *const entry_addr = addr;
3237       unsigned int bytes_read;
3238
3239       const LONGEST entry_length = read_initial_length (abfd, addr,
3240                                                         &bytes_read);
3241       addr += bytes_read;
3242
3243       const gdb_byte *const entry_end = addr + entry_length;
3244       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3245       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3246       if (addr + entry_length > section->buffer + section->size)
3247         {
3248           warning (_("Section .debug_aranges in %s entry at offset %zu "
3249                      "length %s exceeds section length %s, "
3250                      "ignoring .debug_aranges."),
3251                    objfile_name (objfile), entry_addr - section->buffer,
3252                    plongest (bytes_read + entry_length),
3253                    pulongest (section->size));
3254           return;
3255         }
3256
3257       /* The version number.  */
3258       const uint16_t version = read_2_bytes (abfd, addr);
3259       addr += 2;
3260       if (version != 2)
3261         {
3262           warning (_("Section .debug_aranges in %s entry at offset %zu "
3263                      "has unsupported version %d, ignoring .debug_aranges."),
3264                    objfile_name (objfile), entry_addr - section->buffer,
3265                    version);
3266           return;
3267         }
3268
3269       const uint64_t debug_info_offset
3270         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3271       addr += offset_size;
3272       const auto per_cu_it
3273         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3274       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3275         {
3276           warning (_("Section .debug_aranges in %s entry at offset %zu "
3277                      "debug_info_offset %s does not exists, "
3278                      "ignoring .debug_aranges."),
3279                    objfile_name (objfile), entry_addr - section->buffer,
3280                    pulongest (debug_info_offset));
3281           return;
3282         }
3283       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3284
3285       const uint8_t address_size = *addr++;
3286       if (address_size < 1 || address_size > 8)
3287         {
3288           warning (_("Section .debug_aranges in %s entry at offset %zu "
3289                      "address_size %u is invalid, ignoring .debug_aranges."),
3290                    objfile_name (objfile), entry_addr - section->buffer,
3291                    address_size);
3292           return;
3293         }
3294
3295       const uint8_t segment_selector_size = *addr++;
3296       if (segment_selector_size != 0)
3297         {
3298           warning (_("Section .debug_aranges in %s entry at offset %zu "
3299                      "segment_selector_size %u is not supported, "
3300                      "ignoring .debug_aranges."),
3301                    objfile_name (objfile), entry_addr - section->buffer,
3302                    segment_selector_size);
3303           return;
3304         }
3305
3306       /* Must pad to an alignment boundary that is twice the address
3307          size.  It is undocumented by the DWARF standard but GCC does
3308          use it.  */
3309       for (size_t padding = ((-(addr - section->buffer))
3310                              & (2 * address_size - 1));
3311            padding > 0; padding--)
3312         if (*addr++ != 0)
3313           {
3314             warning (_("Section .debug_aranges in %s entry at offset %zu "
3315                        "padding is not zero, ignoring .debug_aranges."),
3316                      objfile_name (objfile), entry_addr - section->buffer);
3317             return;
3318           }
3319
3320       for (;;)
3321         {
3322           if (addr + 2 * address_size > entry_end)
3323             {
3324               warning (_("Section .debug_aranges in %s entry at offset %zu "
3325                          "address list is not properly terminated, "
3326                          "ignoring .debug_aranges."),
3327                        objfile_name (objfile), entry_addr - section->buffer);
3328               return;
3329             }
3330           ULONGEST start = extract_unsigned_integer (addr, address_size,
3331                                                      dwarf5_byte_order);
3332           addr += address_size;
3333           ULONGEST length = extract_unsigned_integer (addr, address_size,
3334                                                       dwarf5_byte_order);
3335           addr += address_size;
3336           if (start == 0 && length == 0)
3337             break;
3338           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3339             {
3340               /* Symbol was eliminated due to a COMDAT group.  */
3341               continue;
3342             }
3343           ULONGEST end = start + length;
3344           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3345                    - baseaddr);
3346           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3347                  - baseaddr);
3348           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3349         }
3350     }
3351
3352   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3353                                                     &objfile->objfile_obstack);
3354 }
3355
3356 /* Find a slot in the mapped index INDEX for the object named NAME.
3357    If NAME is found, set *VEC_OUT to point to the CU vector in the
3358    constant pool and return true.  If NAME cannot be found, return
3359    false.  */
3360
3361 static bool
3362 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3363                           offset_type **vec_out)
3364 {
3365   offset_type hash;
3366   offset_type slot, step;
3367   int (*cmp) (const char *, const char *);
3368
3369   gdb::unique_xmalloc_ptr<char> without_params;
3370   if (current_language->la_language == language_cplus
3371       || current_language->la_language == language_fortran
3372       || current_language->la_language == language_d)
3373     {
3374       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3375          not contain any.  */
3376
3377       if (strchr (name, '(') != NULL)
3378         {
3379           without_params = cp_remove_params (name);
3380
3381           if (without_params != NULL)
3382             name = without_params.get ();
3383         }
3384     }
3385
3386   /* Index version 4 did not support case insensitive searches.  But the
3387      indices for case insensitive languages are built in lowercase, therefore
3388      simulate our NAME being searched is also lowercased.  */
3389   hash = mapped_index_string_hash ((index->version == 4
3390                                     && case_sensitivity == case_sensitive_off
3391                                     ? 5 : index->version),
3392                                    name);
3393
3394   slot = hash & (index->symbol_table.size () - 1);
3395   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3396   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3397
3398   for (;;)
3399     {
3400       const char *str;
3401
3402       const auto &bucket = index->symbol_table[slot];
3403       if (bucket.name == 0 && bucket.vec == 0)
3404         return false;
3405
3406       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3407       if (!cmp (name, str))
3408         {
3409           *vec_out = (offset_type *) (index->constant_pool
3410                                       + MAYBE_SWAP (bucket.vec));
3411           return true;
3412         }
3413
3414       slot = (slot + step) & (index->symbol_table.size () - 1);
3415     }
3416 }
3417
3418 /* A helper function that reads the .gdb_index from BUFFER and fills
3419    in MAP.  FILENAME is the name of the file containing the data;
3420    it is used for error reporting.  DEPRECATED_OK is true if it is
3421    ok to use deprecated sections.
3422
3423    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3424    out parameters that are filled in with information about the CU and
3425    TU lists in the section.
3426
3427    Returns true if all went well, false otherwise.  */
3428
3429 static bool
3430 read_gdb_index_from_buffer (struct objfile *objfile,
3431                             const char *filename,
3432                             bool deprecated_ok,
3433                             gdb::array_view<const gdb_byte> buffer,
3434                             struct mapped_index *map,
3435                             const gdb_byte **cu_list,
3436                             offset_type *cu_list_elements,
3437                             const gdb_byte **types_list,
3438                             offset_type *types_list_elements)
3439 {
3440   const gdb_byte *addr = &buffer[0];
3441
3442   /* Version check.  */
3443   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3444   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3445      causes the index to behave very poorly for certain requests.  Version 3
3446      contained incomplete addrmap.  So, it seems better to just ignore such
3447      indices.  */
3448   if (version < 4)
3449     {
3450       static int warning_printed = 0;
3451       if (!warning_printed)
3452         {
3453           warning (_("Skipping obsolete .gdb_index section in %s."),
3454                    filename);
3455           warning_printed = 1;
3456         }
3457       return 0;
3458     }
3459   /* Index version 4 uses a different hash function than index version
3460      5 and later.
3461
3462      Versions earlier than 6 did not emit psymbols for inlined
3463      functions.  Using these files will cause GDB not to be able to
3464      set breakpoints on inlined functions by name, so we ignore these
3465      indices unless the user has done
3466      "set use-deprecated-index-sections on".  */
3467   if (version < 6 && !deprecated_ok)
3468     {
3469       static int warning_printed = 0;
3470       if (!warning_printed)
3471         {
3472           warning (_("\
3473 Skipping deprecated .gdb_index section in %s.\n\
3474 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3475 to use the section anyway."),
3476                    filename);
3477           warning_printed = 1;
3478         }
3479       return 0;
3480     }
3481   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3482      of the TU (for symbols coming from TUs),
3483      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3484      Plus gold-generated indices can have duplicate entries for global symbols,
3485      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3486      These are just performance bugs, and we can't distinguish gdb-generated
3487      indices from gold-generated ones, so issue no warning here.  */
3488
3489   /* Indexes with higher version than the one supported by GDB may be no
3490      longer backward compatible.  */
3491   if (version > 8)
3492     return 0;
3493
3494   map->version = version;
3495
3496   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3497
3498   int i = 0;
3499   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3500   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3501                        / 8);
3502   ++i;
3503
3504   *types_list = addr + MAYBE_SWAP (metadata[i]);
3505   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3506                            - MAYBE_SWAP (metadata[i]))
3507                           / 8);
3508   ++i;
3509
3510   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3511   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3512   map->address_table
3513     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3514   ++i;
3515
3516   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3517   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3518   map->symbol_table
3519     = gdb::array_view<mapped_index::symbol_table_slot>
3520        ((mapped_index::symbol_table_slot *) symbol_table,
3521         (mapped_index::symbol_table_slot *) symbol_table_end);
3522
3523   ++i;
3524   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3525
3526   return 1;
3527 }
3528
3529 /* Callback types for dwarf2_read_gdb_index.  */
3530
3531 typedef gdb::function_view
3532     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3533     get_gdb_index_contents_ftype;
3534 typedef gdb::function_view
3535     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3536     get_gdb_index_contents_dwz_ftype;
3537
3538 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3539    elements of all the CUs and return 1.  Otherwise, return 0.  */
3540
3541 static int
3542 dwarf2_read_gdb_index
3543   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3544    get_gdb_index_contents_ftype get_gdb_index_contents,
3545    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3546 {
3547   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3548   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3549   struct dwz_file *dwz;
3550   struct objfile *objfile = dwarf2_per_objfile->objfile;
3551
3552   gdb::array_view<const gdb_byte> main_index_contents
3553     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3554
3555   if (main_index_contents.empty ())
3556     return 0;
3557
3558   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3559   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3560                                    use_deprecated_index_sections,
3561                                    main_index_contents, map.get (), &cu_list,
3562                                    &cu_list_elements, &types_list,
3563                                    &types_list_elements))
3564     return 0;
3565
3566   /* Don't use the index if it's empty.  */
3567   if (map->symbol_table.empty ())
3568     return 0;
3569
3570   /* If there is a .dwz file, read it so we can get its CU list as
3571      well.  */
3572   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3573   if (dwz != NULL)
3574     {
3575       struct mapped_index dwz_map;
3576       const gdb_byte *dwz_types_ignore;
3577       offset_type dwz_types_elements_ignore;
3578
3579       gdb::array_view<const gdb_byte> dwz_index_content
3580         = get_gdb_index_contents_dwz (objfile, dwz);
3581
3582       if (dwz_index_content.empty ())
3583         return 0;
3584
3585       if (!read_gdb_index_from_buffer (objfile,
3586                                        bfd_get_filename (dwz->dwz_bfd), 1,
3587                                        dwz_index_content, &dwz_map,
3588                                        &dwz_list, &dwz_list_elements,
3589                                        &dwz_types_ignore,
3590                                        &dwz_types_elements_ignore))
3591         {
3592           warning (_("could not read '.gdb_index' section from %s; skipping"),
3593                    bfd_get_filename (dwz->dwz_bfd));
3594           return 0;
3595         }
3596     }
3597
3598   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3599                          dwz_list, dwz_list_elements);
3600
3601   if (types_list_elements)
3602     {
3603       struct dwarf2_section_info *section;
3604
3605       /* We can only handle a single .debug_types when we have an
3606          index.  */
3607       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3608         return 0;
3609
3610       section = VEC_index (dwarf2_section_info_def,
3611                            dwarf2_per_objfile->types, 0);
3612
3613       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3614                                                types_list, types_list_elements);
3615     }
3616
3617   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3618
3619   dwarf2_per_objfile->index_table = std::move (map);
3620   dwarf2_per_objfile->using_index = 1;
3621   dwarf2_per_objfile->quick_file_names_table =
3622     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3623
3624   return 1;
3625 }
3626
3627 /* die_reader_func for dw2_get_file_names.  */
3628
3629 static void
3630 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3631                            const gdb_byte *info_ptr,
3632                            struct die_info *comp_unit_die,
3633                            int has_children,
3634                            void *data)
3635 {
3636   struct dwarf2_cu *cu = reader->cu;
3637   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3638   struct dwarf2_per_objfile *dwarf2_per_objfile
3639     = cu->per_cu->dwarf2_per_objfile;
3640   struct objfile *objfile = dwarf2_per_objfile->objfile;
3641   struct dwarf2_per_cu_data *lh_cu;
3642   struct attribute *attr;
3643   int i;
3644   void **slot;
3645   struct quick_file_names *qfn;
3646
3647   gdb_assert (! this_cu->is_debug_types);
3648
3649   /* Our callers never want to match partial units -- instead they
3650      will match the enclosing full CU.  */
3651   if (comp_unit_die->tag == DW_TAG_partial_unit)
3652     {
3653       this_cu->v.quick->no_file_data = 1;
3654       return;
3655     }
3656
3657   lh_cu = this_cu;
3658   slot = NULL;
3659
3660   line_header_up lh;
3661   sect_offset line_offset {};
3662
3663   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3664   if (attr)
3665     {
3666       struct quick_file_names find_entry;
3667
3668       line_offset = (sect_offset) DW_UNSND (attr);
3669
3670       /* We may have already read in this line header (TU line header sharing).
3671          If we have we're done.  */
3672       find_entry.hash.dwo_unit = cu->dwo_unit;
3673       find_entry.hash.line_sect_off = line_offset;
3674       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3675                              &find_entry, INSERT);
3676       if (*slot != NULL)
3677         {
3678           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3679           return;
3680         }
3681
3682       lh = dwarf_decode_line_header (line_offset, cu);
3683     }
3684   if (lh == NULL)
3685     {
3686       lh_cu->v.quick->no_file_data = 1;
3687       return;
3688     }
3689
3690   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3691   qfn->hash.dwo_unit = cu->dwo_unit;
3692   qfn->hash.line_sect_off = line_offset;
3693   gdb_assert (slot != NULL);
3694   *slot = qfn;
3695
3696   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3697
3698   qfn->num_file_names = lh->file_names.size ();
3699   qfn->file_names =
3700     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3701   for (i = 0; i < lh->file_names.size (); ++i)
3702     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3703   qfn->real_names = NULL;
3704
3705   lh_cu->v.quick->file_names = qfn;
3706 }
3707
3708 /* A helper for the "quick" functions which attempts to read the line
3709    table for THIS_CU.  */
3710
3711 static struct quick_file_names *
3712 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3713 {
3714   /* This should never be called for TUs.  */
3715   gdb_assert (! this_cu->is_debug_types);
3716   /* Nor type unit groups.  */
3717   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3718
3719   if (this_cu->v.quick->file_names != NULL)
3720     return this_cu->v.quick->file_names;
3721   /* If we know there is no line data, no point in looking again.  */
3722   if (this_cu->v.quick->no_file_data)
3723     return NULL;
3724
3725   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3726
3727   if (this_cu->v.quick->no_file_data)
3728     return NULL;
3729   return this_cu->v.quick->file_names;
3730 }
3731
3732 /* A helper for the "quick" functions which computes and caches the
3733    real path for a given file name from the line table.  */
3734
3735 static const char *
3736 dw2_get_real_path (struct objfile *objfile,
3737                    struct quick_file_names *qfn, int index)
3738 {
3739   if (qfn->real_names == NULL)
3740     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3741                                       qfn->num_file_names, const char *);
3742
3743   if (qfn->real_names[index] == NULL)
3744     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3745
3746   return qfn->real_names[index];
3747 }
3748
3749 static struct symtab *
3750 dw2_find_last_source_symtab (struct objfile *objfile)
3751 {
3752   struct dwarf2_per_objfile *dwarf2_per_objfile
3753     = get_dwarf2_per_objfile (objfile);
3754   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3755   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3756
3757   if (cust == NULL)
3758     return NULL;
3759
3760   return compunit_primary_filetab (cust);
3761 }
3762
3763 /* Traversal function for dw2_forget_cached_source_info.  */
3764
3765 static int
3766 dw2_free_cached_file_names (void **slot, void *info)
3767 {
3768   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3769
3770   if (file_data->real_names)
3771     {
3772       int i;
3773
3774       for (i = 0; i < file_data->num_file_names; ++i)
3775         {
3776           xfree ((void*) file_data->real_names[i]);
3777           file_data->real_names[i] = NULL;
3778         }
3779     }
3780
3781   return 1;
3782 }
3783
3784 static void
3785 dw2_forget_cached_source_info (struct objfile *objfile)
3786 {
3787   struct dwarf2_per_objfile *dwarf2_per_objfile
3788     = get_dwarf2_per_objfile (objfile);
3789
3790   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3791                           dw2_free_cached_file_names, NULL);
3792 }
3793
3794 /* Helper function for dw2_map_symtabs_matching_filename that expands
3795    the symtabs and calls the iterator.  */
3796
3797 static int
3798 dw2_map_expand_apply (struct objfile *objfile,
3799                       struct dwarf2_per_cu_data *per_cu,
3800                       const char *name, const char *real_path,
3801                       gdb::function_view<bool (symtab *)> callback)
3802 {
3803   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3804
3805   /* Don't visit already-expanded CUs.  */
3806   if (per_cu->v.quick->compunit_symtab)
3807     return 0;
3808
3809   /* This may expand more than one symtab, and we want to iterate over
3810      all of them.  */
3811   dw2_instantiate_symtab (per_cu, false);
3812
3813   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3814                                     last_made, callback);
3815 }
3816
3817 /* Implementation of the map_symtabs_matching_filename method.  */
3818
3819 static bool
3820 dw2_map_symtabs_matching_filename
3821   (struct objfile *objfile, const char *name, const char *real_path,
3822    gdb::function_view<bool (symtab *)> callback)
3823 {
3824   const char *name_basename = lbasename (name);
3825   struct dwarf2_per_objfile *dwarf2_per_objfile
3826     = get_dwarf2_per_objfile (objfile);
3827
3828   /* The rule is CUs specify all the files, including those used by
3829      any TU, so there's no need to scan TUs here.  */
3830
3831   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3832     {
3833       /* We only need to look at symtabs not already expanded.  */
3834       if (per_cu->v.quick->compunit_symtab)
3835         continue;
3836
3837       quick_file_names *file_data = dw2_get_file_names (per_cu);
3838       if (file_data == NULL)
3839         continue;
3840
3841       for (int j = 0; j < file_data->num_file_names; ++j)
3842         {
3843           const char *this_name = file_data->file_names[j];
3844           const char *this_real_name;
3845
3846           if (compare_filenames_for_search (this_name, name))
3847             {
3848               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3849                                         callback))
3850                 return true;
3851               continue;
3852             }
3853
3854           /* Before we invoke realpath, which can get expensive when many
3855              files are involved, do a quick comparison of the basenames.  */
3856           if (! basenames_may_differ
3857               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3858             continue;
3859
3860           this_real_name = dw2_get_real_path (objfile, file_data, j);
3861           if (compare_filenames_for_search (this_real_name, name))
3862             {
3863               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3864                                         callback))
3865                 return true;
3866               continue;
3867             }
3868
3869           if (real_path != NULL)
3870             {
3871               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3872               gdb_assert (IS_ABSOLUTE_PATH (name));
3873               if (this_real_name != NULL
3874                   && FILENAME_CMP (real_path, this_real_name) == 0)
3875                 {
3876                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3877                                             callback))
3878                     return true;
3879                   continue;
3880                 }
3881             }
3882         }
3883     }
3884
3885   return false;
3886 }
3887
3888 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3889
3890 struct dw2_symtab_iterator
3891 {
3892   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3893   struct dwarf2_per_objfile *dwarf2_per_objfile;
3894   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3895   int want_specific_block;
3896   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3897      Unused if !WANT_SPECIFIC_BLOCK.  */
3898   int block_index;
3899   /* The kind of symbol we're looking for.  */
3900   domain_enum domain;
3901   /* The list of CUs from the index entry of the symbol,
3902      or NULL if not found.  */
3903   offset_type *vec;
3904   /* The next element in VEC to look at.  */
3905   int next;
3906   /* The number of elements in VEC, or zero if there is no match.  */
3907   int length;
3908   /* Have we seen a global version of the symbol?
3909      If so we can ignore all further global instances.
3910      This is to work around gold/15646, inefficient gold-generated
3911      indices.  */
3912   int global_seen;
3913 };
3914
3915 /* Initialize the index symtab iterator ITER.
3916    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3917    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3918
3919 static void
3920 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3921                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3922                       int want_specific_block,
3923                       int block_index,
3924                       domain_enum domain,
3925                       const char *name)
3926 {
3927   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3928   iter->want_specific_block = want_specific_block;
3929   iter->block_index = block_index;
3930   iter->domain = domain;
3931   iter->next = 0;
3932   iter->global_seen = 0;
3933
3934   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3935
3936   /* index is NULL if OBJF_READNOW.  */
3937   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3938     iter->length = MAYBE_SWAP (*iter->vec);
3939   else
3940     {
3941       iter->vec = NULL;
3942       iter->length = 0;
3943     }
3944 }
3945
3946 /* Return the next matching CU or NULL if there are no more.  */
3947
3948 static struct dwarf2_per_cu_data *
3949 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3950 {
3951   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3952
3953   for ( ; iter->next < iter->length; ++iter->next)
3954     {
3955       offset_type cu_index_and_attrs =
3956         MAYBE_SWAP (iter->vec[iter->next + 1]);
3957       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3958       int want_static = iter->block_index != GLOBAL_BLOCK;
3959       /* This value is only valid for index versions >= 7.  */
3960       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3961       gdb_index_symbol_kind symbol_kind =
3962         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3963       /* Only check the symbol attributes if they're present.
3964          Indices prior to version 7 don't record them,
3965          and indices >= 7 may elide them for certain symbols
3966          (gold does this).  */
3967       int attrs_valid =
3968         (dwarf2_per_objfile->index_table->version >= 7
3969          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3970
3971       /* Don't crash on bad data.  */
3972       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3973                        + dwarf2_per_objfile->all_type_units.size ()))
3974         {
3975           complaint (_(".gdb_index entry has bad CU index"
3976                        " [in module %s]"),
3977                      objfile_name (dwarf2_per_objfile->objfile));
3978           continue;
3979         }
3980
3981       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3982
3983       /* Skip if already read in.  */
3984       if (per_cu->v.quick->compunit_symtab)
3985         continue;
3986
3987       /* Check static vs global.  */
3988       if (attrs_valid)
3989         {
3990           if (iter->want_specific_block
3991               && want_static != is_static)
3992             continue;
3993           /* Work around gold/15646.  */
3994           if (!is_static && iter->global_seen)
3995             continue;
3996           if (!is_static)
3997             iter->global_seen = 1;
3998         }
3999
4000       /* Only check the symbol's kind if it has one.  */
4001       if (attrs_valid)
4002         {
4003           switch (iter->domain)
4004             {
4005             case VAR_DOMAIN:
4006               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4007                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4008                   /* Some types are also in VAR_DOMAIN.  */
4009                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4010                 continue;
4011               break;
4012             case STRUCT_DOMAIN:
4013               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4014                 continue;
4015               break;
4016             case LABEL_DOMAIN:
4017               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4018                 continue;
4019               break;
4020             default:
4021               break;
4022             }
4023         }
4024
4025       ++iter->next;
4026       return per_cu;
4027     }
4028
4029   return NULL;
4030 }
4031
4032 static struct compunit_symtab *
4033 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4034                    const char *name, domain_enum domain)
4035 {
4036   struct compunit_symtab *stab_best = NULL;
4037   struct dwarf2_per_objfile *dwarf2_per_objfile
4038     = get_dwarf2_per_objfile (objfile);
4039
4040   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4041
4042   struct dw2_symtab_iterator iter;
4043   struct dwarf2_per_cu_data *per_cu;
4044
4045   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4046
4047   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4048     {
4049       struct symbol *sym, *with_opaque = NULL;
4050       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4051       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4052       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4053
4054       sym = block_find_symbol (block, name, domain,
4055                                block_find_non_opaque_type_preferred,
4056                                &with_opaque);
4057
4058       /* Some caution must be observed with overloaded functions
4059          and methods, since the index will not contain any overload
4060          information (but NAME might contain it).  */
4061
4062       if (sym != NULL
4063           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4064         return stab;
4065       if (with_opaque != NULL
4066           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4067         stab_best = stab;
4068
4069       /* Keep looking through other CUs.  */
4070     }
4071
4072   return stab_best;
4073 }
4074
4075 static void
4076 dw2_print_stats (struct objfile *objfile)
4077 {
4078   struct dwarf2_per_objfile *dwarf2_per_objfile
4079     = get_dwarf2_per_objfile (objfile);
4080   int total = (dwarf2_per_objfile->all_comp_units.size ()
4081                + dwarf2_per_objfile->all_type_units.size ());
4082   int count = 0;
4083
4084   for (int i = 0; i < total; ++i)
4085     {
4086       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4087
4088       if (!per_cu->v.quick->compunit_symtab)
4089         ++count;
4090     }
4091   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4092   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4093 }
4094
4095 /* This dumps minimal information about the index.
4096    It is called via "mt print objfiles".
4097    One use is to verify .gdb_index has been loaded by the
4098    gdb.dwarf2/gdb-index.exp testcase.  */
4099
4100 static void
4101 dw2_dump (struct objfile *objfile)
4102 {
4103   struct dwarf2_per_objfile *dwarf2_per_objfile
4104     = get_dwarf2_per_objfile (objfile);
4105
4106   gdb_assert (dwarf2_per_objfile->using_index);
4107   printf_filtered (".gdb_index:");
4108   if (dwarf2_per_objfile->index_table != NULL)
4109     {
4110       printf_filtered (" version %d\n",
4111                        dwarf2_per_objfile->index_table->version);
4112     }
4113   else
4114     printf_filtered (" faked for \"readnow\"\n");
4115   printf_filtered ("\n");
4116 }
4117
4118 static void
4119 dw2_expand_symtabs_for_function (struct objfile *objfile,
4120                                  const char *func_name)
4121 {
4122   struct dwarf2_per_objfile *dwarf2_per_objfile
4123     = get_dwarf2_per_objfile (objfile);
4124
4125   struct dw2_symtab_iterator iter;
4126   struct dwarf2_per_cu_data *per_cu;
4127
4128   /* Note: It doesn't matter what we pass for block_index here.  */
4129   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4130                         func_name);
4131
4132   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4133     dw2_instantiate_symtab (per_cu, false);
4134
4135 }
4136
4137 static void
4138 dw2_expand_all_symtabs (struct objfile *objfile)
4139 {
4140   struct dwarf2_per_objfile *dwarf2_per_objfile
4141     = get_dwarf2_per_objfile (objfile);
4142   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4143                      + dwarf2_per_objfile->all_type_units.size ());
4144
4145   for (int i = 0; i < total_units; ++i)
4146     {
4147       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4148
4149       /* We don't want to directly expand a partial CU, because if we
4150          read it with the wrong language, then assertion failures can
4151          be triggered later on.  See PR symtab/23010.  So, tell
4152          dw2_instantiate_symtab to skip partial CUs -- any important
4153          partial CU will be read via DW_TAG_imported_unit anyway.  */
4154       dw2_instantiate_symtab (per_cu, true);
4155     }
4156 }
4157
4158 static void
4159 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4160                                   const char *fullname)
4161 {
4162   struct dwarf2_per_objfile *dwarf2_per_objfile
4163     = get_dwarf2_per_objfile (objfile);
4164
4165   /* We don't need to consider type units here.
4166      This is only called for examining code, e.g. expand_line_sal.
4167      There can be an order of magnitude (or more) more type units
4168      than comp units, and we avoid them if we can.  */
4169
4170   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4171     {
4172       /* We only need to look at symtabs not already expanded.  */
4173       if (per_cu->v.quick->compunit_symtab)
4174         continue;
4175
4176       quick_file_names *file_data = dw2_get_file_names (per_cu);
4177       if (file_data == NULL)
4178         continue;
4179
4180       for (int j = 0; j < file_data->num_file_names; ++j)
4181         {
4182           const char *this_fullname = file_data->file_names[j];
4183
4184           if (filename_cmp (this_fullname, fullname) == 0)
4185             {
4186               dw2_instantiate_symtab (per_cu, false);
4187               break;
4188             }
4189         }
4190     }
4191 }
4192
4193 static void
4194 dw2_map_matching_symbols (struct objfile *objfile,
4195                           const char * name, domain_enum domain,
4196                           int global,
4197                           int (*callback) (struct block *,
4198                                            struct symbol *, void *),
4199                           void *data, symbol_name_match_type match,
4200                           symbol_compare_ftype *ordered_compare)
4201 {
4202   /* Currently unimplemented; used for Ada.  The function can be called if the
4203      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4204      does not look for non-Ada symbols this function should just return.  */
4205 }
4206
4207 /* Symbol name matcher for .gdb_index names.
4208
4209    Symbol names in .gdb_index have a few particularities:
4210
4211    - There's no indication of which is the language of each symbol.
4212
4213      Since each language has its own symbol name matching algorithm,
4214      and we don't know which language is the right one, we must match
4215      each symbol against all languages.  This would be a potential
4216      performance problem if it were not mitigated by the
4217      mapped_index::name_components lookup table, which significantly
4218      reduces the number of times we need to call into this matcher,
4219      making it a non-issue.
4220
4221    - Symbol names in the index have no overload (parameter)
4222      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4223      appear as "foo" in the index, for example.
4224
4225      This means that the lookup names passed to the symbol name
4226      matcher functions must have no parameter information either
4227      because (e.g.) symbol search name "foo" does not match
4228      lookup-name "foo(int)" [while swapping search name for lookup
4229      name would match].
4230 */
4231 class gdb_index_symbol_name_matcher
4232 {
4233 public:
4234   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4235   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4236
4237   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4238      Returns true if any matcher matches.  */
4239   bool matches (const char *symbol_name);
4240
4241 private:
4242   /* A reference to the lookup name we're matching against.  */
4243   const lookup_name_info &m_lookup_name;
4244
4245   /* A vector holding all the different symbol name matchers, for all
4246      languages.  */
4247   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4248 };
4249
4250 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4251   (const lookup_name_info &lookup_name)
4252     : m_lookup_name (lookup_name)
4253 {
4254   /* Prepare the vector of comparison functions upfront, to avoid
4255      doing the same work for each symbol.  Care is taken to avoid
4256      matching with the same matcher more than once if/when multiple
4257      languages use the same matcher function.  */
4258   auto &matchers = m_symbol_name_matcher_funcs;
4259   matchers.reserve (nr_languages);
4260
4261   matchers.push_back (default_symbol_name_matcher);
4262
4263   for (int i = 0; i < nr_languages; i++)
4264     {
4265       const language_defn *lang = language_def ((enum language) i);
4266       symbol_name_matcher_ftype *name_matcher
4267         = get_symbol_name_matcher (lang, m_lookup_name);
4268
4269       /* Don't insert the same comparison routine more than once.
4270          Note that we do this linear walk instead of a seemingly
4271          cheaper sorted insert, or use a std::set or something like
4272          that, because relative order of function addresses is not
4273          stable.  This is not a problem in practice because the number
4274          of supported languages is low, and the cost here is tiny
4275          compared to the number of searches we'll do afterwards using
4276          this object.  */
4277       if (name_matcher != default_symbol_name_matcher
4278           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4279               == matchers.end ()))
4280         matchers.push_back (name_matcher);
4281     }
4282 }
4283
4284 bool
4285 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4286 {
4287   for (auto matches_name : m_symbol_name_matcher_funcs)
4288     if (matches_name (symbol_name, m_lookup_name, NULL))
4289       return true;
4290
4291   return false;
4292 }
4293
4294 /* Starting from a search name, return the string that finds the upper
4295    bound of all strings that start with SEARCH_NAME in a sorted name
4296    list.  Returns the empty string to indicate that the upper bound is
4297    the end of the list.  */
4298
4299 static std::string
4300 make_sort_after_prefix_name (const char *search_name)
4301 {
4302   /* When looking to complete "func", we find the upper bound of all
4303      symbols that start with "func" by looking for where we'd insert
4304      the closest string that would follow "func" in lexicographical
4305      order.  Usually, that's "func"-with-last-character-incremented,
4306      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4307      will be UTF-8 multi-byte sequences, but we can't be certain.
4308      Especially mind the 0xff character, which is a valid character in
4309      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4310      rule out compilers allowing it in identifiers.  Note that
4311      conveniently, strcmp/strcasecmp are specified to compare
4312      characters interpreted as unsigned char.  So what we do is treat
4313      the whole string as a base 256 number composed of a sequence of
4314      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4315      to 0, and carries 1 to the following more-significant position.
4316      If the very first character in SEARCH_NAME ends up incremented
4317      and carries/overflows, then the upper bound is the end of the
4318      list.  The string after the empty string is also the empty
4319      string.
4320
4321      Some examples of this operation:
4322
4323        SEARCH_NAME  => "+1" RESULT
4324
4325        "abc"              => "abd"
4326        "ab\xff"           => "ac"
4327        "\xff" "a" "\xff"  => "\xff" "b"
4328        "\xff"             => ""
4329        "\xff\xff"         => ""
4330        ""                 => ""
4331
4332      Then, with these symbols for example:
4333
4334       func
4335       func1
4336       fund
4337
4338      completing "func" looks for symbols between "func" and
4339      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4340      which finds "func" and "func1", but not "fund".
4341
4342      And with:
4343
4344       funcÿ     (Latin1 'ÿ' [0xff])
4345       funcÿ1
4346       fund
4347
4348      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4349      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4350
4351      And with:
4352
4353       ÿÿ        (Latin1 'ÿ' [0xff])
4354       ÿÿ1
4355
4356      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4357      the end of the list.
4358   */
4359   std::string after = search_name;
4360   while (!after.empty () && (unsigned char) after.back () == 0xff)
4361     after.pop_back ();
4362   if (!after.empty ())
4363     after.back () = (unsigned char) after.back () + 1;
4364   return after;
4365 }
4366
4367 /* See declaration.  */
4368
4369 std::pair<std::vector<name_component>::const_iterator,
4370           std::vector<name_component>::const_iterator>
4371 mapped_index_base::find_name_components_bounds
4372   (const lookup_name_info &lookup_name_without_params) const
4373 {
4374   auto *name_cmp
4375     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4376
4377   const char *cplus
4378     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4379
4380   /* Comparison function object for lower_bound that matches against a
4381      given symbol name.  */
4382   auto lookup_compare_lower = [&] (const name_component &elem,
4383                                    const char *name)
4384     {
4385       const char *elem_qualified = this->symbol_name_at (elem.idx);
4386       const char *elem_name = elem_qualified + elem.name_offset;
4387       return name_cmp (elem_name, name) < 0;
4388     };
4389
4390   /* Comparison function object for upper_bound that matches against a
4391      given symbol name.  */
4392   auto lookup_compare_upper = [&] (const char *name,
4393                                    const name_component &elem)
4394     {
4395       const char *elem_qualified = this->symbol_name_at (elem.idx);
4396       const char *elem_name = elem_qualified + elem.name_offset;
4397       return name_cmp (name, elem_name) < 0;
4398     };
4399
4400   auto begin = this->name_components.begin ();
4401   auto end = this->name_components.end ();
4402
4403   /* Find the lower bound.  */
4404   auto lower = [&] ()
4405     {
4406       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4407         return begin;
4408       else
4409         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4410     } ();
4411
4412   /* Find the upper bound.  */
4413   auto upper = [&] ()
4414     {
4415       if (lookup_name_without_params.completion_mode ())
4416         {
4417           /* In completion mode, we want UPPER to point past all
4418              symbols names that have the same prefix.  I.e., with
4419              these symbols, and completing "func":
4420
4421               function        << lower bound
4422               function1
4423               other_function  << upper bound
4424
4425              We find the upper bound by looking for the insertion
4426              point of "func"-with-last-character-incremented,
4427              i.e. "fund".  */
4428           std::string after = make_sort_after_prefix_name (cplus);
4429           if (after.empty ())
4430             return end;
4431           return std::lower_bound (lower, end, after.c_str (),
4432                                    lookup_compare_lower);
4433         }
4434       else
4435         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4436     } ();
4437
4438   return {lower, upper};
4439 }
4440
4441 /* See declaration.  */
4442
4443 void
4444 mapped_index_base::build_name_components ()
4445 {
4446   if (!this->name_components.empty ())
4447     return;
4448
4449   this->name_components_casing = case_sensitivity;
4450   auto *name_cmp
4451     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4452
4453   /* The code below only knows how to break apart components of C++
4454      symbol names (and other languages that use '::' as
4455      namespace/module separator).  If we add support for wild matching
4456      to some language that uses some other operator (E.g., Ada, Go and
4457      D use '.'), then we'll need to try splitting the symbol name
4458      according to that language too.  Note that Ada does support wild
4459      matching, but doesn't currently support .gdb_index.  */
4460   auto count = this->symbol_name_count ();
4461   for (offset_type idx = 0; idx < count; idx++)
4462     {
4463       if (this->symbol_name_slot_invalid (idx))
4464         continue;
4465
4466       const char *name = this->symbol_name_at (idx);
4467
4468       /* Add each name component to the name component table.  */
4469       unsigned int previous_len = 0;
4470       for (unsigned int current_len = cp_find_first_component (name);
4471            name[current_len] != '\0';
4472            current_len += cp_find_first_component (name + current_len))
4473         {
4474           gdb_assert (name[current_len] == ':');
4475           this->name_components.push_back ({previous_len, idx});
4476           /* Skip the '::'.  */
4477           current_len += 2;
4478           previous_len = current_len;
4479         }
4480       this->name_components.push_back ({previous_len, idx});
4481     }
4482
4483   /* Sort name_components elements by name.  */
4484   auto name_comp_compare = [&] (const name_component &left,
4485                                 const name_component &right)
4486     {
4487       const char *left_qualified = this->symbol_name_at (left.idx);
4488       const char *right_qualified = this->symbol_name_at (right.idx);
4489
4490       const char *left_name = left_qualified + left.name_offset;
4491       const char *right_name = right_qualified + right.name_offset;
4492
4493       return name_cmp (left_name, right_name) < 0;
4494     };
4495
4496   std::sort (this->name_components.begin (),
4497              this->name_components.end (),
4498              name_comp_compare);
4499 }
4500
4501 /* Helper for dw2_expand_symtabs_matching that works with a
4502    mapped_index_base instead of the containing objfile.  This is split
4503    to a separate function in order to be able to unit test the
4504    name_components matching using a mock mapped_index_base.  For each
4505    symbol name that matches, calls MATCH_CALLBACK, passing it the
4506    symbol's index in the mapped_index_base symbol table.  */
4507
4508 static void
4509 dw2_expand_symtabs_matching_symbol
4510   (mapped_index_base &index,
4511    const lookup_name_info &lookup_name_in,
4512    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4513    enum search_domain kind,
4514    gdb::function_view<void (offset_type)> match_callback)
4515 {
4516   lookup_name_info lookup_name_without_params
4517     = lookup_name_in.make_ignore_params ();
4518   gdb_index_symbol_name_matcher lookup_name_matcher
4519     (lookup_name_without_params);
4520
4521   /* Build the symbol name component sorted vector, if we haven't
4522      yet.  */
4523   index.build_name_components ();
4524
4525   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4526
4527   /* Now for each symbol name in range, check to see if we have a name
4528      match, and if so, call the MATCH_CALLBACK callback.  */
4529
4530   /* The same symbol may appear more than once in the range though.
4531      E.g., if we're looking for symbols that complete "w", and we have
4532      a symbol named "w1::w2", we'll find the two name components for
4533      that same symbol in the range.  To be sure we only call the
4534      callback once per symbol, we first collect the symbol name
4535      indexes that matched in a temporary vector and ignore
4536      duplicates.  */
4537   std::vector<offset_type> matches;
4538   matches.reserve (std::distance (bounds.first, bounds.second));
4539
4540   for (; bounds.first != bounds.second; ++bounds.first)
4541     {
4542       const char *qualified = index.symbol_name_at (bounds.first->idx);
4543
4544       if (!lookup_name_matcher.matches (qualified)
4545           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4546         continue;
4547
4548       matches.push_back (bounds.first->idx);
4549     }
4550
4551   std::sort (matches.begin (), matches.end ());
4552
4553   /* Finally call the callback, once per match.  */
4554   ULONGEST prev = -1;
4555   for (offset_type idx : matches)
4556     {
4557       if (prev != idx)
4558         {
4559           match_callback (idx);
4560           prev = idx;
4561         }
4562     }
4563
4564   /* Above we use a type wider than idx's for 'prev', since 0 and
4565      (offset_type)-1 are both possible values.  */
4566   static_assert (sizeof (prev) > sizeof (offset_type), "");
4567 }
4568
4569 #if GDB_SELF_TEST
4570
4571 namespace selftests { namespace dw2_expand_symtabs_matching {
4572
4573 /* A mock .gdb_index/.debug_names-like name index table, enough to
4574    exercise dw2_expand_symtabs_matching_symbol, which works with the
4575    mapped_index_base interface.  Builds an index from the symbol list
4576    passed as parameter to the constructor.  */
4577 class mock_mapped_index : public mapped_index_base
4578 {
4579 public:
4580   mock_mapped_index (gdb::array_view<const char *> symbols)
4581     : m_symbol_table (symbols)
4582   {}
4583
4584   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4585
4586   /* Return the number of names in the symbol table.  */
4587   size_t symbol_name_count () const override
4588   {
4589     return m_symbol_table.size ();
4590   }
4591
4592   /* Get the name of the symbol at IDX in the symbol table.  */
4593   const char *symbol_name_at (offset_type idx) const override
4594   {
4595     return m_symbol_table[idx];
4596   }
4597
4598 private:
4599   gdb::array_view<const char *> m_symbol_table;
4600 };
4601
4602 /* Convenience function that converts a NULL pointer to a "<null>"
4603    string, to pass to print routines.  */
4604
4605 static const char *
4606 string_or_null (const char *str)
4607 {
4608   return str != NULL ? str : "<null>";
4609 }
4610
4611 /* Check if a lookup_name_info built from
4612    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4613    index.  EXPECTED_LIST is the list of expected matches, in expected
4614    matching order.  If no match expected, then an empty list is
4615    specified.  Returns true on success.  On failure prints a warning
4616    indicating the file:line that failed, and returns false.  */
4617
4618 static bool
4619 check_match (const char *file, int line,
4620              mock_mapped_index &mock_index,
4621              const char *name, symbol_name_match_type match_type,
4622              bool completion_mode,
4623              std::initializer_list<const char *> expected_list)
4624 {
4625   lookup_name_info lookup_name (name, match_type, completion_mode);
4626
4627   bool matched = true;
4628
4629   auto mismatch = [&] (const char *expected_str,
4630                        const char *got)
4631   {
4632     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4633                "expected=\"%s\", got=\"%s\"\n"),
4634              file, line,
4635              (match_type == symbol_name_match_type::FULL
4636               ? "FULL" : "WILD"),
4637              name, string_or_null (expected_str), string_or_null (got));
4638     matched = false;
4639   };
4640
4641   auto expected_it = expected_list.begin ();
4642   auto expected_end = expected_list.end ();
4643
4644   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4645                                       NULL, ALL_DOMAIN,
4646                                       [&] (offset_type idx)
4647   {
4648     const char *matched_name = mock_index.symbol_name_at (idx);
4649     const char *expected_str
4650       = expected_it == expected_end ? NULL : *expected_it++;
4651
4652     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4653       mismatch (expected_str, matched_name);
4654   });
4655
4656   const char *expected_str
4657   = expected_it == expected_end ? NULL : *expected_it++;
4658   if (expected_str != NULL)
4659     mismatch (expected_str, NULL);
4660
4661   return matched;
4662 }
4663
4664 /* The symbols added to the mock mapped_index for testing (in
4665    canonical form).  */
4666 static const char *test_symbols[] = {
4667   "function",
4668   "std::bar",
4669   "std::zfunction",
4670   "std::zfunction2",
4671   "w1::w2",
4672   "ns::foo<char*>",
4673   "ns::foo<int>",
4674   "ns::foo<long>",
4675   "ns2::tmpl<int>::foo2",
4676   "(anonymous namespace)::A::B::C",
4677
4678   /* These are used to check that the increment-last-char in the
4679      matching algorithm for completion doesn't match "t1_fund" when
4680      completing "t1_func".  */
4681   "t1_func",
4682   "t1_func1",
4683   "t1_fund",
4684   "t1_fund1",
4685
4686   /* A UTF-8 name with multi-byte sequences to make sure that
4687      cp-name-parser understands this as a single identifier ("função"
4688      is "function" in PT).  */
4689   u8"u8função",
4690
4691   /* \377 (0xff) is Latin1 'ÿ'.  */
4692   "yfunc\377",
4693
4694   /* \377 (0xff) is Latin1 'ÿ'.  */
4695   "\377",
4696   "\377\377123",
4697
4698   /* A name with all sorts of complications.  Starts with "z" to make
4699      it easier for the completion tests below.  */
4700 #define Z_SYM_NAME \
4701   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4702     "::tuple<(anonymous namespace)::ui*, " \
4703     "std::default_delete<(anonymous namespace)::ui>, void>"
4704
4705   Z_SYM_NAME
4706 };
4707
4708 /* Returns true if the mapped_index_base::find_name_component_bounds
4709    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4710    in completion mode.  */
4711
4712 static bool
4713 check_find_bounds_finds (mapped_index_base &index,
4714                          const char *search_name,
4715                          gdb::array_view<const char *> expected_syms)
4716 {
4717   lookup_name_info lookup_name (search_name,
4718                                 symbol_name_match_type::FULL, true);
4719
4720   auto bounds = index.find_name_components_bounds (lookup_name);
4721
4722   size_t distance = std::distance (bounds.first, bounds.second);
4723   if (distance != expected_syms.size ())
4724     return false;
4725
4726   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4727     {
4728       auto nc_elem = bounds.first + exp_elem;
4729       const char *qualified = index.symbol_name_at (nc_elem->idx);
4730       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4731         return false;
4732     }
4733
4734   return true;
4735 }
4736
4737 /* Test the lower-level mapped_index::find_name_component_bounds
4738    method.  */
4739
4740 static void
4741 test_mapped_index_find_name_component_bounds ()
4742 {
4743   mock_mapped_index mock_index (test_symbols);
4744
4745   mock_index.build_name_components ();
4746
4747   /* Test the lower-level mapped_index::find_name_component_bounds
4748      method in completion mode.  */
4749   {
4750     static const char *expected_syms[] = {
4751       "t1_func",
4752       "t1_func1",
4753     };
4754
4755     SELF_CHECK (check_find_bounds_finds (mock_index,
4756                                          "t1_func", expected_syms));
4757   }
4758
4759   /* Check that the increment-last-char in the name matching algorithm
4760      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4761   {
4762     static const char *expected_syms1[] = {
4763       "\377",
4764       "\377\377123",
4765     };
4766     SELF_CHECK (check_find_bounds_finds (mock_index,
4767                                          "\377", expected_syms1));
4768
4769     static const char *expected_syms2[] = {
4770       "\377\377123",
4771     };
4772     SELF_CHECK (check_find_bounds_finds (mock_index,
4773                                          "\377\377", expected_syms2));
4774   }
4775 }
4776
4777 /* Test dw2_expand_symtabs_matching_symbol.  */
4778
4779 static void
4780 test_dw2_expand_symtabs_matching_symbol ()
4781 {
4782   mock_mapped_index mock_index (test_symbols);
4783
4784   /* We let all tests run until the end even if some fails, for debug
4785      convenience.  */
4786   bool any_mismatch = false;
4787
4788   /* Create the expected symbols list (an initializer_list).  Needed
4789      because lists have commas, and we need to pass them to CHECK,
4790      which is a macro.  */
4791 #define EXPECT(...) { __VA_ARGS__ }
4792
4793   /* Wrapper for check_match that passes down the current
4794      __FILE__/__LINE__.  */
4795 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4796   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4797                                 mock_index,                             \
4798                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4799                                 EXPECTED_LIST)
4800
4801   /* Identity checks.  */
4802   for (const char *sym : test_symbols)
4803     {
4804       /* Should be able to match all existing symbols.  */
4805       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4806                    EXPECT (sym));
4807
4808       /* Should be able to match all existing symbols with
4809          parameters.  */
4810       std::string with_params = std::string (sym) + "(int)";
4811       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4812                    EXPECT (sym));
4813
4814       /* Should be able to match all existing symbols with
4815          parameters and qualifiers.  */
4816       with_params = std::string (sym) + " ( int ) const";
4817       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4818                    EXPECT (sym));
4819
4820       /* This should really find sym, but cp-name-parser.y doesn't
4821          know about lvalue/rvalue qualifiers yet.  */
4822       with_params = std::string (sym) + " ( int ) &&";
4823       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4824                    {});
4825     }
4826
4827   /* Check that the name matching algorithm for completion doesn't get
4828      confused with Latin1 'ÿ' / 0xff.  */
4829   {
4830     static const char str[] = "\377";
4831     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4832                  EXPECT ("\377", "\377\377123"));
4833   }
4834
4835   /* Check that the increment-last-char in the matching algorithm for
4836      completion doesn't match "t1_fund" when completing "t1_func".  */
4837   {
4838     static const char str[] = "t1_func";
4839     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4840                  EXPECT ("t1_func", "t1_func1"));
4841   }
4842
4843   /* Check that completion mode works at each prefix of the expected
4844      symbol name.  */
4845   {
4846     static const char str[] = "function(int)";
4847     size_t len = strlen (str);
4848     std::string lookup;
4849
4850     for (size_t i = 1; i < len; i++)
4851       {
4852         lookup.assign (str, i);
4853         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4854                      EXPECT ("function"));
4855       }
4856   }
4857
4858   /* While "w" is a prefix of both components, the match function
4859      should still only be called once.  */
4860   {
4861     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4862                  EXPECT ("w1::w2"));
4863     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4864                  EXPECT ("w1::w2"));
4865   }
4866
4867   /* Same, with a "complicated" symbol.  */
4868   {
4869     static const char str[] = Z_SYM_NAME;
4870     size_t len = strlen (str);
4871     std::string lookup;
4872
4873     for (size_t i = 1; i < len; i++)
4874       {
4875         lookup.assign (str, i);
4876         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4877                      EXPECT (Z_SYM_NAME));
4878       }
4879   }
4880
4881   /* In FULL mode, an incomplete symbol doesn't match.  */
4882   {
4883     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4884                  {});
4885   }
4886
4887   /* A complete symbol with parameters matches any overload, since the
4888      index has no overload info.  */
4889   {
4890     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4891                  EXPECT ("std::zfunction", "std::zfunction2"));
4892     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4893                  EXPECT ("std::zfunction", "std::zfunction2"));
4894     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4895                  EXPECT ("std::zfunction", "std::zfunction2"));
4896   }
4897
4898   /* Check that whitespace is ignored appropriately.  A symbol with a
4899      template argument list. */
4900   {
4901     static const char expected[] = "ns::foo<int>";
4902     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4903                  EXPECT (expected));
4904     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4905                  EXPECT (expected));
4906   }
4907
4908   /* Check that whitespace is ignored appropriately.  A symbol with a
4909      template argument list that includes a pointer.  */
4910   {
4911     static const char expected[] = "ns::foo<char*>";
4912     /* Try both completion and non-completion modes.  */
4913     static const bool completion_mode[2] = {false, true};
4914     for (size_t i = 0; i < 2; i++)
4915       {
4916         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4917                      completion_mode[i], EXPECT (expected));
4918         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4919                      completion_mode[i], EXPECT (expected));
4920
4921         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4922                      completion_mode[i], EXPECT (expected));
4923         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4924                      completion_mode[i], EXPECT (expected));
4925       }
4926   }
4927
4928   {
4929     /* Check method qualifiers are ignored.  */
4930     static const char expected[] = "ns::foo<char*>";
4931     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4932                  symbol_name_match_type::FULL, true, EXPECT (expected));
4933     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4934                  symbol_name_match_type::FULL, true, EXPECT (expected));
4935     CHECK_MATCH ("foo < char * >  ( int ) const",
4936                  symbol_name_match_type::WILD, true, EXPECT (expected));
4937     CHECK_MATCH ("foo < char * >  ( int ) &&",
4938                  symbol_name_match_type::WILD, true, EXPECT (expected));
4939   }
4940
4941   /* Test lookup names that don't match anything.  */
4942   {
4943     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4944                  {});
4945
4946     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4947                  {});
4948   }
4949
4950   /* Some wild matching tests, exercising "(anonymous namespace)",
4951      which should not be confused with a parameter list.  */
4952   {
4953     static const char *syms[] = {
4954       "A::B::C",
4955       "B::C",
4956       "C",
4957       "A :: B :: C ( int )",
4958       "B :: C ( int )",
4959       "C ( int )",
4960     };
4961
4962     for (const char *s : syms)
4963       {
4964         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4965                      EXPECT ("(anonymous namespace)::A::B::C"));
4966       }
4967   }
4968
4969   {
4970     static const char expected[] = "ns2::tmpl<int>::foo2";
4971     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4972                  EXPECT (expected));
4973     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4974                  EXPECT (expected));
4975   }
4976
4977   SELF_CHECK (!any_mismatch);
4978
4979 #undef EXPECT
4980 #undef CHECK_MATCH
4981 }
4982
4983 static void
4984 run_test ()
4985 {
4986   test_mapped_index_find_name_component_bounds ();
4987   test_dw2_expand_symtabs_matching_symbol ();
4988 }
4989
4990 }} // namespace selftests::dw2_expand_symtabs_matching
4991
4992 #endif /* GDB_SELF_TEST */
4993
4994 /* If FILE_MATCHER is NULL or if PER_CU has
4995    dwarf2_per_cu_quick_data::MARK set (see
4996    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4997    EXPANSION_NOTIFY on it.  */
4998
4999 static void
5000 dw2_expand_symtabs_matching_one
5001   (struct dwarf2_per_cu_data *per_cu,
5002    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5003    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5004 {
5005   if (file_matcher == NULL || per_cu->v.quick->mark)
5006     {
5007       bool symtab_was_null
5008         = (per_cu->v.quick->compunit_symtab == NULL);
5009
5010       dw2_instantiate_symtab (per_cu, false);
5011
5012       if (expansion_notify != NULL
5013           && symtab_was_null
5014           && per_cu->v.quick->compunit_symtab != NULL)
5015         expansion_notify (per_cu->v.quick->compunit_symtab);
5016     }
5017 }
5018
5019 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5020    matched, to expand corresponding CUs that were marked.  IDX is the
5021    index of the symbol name that matched.  */
5022
5023 static void
5024 dw2_expand_marked_cus
5025   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5026    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5027    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5028    search_domain kind)
5029 {
5030   offset_type *vec, vec_len, vec_idx;
5031   bool global_seen = false;
5032   mapped_index &index = *dwarf2_per_objfile->index_table;
5033
5034   vec = (offset_type *) (index.constant_pool
5035                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5036   vec_len = MAYBE_SWAP (vec[0]);
5037   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5038     {
5039       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5040       /* This value is only valid for index versions >= 7.  */
5041       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5042       gdb_index_symbol_kind symbol_kind =
5043         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5044       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5045       /* Only check the symbol attributes if they're present.
5046          Indices prior to version 7 don't record them,
5047          and indices >= 7 may elide them for certain symbols
5048          (gold does this).  */
5049       int attrs_valid =
5050         (index.version >= 7
5051          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5052
5053       /* Work around gold/15646.  */
5054       if (attrs_valid)
5055         {
5056           if (!is_static && global_seen)
5057             continue;
5058           if (!is_static)
5059             global_seen = true;
5060         }
5061
5062       /* Only check the symbol's kind if it has one.  */
5063       if (attrs_valid)
5064         {
5065           switch (kind)
5066             {
5067             case VARIABLES_DOMAIN:
5068               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5069                 continue;
5070               break;
5071             case FUNCTIONS_DOMAIN:
5072               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5073                 continue;
5074               break;
5075             case TYPES_DOMAIN:
5076               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5077                 continue;
5078               break;
5079             default:
5080               break;
5081             }
5082         }
5083
5084       /* Don't crash on bad data.  */
5085       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5086                        + dwarf2_per_objfile->all_type_units.size ()))
5087         {
5088           complaint (_(".gdb_index entry has bad CU index"
5089                        " [in module %s]"),
5090                        objfile_name (dwarf2_per_objfile->objfile));
5091           continue;
5092         }
5093
5094       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5095       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5096                                        expansion_notify);
5097     }
5098 }
5099
5100 /* If FILE_MATCHER is non-NULL, set all the
5101    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5102    that match FILE_MATCHER.  */
5103
5104 static void
5105 dw_expand_symtabs_matching_file_matcher
5106   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5107    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5108 {
5109   if (file_matcher == NULL)
5110     return;
5111
5112   objfile *const objfile = dwarf2_per_objfile->objfile;
5113
5114   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5115                                             htab_eq_pointer,
5116                                             NULL, xcalloc, xfree));
5117   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5118                                                 htab_eq_pointer,
5119                                                 NULL, xcalloc, xfree));
5120
5121   /* The rule is CUs specify all the files, including those used by
5122      any TU, so there's no need to scan TUs here.  */
5123
5124   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5125     {
5126       QUIT;
5127
5128       per_cu->v.quick->mark = 0;
5129
5130       /* We only need to look at symtabs not already expanded.  */
5131       if (per_cu->v.quick->compunit_symtab)
5132         continue;
5133
5134       quick_file_names *file_data = dw2_get_file_names (per_cu);
5135       if (file_data == NULL)
5136         continue;
5137
5138       if (htab_find (visited_not_found.get (), file_data) != NULL)
5139         continue;
5140       else if (htab_find (visited_found.get (), file_data) != NULL)
5141         {
5142           per_cu->v.quick->mark = 1;
5143           continue;
5144         }
5145
5146       for (int j = 0; j < file_data->num_file_names; ++j)
5147         {
5148           const char *this_real_name;
5149
5150           if (file_matcher (file_data->file_names[j], false))
5151             {
5152               per_cu->v.quick->mark = 1;
5153               break;
5154             }
5155
5156           /* Before we invoke realpath, which can get expensive when many
5157              files are involved, do a quick comparison of the basenames.  */
5158           if (!basenames_may_differ
5159               && !file_matcher (lbasename (file_data->file_names[j]),
5160                                 true))
5161             continue;
5162
5163           this_real_name = dw2_get_real_path (objfile, file_data, j);
5164           if (file_matcher (this_real_name, false))
5165             {
5166               per_cu->v.quick->mark = 1;
5167               break;
5168             }
5169         }
5170
5171       void **slot = htab_find_slot (per_cu->v.quick->mark
5172                                     ? visited_found.get ()
5173                                     : visited_not_found.get (),
5174                                     file_data, INSERT);
5175       *slot = file_data;
5176     }
5177 }
5178
5179 static void
5180 dw2_expand_symtabs_matching
5181   (struct objfile *objfile,
5182    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5183    const lookup_name_info &lookup_name,
5184    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5185    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5186    enum search_domain kind)
5187 {
5188   struct dwarf2_per_objfile *dwarf2_per_objfile
5189     = get_dwarf2_per_objfile (objfile);
5190
5191   /* index_table is NULL if OBJF_READNOW.  */
5192   if (!dwarf2_per_objfile->index_table)
5193     return;
5194
5195   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5196
5197   mapped_index &index = *dwarf2_per_objfile->index_table;
5198
5199   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5200                                       symbol_matcher,
5201                                       kind, [&] (offset_type idx)
5202     {
5203       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5204                              expansion_notify, kind);
5205     });
5206 }
5207
5208 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5209    symtab.  */
5210
5211 static struct compunit_symtab *
5212 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5213                                           CORE_ADDR pc)
5214 {
5215   int i;
5216
5217   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5218       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5219     return cust;
5220
5221   if (cust->includes == NULL)
5222     return NULL;
5223
5224   for (i = 0; cust->includes[i]; ++i)
5225     {
5226       struct compunit_symtab *s = cust->includes[i];
5227
5228       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5229       if (s != NULL)
5230         return s;
5231     }
5232
5233   return NULL;
5234 }
5235
5236 static struct compunit_symtab *
5237 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5238                                   struct bound_minimal_symbol msymbol,
5239                                   CORE_ADDR pc,
5240                                   struct obj_section *section,
5241                                   int warn_if_readin)
5242 {
5243   struct dwarf2_per_cu_data *data;
5244   struct compunit_symtab *result;
5245
5246   if (!objfile->psymtabs_addrmap)
5247     return NULL;
5248
5249   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5250                                  SECT_OFF_TEXT (objfile));
5251   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5252                                                      pc - baseaddr);
5253   if (!data)
5254     return NULL;
5255
5256   if (warn_if_readin && data->v.quick->compunit_symtab)
5257     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5258              paddress (get_objfile_arch (objfile), pc));
5259
5260   result
5261     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5262                                                                         false),
5263                                                 pc);
5264   gdb_assert (result != NULL);
5265   return result;
5266 }
5267
5268 static void
5269 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5270                           void *data, int need_fullname)
5271 {
5272   struct dwarf2_per_objfile *dwarf2_per_objfile
5273     = get_dwarf2_per_objfile (objfile);
5274
5275   if (!dwarf2_per_objfile->filenames_cache)
5276     {
5277       dwarf2_per_objfile->filenames_cache.emplace ();
5278
5279       htab_up visited (htab_create_alloc (10,
5280                                           htab_hash_pointer, htab_eq_pointer,
5281                                           NULL, xcalloc, xfree));
5282
5283       /* The rule is CUs specify all the files, including those used
5284          by any TU, so there's no need to scan TUs here.  We can
5285          ignore file names coming from already-expanded CUs.  */
5286
5287       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5288         {
5289           if (per_cu->v.quick->compunit_symtab)
5290             {
5291               void **slot = htab_find_slot (visited.get (),
5292                                             per_cu->v.quick->file_names,
5293                                             INSERT);
5294
5295               *slot = per_cu->v.quick->file_names;
5296             }
5297         }
5298
5299       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5300         {
5301           /* We only need to look at symtabs not already expanded.  */
5302           if (per_cu->v.quick->compunit_symtab)
5303             continue;
5304
5305           quick_file_names *file_data = dw2_get_file_names (per_cu);
5306           if (file_data == NULL)
5307             continue;
5308
5309           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5310           if (*slot)
5311             {
5312               /* Already visited.  */
5313               continue;
5314             }
5315           *slot = file_data;
5316
5317           for (int j = 0; j < file_data->num_file_names; ++j)
5318             {
5319               const char *filename = file_data->file_names[j];
5320               dwarf2_per_objfile->filenames_cache->seen (filename);
5321             }
5322         }
5323     }
5324
5325   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5326     {
5327       gdb::unique_xmalloc_ptr<char> this_real_name;
5328
5329       if (need_fullname)
5330         this_real_name = gdb_realpath (filename);
5331       (*fun) (filename, this_real_name.get (), data);
5332     });
5333 }
5334
5335 static int
5336 dw2_has_symbols (struct objfile *objfile)
5337 {
5338   return 1;
5339 }
5340
5341 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5342 {
5343   dw2_has_symbols,
5344   dw2_find_last_source_symtab,
5345   dw2_forget_cached_source_info,
5346   dw2_map_symtabs_matching_filename,
5347   dw2_lookup_symbol,
5348   dw2_print_stats,
5349   dw2_dump,
5350   dw2_expand_symtabs_for_function,
5351   dw2_expand_all_symtabs,
5352   dw2_expand_symtabs_with_fullname,
5353   dw2_map_matching_symbols,
5354   dw2_expand_symtabs_matching,
5355   dw2_find_pc_sect_compunit_symtab,
5356   NULL,
5357   dw2_map_symbol_filenames
5358 };
5359
5360 /* DWARF-5 debug_names reader.  */
5361
5362 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5363 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5364
5365 /* A helper function that reads the .debug_names section in SECTION
5366    and fills in MAP.  FILENAME is the name of the file containing the
5367    section; it is used for error reporting.
5368
5369    Returns true if all went well, false otherwise.  */
5370
5371 static bool
5372 read_debug_names_from_section (struct objfile *objfile,
5373                                const char *filename,
5374                                struct dwarf2_section_info *section,
5375                                mapped_debug_names &map)
5376 {
5377   if (dwarf2_section_empty_p (section))
5378     return false;
5379
5380   /* Older elfutils strip versions could keep the section in the main
5381      executable while splitting it for the separate debug info file.  */
5382   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5383     return false;
5384
5385   dwarf2_read_section (objfile, section);
5386
5387   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5388
5389   const gdb_byte *addr = section->buffer;
5390
5391   bfd *const abfd = get_section_bfd_owner (section);
5392
5393   unsigned int bytes_read;
5394   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5395   addr += bytes_read;
5396
5397   map.dwarf5_is_dwarf64 = bytes_read != 4;
5398   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5399   if (bytes_read + length != section->size)
5400     {
5401       /* There may be multiple per-CU indices.  */
5402       warning (_("Section .debug_names in %s length %s does not match "
5403                  "section length %s, ignoring .debug_names."),
5404                filename, plongest (bytes_read + length),
5405                pulongest (section->size));
5406       return false;
5407     }
5408
5409   /* The version number.  */
5410   uint16_t version = read_2_bytes (abfd, addr);
5411   addr += 2;
5412   if (version != 5)
5413     {
5414       warning (_("Section .debug_names in %s has unsupported version %d, "
5415                  "ignoring .debug_names."),
5416                filename, version);
5417       return false;
5418     }
5419
5420   /* Padding.  */
5421   uint16_t padding = read_2_bytes (abfd, addr);
5422   addr += 2;
5423   if (padding != 0)
5424     {
5425       warning (_("Section .debug_names in %s has unsupported padding %d, "
5426                  "ignoring .debug_names."),
5427                filename, padding);
5428       return false;
5429     }
5430
5431   /* comp_unit_count - The number of CUs in the CU list.  */
5432   map.cu_count = read_4_bytes (abfd, addr);
5433   addr += 4;
5434
5435   /* local_type_unit_count - The number of TUs in the local TU
5436      list.  */
5437   map.tu_count = read_4_bytes (abfd, addr);
5438   addr += 4;
5439
5440   /* foreign_type_unit_count - The number of TUs in the foreign TU
5441      list.  */
5442   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5443   addr += 4;
5444   if (foreign_tu_count != 0)
5445     {
5446       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5447                  "ignoring .debug_names."),
5448                filename, static_cast<unsigned long> (foreign_tu_count));
5449       return false;
5450     }
5451
5452   /* bucket_count - The number of hash buckets in the hash lookup
5453      table.  */
5454   map.bucket_count = read_4_bytes (abfd, addr);
5455   addr += 4;
5456
5457   /* name_count - The number of unique names in the index.  */
5458   map.name_count = read_4_bytes (abfd, addr);
5459   addr += 4;
5460
5461   /* abbrev_table_size - The size in bytes of the abbreviations
5462      table.  */
5463   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5464   addr += 4;
5465
5466   /* augmentation_string_size - The size in bytes of the augmentation
5467      string.  This value is rounded up to a multiple of 4.  */
5468   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5469   addr += 4;
5470   map.augmentation_is_gdb = ((augmentation_string_size
5471                               == sizeof (dwarf5_augmentation))
5472                              && memcmp (addr, dwarf5_augmentation,
5473                                         sizeof (dwarf5_augmentation)) == 0);
5474   augmentation_string_size += (-augmentation_string_size) & 3;
5475   addr += augmentation_string_size;
5476
5477   /* List of CUs */
5478   map.cu_table_reordered = addr;
5479   addr += map.cu_count * map.offset_size;
5480
5481   /* List of Local TUs */
5482   map.tu_table_reordered = addr;
5483   addr += map.tu_count * map.offset_size;
5484
5485   /* Hash Lookup Table */
5486   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5487   addr += map.bucket_count * 4;
5488   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5489   addr += map.name_count * 4;
5490
5491   /* Name Table */
5492   map.name_table_string_offs_reordered = addr;
5493   addr += map.name_count * map.offset_size;
5494   map.name_table_entry_offs_reordered = addr;
5495   addr += map.name_count * map.offset_size;
5496
5497   const gdb_byte *abbrev_table_start = addr;
5498   for (;;)
5499     {
5500       unsigned int bytes_read;
5501       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5502       addr += bytes_read;
5503       if (index_num == 0)
5504         break;
5505
5506       const auto insertpair
5507         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5508       if (!insertpair.second)
5509         {
5510           warning (_("Section .debug_names in %s has duplicate index %s, "
5511                      "ignoring .debug_names."),
5512                    filename, pulongest (index_num));
5513           return false;
5514         }
5515       mapped_debug_names::index_val &indexval = insertpair.first->second;
5516       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5517       addr += bytes_read;
5518
5519       for (;;)
5520         {
5521           mapped_debug_names::index_val::attr attr;
5522           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5523           addr += bytes_read;
5524           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5525           addr += bytes_read;
5526           if (attr.form == DW_FORM_implicit_const)
5527             {
5528               attr.implicit_const = read_signed_leb128 (abfd, addr,
5529                                                         &bytes_read);
5530               addr += bytes_read;
5531             }
5532           if (attr.dw_idx == 0 && attr.form == 0)
5533             break;
5534           indexval.attr_vec.push_back (std::move (attr));
5535         }
5536     }
5537   if (addr != abbrev_table_start + abbrev_table_size)
5538     {
5539       warning (_("Section .debug_names in %s has abbreviation_table "
5540                  "of size %zu vs. written as %u, ignoring .debug_names."),
5541                filename, addr - abbrev_table_start, abbrev_table_size);
5542       return false;
5543     }
5544   map.entry_pool = addr;
5545
5546   return true;
5547 }
5548
5549 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5550    list.  */
5551
5552 static void
5553 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5554                                   const mapped_debug_names &map,
5555                                   dwarf2_section_info &section,
5556                                   bool is_dwz)
5557 {
5558   sect_offset sect_off_prev;
5559   for (uint32_t i = 0; i <= map.cu_count; ++i)
5560     {
5561       sect_offset sect_off_next;
5562       if (i < map.cu_count)
5563         {
5564           sect_off_next
5565             = (sect_offset) (extract_unsigned_integer
5566                              (map.cu_table_reordered + i * map.offset_size,
5567                               map.offset_size,
5568                               map.dwarf5_byte_order));
5569         }
5570       else
5571         sect_off_next = (sect_offset) section.size;
5572       if (i >= 1)
5573         {
5574           const ULONGEST length = sect_off_next - sect_off_prev;
5575           dwarf2_per_cu_data *per_cu
5576             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5577                                          sect_off_prev, length);
5578           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5579         }
5580       sect_off_prev = sect_off_next;
5581     }
5582 }
5583
5584 /* Read the CU list from the mapped index, and use it to create all
5585    the CU objects for this dwarf2_per_objfile.  */
5586
5587 static void
5588 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5589                              const mapped_debug_names &map,
5590                              const mapped_debug_names &dwz_map)
5591 {
5592   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5593   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5594
5595   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5596                                     dwarf2_per_objfile->info,
5597                                     false /* is_dwz */);
5598
5599   if (dwz_map.cu_count == 0)
5600     return;
5601
5602   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5603   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5604                                     true /* is_dwz */);
5605 }
5606
5607 /* Read .debug_names.  If everything went ok, initialize the "quick"
5608    elements of all the CUs and return true.  Otherwise, return false.  */
5609
5610 static bool
5611 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5612 {
5613   std::unique_ptr<mapped_debug_names> map
5614     (new mapped_debug_names (dwarf2_per_objfile));
5615   mapped_debug_names dwz_map (dwarf2_per_objfile);
5616   struct objfile *objfile = dwarf2_per_objfile->objfile;
5617
5618   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5619                                       &dwarf2_per_objfile->debug_names,
5620                                       *map))
5621     return false;
5622
5623   /* Don't use the index if it's empty.  */
5624   if (map->name_count == 0)
5625     return false;
5626
5627   /* If there is a .dwz file, read it so we can get its CU list as
5628      well.  */
5629   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5630   if (dwz != NULL)
5631     {
5632       if (!read_debug_names_from_section (objfile,
5633                                           bfd_get_filename (dwz->dwz_bfd),
5634                                           &dwz->debug_names, dwz_map))
5635         {
5636           warning (_("could not read '.debug_names' section from %s; skipping"),
5637                    bfd_get_filename (dwz->dwz_bfd));
5638           return false;
5639         }
5640     }
5641
5642   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5643
5644   if (map->tu_count != 0)
5645     {
5646       /* We can only handle a single .debug_types when we have an
5647          index.  */
5648       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5649         return false;
5650
5651       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5652                                                 dwarf2_per_objfile->types, 0);
5653
5654       create_signatured_type_table_from_debug_names
5655         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5656     }
5657
5658   create_addrmap_from_aranges (dwarf2_per_objfile,
5659                                &dwarf2_per_objfile->debug_aranges);
5660
5661   dwarf2_per_objfile->debug_names_table = std::move (map);
5662   dwarf2_per_objfile->using_index = 1;
5663   dwarf2_per_objfile->quick_file_names_table =
5664     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5665
5666   return true;
5667 }
5668
5669 /* Type used to manage iterating over all CUs looking for a symbol for
5670    .debug_names.  */
5671
5672 class dw2_debug_names_iterator
5673 {
5674 public:
5675   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5676      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5677   dw2_debug_names_iterator (const mapped_debug_names &map,
5678                             bool want_specific_block,
5679                             block_enum block_index, domain_enum domain,
5680                             const char *name)
5681     : m_map (map), m_want_specific_block (want_specific_block),
5682       m_block_index (block_index), m_domain (domain),
5683       m_addr (find_vec_in_debug_names (map, name))
5684   {}
5685
5686   dw2_debug_names_iterator (const mapped_debug_names &map,
5687                             search_domain search, uint32_t namei)
5688     : m_map (map),
5689       m_search (search),
5690       m_addr (find_vec_in_debug_names (map, namei))
5691   {}
5692
5693   /* Return the next matching CU or NULL if there are no more.  */
5694   dwarf2_per_cu_data *next ();
5695
5696 private:
5697   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5698                                                   const char *name);
5699   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5700                                                   uint32_t namei);
5701
5702   /* The internalized form of .debug_names.  */
5703   const mapped_debug_names &m_map;
5704
5705   /* If true, only look for symbols that match BLOCK_INDEX.  */
5706   const bool m_want_specific_block = false;
5707
5708   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5709      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5710      value.  */
5711   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5712
5713   /* The kind of symbol we're looking for.  */
5714   const domain_enum m_domain = UNDEF_DOMAIN;
5715   const search_domain m_search = ALL_DOMAIN;
5716
5717   /* The list of CUs from the index entry of the symbol, or NULL if
5718      not found.  */
5719   const gdb_byte *m_addr;
5720 };
5721
5722 const char *
5723 mapped_debug_names::namei_to_name (uint32_t namei) const
5724 {
5725   const ULONGEST namei_string_offs
5726     = extract_unsigned_integer ((name_table_string_offs_reordered
5727                                  + namei * offset_size),
5728                                 offset_size,
5729                                 dwarf5_byte_order);
5730   return read_indirect_string_at_offset
5731     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5732 }
5733
5734 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5735    found, return pointer to its pool data.  If NAME cannot be found,
5736    return NULL.  */
5737
5738 const gdb_byte *
5739 dw2_debug_names_iterator::find_vec_in_debug_names
5740   (const mapped_debug_names &map, const char *name)
5741 {
5742   int (*cmp) (const char *, const char *);
5743
5744   if (current_language->la_language == language_cplus
5745       || current_language->la_language == language_fortran
5746       || current_language->la_language == language_d)
5747     {
5748       /* NAME is already canonical.  Drop any qualifiers as
5749          .debug_names does not contain any.  */
5750
5751       if (strchr (name, '(') != NULL)
5752         {
5753           gdb::unique_xmalloc_ptr<char> without_params
5754             = cp_remove_params (name);
5755
5756           if (without_params != NULL)
5757             {
5758               name = without_params.get();
5759             }
5760         }
5761     }
5762
5763   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5764
5765   const uint32_t full_hash = dwarf5_djb_hash (name);
5766   uint32_t namei
5767     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5768                                 (map.bucket_table_reordered
5769                                  + (full_hash % map.bucket_count)), 4,
5770                                 map.dwarf5_byte_order);
5771   if (namei == 0)
5772     return NULL;
5773   --namei;
5774   if (namei >= map.name_count)
5775     {
5776       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5777                    "[in module %s]"),
5778                  namei, map.name_count,
5779                  objfile_name (map.dwarf2_per_objfile->objfile));
5780       return NULL;
5781     }
5782
5783   for (;;)
5784     {
5785       const uint32_t namei_full_hash
5786         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5787                                     (map.hash_table_reordered + namei), 4,
5788                                     map.dwarf5_byte_order);
5789       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5790         return NULL;
5791
5792       if (full_hash == namei_full_hash)
5793         {
5794           const char *const namei_string = map.namei_to_name (namei);
5795
5796 #if 0 /* An expensive sanity check.  */
5797           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5798             {
5799               complaint (_("Wrong .debug_names hash for string at index %u "
5800                            "[in module %s]"),
5801                          namei, objfile_name (dwarf2_per_objfile->objfile));
5802               return NULL;
5803             }
5804 #endif
5805
5806           if (cmp (namei_string, name) == 0)
5807             {
5808               const ULONGEST namei_entry_offs
5809                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5810                                              + namei * map.offset_size),
5811                                             map.offset_size, map.dwarf5_byte_order);
5812               return map.entry_pool + namei_entry_offs;
5813             }
5814         }
5815
5816       ++namei;
5817       if (namei >= map.name_count)
5818         return NULL;
5819     }
5820 }
5821
5822 const gdb_byte *
5823 dw2_debug_names_iterator::find_vec_in_debug_names
5824   (const mapped_debug_names &map, uint32_t namei)
5825 {
5826   if (namei >= map.name_count)
5827     {
5828       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5829                    "[in module %s]"),
5830                  namei, map.name_count,
5831                  objfile_name (map.dwarf2_per_objfile->objfile));
5832       return NULL;
5833     }
5834
5835   const ULONGEST namei_entry_offs
5836     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5837                                  + namei * map.offset_size),
5838                                 map.offset_size, map.dwarf5_byte_order);
5839   return map.entry_pool + namei_entry_offs;
5840 }
5841
5842 /* See dw2_debug_names_iterator.  */
5843
5844 dwarf2_per_cu_data *
5845 dw2_debug_names_iterator::next ()
5846 {
5847   if (m_addr == NULL)
5848     return NULL;
5849
5850   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5851   struct objfile *objfile = dwarf2_per_objfile->objfile;
5852   bfd *const abfd = objfile->obfd;
5853
5854  again:
5855
5856   unsigned int bytes_read;
5857   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5858   m_addr += bytes_read;
5859   if (abbrev == 0)
5860     return NULL;
5861
5862   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5863   if (indexval_it == m_map.abbrev_map.cend ())
5864     {
5865       complaint (_("Wrong .debug_names undefined abbrev code %s "
5866                    "[in module %s]"),
5867                  pulongest (abbrev), objfile_name (objfile));
5868       return NULL;
5869     }
5870   const mapped_debug_names::index_val &indexval = indexval_it->second;
5871   bool have_is_static = false;
5872   bool is_static;
5873   dwarf2_per_cu_data *per_cu = NULL;
5874   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5875     {
5876       ULONGEST ull;
5877       switch (attr.form)
5878         {
5879         case DW_FORM_implicit_const:
5880           ull = attr.implicit_const;
5881           break;
5882         case DW_FORM_flag_present:
5883           ull = 1;
5884           break;
5885         case DW_FORM_udata:
5886           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5887           m_addr += bytes_read;
5888           break;
5889         default:
5890           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5891                      dwarf_form_name (attr.form),
5892                      objfile_name (objfile));
5893           return NULL;
5894         }
5895       switch (attr.dw_idx)
5896         {
5897         case DW_IDX_compile_unit:
5898           /* Don't crash on bad data.  */
5899           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5900             {
5901               complaint (_(".debug_names entry has bad CU index %s"
5902                            " [in module %s]"),
5903                          pulongest (ull),
5904                          objfile_name (dwarf2_per_objfile->objfile));
5905               continue;
5906             }
5907           per_cu = dwarf2_per_objfile->get_cutu (ull);
5908           break;
5909         case DW_IDX_type_unit:
5910           /* Don't crash on bad data.  */
5911           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5912             {
5913               complaint (_(".debug_names entry has bad TU index %s"
5914                            " [in module %s]"),
5915                          pulongest (ull),
5916                          objfile_name (dwarf2_per_objfile->objfile));
5917               continue;
5918             }
5919           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5920           break;
5921         case DW_IDX_GNU_internal:
5922           if (!m_map.augmentation_is_gdb)
5923             break;
5924           have_is_static = true;
5925           is_static = true;
5926           break;
5927         case DW_IDX_GNU_external:
5928           if (!m_map.augmentation_is_gdb)
5929             break;
5930           have_is_static = true;
5931           is_static = false;
5932           break;
5933         }
5934     }
5935
5936   /* Skip if already read in.  */
5937   if (per_cu->v.quick->compunit_symtab)
5938     goto again;
5939
5940   /* Check static vs global.  */
5941   if (have_is_static)
5942     {
5943       const bool want_static = m_block_index != GLOBAL_BLOCK;
5944       if (m_want_specific_block && want_static != is_static)
5945         goto again;
5946     }
5947
5948   /* Match dw2_symtab_iter_next, symbol_kind
5949      and debug_names::psymbol_tag.  */
5950   switch (m_domain)
5951     {
5952     case VAR_DOMAIN:
5953       switch (indexval.dwarf_tag)
5954         {
5955         case DW_TAG_variable:
5956         case DW_TAG_subprogram:
5957         /* Some types are also in VAR_DOMAIN.  */
5958         case DW_TAG_typedef:
5959         case DW_TAG_structure_type:
5960           break;
5961         default:
5962           goto again;
5963         }
5964       break;
5965     case STRUCT_DOMAIN:
5966       switch (indexval.dwarf_tag)
5967         {
5968         case DW_TAG_typedef:
5969         case DW_TAG_structure_type:
5970           break;
5971         default:
5972           goto again;
5973         }
5974       break;
5975     case LABEL_DOMAIN:
5976       switch (indexval.dwarf_tag)
5977         {
5978         case 0:
5979         case DW_TAG_variable:
5980           break;
5981         default:
5982           goto again;
5983         }
5984       break;
5985     default:
5986       break;
5987     }
5988
5989   /* Match dw2_expand_symtabs_matching, symbol_kind and
5990      debug_names::psymbol_tag.  */
5991   switch (m_search)
5992     {
5993     case VARIABLES_DOMAIN:
5994       switch (indexval.dwarf_tag)
5995         {
5996         case DW_TAG_variable:
5997           break;
5998         default:
5999           goto again;
6000         }
6001       break;
6002     case FUNCTIONS_DOMAIN:
6003       switch (indexval.dwarf_tag)
6004         {
6005         case DW_TAG_subprogram:
6006           break;
6007         default:
6008           goto again;
6009         }
6010       break;
6011     case TYPES_DOMAIN:
6012       switch (indexval.dwarf_tag)
6013         {
6014         case DW_TAG_typedef:
6015         case DW_TAG_structure_type:
6016           break;
6017         default:
6018           goto again;
6019         }
6020       break;
6021     default:
6022       break;
6023     }
6024
6025   return per_cu;
6026 }
6027
6028 static struct compunit_symtab *
6029 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6030                                const char *name, domain_enum domain)
6031 {
6032   const block_enum block_index = static_cast<block_enum> (block_index_int);
6033   struct dwarf2_per_objfile *dwarf2_per_objfile
6034     = get_dwarf2_per_objfile (objfile);
6035
6036   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6037   if (!mapp)
6038     {
6039       /* index is NULL if OBJF_READNOW.  */
6040       return NULL;
6041     }
6042   const auto &map = *mapp;
6043
6044   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6045                                  block_index, domain, name);
6046
6047   struct compunit_symtab *stab_best = NULL;
6048   struct dwarf2_per_cu_data *per_cu;
6049   while ((per_cu = iter.next ()) != NULL)
6050     {
6051       struct symbol *sym, *with_opaque = NULL;
6052       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6053       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6054       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6055
6056       sym = block_find_symbol (block, name, domain,
6057                                block_find_non_opaque_type_preferred,
6058                                &with_opaque);
6059
6060       /* Some caution must be observed with overloaded functions and
6061          methods, since the index will not contain any overload
6062          information (but NAME might contain it).  */
6063
6064       if (sym != NULL
6065           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6066         return stab;
6067       if (with_opaque != NULL
6068           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6069         stab_best = stab;
6070
6071       /* Keep looking through other CUs.  */
6072     }
6073
6074   return stab_best;
6075 }
6076
6077 /* This dumps minimal information about .debug_names.  It is called
6078    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6079    uses this to verify that .debug_names has been loaded.  */
6080
6081 static void
6082 dw2_debug_names_dump (struct objfile *objfile)
6083 {
6084   struct dwarf2_per_objfile *dwarf2_per_objfile
6085     = get_dwarf2_per_objfile (objfile);
6086
6087   gdb_assert (dwarf2_per_objfile->using_index);
6088   printf_filtered (".debug_names:");
6089   if (dwarf2_per_objfile->debug_names_table)
6090     printf_filtered (" exists\n");
6091   else
6092     printf_filtered (" faked for \"readnow\"\n");
6093   printf_filtered ("\n");
6094 }
6095
6096 static void
6097 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6098                                              const char *func_name)
6099 {
6100   struct dwarf2_per_objfile *dwarf2_per_objfile
6101     = get_dwarf2_per_objfile (objfile);
6102
6103   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6104   if (dwarf2_per_objfile->debug_names_table)
6105     {
6106       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6107
6108       /* Note: It doesn't matter what we pass for block_index here.  */
6109       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6110                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6111
6112       struct dwarf2_per_cu_data *per_cu;
6113       while ((per_cu = iter.next ()) != NULL)
6114         dw2_instantiate_symtab (per_cu, false);
6115     }
6116 }
6117
6118 static void
6119 dw2_debug_names_expand_symtabs_matching
6120   (struct objfile *objfile,
6121    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6122    const lookup_name_info &lookup_name,
6123    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6124    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6125    enum search_domain kind)
6126 {
6127   struct dwarf2_per_objfile *dwarf2_per_objfile
6128     = get_dwarf2_per_objfile (objfile);
6129
6130   /* debug_names_table is NULL if OBJF_READNOW.  */
6131   if (!dwarf2_per_objfile->debug_names_table)
6132     return;
6133
6134   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6135
6136   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6137
6138   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6139                                       symbol_matcher,
6140                                       kind, [&] (offset_type namei)
6141     {
6142       /* The name was matched, now expand corresponding CUs that were
6143          marked.  */
6144       dw2_debug_names_iterator iter (map, kind, namei);
6145
6146       struct dwarf2_per_cu_data *per_cu;
6147       while ((per_cu = iter.next ()) != NULL)
6148         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6149                                          expansion_notify);
6150     });
6151 }
6152
6153 const struct quick_symbol_functions dwarf2_debug_names_functions =
6154 {
6155   dw2_has_symbols,
6156   dw2_find_last_source_symtab,
6157   dw2_forget_cached_source_info,
6158   dw2_map_symtabs_matching_filename,
6159   dw2_debug_names_lookup_symbol,
6160   dw2_print_stats,
6161   dw2_debug_names_dump,
6162   dw2_debug_names_expand_symtabs_for_function,
6163   dw2_expand_all_symtabs,
6164   dw2_expand_symtabs_with_fullname,
6165   dw2_map_matching_symbols,
6166   dw2_debug_names_expand_symtabs_matching,
6167   dw2_find_pc_sect_compunit_symtab,
6168   NULL,
6169   dw2_map_symbol_filenames
6170 };
6171
6172 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6173    to either a dwarf2_per_objfile or dwz_file object.  */
6174
6175 template <typename T>
6176 static gdb::array_view<const gdb_byte>
6177 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6178 {
6179   dwarf2_section_info *section = &section_owner->gdb_index;
6180
6181   if (dwarf2_section_empty_p (section))
6182     return {};
6183
6184   /* Older elfutils strip versions could keep the section in the main
6185      executable while splitting it for the separate debug info file.  */
6186   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6187     return {};
6188
6189   dwarf2_read_section (obj, section);
6190
6191   return {section->buffer, section->size};
6192 }
6193
6194 /* Lookup the index cache for the contents of the index associated to
6195    DWARF2_OBJ.  */
6196
6197 static gdb::array_view<const gdb_byte>
6198 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6199 {
6200   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6201   if (build_id == nullptr)
6202     return {};
6203
6204   return global_index_cache.lookup_gdb_index (build_id,
6205                                               &dwarf2_obj->index_cache_res);
6206 }
6207
6208 /* Same as the above, but for DWZ.  */
6209
6210 static gdb::array_view<const gdb_byte>
6211 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6212 {
6213   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6214   if (build_id == nullptr)
6215     return {};
6216
6217   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6218 }
6219
6220 /* See symfile.h.  */
6221
6222 bool
6223 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6224 {
6225   struct dwarf2_per_objfile *dwarf2_per_objfile
6226     = get_dwarf2_per_objfile (objfile);
6227
6228   /* If we're about to read full symbols, don't bother with the
6229      indices.  In this case we also don't care if some other debug
6230      format is making psymtabs, because they are all about to be
6231      expanded anyway.  */
6232   if ((objfile->flags & OBJF_READNOW))
6233     {
6234       dwarf2_per_objfile->using_index = 1;
6235       create_all_comp_units (dwarf2_per_objfile);
6236       create_all_type_units (dwarf2_per_objfile);
6237       dwarf2_per_objfile->quick_file_names_table
6238         = create_quick_file_names_table
6239             (dwarf2_per_objfile->all_comp_units.size ());
6240
6241       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6242                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6243         {
6244           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6245
6246           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6247                                             struct dwarf2_per_cu_quick_data);
6248         }
6249
6250       /* Return 1 so that gdb sees the "quick" functions.  However,
6251          these functions will be no-ops because we will have expanded
6252          all symtabs.  */
6253       *index_kind = dw_index_kind::GDB_INDEX;
6254       return true;
6255     }
6256
6257   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6258     {
6259       *index_kind = dw_index_kind::DEBUG_NAMES;
6260       return true;
6261     }
6262
6263   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6264                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6265                              get_gdb_index_contents_from_section<dwz_file>))
6266     {
6267       *index_kind = dw_index_kind::GDB_INDEX;
6268       return true;
6269     }
6270
6271   /* ... otherwise, try to find the index in the index cache.  */
6272   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6273                              get_gdb_index_contents_from_cache,
6274                              get_gdb_index_contents_from_cache_dwz))
6275     {
6276       global_index_cache.hit ();
6277       *index_kind = dw_index_kind::GDB_INDEX;
6278       return true;
6279     }
6280
6281   global_index_cache.miss ();
6282   return false;
6283 }
6284
6285 \f
6286
6287 /* Build a partial symbol table.  */
6288
6289 void
6290 dwarf2_build_psymtabs (struct objfile *objfile)
6291 {
6292   struct dwarf2_per_objfile *dwarf2_per_objfile
6293     = get_dwarf2_per_objfile (objfile);
6294
6295   if (objfile->global_psymbols.capacity () == 0
6296       && objfile->static_psymbols.capacity () == 0)
6297     init_psymbol_list (objfile, 1024);
6298
6299   TRY
6300     {
6301       /* This isn't really ideal: all the data we allocate on the
6302          objfile's obstack is still uselessly kept around.  However,
6303          freeing it seems unsafe.  */
6304       psymtab_discarder psymtabs (objfile);
6305       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6306       psymtabs.keep ();
6307
6308       /* (maybe) store an index in the cache.  */
6309       global_index_cache.store (dwarf2_per_objfile);
6310     }
6311   CATCH (except, RETURN_MASK_ERROR)
6312     {
6313       exception_print (gdb_stderr, except);
6314     }
6315   END_CATCH
6316 }
6317
6318 /* Return the total length of the CU described by HEADER.  */
6319
6320 static unsigned int
6321 get_cu_length (const struct comp_unit_head *header)
6322 {
6323   return header->initial_length_size + header->length;
6324 }
6325
6326 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6327
6328 static inline bool
6329 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6330 {
6331   sect_offset bottom = cu_header->sect_off;
6332   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6333
6334   return sect_off >= bottom && sect_off < top;
6335 }
6336
6337 /* Find the base address of the compilation unit for range lists and
6338    location lists.  It will normally be specified by DW_AT_low_pc.
6339    In DWARF-3 draft 4, the base address could be overridden by
6340    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6341    compilation units with discontinuous ranges.  */
6342
6343 static void
6344 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6345 {
6346   struct attribute *attr;
6347
6348   cu->base_known = 0;
6349   cu->base_address = 0;
6350
6351   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6352   if (attr)
6353     {
6354       cu->base_address = attr_value_as_address (attr);
6355       cu->base_known = 1;
6356     }
6357   else
6358     {
6359       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6360       if (attr)
6361         {
6362           cu->base_address = attr_value_as_address (attr);
6363           cu->base_known = 1;
6364         }
6365     }
6366 }
6367
6368 /* Read in the comp unit header information from the debug_info at info_ptr.
6369    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6370    NOTE: This leaves members offset, first_die_offset to be filled in
6371    by the caller.  */
6372
6373 static const gdb_byte *
6374 read_comp_unit_head (struct comp_unit_head *cu_header,
6375                      const gdb_byte *info_ptr,
6376                      struct dwarf2_section_info *section,
6377                      rcuh_kind section_kind)
6378 {
6379   int signed_addr;
6380   unsigned int bytes_read;
6381   const char *filename = get_section_file_name (section);
6382   bfd *abfd = get_section_bfd_owner (section);
6383
6384   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6385   cu_header->initial_length_size = bytes_read;
6386   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6387   info_ptr += bytes_read;
6388   cu_header->version = read_2_bytes (abfd, info_ptr);
6389   if (cu_header->version < 2 || cu_header->version > 5)
6390     error (_("Dwarf Error: wrong version in compilation unit header "
6391            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6392            cu_header->version, filename);
6393   info_ptr += 2;
6394   if (cu_header->version < 5)
6395     switch (section_kind)
6396       {
6397       case rcuh_kind::COMPILE:
6398         cu_header->unit_type = DW_UT_compile;
6399         break;
6400       case rcuh_kind::TYPE:
6401         cu_header->unit_type = DW_UT_type;
6402         break;
6403       default:
6404         internal_error (__FILE__, __LINE__,
6405                         _("read_comp_unit_head: invalid section_kind"));
6406       }
6407   else
6408     {
6409       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6410                                                  (read_1_byte (abfd, info_ptr));
6411       info_ptr += 1;
6412       switch (cu_header->unit_type)
6413         {
6414         case DW_UT_compile:
6415           if (section_kind != rcuh_kind::COMPILE)
6416             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6417                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6418                    filename);
6419           break;
6420         case DW_UT_type:
6421           section_kind = rcuh_kind::TYPE;
6422           break;
6423         default:
6424           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6425                  "(is %d, should be %d or %d) [in module %s]"),
6426                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6427         }
6428
6429       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6430       info_ptr += 1;
6431     }
6432   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6433                                                           cu_header,
6434                                                           &bytes_read);
6435   info_ptr += bytes_read;
6436   if (cu_header->version < 5)
6437     {
6438       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6439       info_ptr += 1;
6440     }
6441   signed_addr = bfd_get_sign_extend_vma (abfd);
6442   if (signed_addr < 0)
6443     internal_error (__FILE__, __LINE__,
6444                     _("read_comp_unit_head: dwarf from non elf file"));
6445   cu_header->signed_addr_p = signed_addr;
6446
6447   if (section_kind == rcuh_kind::TYPE)
6448     {
6449       LONGEST type_offset;
6450
6451       cu_header->signature = read_8_bytes (abfd, info_ptr);
6452       info_ptr += 8;
6453
6454       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6455       info_ptr += bytes_read;
6456       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6457       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6458         error (_("Dwarf Error: Too big type_offset in compilation unit "
6459                "header (is %s) [in module %s]"), plongest (type_offset),
6460                filename);
6461     }
6462
6463   return info_ptr;
6464 }
6465
6466 /* Helper function that returns the proper abbrev section for
6467    THIS_CU.  */
6468
6469 static struct dwarf2_section_info *
6470 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6471 {
6472   struct dwarf2_section_info *abbrev;
6473   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6474
6475   if (this_cu->is_dwz)
6476     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6477   else
6478     abbrev = &dwarf2_per_objfile->abbrev;
6479
6480   return abbrev;
6481 }
6482
6483 /* Subroutine of read_and_check_comp_unit_head and
6484    read_and_check_type_unit_head to simplify them.
6485    Perform various error checking on the header.  */
6486
6487 static void
6488 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6489                             struct comp_unit_head *header,
6490                             struct dwarf2_section_info *section,
6491                             struct dwarf2_section_info *abbrev_section)
6492 {
6493   const char *filename = get_section_file_name (section);
6494
6495   if (to_underlying (header->abbrev_sect_off)
6496       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6497     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6498            "(offset %s + 6) [in module %s]"),
6499            sect_offset_str (header->abbrev_sect_off),
6500            sect_offset_str (header->sect_off),
6501            filename);
6502
6503   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6504      avoid potential 32-bit overflow.  */
6505   if (((ULONGEST) header->sect_off + get_cu_length (header))
6506       > section->size)
6507     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6508            "(offset %s + 0) [in module %s]"),
6509            header->length, sect_offset_str (header->sect_off),
6510            filename);
6511 }
6512
6513 /* Read in a CU/TU header and perform some basic error checking.
6514    The contents of the header are stored in HEADER.
6515    The result is a pointer to the start of the first DIE.  */
6516
6517 static const gdb_byte *
6518 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6519                                struct comp_unit_head *header,
6520                                struct dwarf2_section_info *section,
6521                                struct dwarf2_section_info *abbrev_section,
6522                                const gdb_byte *info_ptr,
6523                                rcuh_kind section_kind)
6524 {
6525   const gdb_byte *beg_of_comp_unit = info_ptr;
6526
6527   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6528
6529   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6530
6531   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6532
6533   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6534                               abbrev_section);
6535
6536   return info_ptr;
6537 }
6538
6539 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6540
6541 static sect_offset
6542 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6543                     struct dwarf2_section_info *section,
6544                     sect_offset sect_off)
6545 {
6546   bfd *abfd = get_section_bfd_owner (section);
6547   const gdb_byte *info_ptr;
6548   unsigned int initial_length_size, offset_size;
6549   uint16_t version;
6550
6551   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6552   info_ptr = section->buffer + to_underlying (sect_off);
6553   read_initial_length (abfd, info_ptr, &initial_length_size);
6554   offset_size = initial_length_size == 4 ? 4 : 8;
6555   info_ptr += initial_length_size;
6556
6557   version = read_2_bytes (abfd, info_ptr);
6558   info_ptr += 2;
6559   if (version >= 5)
6560     {
6561       /* Skip unit type and address size.  */
6562       info_ptr += 2;
6563     }
6564
6565   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6566 }
6567
6568 /* Allocate a new partial symtab for file named NAME and mark this new
6569    partial symtab as being an include of PST.  */
6570
6571 static void
6572 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6573                                struct objfile *objfile)
6574 {
6575   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6576
6577   if (!IS_ABSOLUTE_PATH (subpst->filename))
6578     {
6579       /* It shares objfile->objfile_obstack.  */
6580       subpst->dirname = pst->dirname;
6581     }
6582
6583   subpst->dependencies
6584     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6585   subpst->dependencies[0] = pst;
6586   subpst->number_of_dependencies = 1;
6587
6588   subpst->globals_offset = 0;
6589   subpst->n_global_syms = 0;
6590   subpst->statics_offset = 0;
6591   subpst->n_static_syms = 0;
6592   subpst->compunit_symtab = NULL;
6593   subpst->read_symtab = pst->read_symtab;
6594   subpst->readin = 0;
6595
6596   /* No private part is necessary for include psymtabs.  This property
6597      can be used to differentiate between such include psymtabs and
6598      the regular ones.  */
6599   subpst->read_symtab_private = NULL;
6600 }
6601
6602 /* Read the Line Number Program data and extract the list of files
6603    included by the source file represented by PST.  Build an include
6604    partial symtab for each of these included files.  */
6605
6606 static void
6607 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6608                                struct die_info *die,
6609                                struct partial_symtab *pst)
6610 {
6611   line_header_up lh;
6612   struct attribute *attr;
6613
6614   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6615   if (attr)
6616     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6617   if (lh == NULL)
6618     return;  /* No linetable, so no includes.  */
6619
6620   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6621      that we pass in the raw text_low here; that is ok because we're
6622      only decoding the line table to make include partial symtabs, and
6623      so the addresses aren't really used.  */
6624   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6625                       pst->raw_text_low (), 1);
6626 }
6627
6628 static hashval_t
6629 hash_signatured_type (const void *item)
6630 {
6631   const struct signatured_type *sig_type
6632     = (const struct signatured_type *) item;
6633
6634   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6635   return sig_type->signature;
6636 }
6637
6638 static int
6639 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6640 {
6641   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6642   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6643
6644   return lhs->signature == rhs->signature;
6645 }
6646
6647 /* Allocate a hash table for signatured types.  */
6648
6649 static htab_t
6650 allocate_signatured_type_table (struct objfile *objfile)
6651 {
6652   return htab_create_alloc_ex (41,
6653                                hash_signatured_type,
6654                                eq_signatured_type,
6655                                NULL,
6656                                &objfile->objfile_obstack,
6657                                hashtab_obstack_allocate,
6658                                dummy_obstack_deallocate);
6659 }
6660
6661 /* A helper function to add a signatured type CU to a table.  */
6662
6663 static int
6664 add_signatured_type_cu_to_table (void **slot, void *datum)
6665 {
6666   struct signatured_type *sigt = (struct signatured_type *) *slot;
6667   std::vector<signatured_type *> *all_type_units
6668     = (std::vector<signatured_type *> *) datum;
6669
6670   all_type_units->push_back (sigt);
6671
6672   return 1;
6673 }
6674
6675 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6676    and fill them into TYPES_HTAB.  It will process only type units,
6677    therefore DW_UT_type.  */
6678
6679 static void
6680 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6681                               struct dwo_file *dwo_file,
6682                               dwarf2_section_info *section, htab_t &types_htab,
6683                               rcuh_kind section_kind)
6684 {
6685   struct objfile *objfile = dwarf2_per_objfile->objfile;
6686   struct dwarf2_section_info *abbrev_section;
6687   bfd *abfd;
6688   const gdb_byte *info_ptr, *end_ptr;
6689
6690   abbrev_section = (dwo_file != NULL
6691                     ? &dwo_file->sections.abbrev
6692                     : &dwarf2_per_objfile->abbrev);
6693
6694   if (dwarf_read_debug)
6695     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6696                         get_section_name (section),
6697                         get_section_file_name (abbrev_section));
6698
6699   dwarf2_read_section (objfile, section);
6700   info_ptr = section->buffer;
6701
6702   if (info_ptr == NULL)
6703     return;
6704
6705   /* We can't set abfd until now because the section may be empty or
6706      not present, in which case the bfd is unknown.  */
6707   abfd = get_section_bfd_owner (section);
6708
6709   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6710      because we don't need to read any dies: the signature is in the
6711      header.  */
6712
6713   end_ptr = info_ptr + section->size;
6714   while (info_ptr < end_ptr)
6715     {
6716       struct signatured_type *sig_type;
6717       struct dwo_unit *dwo_tu;
6718       void **slot;
6719       const gdb_byte *ptr = info_ptr;
6720       struct comp_unit_head header;
6721       unsigned int length;
6722
6723       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6724
6725       /* Initialize it due to a false compiler warning.  */
6726       header.signature = -1;
6727       header.type_cu_offset_in_tu = (cu_offset) -1;
6728
6729       /* We need to read the type's signature in order to build the hash
6730          table, but we don't need anything else just yet.  */
6731
6732       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6733                                            abbrev_section, ptr, section_kind);
6734
6735       length = get_cu_length (&header);
6736
6737       /* Skip dummy type units.  */
6738       if (ptr >= info_ptr + length
6739           || peek_abbrev_code (abfd, ptr) == 0
6740           || header.unit_type != DW_UT_type)
6741         {
6742           info_ptr += length;
6743           continue;
6744         }
6745
6746       if (types_htab == NULL)
6747         {
6748           if (dwo_file)
6749             types_htab = allocate_dwo_unit_table (objfile);
6750           else
6751             types_htab = allocate_signatured_type_table (objfile);
6752         }
6753
6754       if (dwo_file)
6755         {
6756           sig_type = NULL;
6757           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6758                                    struct dwo_unit);
6759           dwo_tu->dwo_file = dwo_file;
6760           dwo_tu->signature = header.signature;
6761           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6762           dwo_tu->section = section;
6763           dwo_tu->sect_off = sect_off;
6764           dwo_tu->length = length;
6765         }
6766       else
6767         {
6768           /* N.B.: type_offset is not usable if this type uses a DWO file.
6769              The real type_offset is in the DWO file.  */
6770           dwo_tu = NULL;
6771           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6772                                      struct signatured_type);
6773           sig_type->signature = header.signature;
6774           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6775           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6776           sig_type->per_cu.is_debug_types = 1;
6777           sig_type->per_cu.section = section;
6778           sig_type->per_cu.sect_off = sect_off;
6779           sig_type->per_cu.length = length;
6780         }
6781
6782       slot = htab_find_slot (types_htab,
6783                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6784                              INSERT);
6785       gdb_assert (slot != NULL);
6786       if (*slot != NULL)
6787         {
6788           sect_offset dup_sect_off;
6789
6790           if (dwo_file)
6791             {
6792               const struct dwo_unit *dup_tu
6793                 = (const struct dwo_unit *) *slot;
6794
6795               dup_sect_off = dup_tu->sect_off;
6796             }
6797           else
6798             {
6799               const struct signatured_type *dup_tu
6800                 = (const struct signatured_type *) *slot;
6801
6802               dup_sect_off = dup_tu->per_cu.sect_off;
6803             }
6804
6805           complaint (_("debug type entry at offset %s is duplicate to"
6806                        " the entry at offset %s, signature %s"),
6807                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6808                      hex_string (header.signature));
6809         }
6810       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6811
6812       if (dwarf_read_debug > 1)
6813         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6814                             sect_offset_str (sect_off),
6815                             hex_string (header.signature));
6816
6817       info_ptr += length;
6818     }
6819 }
6820
6821 /* Create the hash table of all entries in the .debug_types
6822    (or .debug_types.dwo) section(s).
6823    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6824    otherwise it is NULL.
6825
6826    The result is a pointer to the hash table or NULL if there are no types.
6827
6828    Note: This function processes DWO files only, not DWP files.  */
6829
6830 static void
6831 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6832                                struct dwo_file *dwo_file,
6833                                VEC (dwarf2_section_info_def) *types,
6834                                htab_t &types_htab)
6835 {
6836   int ix;
6837   struct dwarf2_section_info *section;
6838
6839   if (VEC_empty (dwarf2_section_info_def, types))
6840     return;
6841
6842   for (ix = 0;
6843        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6844        ++ix)
6845     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6846                                   types_htab, rcuh_kind::TYPE);
6847 }
6848
6849 /* Create the hash table of all entries in the .debug_types section,
6850    and initialize all_type_units.
6851    The result is zero if there is an error (e.g. missing .debug_types section),
6852    otherwise non-zero.  */
6853
6854 static int
6855 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6856 {
6857   htab_t types_htab = NULL;
6858
6859   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6860                                 &dwarf2_per_objfile->info, types_htab,
6861                                 rcuh_kind::COMPILE);
6862   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6863                                  dwarf2_per_objfile->types, types_htab);
6864   if (types_htab == NULL)
6865     {
6866       dwarf2_per_objfile->signatured_types = NULL;
6867       return 0;
6868     }
6869
6870   dwarf2_per_objfile->signatured_types = types_htab;
6871
6872   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6873   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6874
6875   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6876                           &dwarf2_per_objfile->all_type_units);
6877
6878   return 1;
6879 }
6880
6881 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6882    If SLOT is non-NULL, it is the entry to use in the hash table.
6883    Otherwise we find one.  */
6884
6885 static struct signatured_type *
6886 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6887                void **slot)
6888 {
6889   struct objfile *objfile = dwarf2_per_objfile->objfile;
6890
6891   if (dwarf2_per_objfile->all_type_units.size ()
6892       == dwarf2_per_objfile->all_type_units.capacity ())
6893     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6894
6895   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6896                                               struct signatured_type);
6897
6898   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6899   sig_type->signature = sig;
6900   sig_type->per_cu.is_debug_types = 1;
6901   if (dwarf2_per_objfile->using_index)
6902     {
6903       sig_type->per_cu.v.quick =
6904         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6905                         struct dwarf2_per_cu_quick_data);
6906     }
6907
6908   if (slot == NULL)
6909     {
6910       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6911                              sig_type, INSERT);
6912     }
6913   gdb_assert (*slot == NULL);
6914   *slot = sig_type;
6915   /* The rest of sig_type must be filled in by the caller.  */
6916   return sig_type;
6917 }
6918
6919 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6920    Fill in SIG_ENTRY with DWO_ENTRY.  */
6921
6922 static void
6923 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6924                                   struct signatured_type *sig_entry,
6925                                   struct dwo_unit *dwo_entry)
6926 {
6927   /* Make sure we're not clobbering something we don't expect to.  */
6928   gdb_assert (! sig_entry->per_cu.queued);
6929   gdb_assert (sig_entry->per_cu.cu == NULL);
6930   if (dwarf2_per_objfile->using_index)
6931     {
6932       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6933       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6934     }
6935   else
6936       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6937   gdb_assert (sig_entry->signature == dwo_entry->signature);
6938   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6939   gdb_assert (sig_entry->type_unit_group == NULL);
6940   gdb_assert (sig_entry->dwo_unit == NULL);
6941
6942   sig_entry->per_cu.section = dwo_entry->section;
6943   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6944   sig_entry->per_cu.length = dwo_entry->length;
6945   sig_entry->per_cu.reading_dwo_directly = 1;
6946   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6947   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6948   sig_entry->dwo_unit = dwo_entry;
6949 }
6950
6951 /* Subroutine of lookup_signatured_type.
6952    If we haven't read the TU yet, create the signatured_type data structure
6953    for a TU to be read in directly from a DWO file, bypassing the stub.
6954    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6955    using .gdb_index, then when reading a CU we want to stay in the DWO file
6956    containing that CU.  Otherwise we could end up reading several other DWO
6957    files (due to comdat folding) to process the transitive closure of all the
6958    mentioned TUs, and that can be slow.  The current DWO file will have every
6959    type signature that it needs.
6960    We only do this for .gdb_index because in the psymtab case we already have
6961    to read all the DWOs to build the type unit groups.  */
6962
6963 static struct signatured_type *
6964 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6965 {
6966   struct dwarf2_per_objfile *dwarf2_per_objfile
6967     = cu->per_cu->dwarf2_per_objfile;
6968   struct objfile *objfile = dwarf2_per_objfile->objfile;
6969   struct dwo_file *dwo_file;
6970   struct dwo_unit find_dwo_entry, *dwo_entry;
6971   struct signatured_type find_sig_entry, *sig_entry;
6972   void **slot;
6973
6974   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6975
6976   /* If TU skeletons have been removed then we may not have read in any
6977      TUs yet.  */
6978   if (dwarf2_per_objfile->signatured_types == NULL)
6979     {
6980       dwarf2_per_objfile->signatured_types
6981         = allocate_signatured_type_table (objfile);
6982     }
6983
6984   /* We only ever need to read in one copy of a signatured type.
6985      Use the global signatured_types array to do our own comdat-folding
6986      of types.  If this is the first time we're reading this TU, and
6987      the TU has an entry in .gdb_index, replace the recorded data from
6988      .gdb_index with this TU.  */
6989
6990   find_sig_entry.signature = sig;
6991   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6992                          &find_sig_entry, INSERT);
6993   sig_entry = (struct signatured_type *) *slot;
6994
6995   /* We can get here with the TU already read, *or* in the process of being
6996      read.  Don't reassign the global entry to point to this DWO if that's
6997      the case.  Also note that if the TU is already being read, it may not
6998      have come from a DWO, the program may be a mix of Fission-compiled
6999      code and non-Fission-compiled code.  */
7000
7001   /* Have we already tried to read this TU?
7002      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7003      needn't exist in the global table yet).  */
7004   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7005     return sig_entry;
7006
7007   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7008      dwo_unit of the TU itself.  */
7009   dwo_file = cu->dwo_unit->dwo_file;
7010
7011   /* Ok, this is the first time we're reading this TU.  */
7012   if (dwo_file->tus == NULL)
7013     return NULL;
7014   find_dwo_entry.signature = sig;
7015   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7016   if (dwo_entry == NULL)
7017     return NULL;
7018
7019   /* If the global table doesn't have an entry for this TU, add one.  */
7020   if (sig_entry == NULL)
7021     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7022
7023   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7024   sig_entry->per_cu.tu_read = 1;
7025   return sig_entry;
7026 }
7027
7028 /* Subroutine of lookup_signatured_type.
7029    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7030    then try the DWP file.  If the TU stub (skeleton) has been removed then
7031    it won't be in .gdb_index.  */
7032
7033 static struct signatured_type *
7034 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7035 {
7036   struct dwarf2_per_objfile *dwarf2_per_objfile
7037     = cu->per_cu->dwarf2_per_objfile;
7038   struct objfile *objfile = dwarf2_per_objfile->objfile;
7039   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7040   struct dwo_unit *dwo_entry;
7041   struct signatured_type find_sig_entry, *sig_entry;
7042   void **slot;
7043
7044   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7045   gdb_assert (dwp_file != NULL);
7046
7047   /* If TU skeletons have been removed then we may not have read in any
7048      TUs yet.  */
7049   if (dwarf2_per_objfile->signatured_types == NULL)
7050     {
7051       dwarf2_per_objfile->signatured_types
7052         = allocate_signatured_type_table (objfile);
7053     }
7054
7055   find_sig_entry.signature = sig;
7056   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7057                          &find_sig_entry, INSERT);
7058   sig_entry = (struct signatured_type *) *slot;
7059
7060   /* Have we already tried to read this TU?
7061      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7062      needn't exist in the global table yet).  */
7063   if (sig_entry != NULL)
7064     return sig_entry;
7065
7066   if (dwp_file->tus == NULL)
7067     return NULL;
7068   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7069                                       sig, 1 /* is_debug_types */);
7070   if (dwo_entry == NULL)
7071     return NULL;
7072
7073   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7074   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7075
7076   return sig_entry;
7077 }
7078
7079 /* Lookup a signature based type for DW_FORM_ref_sig8.
7080    Returns NULL if signature SIG is not present in the table.
7081    It is up to the caller to complain about this.  */
7082
7083 static struct signatured_type *
7084 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7085 {
7086   struct dwarf2_per_objfile *dwarf2_per_objfile
7087     = cu->per_cu->dwarf2_per_objfile;
7088
7089   if (cu->dwo_unit
7090       && dwarf2_per_objfile->using_index)
7091     {
7092       /* We're in a DWO/DWP file, and we're using .gdb_index.
7093          These cases require special processing.  */
7094       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7095         return lookup_dwo_signatured_type (cu, sig);
7096       else
7097         return lookup_dwp_signatured_type (cu, sig);
7098     }
7099   else
7100     {
7101       struct signatured_type find_entry, *entry;
7102
7103       if (dwarf2_per_objfile->signatured_types == NULL)
7104         return NULL;
7105       find_entry.signature = sig;
7106       entry = ((struct signatured_type *)
7107                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7108       return entry;
7109     }
7110 }
7111 \f
7112 /* Low level DIE reading support.  */
7113
7114 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7115
7116 static void
7117 init_cu_die_reader (struct die_reader_specs *reader,
7118                     struct dwarf2_cu *cu,
7119                     struct dwarf2_section_info *section,
7120                     struct dwo_file *dwo_file,
7121                     struct abbrev_table *abbrev_table)
7122 {
7123   gdb_assert (section->readin && section->buffer != NULL);
7124   reader->abfd = get_section_bfd_owner (section);
7125   reader->cu = cu;
7126   reader->dwo_file = dwo_file;
7127   reader->die_section = section;
7128   reader->buffer = section->buffer;
7129   reader->buffer_end = section->buffer + section->size;
7130   reader->comp_dir = NULL;
7131   reader->abbrev_table = abbrev_table;
7132 }
7133
7134 /* Subroutine of init_cutu_and_read_dies to simplify it.
7135    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7136    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7137    already.
7138
7139    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7140    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7141    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7142    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7143    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7144    STUB_COMP_DIR may be non-NULL.
7145    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7146    are filled in with the info of the DIE from the DWO file.
7147    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7148    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7149    kept around for at least as long as *RESULT_READER.
7150
7151    The result is non-zero if a valid (non-dummy) DIE was found.  */
7152
7153 static int
7154 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7155                         struct dwo_unit *dwo_unit,
7156                         struct die_info *stub_comp_unit_die,
7157                         const char *stub_comp_dir,
7158                         struct die_reader_specs *result_reader,
7159                         const gdb_byte **result_info_ptr,
7160                         struct die_info **result_comp_unit_die,
7161                         int *result_has_children,
7162                         abbrev_table_up *result_dwo_abbrev_table)
7163 {
7164   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7165   struct objfile *objfile = dwarf2_per_objfile->objfile;
7166   struct dwarf2_cu *cu = this_cu->cu;
7167   bfd *abfd;
7168   const gdb_byte *begin_info_ptr, *info_ptr;
7169   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7170   int i,num_extra_attrs;
7171   struct dwarf2_section_info *dwo_abbrev_section;
7172   struct attribute *attr;
7173   struct die_info *comp_unit_die;
7174
7175   /* At most one of these may be provided.  */
7176   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7177
7178   /* These attributes aren't processed until later:
7179      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7180      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7181      referenced later.  However, these attributes are found in the stub
7182      which we won't have later.  In order to not impose this complication
7183      on the rest of the code, we read them here and copy them to the
7184      DWO CU/TU die.  */
7185
7186   stmt_list = NULL;
7187   low_pc = NULL;
7188   high_pc = NULL;
7189   ranges = NULL;
7190   comp_dir = NULL;
7191
7192   if (stub_comp_unit_die != NULL)
7193     {
7194       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7195          DWO file.  */
7196       if (! this_cu->is_debug_types)
7197         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7198       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7199       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7200       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7201       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7202
7203       /* There should be a DW_AT_addr_base attribute here (if needed).
7204          We need the value before we can process DW_FORM_GNU_addr_index.  */
7205       cu->addr_base = 0;
7206       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7207       if (attr)
7208         cu->addr_base = DW_UNSND (attr);
7209
7210       /* There should be a DW_AT_ranges_base attribute here (if needed).
7211          We need the value before we can process DW_AT_ranges.  */
7212       cu->ranges_base = 0;
7213       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7214       if (attr)
7215         cu->ranges_base = DW_UNSND (attr);
7216     }
7217   else if (stub_comp_dir != NULL)
7218     {
7219       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7220       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7221       comp_dir->name = DW_AT_comp_dir;
7222       comp_dir->form = DW_FORM_string;
7223       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7224       DW_STRING (comp_dir) = stub_comp_dir;
7225     }
7226
7227   /* Set up for reading the DWO CU/TU.  */
7228   cu->dwo_unit = dwo_unit;
7229   dwarf2_section_info *section = dwo_unit->section;
7230   dwarf2_read_section (objfile, section);
7231   abfd = get_section_bfd_owner (section);
7232   begin_info_ptr = info_ptr = (section->buffer
7233                                + to_underlying (dwo_unit->sect_off));
7234   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7235
7236   if (this_cu->is_debug_types)
7237     {
7238       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7239
7240       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7241                                                 &cu->header, section,
7242                                                 dwo_abbrev_section,
7243                                                 info_ptr, rcuh_kind::TYPE);
7244       /* This is not an assert because it can be caused by bad debug info.  */
7245       if (sig_type->signature != cu->header.signature)
7246         {
7247           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7248                    " TU at offset %s [in module %s]"),
7249                  hex_string (sig_type->signature),
7250                  hex_string (cu->header.signature),
7251                  sect_offset_str (dwo_unit->sect_off),
7252                  bfd_get_filename (abfd));
7253         }
7254       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7255       /* For DWOs coming from DWP files, we don't know the CU length
7256          nor the type's offset in the TU until now.  */
7257       dwo_unit->length = get_cu_length (&cu->header);
7258       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7259
7260       /* Establish the type offset that can be used to lookup the type.
7261          For DWO files, we don't know it until now.  */
7262       sig_type->type_offset_in_section
7263         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7264     }
7265   else
7266     {
7267       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7268                                                 &cu->header, section,
7269                                                 dwo_abbrev_section,
7270                                                 info_ptr, rcuh_kind::COMPILE);
7271       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7272       /* For DWOs coming from DWP files, we don't know the CU length
7273          until now.  */
7274       dwo_unit->length = get_cu_length (&cu->header);
7275     }
7276
7277   *result_dwo_abbrev_table
7278     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7279                                cu->header.abbrev_sect_off);
7280   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7281                       result_dwo_abbrev_table->get ());
7282
7283   /* Read in the die, but leave space to copy over the attributes
7284      from the stub.  This has the benefit of simplifying the rest of
7285      the code - all the work to maintain the illusion of a single
7286      DW_TAG_{compile,type}_unit DIE is done here.  */
7287   num_extra_attrs = ((stmt_list != NULL)
7288                      + (low_pc != NULL)
7289                      + (high_pc != NULL)
7290                      + (ranges != NULL)
7291                      + (comp_dir != NULL));
7292   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7293                               result_has_children, num_extra_attrs);
7294
7295   /* Copy over the attributes from the stub to the DIE we just read in.  */
7296   comp_unit_die = *result_comp_unit_die;
7297   i = comp_unit_die->num_attrs;
7298   if (stmt_list != NULL)
7299     comp_unit_die->attrs[i++] = *stmt_list;
7300   if (low_pc != NULL)
7301     comp_unit_die->attrs[i++] = *low_pc;
7302   if (high_pc != NULL)
7303     comp_unit_die->attrs[i++] = *high_pc;
7304   if (ranges != NULL)
7305     comp_unit_die->attrs[i++] = *ranges;
7306   if (comp_dir != NULL)
7307     comp_unit_die->attrs[i++] = *comp_dir;
7308   comp_unit_die->num_attrs += num_extra_attrs;
7309
7310   if (dwarf_die_debug)
7311     {
7312       fprintf_unfiltered (gdb_stdlog,
7313                           "Read die from %s@0x%x of %s:\n",
7314                           get_section_name (section),
7315                           (unsigned) (begin_info_ptr - section->buffer),
7316                           bfd_get_filename (abfd));
7317       dump_die (comp_unit_die, dwarf_die_debug);
7318     }
7319
7320   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7321      TUs by skipping the stub and going directly to the entry in the DWO file.
7322      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7323      to get it via circuitous means.  Blech.  */
7324   if (comp_dir != NULL)
7325     result_reader->comp_dir = DW_STRING (comp_dir);
7326
7327   /* Skip dummy compilation units.  */
7328   if (info_ptr >= begin_info_ptr + dwo_unit->length
7329       || peek_abbrev_code (abfd, info_ptr) == 0)
7330     return 0;
7331
7332   *result_info_ptr = info_ptr;
7333   return 1;
7334 }
7335
7336 /* Subroutine of init_cutu_and_read_dies to simplify it.
7337    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7338    Returns NULL if the specified DWO unit cannot be found.  */
7339
7340 static struct dwo_unit *
7341 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7342                  struct die_info *comp_unit_die)
7343 {
7344   struct dwarf2_cu *cu = this_cu->cu;
7345   ULONGEST signature;
7346   struct dwo_unit *dwo_unit;
7347   const char *comp_dir, *dwo_name;
7348
7349   gdb_assert (cu != NULL);
7350
7351   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7352   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7353   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7354
7355   if (this_cu->is_debug_types)
7356     {
7357       struct signatured_type *sig_type;
7358
7359       /* Since this_cu is the first member of struct signatured_type,
7360          we can go from a pointer to one to a pointer to the other.  */
7361       sig_type = (struct signatured_type *) this_cu;
7362       signature = sig_type->signature;
7363       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7364     }
7365   else
7366     {
7367       struct attribute *attr;
7368
7369       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7370       if (! attr)
7371         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7372                  " [in module %s]"),
7373                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7374       signature = DW_UNSND (attr);
7375       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7376                                        signature);
7377     }
7378
7379   return dwo_unit;
7380 }
7381
7382 /* Subroutine of init_cutu_and_read_dies to simplify it.
7383    See it for a description of the parameters.
7384    Read a TU directly from a DWO file, bypassing the stub.  */
7385
7386 static void
7387 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7388                            int use_existing_cu, int keep,
7389                            die_reader_func_ftype *die_reader_func,
7390                            void *data)
7391 {
7392   std::unique_ptr<dwarf2_cu> new_cu;
7393   struct signatured_type *sig_type;
7394   struct die_reader_specs reader;
7395   const gdb_byte *info_ptr;
7396   struct die_info *comp_unit_die;
7397   int has_children;
7398   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7399
7400   /* Verify we can do the following downcast, and that we have the
7401      data we need.  */
7402   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7403   sig_type = (struct signatured_type *) this_cu;
7404   gdb_assert (sig_type->dwo_unit != NULL);
7405
7406   if (use_existing_cu && this_cu->cu != NULL)
7407     {
7408       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7409       /* There's no need to do the rereading_dwo_cu handling that
7410          init_cutu_and_read_dies does since we don't read the stub.  */
7411     }
7412   else
7413     {
7414       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7415       gdb_assert (this_cu->cu == NULL);
7416       new_cu.reset (new dwarf2_cu (this_cu));
7417     }
7418
7419   /* A future optimization, if needed, would be to use an existing
7420      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7421      could share abbrev tables.  */
7422
7423   /* The abbreviation table used by READER, this must live at least as long as
7424      READER.  */
7425   abbrev_table_up dwo_abbrev_table;
7426
7427   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7428                               NULL /* stub_comp_unit_die */,
7429                               sig_type->dwo_unit->dwo_file->comp_dir,
7430                               &reader, &info_ptr,
7431                               &comp_unit_die, &has_children,
7432                               &dwo_abbrev_table) == 0)
7433     {
7434       /* Dummy die.  */
7435       return;
7436     }
7437
7438   /* All the "real" work is done here.  */
7439   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7440
7441   /* This duplicates the code in init_cutu_and_read_dies,
7442      but the alternative is making the latter more complex.
7443      This function is only for the special case of using DWO files directly:
7444      no point in overly complicating the general case just to handle this.  */
7445   if (new_cu != NULL && keep)
7446     {
7447       /* Link this CU into read_in_chain.  */
7448       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7449       dwarf2_per_objfile->read_in_chain = this_cu;
7450       /* The chain owns it now.  */
7451       new_cu.release ();
7452     }
7453 }
7454
7455 /* Initialize a CU (or TU) and read its DIEs.
7456    If the CU defers to a DWO file, read the DWO file as well.
7457
7458    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7459    Otherwise the table specified in the comp unit header is read in and used.
7460    This is an optimization for when we already have the abbrev table.
7461
7462    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7463    Otherwise, a new CU is allocated with xmalloc.
7464
7465    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7466    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7467
7468    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7469    linker) then DIE_READER_FUNC will not get called.  */
7470
7471 static void
7472 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7473                          struct abbrev_table *abbrev_table,
7474                          int use_existing_cu, int keep,
7475                          bool skip_partial,
7476                          die_reader_func_ftype *die_reader_func,
7477                          void *data)
7478 {
7479   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7480   struct objfile *objfile = dwarf2_per_objfile->objfile;
7481   struct dwarf2_section_info *section = this_cu->section;
7482   bfd *abfd = get_section_bfd_owner (section);
7483   struct dwarf2_cu *cu;
7484   const gdb_byte *begin_info_ptr, *info_ptr;
7485   struct die_reader_specs reader;
7486   struct die_info *comp_unit_die;
7487   int has_children;
7488   struct attribute *attr;
7489   struct signatured_type *sig_type = NULL;
7490   struct dwarf2_section_info *abbrev_section;
7491   /* Non-zero if CU currently points to a DWO file and we need to
7492      reread it.  When this happens we need to reread the skeleton die
7493      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7494   int rereading_dwo_cu = 0;
7495
7496   if (dwarf_die_debug)
7497     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7498                         this_cu->is_debug_types ? "type" : "comp",
7499                         sect_offset_str (this_cu->sect_off));
7500
7501   if (use_existing_cu)
7502     gdb_assert (keep);
7503
7504   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7505      file (instead of going through the stub), short-circuit all of this.  */
7506   if (this_cu->reading_dwo_directly)
7507     {
7508       /* Narrow down the scope of possibilities to have to understand.  */
7509       gdb_assert (this_cu->is_debug_types);
7510       gdb_assert (abbrev_table == NULL);
7511       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7512                                  die_reader_func, data);
7513       return;
7514     }
7515
7516   /* This is cheap if the section is already read in.  */
7517   dwarf2_read_section (objfile, section);
7518
7519   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7520
7521   abbrev_section = get_abbrev_section_for_cu (this_cu);
7522
7523   std::unique_ptr<dwarf2_cu> new_cu;
7524   if (use_existing_cu && this_cu->cu != NULL)
7525     {
7526       cu = this_cu->cu;
7527       /* If this CU is from a DWO file we need to start over, we need to
7528          refetch the attributes from the skeleton CU.
7529          This could be optimized by retrieving those attributes from when we
7530          were here the first time: the previous comp_unit_die was stored in
7531          comp_unit_obstack.  But there's no data yet that we need this
7532          optimization.  */
7533       if (cu->dwo_unit != NULL)
7534         rereading_dwo_cu = 1;
7535     }
7536   else
7537     {
7538       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7539       gdb_assert (this_cu->cu == NULL);
7540       new_cu.reset (new dwarf2_cu (this_cu));
7541       cu = new_cu.get ();
7542     }
7543
7544   /* Get the header.  */
7545   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7546     {
7547       /* We already have the header, there's no need to read it in again.  */
7548       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7549     }
7550   else
7551     {
7552       if (this_cu->is_debug_types)
7553         {
7554           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7555                                                     &cu->header, section,
7556                                                     abbrev_section, info_ptr,
7557                                                     rcuh_kind::TYPE);
7558
7559           /* Since per_cu is the first member of struct signatured_type,
7560              we can go from a pointer to one to a pointer to the other.  */
7561           sig_type = (struct signatured_type *) this_cu;
7562           gdb_assert (sig_type->signature == cu->header.signature);
7563           gdb_assert (sig_type->type_offset_in_tu
7564                       == cu->header.type_cu_offset_in_tu);
7565           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7566
7567           /* LENGTH has not been set yet for type units if we're
7568              using .gdb_index.  */
7569           this_cu->length = get_cu_length (&cu->header);
7570
7571           /* Establish the type offset that can be used to lookup the type.  */
7572           sig_type->type_offset_in_section =
7573             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7574
7575           this_cu->dwarf_version = cu->header.version;
7576         }
7577       else
7578         {
7579           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7580                                                     &cu->header, section,
7581                                                     abbrev_section,
7582                                                     info_ptr,
7583                                                     rcuh_kind::COMPILE);
7584
7585           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7586           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7587           this_cu->dwarf_version = cu->header.version;
7588         }
7589     }
7590
7591   /* Skip dummy compilation units.  */
7592   if (info_ptr >= begin_info_ptr + this_cu->length
7593       || peek_abbrev_code (abfd, info_ptr) == 0)
7594     return;
7595
7596   /* If we don't have them yet, read the abbrevs for this compilation unit.
7597      And if we need to read them now, make sure they're freed when we're
7598      done (own the table through ABBREV_TABLE_HOLDER).  */
7599   abbrev_table_up abbrev_table_holder;
7600   if (abbrev_table != NULL)
7601     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7602   else
7603     {
7604       abbrev_table_holder
7605         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7606                                    cu->header.abbrev_sect_off);
7607       abbrev_table = abbrev_table_holder.get ();
7608     }
7609
7610   /* Read the top level CU/TU die.  */
7611   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7612   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7613
7614   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7615     return;
7616
7617   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7618      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7619      table from the DWO file and pass the ownership over to us.  It will be
7620      referenced from READER, so we must make sure to free it after we're done
7621      with READER.
7622
7623      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7624      DWO CU, that this test will fail (the attribute will not be present).  */
7625   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7626   abbrev_table_up dwo_abbrev_table;
7627   if (attr)
7628     {
7629       struct dwo_unit *dwo_unit;
7630       struct die_info *dwo_comp_unit_die;
7631
7632       if (has_children)
7633         {
7634           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7635                        " has children (offset %s) [in module %s]"),
7636                      sect_offset_str (this_cu->sect_off),
7637                      bfd_get_filename (abfd));
7638         }
7639       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7640       if (dwo_unit != NULL)
7641         {
7642           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7643                                       comp_unit_die, NULL,
7644                                       &reader, &info_ptr,
7645                                       &dwo_comp_unit_die, &has_children,
7646                                       &dwo_abbrev_table) == 0)
7647             {
7648               /* Dummy die.  */
7649               return;
7650             }
7651           comp_unit_die = dwo_comp_unit_die;
7652         }
7653       else
7654         {
7655           /* Yikes, we couldn't find the rest of the DIE, we only have
7656              the stub.  A complaint has already been logged.  There's
7657              not much more we can do except pass on the stub DIE to
7658              die_reader_func.  We don't want to throw an error on bad
7659              debug info.  */
7660         }
7661     }
7662
7663   /* All of the above is setup for this call.  Yikes.  */
7664   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7665
7666   /* Done, clean up.  */
7667   if (new_cu != NULL && keep)
7668     {
7669       /* Link this CU into read_in_chain.  */
7670       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7671       dwarf2_per_objfile->read_in_chain = this_cu;
7672       /* The chain owns it now.  */
7673       new_cu.release ();
7674     }
7675 }
7676
7677 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7678    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7679    to have already done the lookup to find the DWO file).
7680
7681    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7682    THIS_CU->is_debug_types, but nothing else.
7683
7684    We fill in THIS_CU->length.
7685
7686    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7687    linker) then DIE_READER_FUNC will not get called.
7688
7689    THIS_CU->cu is always freed when done.
7690    This is done in order to not leave THIS_CU->cu in a state where we have
7691    to care whether it refers to the "main" CU or the DWO CU.  */
7692
7693 static void
7694 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7695                                    struct dwo_file *dwo_file,
7696                                    die_reader_func_ftype *die_reader_func,
7697                                    void *data)
7698 {
7699   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7700   struct objfile *objfile = dwarf2_per_objfile->objfile;
7701   struct dwarf2_section_info *section = this_cu->section;
7702   bfd *abfd = get_section_bfd_owner (section);
7703   struct dwarf2_section_info *abbrev_section;
7704   const gdb_byte *begin_info_ptr, *info_ptr;
7705   struct die_reader_specs reader;
7706   struct die_info *comp_unit_die;
7707   int has_children;
7708
7709   if (dwarf_die_debug)
7710     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7711                         this_cu->is_debug_types ? "type" : "comp",
7712                         sect_offset_str (this_cu->sect_off));
7713
7714   gdb_assert (this_cu->cu == NULL);
7715
7716   abbrev_section = (dwo_file != NULL
7717                     ? &dwo_file->sections.abbrev
7718                     : get_abbrev_section_for_cu (this_cu));
7719
7720   /* This is cheap if the section is already read in.  */
7721   dwarf2_read_section (objfile, section);
7722
7723   struct dwarf2_cu cu (this_cu);
7724
7725   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7726   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7727                                             &cu.header, section,
7728                                             abbrev_section, info_ptr,
7729                                             (this_cu->is_debug_types
7730                                              ? rcuh_kind::TYPE
7731                                              : rcuh_kind::COMPILE));
7732
7733   this_cu->length = get_cu_length (&cu.header);
7734
7735   /* Skip dummy compilation units.  */
7736   if (info_ptr >= begin_info_ptr + this_cu->length
7737       || peek_abbrev_code (abfd, info_ptr) == 0)
7738     return;
7739
7740   abbrev_table_up abbrev_table
7741     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7742                                cu.header.abbrev_sect_off);
7743
7744   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7745   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7746
7747   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7748 }
7749
7750 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7751    does not lookup the specified DWO file.
7752    This cannot be used to read DWO files.
7753
7754    THIS_CU->cu is always freed when done.
7755    This is done in order to not leave THIS_CU->cu in a state where we have
7756    to care whether it refers to the "main" CU or the DWO CU.
7757    We can revisit this if the data shows there's a performance issue.  */
7758
7759 static void
7760 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7761                                 die_reader_func_ftype *die_reader_func,
7762                                 void *data)
7763 {
7764   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7765 }
7766 \f
7767 /* Type Unit Groups.
7768
7769    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7770    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7771    so that all types coming from the same compilation (.o file) are grouped
7772    together.  A future step could be to put the types in the same symtab as
7773    the CU the types ultimately came from.  */
7774
7775 static hashval_t
7776 hash_type_unit_group (const void *item)
7777 {
7778   const struct type_unit_group *tu_group
7779     = (const struct type_unit_group *) item;
7780
7781   return hash_stmt_list_entry (&tu_group->hash);
7782 }
7783
7784 static int
7785 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7786 {
7787   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7788   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7789
7790   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7791 }
7792
7793 /* Allocate a hash table for type unit groups.  */
7794
7795 static htab_t
7796 allocate_type_unit_groups_table (struct objfile *objfile)
7797 {
7798   return htab_create_alloc_ex (3,
7799                                hash_type_unit_group,
7800                                eq_type_unit_group,
7801                                NULL,
7802                                &objfile->objfile_obstack,
7803                                hashtab_obstack_allocate,
7804                                dummy_obstack_deallocate);
7805 }
7806
7807 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7808    partial symtabs.  We combine several TUs per psymtab to not let the size
7809    of any one psymtab grow too big.  */
7810 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7811 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7812
7813 /* Helper routine for get_type_unit_group.
7814    Create the type_unit_group object used to hold one or more TUs.  */
7815
7816 static struct type_unit_group *
7817 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7818 {
7819   struct dwarf2_per_objfile *dwarf2_per_objfile
7820     = cu->per_cu->dwarf2_per_objfile;
7821   struct objfile *objfile = dwarf2_per_objfile->objfile;
7822   struct dwarf2_per_cu_data *per_cu;
7823   struct type_unit_group *tu_group;
7824
7825   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7826                              struct type_unit_group);
7827   per_cu = &tu_group->per_cu;
7828   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7829
7830   if (dwarf2_per_objfile->using_index)
7831     {
7832       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7833                                         struct dwarf2_per_cu_quick_data);
7834     }
7835   else
7836     {
7837       unsigned int line_offset = to_underlying (line_offset_struct);
7838       struct partial_symtab *pst;
7839       std::string name;
7840
7841       /* Give the symtab a useful name for debug purposes.  */
7842       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7843         name = string_printf ("<type_units_%d>",
7844                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7845       else
7846         name = string_printf ("<type_units_at_0x%x>", line_offset);
7847
7848       pst = create_partial_symtab (per_cu, name.c_str ());
7849       pst->anonymous = 1;
7850     }
7851
7852   tu_group->hash.dwo_unit = cu->dwo_unit;
7853   tu_group->hash.line_sect_off = line_offset_struct;
7854
7855   return tu_group;
7856 }
7857
7858 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7859    STMT_LIST is a DW_AT_stmt_list attribute.  */
7860
7861 static struct type_unit_group *
7862 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7863 {
7864   struct dwarf2_per_objfile *dwarf2_per_objfile
7865     = cu->per_cu->dwarf2_per_objfile;
7866   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7867   struct type_unit_group *tu_group;
7868   void **slot;
7869   unsigned int line_offset;
7870   struct type_unit_group type_unit_group_for_lookup;
7871
7872   if (dwarf2_per_objfile->type_unit_groups == NULL)
7873     {
7874       dwarf2_per_objfile->type_unit_groups =
7875         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7876     }
7877
7878   /* Do we need to create a new group, or can we use an existing one?  */
7879
7880   if (stmt_list)
7881     {
7882       line_offset = DW_UNSND (stmt_list);
7883       ++tu_stats->nr_symtab_sharers;
7884     }
7885   else
7886     {
7887       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7888          We can do various things here like create one group per TU or
7889          spread them over multiple groups to split up the expansion work.
7890          To avoid worst case scenarios (too many groups or too large groups)
7891          we, umm, group them in bunches.  */
7892       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7893                      | (tu_stats->nr_stmt_less_type_units
7894                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7895       ++tu_stats->nr_stmt_less_type_units;
7896     }
7897
7898   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7899   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7900   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7901                          &type_unit_group_for_lookup, INSERT);
7902   if (*slot != NULL)
7903     {
7904       tu_group = (struct type_unit_group *) *slot;
7905       gdb_assert (tu_group != NULL);
7906     }
7907   else
7908     {
7909       sect_offset line_offset_struct = (sect_offset) line_offset;
7910       tu_group = create_type_unit_group (cu, line_offset_struct);
7911       *slot = tu_group;
7912       ++tu_stats->nr_symtabs;
7913     }
7914
7915   return tu_group;
7916 }
7917 \f
7918 /* Partial symbol tables.  */
7919
7920 /* Create a psymtab named NAME and assign it to PER_CU.
7921
7922    The caller must fill in the following details:
7923    dirname, textlow, texthigh.  */
7924
7925 static struct partial_symtab *
7926 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7927 {
7928   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7929   struct partial_symtab *pst;
7930
7931   pst = start_psymtab_common (objfile, name, 0,
7932                               objfile->global_psymbols,
7933                               objfile->static_psymbols);
7934
7935   pst->psymtabs_addrmap_supported = 1;
7936
7937   /* This is the glue that links PST into GDB's symbol API.  */
7938   pst->read_symtab_private = per_cu;
7939   pst->read_symtab = dwarf2_read_symtab;
7940   per_cu->v.psymtab = pst;
7941
7942   return pst;
7943 }
7944
7945 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7946    type.  */
7947
7948 struct process_psymtab_comp_unit_data
7949 {
7950   /* True if we are reading a DW_TAG_partial_unit.  */
7951
7952   int want_partial_unit;
7953
7954   /* The "pretend" language that is used if the CU doesn't declare a
7955      language.  */
7956
7957   enum language pretend_language;
7958 };
7959
7960 /* die_reader_func for process_psymtab_comp_unit.  */
7961
7962 static void
7963 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7964                                   const gdb_byte *info_ptr,
7965                                   struct die_info *comp_unit_die,
7966                                   int has_children,
7967                                   void *data)
7968 {
7969   struct dwarf2_cu *cu = reader->cu;
7970   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7971   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7972   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7973   CORE_ADDR baseaddr;
7974   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7975   struct partial_symtab *pst;
7976   enum pc_bounds_kind cu_bounds_kind;
7977   const char *filename;
7978   struct process_psymtab_comp_unit_data *info
7979     = (struct process_psymtab_comp_unit_data *) data;
7980
7981   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7982     return;
7983
7984   gdb_assert (! per_cu->is_debug_types);
7985
7986   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7987
7988   /* Allocate a new partial symbol table structure.  */
7989   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7990   if (filename == NULL)
7991     filename = "";
7992
7993   pst = create_partial_symtab (per_cu, filename);
7994
7995   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7996   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7997
7998   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7999
8000   dwarf2_find_base_address (comp_unit_die, cu);
8001
8002   /* Possibly set the default values of LOWPC and HIGHPC from
8003      `DW_AT_ranges'.  */
8004   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8005                                          &best_highpc, cu, pst);
8006   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8007     {
8008       CORE_ADDR low
8009         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8010            - baseaddr);
8011       CORE_ADDR high
8012         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8013            - baseaddr - 1);
8014       /* Store the contiguous range if it is not empty; it can be
8015          empty for CUs with no code.  */
8016       addrmap_set_empty (objfile->psymtabs_addrmap, low, high, pst);
8017     }
8018
8019   /* Check if comp unit has_children.
8020      If so, read the rest of the partial symbols from this comp unit.
8021      If not, there's no more debug_info for this comp unit.  */
8022   if (has_children)
8023     {
8024       struct partial_die_info *first_die;
8025       CORE_ADDR lowpc, highpc;
8026
8027       lowpc = ((CORE_ADDR) -1);
8028       highpc = ((CORE_ADDR) 0);
8029
8030       first_die = load_partial_dies (reader, info_ptr, 1);
8031
8032       scan_partial_symbols (first_die, &lowpc, &highpc,
8033                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8034
8035       /* If we didn't find a lowpc, set it to highpc to avoid
8036          complaints from `maint check'.  */
8037       if (lowpc == ((CORE_ADDR) -1))
8038         lowpc = highpc;
8039
8040       /* If the compilation unit didn't have an explicit address range,
8041          then use the information extracted from its child dies.  */
8042       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8043         {
8044           best_lowpc = lowpc;
8045           best_highpc = highpc;
8046         }
8047     }
8048   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8049                                                  best_lowpc + baseaddr)
8050                      - baseaddr);
8051   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8052                                                   best_highpc + baseaddr)
8053                       - baseaddr);
8054
8055   end_psymtab_common (objfile, pst);
8056
8057   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8058     {
8059       int i;
8060       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8061       struct dwarf2_per_cu_data *iter;
8062
8063       /* Fill in 'dependencies' here; we fill in 'users' in a
8064          post-pass.  */
8065       pst->number_of_dependencies = len;
8066       pst->dependencies =
8067         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8068       for (i = 0;
8069            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8070                         i, iter);
8071            ++i)
8072         pst->dependencies[i] = iter->v.psymtab;
8073
8074       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8075     }
8076
8077   /* Get the list of files included in the current compilation unit,
8078      and build a psymtab for each of them.  */
8079   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8080
8081   if (dwarf_read_debug)
8082     {
8083       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8084
8085       fprintf_unfiltered (gdb_stdlog,
8086                           "Psymtab for %s unit @%s: %s - %s"
8087                           ", %d global, %d static syms\n",
8088                           per_cu->is_debug_types ? "type" : "comp",
8089                           sect_offset_str (per_cu->sect_off),
8090                           paddress (gdbarch, pst->text_low (objfile)),
8091                           paddress (gdbarch, pst->text_high (objfile)),
8092                           pst->n_global_syms, pst->n_static_syms);
8093     }
8094 }
8095
8096 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8097    Process compilation unit THIS_CU for a psymtab.  */
8098
8099 static void
8100 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8101                            int want_partial_unit,
8102                            enum language pretend_language)
8103 {
8104   /* If this compilation unit was already read in, free the
8105      cached copy in order to read it in again.  This is
8106      necessary because we skipped some symbols when we first
8107      read in the compilation unit (see load_partial_dies).
8108      This problem could be avoided, but the benefit is unclear.  */
8109   if (this_cu->cu != NULL)
8110     free_one_cached_comp_unit (this_cu);
8111
8112   if (this_cu->is_debug_types)
8113     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8114                              build_type_psymtabs_reader, NULL);
8115   else
8116     {
8117       process_psymtab_comp_unit_data info;
8118       info.want_partial_unit = want_partial_unit;
8119       info.pretend_language = pretend_language;
8120       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8121                                process_psymtab_comp_unit_reader, &info);
8122     }
8123
8124   /* Age out any secondary CUs.  */
8125   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8126 }
8127
8128 /* Reader function for build_type_psymtabs.  */
8129
8130 static void
8131 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8132                             const gdb_byte *info_ptr,
8133                             struct die_info *type_unit_die,
8134                             int has_children,
8135                             void *data)
8136 {
8137   struct dwarf2_per_objfile *dwarf2_per_objfile
8138     = reader->cu->per_cu->dwarf2_per_objfile;
8139   struct objfile *objfile = dwarf2_per_objfile->objfile;
8140   struct dwarf2_cu *cu = reader->cu;
8141   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8142   struct signatured_type *sig_type;
8143   struct type_unit_group *tu_group;
8144   struct attribute *attr;
8145   struct partial_die_info *first_die;
8146   CORE_ADDR lowpc, highpc;
8147   struct partial_symtab *pst;
8148
8149   gdb_assert (data == NULL);
8150   gdb_assert (per_cu->is_debug_types);
8151   sig_type = (struct signatured_type *) per_cu;
8152
8153   if (! has_children)
8154     return;
8155
8156   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8157   tu_group = get_type_unit_group (cu, attr);
8158
8159   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8160
8161   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8162   pst = create_partial_symtab (per_cu, "");
8163   pst->anonymous = 1;
8164
8165   first_die = load_partial_dies (reader, info_ptr, 1);
8166
8167   lowpc = (CORE_ADDR) -1;
8168   highpc = (CORE_ADDR) 0;
8169   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8170
8171   end_psymtab_common (objfile, pst);
8172 }
8173
8174 /* Struct used to sort TUs by their abbreviation table offset.  */
8175
8176 struct tu_abbrev_offset
8177 {
8178   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8179   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8180   {}
8181
8182   signatured_type *sig_type;
8183   sect_offset abbrev_offset;
8184 };
8185
8186 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8187
8188 static bool
8189 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8190                           const struct tu_abbrev_offset &b)
8191 {
8192   return a.abbrev_offset < b.abbrev_offset;
8193 }
8194
8195 /* Efficiently read all the type units.
8196    This does the bulk of the work for build_type_psymtabs.
8197
8198    The efficiency is because we sort TUs by the abbrev table they use and
8199    only read each abbrev table once.  In one program there are 200K TUs
8200    sharing 8K abbrev tables.
8201
8202    The main purpose of this function is to support building the
8203    dwarf2_per_objfile->type_unit_groups table.
8204    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8205    can collapse the search space by grouping them by stmt_list.
8206    The savings can be significant, in the same program from above the 200K TUs
8207    share 8K stmt_list tables.
8208
8209    FUNC is expected to call get_type_unit_group, which will create the
8210    struct type_unit_group if necessary and add it to
8211    dwarf2_per_objfile->type_unit_groups.  */
8212
8213 static void
8214 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8215 {
8216   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8217   abbrev_table_up abbrev_table;
8218   sect_offset abbrev_offset;
8219
8220   /* It's up to the caller to not call us multiple times.  */
8221   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8222
8223   if (dwarf2_per_objfile->all_type_units.empty ())
8224     return;
8225
8226   /* TUs typically share abbrev tables, and there can be way more TUs than
8227      abbrev tables.  Sort by abbrev table to reduce the number of times we
8228      read each abbrev table in.
8229      Alternatives are to punt or to maintain a cache of abbrev tables.
8230      This is simpler and efficient enough for now.
8231
8232      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8233      symtab to use).  Typically TUs with the same abbrev offset have the same
8234      stmt_list value too so in practice this should work well.
8235
8236      The basic algorithm here is:
8237
8238       sort TUs by abbrev table
8239       for each TU with same abbrev table:
8240         read abbrev table if first user
8241         read TU top level DIE
8242           [IWBN if DWO skeletons had DW_AT_stmt_list]
8243         call FUNC  */
8244
8245   if (dwarf_read_debug)
8246     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8247
8248   /* Sort in a separate table to maintain the order of all_type_units
8249      for .gdb_index: TU indices directly index all_type_units.  */
8250   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8251   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8252
8253   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8254     sorted_by_abbrev.emplace_back
8255       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8256                                      sig_type->per_cu.section,
8257                                      sig_type->per_cu.sect_off));
8258
8259   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8260              sort_tu_by_abbrev_offset);
8261
8262   abbrev_offset = (sect_offset) ~(unsigned) 0;
8263
8264   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8265     {
8266       /* Switch to the next abbrev table if necessary.  */
8267       if (abbrev_table == NULL
8268           || tu.abbrev_offset != abbrev_offset)
8269         {
8270           abbrev_offset = tu.abbrev_offset;
8271           abbrev_table =
8272             abbrev_table_read_table (dwarf2_per_objfile,
8273                                      &dwarf2_per_objfile->abbrev,
8274                                      abbrev_offset);
8275           ++tu_stats->nr_uniq_abbrev_tables;
8276         }
8277
8278       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8279                                0, 0, false, build_type_psymtabs_reader, NULL);
8280     }
8281 }
8282
8283 /* Print collected type unit statistics.  */
8284
8285 static void
8286 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8287 {
8288   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8289
8290   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8291   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8292                       dwarf2_per_objfile->all_type_units.size ());
8293   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8294                       tu_stats->nr_uniq_abbrev_tables);
8295   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8296                       tu_stats->nr_symtabs);
8297   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8298                       tu_stats->nr_symtab_sharers);
8299   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8300                       tu_stats->nr_stmt_less_type_units);
8301   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8302                       tu_stats->nr_all_type_units_reallocs);
8303 }
8304
8305 /* Traversal function for build_type_psymtabs.  */
8306
8307 static int
8308 build_type_psymtab_dependencies (void **slot, void *info)
8309 {
8310   struct dwarf2_per_objfile *dwarf2_per_objfile
8311     = (struct dwarf2_per_objfile *) info;
8312   struct objfile *objfile = dwarf2_per_objfile->objfile;
8313   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8314   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8315   struct partial_symtab *pst = per_cu->v.psymtab;
8316   int len = VEC_length (sig_type_ptr, tu_group->tus);
8317   struct signatured_type *iter;
8318   int i;
8319
8320   gdb_assert (len > 0);
8321   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8322
8323   pst->number_of_dependencies = len;
8324   pst->dependencies =
8325     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8326   for (i = 0;
8327        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8328        ++i)
8329     {
8330       gdb_assert (iter->per_cu.is_debug_types);
8331       pst->dependencies[i] = iter->per_cu.v.psymtab;
8332       iter->type_unit_group = tu_group;
8333     }
8334
8335   VEC_free (sig_type_ptr, tu_group->tus);
8336
8337   return 1;
8338 }
8339
8340 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8341    Build partial symbol tables for the .debug_types comp-units.  */
8342
8343 static void
8344 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8345 {
8346   if (! create_all_type_units (dwarf2_per_objfile))
8347     return;
8348
8349   build_type_psymtabs_1 (dwarf2_per_objfile);
8350 }
8351
8352 /* Traversal function for process_skeletonless_type_unit.
8353    Read a TU in a DWO file and build partial symbols for it.  */
8354
8355 static int
8356 process_skeletonless_type_unit (void **slot, void *info)
8357 {
8358   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8359   struct dwarf2_per_objfile *dwarf2_per_objfile
8360     = (struct dwarf2_per_objfile *) info;
8361   struct signatured_type find_entry, *entry;
8362
8363   /* If this TU doesn't exist in the global table, add it and read it in.  */
8364
8365   if (dwarf2_per_objfile->signatured_types == NULL)
8366     {
8367       dwarf2_per_objfile->signatured_types
8368         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8369     }
8370
8371   find_entry.signature = dwo_unit->signature;
8372   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8373                          INSERT);
8374   /* If we've already seen this type there's nothing to do.  What's happening
8375      is we're doing our own version of comdat-folding here.  */
8376   if (*slot != NULL)
8377     return 1;
8378
8379   /* This does the job that create_all_type_units would have done for
8380      this TU.  */
8381   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8382   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8383   *slot = entry;
8384
8385   /* This does the job that build_type_psymtabs_1 would have done.  */
8386   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8387                            build_type_psymtabs_reader, NULL);
8388
8389   return 1;
8390 }
8391
8392 /* Traversal function for process_skeletonless_type_units.  */
8393
8394 static int
8395 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8396 {
8397   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8398
8399   if (dwo_file->tus != NULL)
8400     {
8401       htab_traverse_noresize (dwo_file->tus,
8402                               process_skeletonless_type_unit, info);
8403     }
8404
8405   return 1;
8406 }
8407
8408 /* Scan all TUs of DWO files, verifying we've processed them.
8409    This is needed in case a TU was emitted without its skeleton.
8410    Note: This can't be done until we know what all the DWO files are.  */
8411
8412 static void
8413 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8414 {
8415   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8416   if (get_dwp_file (dwarf2_per_objfile) == NULL
8417       && dwarf2_per_objfile->dwo_files != NULL)
8418     {
8419       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8420                               process_dwo_file_for_skeletonless_type_units,
8421                               dwarf2_per_objfile);
8422     }
8423 }
8424
8425 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8426
8427 static void
8428 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8429 {
8430   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8431     {
8432       struct partial_symtab *pst = per_cu->v.psymtab;
8433
8434       if (pst == NULL)
8435         continue;
8436
8437       for (int j = 0; j < pst->number_of_dependencies; ++j)
8438         {
8439           /* Set the 'user' field only if it is not already set.  */
8440           if (pst->dependencies[j]->user == NULL)
8441             pst->dependencies[j]->user = pst;
8442         }
8443     }
8444 }
8445
8446 /* Build the partial symbol table by doing a quick pass through the
8447    .debug_info and .debug_abbrev sections.  */
8448
8449 static void
8450 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8451 {
8452   struct objfile *objfile = dwarf2_per_objfile->objfile;
8453
8454   if (dwarf_read_debug)
8455     {
8456       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8457                           objfile_name (objfile));
8458     }
8459
8460   dwarf2_per_objfile->reading_partial_symbols = 1;
8461
8462   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8463
8464   /* Any cached compilation units will be linked by the per-objfile
8465      read_in_chain.  Make sure to free them when we're done.  */
8466   free_cached_comp_units freer (dwarf2_per_objfile);
8467
8468   build_type_psymtabs (dwarf2_per_objfile);
8469
8470   create_all_comp_units (dwarf2_per_objfile);
8471
8472   /* Create a temporary address map on a temporary obstack.  We later
8473      copy this to the final obstack.  */
8474   auto_obstack temp_obstack;
8475
8476   scoped_restore save_psymtabs_addrmap
8477     = make_scoped_restore (&objfile->psymtabs_addrmap,
8478                            addrmap_create_mutable (&temp_obstack));
8479
8480   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8481     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8482
8483   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8484   process_skeletonless_type_units (dwarf2_per_objfile);
8485
8486   /* Now that all TUs have been processed we can fill in the dependencies.  */
8487   if (dwarf2_per_objfile->type_unit_groups != NULL)
8488     {
8489       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8490                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8491     }
8492
8493   if (dwarf_read_debug)
8494     print_tu_stats (dwarf2_per_objfile);
8495
8496   set_partial_user (dwarf2_per_objfile);
8497
8498   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8499                                                     &objfile->objfile_obstack);
8500   /* At this point we want to keep the address map.  */
8501   save_psymtabs_addrmap.release ();
8502
8503   if (dwarf_read_debug)
8504     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8505                         objfile_name (objfile));
8506 }
8507
8508 /* die_reader_func for load_partial_comp_unit.  */
8509
8510 static void
8511 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8512                                const gdb_byte *info_ptr,
8513                                struct die_info *comp_unit_die,
8514                                int has_children,
8515                                void *data)
8516 {
8517   struct dwarf2_cu *cu = reader->cu;
8518
8519   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8520
8521   /* Check if comp unit has_children.
8522      If so, read the rest of the partial symbols from this comp unit.
8523      If not, there's no more debug_info for this comp unit.  */
8524   if (has_children)
8525     load_partial_dies (reader, info_ptr, 0);
8526 }
8527
8528 /* Load the partial DIEs for a secondary CU into memory.
8529    This is also used when rereading a primary CU with load_all_dies.  */
8530
8531 static void
8532 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8533 {
8534   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8535                            load_partial_comp_unit_reader, NULL);
8536 }
8537
8538 static void
8539 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8540                               struct dwarf2_section_info *section,
8541                               struct dwarf2_section_info *abbrev_section,
8542                               unsigned int is_dwz)
8543 {
8544   const gdb_byte *info_ptr;
8545   struct objfile *objfile = dwarf2_per_objfile->objfile;
8546
8547   if (dwarf_read_debug)
8548     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8549                         get_section_name (section),
8550                         get_section_file_name (section));
8551
8552   dwarf2_read_section (objfile, section);
8553
8554   info_ptr = section->buffer;
8555
8556   while (info_ptr < section->buffer + section->size)
8557     {
8558       struct dwarf2_per_cu_data *this_cu;
8559
8560       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8561
8562       comp_unit_head cu_header;
8563       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8564                                      abbrev_section, info_ptr,
8565                                      rcuh_kind::COMPILE);
8566
8567       /* Save the compilation unit for later lookup.  */
8568       if (cu_header.unit_type != DW_UT_type)
8569         {
8570           this_cu = XOBNEW (&objfile->objfile_obstack,
8571                             struct dwarf2_per_cu_data);
8572           memset (this_cu, 0, sizeof (*this_cu));
8573         }
8574       else
8575         {
8576           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8577                                   struct signatured_type);
8578           memset (sig_type, 0, sizeof (*sig_type));
8579           sig_type->signature = cu_header.signature;
8580           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8581           this_cu = &sig_type->per_cu;
8582         }
8583       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8584       this_cu->sect_off = sect_off;
8585       this_cu->length = cu_header.length + cu_header.initial_length_size;
8586       this_cu->is_dwz = is_dwz;
8587       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8588       this_cu->section = section;
8589
8590       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8591
8592       info_ptr = info_ptr + this_cu->length;
8593     }
8594 }
8595
8596 /* Create a list of all compilation units in OBJFILE.
8597    This is only done for -readnow and building partial symtabs.  */
8598
8599 static void
8600 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8601 {
8602   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8603   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8604                                 &dwarf2_per_objfile->abbrev, 0);
8605
8606   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8607   if (dwz != NULL)
8608     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8609                                   1);
8610 }
8611
8612 /* Process all loaded DIEs for compilation unit CU, starting at
8613    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8614    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8615    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8616    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8617
8618 static void
8619 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8620                       CORE_ADDR *highpc, int set_addrmap,
8621                       struct dwarf2_cu *cu)
8622 {
8623   struct partial_die_info *pdi;
8624
8625   /* Now, march along the PDI's, descending into ones which have
8626      interesting children but skipping the children of the other ones,
8627      until we reach the end of the compilation unit.  */
8628
8629   pdi = first_die;
8630
8631   while (pdi != NULL)
8632     {
8633       pdi->fixup (cu);
8634
8635       /* Anonymous namespaces or modules have no name but have interesting
8636          children, so we need to look at them.  Ditto for anonymous
8637          enums.  */
8638
8639       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8640           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8641           || pdi->tag == DW_TAG_imported_unit
8642           || pdi->tag == DW_TAG_inlined_subroutine)
8643         {
8644           switch (pdi->tag)
8645             {
8646             case DW_TAG_subprogram:
8647             case DW_TAG_inlined_subroutine:
8648               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8649               break;
8650             case DW_TAG_constant:
8651             case DW_TAG_variable:
8652             case DW_TAG_typedef:
8653             case DW_TAG_union_type:
8654               if (!pdi->is_declaration)
8655                 {
8656                   add_partial_symbol (pdi, cu);
8657                 }
8658               break;
8659             case DW_TAG_class_type:
8660             case DW_TAG_interface_type:
8661             case DW_TAG_structure_type:
8662               if (!pdi->is_declaration)
8663                 {
8664                   add_partial_symbol (pdi, cu);
8665                 }
8666               if ((cu->language == language_rust
8667                    || cu->language == language_cplus) && pdi->has_children)
8668                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8669                                       set_addrmap, cu);
8670               break;
8671             case DW_TAG_enumeration_type:
8672               if (!pdi->is_declaration)
8673                 add_partial_enumeration (pdi, cu);
8674               break;
8675             case DW_TAG_base_type:
8676             case DW_TAG_subrange_type:
8677               /* File scope base type definitions are added to the partial
8678                  symbol table.  */
8679               add_partial_symbol (pdi, cu);
8680               break;
8681             case DW_TAG_namespace:
8682               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8683               break;
8684             case DW_TAG_module:
8685               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8686               break;
8687             case DW_TAG_imported_unit:
8688               {
8689                 struct dwarf2_per_cu_data *per_cu;
8690
8691                 /* For now we don't handle imported units in type units.  */
8692                 if (cu->per_cu->is_debug_types)
8693                   {
8694                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8695                              " supported in type units [in module %s]"),
8696                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8697                   }
8698
8699                 per_cu = dwarf2_find_containing_comp_unit
8700                            (pdi->d.sect_off, pdi->is_dwz,
8701                             cu->per_cu->dwarf2_per_objfile);
8702
8703                 /* Go read the partial unit, if needed.  */
8704                 if (per_cu->v.psymtab == NULL)
8705                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8706
8707                 VEC_safe_push (dwarf2_per_cu_ptr,
8708                                cu->per_cu->imported_symtabs, per_cu);
8709               }
8710               break;
8711             case DW_TAG_imported_declaration:
8712               add_partial_symbol (pdi, cu);
8713               break;
8714             default:
8715               break;
8716             }
8717         }
8718
8719       /* If the die has a sibling, skip to the sibling.  */
8720
8721       pdi = pdi->die_sibling;
8722     }
8723 }
8724
8725 /* Functions used to compute the fully scoped name of a partial DIE.
8726
8727    Normally, this is simple.  For C++, the parent DIE's fully scoped
8728    name is concatenated with "::" and the partial DIE's name.
8729    Enumerators are an exception; they use the scope of their parent
8730    enumeration type, i.e. the name of the enumeration type is not
8731    prepended to the enumerator.
8732
8733    There are two complexities.  One is DW_AT_specification; in this
8734    case "parent" means the parent of the target of the specification,
8735    instead of the direct parent of the DIE.  The other is compilers
8736    which do not emit DW_TAG_namespace; in this case we try to guess
8737    the fully qualified name of structure types from their members'
8738    linkage names.  This must be done using the DIE's children rather
8739    than the children of any DW_AT_specification target.  We only need
8740    to do this for structures at the top level, i.e. if the target of
8741    any DW_AT_specification (if any; otherwise the DIE itself) does not
8742    have a parent.  */
8743
8744 /* Compute the scope prefix associated with PDI's parent, in
8745    compilation unit CU.  The result will be allocated on CU's
8746    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8747    field.  NULL is returned if no prefix is necessary.  */
8748 static const char *
8749 partial_die_parent_scope (struct partial_die_info *pdi,
8750                           struct dwarf2_cu *cu)
8751 {
8752   const char *grandparent_scope;
8753   struct partial_die_info *parent, *real_pdi;
8754
8755   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8756      then this means the parent of the specification DIE.  */
8757
8758   real_pdi = pdi;
8759   while (real_pdi->has_specification)
8760     real_pdi = find_partial_die (real_pdi->spec_offset,
8761                                  real_pdi->spec_is_dwz, cu);
8762
8763   parent = real_pdi->die_parent;
8764   if (parent == NULL)
8765     return NULL;
8766
8767   if (parent->scope_set)
8768     return parent->scope;
8769
8770   parent->fixup (cu);
8771
8772   grandparent_scope = partial_die_parent_scope (parent, cu);
8773
8774   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8775      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8776      Work around this problem here.  */
8777   if (cu->language == language_cplus
8778       && parent->tag == DW_TAG_namespace
8779       && strcmp (parent->name, "::") == 0
8780       && grandparent_scope == NULL)
8781     {
8782       parent->scope = NULL;
8783       parent->scope_set = 1;
8784       return NULL;
8785     }
8786
8787   if (pdi->tag == DW_TAG_enumerator)
8788     /* Enumerators should not get the name of the enumeration as a prefix.  */
8789     parent->scope = grandparent_scope;
8790   else if (parent->tag == DW_TAG_namespace
8791       || parent->tag == DW_TAG_module
8792       || parent->tag == DW_TAG_structure_type
8793       || parent->tag == DW_TAG_class_type
8794       || parent->tag == DW_TAG_interface_type
8795       || parent->tag == DW_TAG_union_type
8796       || parent->tag == DW_TAG_enumeration_type)
8797     {
8798       if (grandparent_scope == NULL)
8799         parent->scope = parent->name;
8800       else
8801         parent->scope = typename_concat (&cu->comp_unit_obstack,
8802                                          grandparent_scope,
8803                                          parent->name, 0, cu);
8804     }
8805   else
8806     {
8807       /* FIXME drow/2004-04-01: What should we be doing with
8808          function-local names?  For partial symbols, we should probably be
8809          ignoring them.  */
8810       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8811                  parent->tag, sect_offset_str (pdi->sect_off));
8812       parent->scope = grandparent_scope;
8813     }
8814
8815   parent->scope_set = 1;
8816   return parent->scope;
8817 }
8818
8819 /* Return the fully scoped name associated with PDI, from compilation unit
8820    CU.  The result will be allocated with malloc.  */
8821
8822 static char *
8823 partial_die_full_name (struct partial_die_info *pdi,
8824                        struct dwarf2_cu *cu)
8825 {
8826   const char *parent_scope;
8827
8828   /* If this is a template instantiation, we can not work out the
8829      template arguments from partial DIEs.  So, unfortunately, we have
8830      to go through the full DIEs.  At least any work we do building
8831      types here will be reused if full symbols are loaded later.  */
8832   if (pdi->has_template_arguments)
8833     {
8834       pdi->fixup (cu);
8835
8836       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8837         {
8838           struct die_info *die;
8839           struct attribute attr;
8840           struct dwarf2_cu *ref_cu = cu;
8841
8842           /* DW_FORM_ref_addr is using section offset.  */
8843           attr.name = (enum dwarf_attribute) 0;
8844           attr.form = DW_FORM_ref_addr;
8845           attr.u.unsnd = to_underlying (pdi->sect_off);
8846           die = follow_die_ref (NULL, &attr, &ref_cu);
8847
8848           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8849         }
8850     }
8851
8852   parent_scope = partial_die_parent_scope (pdi, cu);
8853   if (parent_scope == NULL)
8854     return NULL;
8855   else
8856     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8857 }
8858
8859 static void
8860 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8861 {
8862   struct dwarf2_per_objfile *dwarf2_per_objfile
8863     = cu->per_cu->dwarf2_per_objfile;
8864   struct objfile *objfile = dwarf2_per_objfile->objfile;
8865   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8866   CORE_ADDR addr = 0;
8867   const char *actual_name = NULL;
8868   CORE_ADDR baseaddr;
8869   char *built_actual_name;
8870
8871   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8872
8873   built_actual_name = partial_die_full_name (pdi, cu);
8874   if (built_actual_name != NULL)
8875     actual_name = built_actual_name;
8876
8877   if (actual_name == NULL)
8878     actual_name = pdi->name;
8879
8880   switch (pdi->tag)
8881     {
8882     case DW_TAG_inlined_subroutine:
8883     case DW_TAG_subprogram:
8884       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8885               - baseaddr);
8886       if (pdi->is_external || cu->language == language_ada)
8887         {
8888           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8889              of the global scope.  But in Ada, we want to be able to access
8890              nested procedures globally.  So all Ada subprograms are stored
8891              in the global scope.  */
8892           add_psymbol_to_list (actual_name, strlen (actual_name),
8893                                built_actual_name != NULL,
8894                                VAR_DOMAIN, LOC_BLOCK,
8895                                SECT_OFF_TEXT (objfile),
8896                                &objfile->global_psymbols,
8897                                addr,
8898                                cu->language, objfile);
8899         }
8900       else
8901         {
8902           add_psymbol_to_list (actual_name, strlen (actual_name),
8903                                built_actual_name != NULL,
8904                                VAR_DOMAIN, LOC_BLOCK,
8905                                SECT_OFF_TEXT (objfile),
8906                                &objfile->static_psymbols,
8907                                addr, cu->language, objfile);
8908         }
8909
8910       if (pdi->main_subprogram && actual_name != NULL)
8911         set_objfile_main_name (objfile, actual_name, cu->language);
8912       break;
8913     case DW_TAG_constant:
8914       {
8915         std::vector<partial_symbol *> *list;
8916
8917         if (pdi->is_external)
8918           list = &objfile->global_psymbols;
8919         else
8920           list = &objfile->static_psymbols;
8921         add_psymbol_to_list (actual_name, strlen (actual_name),
8922                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8923                              -1, list, 0, cu->language, objfile);
8924       }
8925       break;
8926     case DW_TAG_variable:
8927       if (pdi->d.locdesc)
8928         addr = decode_locdesc (pdi->d.locdesc, cu);
8929
8930       if (pdi->d.locdesc
8931           && addr == 0
8932           && !dwarf2_per_objfile->has_section_at_zero)
8933         {
8934           /* A global or static variable may also have been stripped
8935              out by the linker if unused, in which case its address
8936              will be nullified; do not add such variables into partial
8937              symbol table then.  */
8938         }
8939       else if (pdi->is_external)
8940         {
8941           /* Global Variable.
8942              Don't enter into the minimal symbol tables as there is
8943              a minimal symbol table entry from the ELF symbols already.
8944              Enter into partial symbol table if it has a location
8945              descriptor or a type.
8946              If the location descriptor is missing, new_symbol will create
8947              a LOC_UNRESOLVED symbol, the address of the variable will then
8948              be determined from the minimal symbol table whenever the variable
8949              is referenced.
8950              The address for the partial symbol table entry is not
8951              used by GDB, but it comes in handy for debugging partial symbol
8952              table building.  */
8953
8954           if (pdi->d.locdesc || pdi->has_type)
8955             add_psymbol_to_list (actual_name, strlen (actual_name),
8956                                  built_actual_name != NULL,
8957                                  VAR_DOMAIN, LOC_STATIC,
8958                                  SECT_OFF_TEXT (objfile),
8959                                  &objfile->global_psymbols,
8960                                  addr, cu->language, objfile);
8961         }
8962       else
8963         {
8964           int has_loc = pdi->d.locdesc != NULL;
8965
8966           /* Static Variable.  Skip symbols whose value we cannot know (those
8967              without location descriptors or constant values).  */
8968           if (!has_loc && !pdi->has_const_value)
8969             {
8970               xfree (built_actual_name);
8971               return;
8972             }
8973
8974           add_psymbol_to_list (actual_name, strlen (actual_name),
8975                                built_actual_name != NULL,
8976                                VAR_DOMAIN, LOC_STATIC,
8977                                SECT_OFF_TEXT (objfile),
8978                                &objfile->static_psymbols,
8979                                has_loc ? addr : 0,
8980                                cu->language, objfile);
8981         }
8982       break;
8983     case DW_TAG_typedef:
8984     case DW_TAG_base_type:
8985     case DW_TAG_subrange_type:
8986       add_psymbol_to_list (actual_name, strlen (actual_name),
8987                            built_actual_name != NULL,
8988                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8989                            &objfile->static_psymbols,
8990                            0, cu->language, objfile);
8991       break;
8992     case DW_TAG_imported_declaration:
8993     case DW_TAG_namespace:
8994       add_psymbol_to_list (actual_name, strlen (actual_name),
8995                            built_actual_name != NULL,
8996                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8997                            &objfile->global_psymbols,
8998                            0, cu->language, objfile);
8999       break;
9000     case DW_TAG_module:
9001       add_psymbol_to_list (actual_name, strlen (actual_name),
9002                            built_actual_name != NULL,
9003                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9004                            &objfile->global_psymbols,
9005                            0, cu->language, objfile);
9006       break;
9007     case DW_TAG_class_type:
9008     case DW_TAG_interface_type:
9009     case DW_TAG_structure_type:
9010     case DW_TAG_union_type:
9011     case DW_TAG_enumeration_type:
9012       /* Skip external references.  The DWARF standard says in the section
9013          about "Structure, Union, and Class Type Entries": "An incomplete
9014          structure, union or class type is represented by a structure,
9015          union or class entry that does not have a byte size attribute
9016          and that has a DW_AT_declaration attribute."  */
9017       if (!pdi->has_byte_size && pdi->is_declaration)
9018         {
9019           xfree (built_actual_name);
9020           return;
9021         }
9022
9023       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9024          static vs. global.  */
9025       add_psymbol_to_list (actual_name, strlen (actual_name),
9026                            built_actual_name != NULL,
9027                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9028                            cu->language == language_cplus
9029                            ? &objfile->global_psymbols
9030                            : &objfile->static_psymbols,
9031                            0, cu->language, objfile);
9032
9033       break;
9034     case DW_TAG_enumerator:
9035       add_psymbol_to_list (actual_name, strlen (actual_name),
9036                            built_actual_name != NULL,
9037                            VAR_DOMAIN, LOC_CONST, -1,
9038                            cu->language == language_cplus
9039                            ? &objfile->global_psymbols
9040                            : &objfile->static_psymbols,
9041                            0, cu->language, objfile);
9042       break;
9043     default:
9044       break;
9045     }
9046
9047   xfree (built_actual_name);
9048 }
9049
9050 /* Read a partial die corresponding to a namespace; also, add a symbol
9051    corresponding to that namespace to the symbol table.  NAMESPACE is
9052    the name of the enclosing namespace.  */
9053
9054 static void
9055 add_partial_namespace (struct partial_die_info *pdi,
9056                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9057                        int set_addrmap, struct dwarf2_cu *cu)
9058 {
9059   /* Add a symbol for the namespace.  */
9060
9061   add_partial_symbol (pdi, cu);
9062
9063   /* Now scan partial symbols in that namespace.  */
9064
9065   if (pdi->has_children)
9066     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9067 }
9068
9069 /* Read a partial die corresponding to a Fortran module.  */
9070
9071 static void
9072 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9073                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9074 {
9075   /* Add a symbol for the namespace.  */
9076
9077   add_partial_symbol (pdi, cu);
9078
9079   /* Now scan partial symbols in that module.  */
9080
9081   if (pdi->has_children)
9082     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9083 }
9084
9085 /* Read a partial die corresponding to a subprogram or an inlined
9086    subprogram and create a partial symbol for that subprogram.
9087    When the CU language allows it, this routine also defines a partial
9088    symbol for each nested subprogram that this subprogram contains.
9089    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9090    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9091
9092    PDI may also be a lexical block, in which case we simply search
9093    recursively for subprograms defined inside that lexical block.
9094    Again, this is only performed when the CU language allows this
9095    type of definitions.  */
9096
9097 static void
9098 add_partial_subprogram (struct partial_die_info *pdi,
9099                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9100                         int set_addrmap, struct dwarf2_cu *cu)
9101 {
9102   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9103     {
9104       if (pdi->has_pc_info)
9105         {
9106           if (pdi->lowpc < *lowpc)
9107             *lowpc = pdi->lowpc;
9108           if (pdi->highpc > *highpc)
9109             *highpc = pdi->highpc;
9110           if (set_addrmap)
9111             {
9112               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9113               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9114               CORE_ADDR baseaddr;
9115               CORE_ADDR highpc;
9116               CORE_ADDR lowpc;
9117
9118               baseaddr = ANOFFSET (objfile->section_offsets,
9119                                    SECT_OFF_TEXT (objfile));
9120               lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9121                                                    pdi->lowpc + baseaddr)
9122                        - baseaddr);
9123               highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9124                                                     pdi->highpc + baseaddr)
9125                         - baseaddr);
9126               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9127                                  cu->per_cu->v.psymtab);
9128             }
9129         }
9130
9131       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9132         {
9133           if (!pdi->is_declaration)
9134             /* Ignore subprogram DIEs that do not have a name, they are
9135                illegal.  Do not emit a complaint at this point, we will
9136                do so when we convert this psymtab into a symtab.  */
9137             if (pdi->name)
9138               add_partial_symbol (pdi, cu);
9139         }
9140     }
9141
9142   if (! pdi->has_children)
9143     return;
9144
9145   if (cu->language == language_ada)
9146     {
9147       pdi = pdi->die_child;
9148       while (pdi != NULL)
9149         {
9150           pdi->fixup (cu);
9151           if (pdi->tag == DW_TAG_subprogram
9152               || pdi->tag == DW_TAG_inlined_subroutine
9153               || pdi->tag == DW_TAG_lexical_block)
9154             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9155           pdi = pdi->die_sibling;
9156         }
9157     }
9158 }
9159
9160 /* Read a partial die corresponding to an enumeration type.  */
9161
9162 static void
9163 add_partial_enumeration (struct partial_die_info *enum_pdi,
9164                          struct dwarf2_cu *cu)
9165 {
9166   struct partial_die_info *pdi;
9167
9168   if (enum_pdi->name != NULL)
9169     add_partial_symbol (enum_pdi, cu);
9170
9171   pdi = enum_pdi->die_child;
9172   while (pdi)
9173     {
9174       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9175         complaint (_("malformed enumerator DIE ignored"));
9176       else
9177         add_partial_symbol (pdi, cu);
9178       pdi = pdi->die_sibling;
9179     }
9180 }
9181
9182 /* Return the initial uleb128 in the die at INFO_PTR.  */
9183
9184 static unsigned int
9185 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9186 {
9187   unsigned int bytes_read;
9188
9189   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9190 }
9191
9192 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9193    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9194
9195    Return the corresponding abbrev, or NULL if the number is zero (indicating
9196    an empty DIE).  In either case *BYTES_READ will be set to the length of
9197    the initial number.  */
9198
9199 static struct abbrev_info *
9200 peek_die_abbrev (const die_reader_specs &reader,
9201                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9202 {
9203   dwarf2_cu *cu = reader.cu;
9204   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9205   unsigned int abbrev_number
9206     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9207
9208   if (abbrev_number == 0)
9209     return NULL;
9210
9211   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9212   if (!abbrev)
9213     {
9214       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9215                " at offset %s [in module %s]"),
9216              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9217              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9218     }
9219
9220   return abbrev;
9221 }
9222
9223 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9224    Returns a pointer to the end of a series of DIEs, terminated by an empty
9225    DIE.  Any children of the skipped DIEs will also be skipped.  */
9226
9227 static const gdb_byte *
9228 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9229 {
9230   while (1)
9231     {
9232       unsigned int bytes_read;
9233       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9234
9235       if (abbrev == NULL)
9236         return info_ptr + bytes_read;
9237       else
9238         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9239     }
9240 }
9241
9242 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9243    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9244    abbrev corresponding to that skipped uleb128 should be passed in
9245    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9246    children.  */
9247
9248 static const gdb_byte *
9249 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9250               struct abbrev_info *abbrev)
9251 {
9252   unsigned int bytes_read;
9253   struct attribute attr;
9254   bfd *abfd = reader->abfd;
9255   struct dwarf2_cu *cu = reader->cu;
9256   const gdb_byte *buffer = reader->buffer;
9257   const gdb_byte *buffer_end = reader->buffer_end;
9258   unsigned int form, i;
9259
9260   for (i = 0; i < abbrev->num_attrs; i++)
9261     {
9262       /* The only abbrev we care about is DW_AT_sibling.  */
9263       if (abbrev->attrs[i].name == DW_AT_sibling)
9264         {
9265           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9266           if (attr.form == DW_FORM_ref_addr)
9267             complaint (_("ignoring absolute DW_AT_sibling"));
9268           else
9269             {
9270               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9271               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9272
9273               if (sibling_ptr < info_ptr)
9274                 complaint (_("DW_AT_sibling points backwards"));
9275               else if (sibling_ptr > reader->buffer_end)
9276                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9277               else
9278                 return sibling_ptr;
9279             }
9280         }
9281
9282       /* If it isn't DW_AT_sibling, skip this attribute.  */
9283       form = abbrev->attrs[i].form;
9284     skip_attribute:
9285       switch (form)
9286         {
9287         case DW_FORM_ref_addr:
9288           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9289              and later it is offset sized.  */
9290           if (cu->header.version == 2)
9291             info_ptr += cu->header.addr_size;
9292           else
9293             info_ptr += cu->header.offset_size;
9294           break;
9295         case DW_FORM_GNU_ref_alt:
9296           info_ptr += cu->header.offset_size;
9297           break;
9298         case DW_FORM_addr:
9299           info_ptr += cu->header.addr_size;
9300           break;
9301         case DW_FORM_data1:
9302         case DW_FORM_ref1:
9303         case DW_FORM_flag:
9304           info_ptr += 1;
9305           break;
9306         case DW_FORM_flag_present:
9307         case DW_FORM_implicit_const:
9308           break;
9309         case DW_FORM_data2:
9310         case DW_FORM_ref2:
9311           info_ptr += 2;
9312           break;
9313         case DW_FORM_data4:
9314         case DW_FORM_ref4:
9315           info_ptr += 4;
9316           break;
9317         case DW_FORM_data8:
9318         case DW_FORM_ref8:
9319         case DW_FORM_ref_sig8:
9320           info_ptr += 8;
9321           break;
9322         case DW_FORM_data16:
9323           info_ptr += 16;
9324           break;
9325         case DW_FORM_string:
9326           read_direct_string (abfd, info_ptr, &bytes_read);
9327           info_ptr += bytes_read;
9328           break;
9329         case DW_FORM_sec_offset:
9330         case DW_FORM_strp:
9331         case DW_FORM_GNU_strp_alt:
9332           info_ptr += cu->header.offset_size;
9333           break;
9334         case DW_FORM_exprloc:
9335         case DW_FORM_block:
9336           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9337           info_ptr += bytes_read;
9338           break;
9339         case DW_FORM_block1:
9340           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9341           break;
9342         case DW_FORM_block2:
9343           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9344           break;
9345         case DW_FORM_block4:
9346           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9347           break;
9348         case DW_FORM_sdata:
9349         case DW_FORM_udata:
9350         case DW_FORM_ref_udata:
9351         case DW_FORM_GNU_addr_index:
9352         case DW_FORM_GNU_str_index:
9353           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9354           break;
9355         case DW_FORM_indirect:
9356           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9357           info_ptr += bytes_read;
9358           /* We need to continue parsing from here, so just go back to
9359              the top.  */
9360           goto skip_attribute;
9361
9362         default:
9363           error (_("Dwarf Error: Cannot handle %s "
9364                    "in DWARF reader [in module %s]"),
9365                  dwarf_form_name (form),
9366                  bfd_get_filename (abfd));
9367         }
9368     }
9369
9370   if (abbrev->has_children)
9371     return skip_children (reader, info_ptr);
9372   else
9373     return info_ptr;
9374 }
9375
9376 /* Locate ORIG_PDI's sibling.
9377    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9378
9379 static const gdb_byte *
9380 locate_pdi_sibling (const struct die_reader_specs *reader,
9381                     struct partial_die_info *orig_pdi,
9382                     const gdb_byte *info_ptr)
9383 {
9384   /* Do we know the sibling already?  */
9385
9386   if (orig_pdi->sibling)
9387     return orig_pdi->sibling;
9388
9389   /* Are there any children to deal with?  */
9390
9391   if (!orig_pdi->has_children)
9392     return info_ptr;
9393
9394   /* Skip the children the long way.  */
9395
9396   return skip_children (reader, info_ptr);
9397 }
9398
9399 /* Expand this partial symbol table into a full symbol table.  SELF is
9400    not NULL.  */
9401
9402 static void
9403 dwarf2_read_symtab (struct partial_symtab *self,
9404                     struct objfile *objfile)
9405 {
9406   struct dwarf2_per_objfile *dwarf2_per_objfile
9407     = get_dwarf2_per_objfile (objfile);
9408
9409   if (self->readin)
9410     {
9411       warning (_("bug: psymtab for %s is already read in."),
9412                self->filename);
9413     }
9414   else
9415     {
9416       if (info_verbose)
9417         {
9418           printf_filtered (_("Reading in symbols for %s..."),
9419                            self->filename);
9420           gdb_flush (gdb_stdout);
9421         }
9422
9423       /* If this psymtab is constructed from a debug-only objfile, the
9424          has_section_at_zero flag will not necessarily be correct.  We
9425          can get the correct value for this flag by looking at the data
9426          associated with the (presumably stripped) associated objfile.  */
9427       if (objfile->separate_debug_objfile_backlink)
9428         {
9429           struct dwarf2_per_objfile *dpo_backlink
9430             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9431
9432           dwarf2_per_objfile->has_section_at_zero
9433             = dpo_backlink->has_section_at_zero;
9434         }
9435
9436       dwarf2_per_objfile->reading_partial_symbols = 0;
9437
9438       psymtab_to_symtab_1 (self);
9439
9440       /* Finish up the debug error message.  */
9441       if (info_verbose)
9442         printf_filtered (_("done.\n"));
9443     }
9444
9445   process_cu_includes (dwarf2_per_objfile);
9446 }
9447 \f
9448 /* Reading in full CUs.  */
9449
9450 /* Add PER_CU to the queue.  */
9451
9452 static void
9453 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9454                  enum language pretend_language)
9455 {
9456   struct dwarf2_queue_item *item;
9457
9458   per_cu->queued = 1;
9459   item = XNEW (struct dwarf2_queue_item);
9460   item->per_cu = per_cu;
9461   item->pretend_language = pretend_language;
9462   item->next = NULL;
9463
9464   if (dwarf2_queue == NULL)
9465     dwarf2_queue = item;
9466   else
9467     dwarf2_queue_tail->next = item;
9468
9469   dwarf2_queue_tail = item;
9470 }
9471
9472 /* If PER_CU is not yet queued, add it to the queue.
9473    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9474    dependency.
9475    The result is non-zero if PER_CU was queued, otherwise the result is zero
9476    meaning either PER_CU is already queued or it is already loaded.
9477
9478    N.B. There is an invariant here that if a CU is queued then it is loaded.
9479    The caller is required to load PER_CU if we return non-zero.  */
9480
9481 static int
9482 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9483                        struct dwarf2_per_cu_data *per_cu,
9484                        enum language pretend_language)
9485 {
9486   /* We may arrive here during partial symbol reading, if we need full
9487      DIEs to process an unusual case (e.g. template arguments).  Do
9488      not queue PER_CU, just tell our caller to load its DIEs.  */
9489   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9490     {
9491       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9492         return 1;
9493       return 0;
9494     }
9495
9496   /* Mark the dependence relation so that we don't flush PER_CU
9497      too early.  */
9498   if (dependent_cu != NULL)
9499     dwarf2_add_dependence (dependent_cu, per_cu);
9500
9501   /* If it's already on the queue, we have nothing to do.  */
9502   if (per_cu->queued)
9503     return 0;
9504
9505   /* If the compilation unit is already loaded, just mark it as
9506      used.  */
9507   if (per_cu->cu != NULL)
9508     {
9509       per_cu->cu->last_used = 0;
9510       return 0;
9511     }
9512
9513   /* Add it to the queue.  */
9514   queue_comp_unit (per_cu, pretend_language);
9515
9516   return 1;
9517 }
9518
9519 /* Process the queue.  */
9520
9521 static void
9522 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9523 {
9524   struct dwarf2_queue_item *item, *next_item;
9525
9526   if (dwarf_read_debug)
9527     {
9528       fprintf_unfiltered (gdb_stdlog,
9529                           "Expanding one or more symtabs of objfile %s ...\n",
9530                           objfile_name (dwarf2_per_objfile->objfile));
9531     }
9532
9533   /* The queue starts out with one item, but following a DIE reference
9534      may load a new CU, adding it to the end of the queue.  */
9535   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9536     {
9537       if ((dwarf2_per_objfile->using_index
9538            ? !item->per_cu->v.quick->compunit_symtab
9539            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9540           /* Skip dummy CUs.  */
9541           && item->per_cu->cu != NULL)
9542         {
9543           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9544           unsigned int debug_print_threshold;
9545           char buf[100];
9546
9547           if (per_cu->is_debug_types)
9548             {
9549               struct signatured_type *sig_type =
9550                 (struct signatured_type *) per_cu;
9551
9552               sprintf (buf, "TU %s at offset %s",
9553                        hex_string (sig_type->signature),
9554                        sect_offset_str (per_cu->sect_off));
9555               /* There can be 100s of TUs.
9556                  Only print them in verbose mode.  */
9557               debug_print_threshold = 2;
9558             }
9559           else
9560             {
9561               sprintf (buf, "CU at offset %s",
9562                        sect_offset_str (per_cu->sect_off));
9563               debug_print_threshold = 1;
9564             }
9565
9566           if (dwarf_read_debug >= debug_print_threshold)
9567             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9568
9569           if (per_cu->is_debug_types)
9570             process_full_type_unit (per_cu, item->pretend_language);
9571           else
9572             process_full_comp_unit (per_cu, item->pretend_language);
9573
9574           if (dwarf_read_debug >= debug_print_threshold)
9575             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9576         }
9577
9578       item->per_cu->queued = 0;
9579       next_item = item->next;
9580       xfree (item);
9581     }
9582
9583   dwarf2_queue_tail = NULL;
9584
9585   if (dwarf_read_debug)
9586     {
9587       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9588                           objfile_name (dwarf2_per_objfile->objfile));
9589     }
9590 }
9591
9592 /* Read in full symbols for PST, and anything it depends on.  */
9593
9594 static void
9595 psymtab_to_symtab_1 (struct partial_symtab *pst)
9596 {
9597   struct dwarf2_per_cu_data *per_cu;
9598   int i;
9599
9600   if (pst->readin)
9601     return;
9602
9603   for (i = 0; i < pst->number_of_dependencies; i++)
9604     if (!pst->dependencies[i]->readin
9605         && pst->dependencies[i]->user == NULL)
9606       {
9607         /* Inform about additional files that need to be read in.  */
9608         if (info_verbose)
9609           {
9610             /* FIXME: i18n: Need to make this a single string.  */
9611             fputs_filtered (" ", gdb_stdout);
9612             wrap_here ("");
9613             fputs_filtered ("and ", gdb_stdout);
9614             wrap_here ("");
9615             printf_filtered ("%s...", pst->dependencies[i]->filename);
9616             wrap_here ("");     /* Flush output.  */
9617             gdb_flush (gdb_stdout);
9618           }
9619         psymtab_to_symtab_1 (pst->dependencies[i]);
9620       }
9621
9622   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9623
9624   if (per_cu == NULL)
9625     {
9626       /* It's an include file, no symbols to read for it.
9627          Everything is in the parent symtab.  */
9628       pst->readin = 1;
9629       return;
9630     }
9631
9632   dw2_do_instantiate_symtab (per_cu, false);
9633 }
9634
9635 /* Trivial hash function for die_info: the hash value of a DIE
9636    is its offset in .debug_info for this objfile.  */
9637
9638 static hashval_t
9639 die_hash (const void *item)
9640 {
9641   const struct die_info *die = (const struct die_info *) item;
9642
9643   return to_underlying (die->sect_off);
9644 }
9645
9646 /* Trivial comparison function for die_info structures: two DIEs
9647    are equal if they have the same offset.  */
9648
9649 static int
9650 die_eq (const void *item_lhs, const void *item_rhs)
9651 {
9652   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9653   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9654
9655   return die_lhs->sect_off == die_rhs->sect_off;
9656 }
9657
9658 /* die_reader_func for load_full_comp_unit.
9659    This is identical to read_signatured_type_reader,
9660    but is kept separate for now.  */
9661
9662 static void
9663 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9664                             const gdb_byte *info_ptr,
9665                             struct die_info *comp_unit_die,
9666                             int has_children,
9667                             void *data)
9668 {
9669   struct dwarf2_cu *cu = reader->cu;
9670   enum language *language_ptr = (enum language *) data;
9671
9672   gdb_assert (cu->die_hash == NULL);
9673   cu->die_hash =
9674     htab_create_alloc_ex (cu->header.length / 12,
9675                           die_hash,
9676                           die_eq,
9677                           NULL,
9678                           &cu->comp_unit_obstack,
9679                           hashtab_obstack_allocate,
9680                           dummy_obstack_deallocate);
9681
9682   if (has_children)
9683     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9684                                                   &info_ptr, comp_unit_die);
9685   cu->dies = comp_unit_die;
9686   /* comp_unit_die is not stored in die_hash, no need.  */
9687
9688   /* We try not to read any attributes in this function, because not
9689      all CUs needed for references have been loaded yet, and symbol
9690      table processing isn't initialized.  But we have to set the CU language,
9691      or we won't be able to build types correctly.
9692      Similarly, if we do not read the producer, we can not apply
9693      producer-specific interpretation.  */
9694   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9695 }
9696
9697 /* Load the DIEs associated with PER_CU into memory.  */
9698
9699 static void
9700 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9701                      bool skip_partial,
9702                      enum language pretend_language)
9703 {
9704   gdb_assert (! this_cu->is_debug_types);
9705
9706   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9707                            load_full_comp_unit_reader, &pretend_language);
9708 }
9709
9710 /* Add a DIE to the delayed physname list.  */
9711
9712 static void
9713 add_to_method_list (struct type *type, int fnfield_index, int index,
9714                     const char *name, struct die_info *die,
9715                     struct dwarf2_cu *cu)
9716 {
9717   struct delayed_method_info mi;
9718   mi.type = type;
9719   mi.fnfield_index = fnfield_index;
9720   mi.index = index;
9721   mi.name = name;
9722   mi.die = die;
9723   cu->method_list.push_back (mi);
9724 }
9725
9726 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9727    "const" / "volatile".  If so, decrements LEN by the length of the
9728    modifier and return true.  Otherwise return false.  */
9729
9730 template<size_t N>
9731 static bool
9732 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9733 {
9734   size_t mod_len = sizeof (mod) - 1;
9735   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9736     {
9737       len -= mod_len;
9738       return true;
9739     }
9740   return false;
9741 }
9742
9743 /* Compute the physnames of any methods on the CU's method list.
9744
9745    The computation of method physnames is delayed in order to avoid the
9746    (bad) condition that one of the method's formal parameters is of an as yet
9747    incomplete type.  */
9748
9749 static void
9750 compute_delayed_physnames (struct dwarf2_cu *cu)
9751 {
9752   /* Only C++ delays computing physnames.  */
9753   if (cu->method_list.empty ())
9754     return;
9755   gdb_assert (cu->language == language_cplus);
9756
9757   for (const delayed_method_info &mi : cu->method_list)
9758     {
9759       const char *physname;
9760       struct fn_fieldlist *fn_flp
9761         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9762       physname = dwarf2_physname (mi.name, mi.die, cu);
9763       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9764         = physname ? physname : "";
9765
9766       /* Since there's no tag to indicate whether a method is a
9767          const/volatile overload, extract that information out of the
9768          demangled name.  */
9769       if (physname != NULL)
9770         {
9771           size_t len = strlen (physname);
9772
9773           while (1)
9774             {
9775               if (physname[len] == ')') /* shortcut */
9776                 break;
9777               else if (check_modifier (physname, len, " const"))
9778                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9779               else if (check_modifier (physname, len, " volatile"))
9780                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9781               else
9782                 break;
9783             }
9784         }
9785     }
9786
9787   /* The list is no longer needed.  */
9788   cu->method_list.clear ();
9789 }
9790
9791 /* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9792    the same as all other symbols in LISTHEAD.  If a new symbol is added
9793    with a different language, this function asserts.  */
9794
9795 static inline void
9796 dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9797 {
9798   /* Only assert if LISTHEAD already contains symbols of a different
9799      language (dict_create_hashed/insert_symbol_hashed requires that all
9800      symbols in this list are of the same language).  */
9801   gdb_assert ((*listhead) == NULL
9802               || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9803                   == SYMBOL_LANGUAGE (symbol)));
9804
9805   add_symbol_to_list (symbol, listhead);
9806 }
9807
9808 /* Go objects should be embedded in a DW_TAG_module DIE,
9809    and it's not clear if/how imported objects will appear.
9810    To keep Go support simple until that's worked out,
9811    go back through what we've read and create something usable.
9812    We could do this while processing each DIE, and feels kinda cleaner,
9813    but that way is more invasive.
9814    This is to, for example, allow the user to type "p var" or "b main"
9815    without having to specify the package name, and allow lookups
9816    of module.object to work in contexts that use the expression
9817    parser.  */
9818
9819 static void
9820 fixup_go_packaging (struct dwarf2_cu *cu)
9821 {
9822   char *package_name = NULL;
9823   struct pending *list;
9824   int i;
9825
9826   for (list = *cu->builder->get_global_symbols ();
9827        list != NULL;
9828        list = list->next)
9829     {
9830       for (i = 0; i < list->nsyms; ++i)
9831         {
9832           struct symbol *sym = list->symbol[i];
9833
9834           if (SYMBOL_LANGUAGE (sym) == language_go
9835               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9836             {
9837               char *this_package_name = go_symbol_package_name (sym);
9838
9839               if (this_package_name == NULL)
9840                 continue;
9841               if (package_name == NULL)
9842                 package_name = this_package_name;
9843               else
9844                 {
9845                   struct objfile *objfile
9846                     = cu->per_cu->dwarf2_per_objfile->objfile;
9847                   if (strcmp (package_name, this_package_name) != 0)
9848                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9849                                (symbol_symtab (sym) != NULL
9850                                 ? symtab_to_filename_for_display
9851                                     (symbol_symtab (sym))
9852                                 : objfile_name (objfile)),
9853                                this_package_name, package_name);
9854                   xfree (this_package_name);
9855                 }
9856             }
9857         }
9858     }
9859
9860   if (package_name != NULL)
9861     {
9862       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9863       const char *saved_package_name
9864         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9865                                         package_name,
9866                                         strlen (package_name));
9867       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9868                                      saved_package_name);
9869       struct symbol *sym;
9870
9871       sym = allocate_symbol (objfile);
9872       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9873       SYMBOL_SET_NAMES (sym, saved_package_name,
9874                         strlen (saved_package_name), 0, objfile);
9875       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9876          e.g., "main" finds the "main" module and not C's main().  */
9877       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9878       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9879       SYMBOL_TYPE (sym) = type;
9880
9881       dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
9882
9883       xfree (package_name);
9884     }
9885 }
9886
9887 /* Allocate a fully-qualified name consisting of the two parts on the
9888    obstack.  */
9889
9890 static const char *
9891 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9892 {
9893   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9894 }
9895
9896 /* A helper that allocates a struct discriminant_info to attach to a
9897    union type.  */
9898
9899 static struct discriminant_info *
9900 alloc_discriminant_info (struct type *type, int discriminant_index,
9901                          int default_index)
9902 {
9903   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9904   gdb_assert (discriminant_index == -1
9905               || (discriminant_index >= 0
9906                   && discriminant_index < TYPE_NFIELDS (type)));
9907   gdb_assert (default_index == -1
9908               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9909
9910   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9911
9912   struct discriminant_info *disc
9913     = ((struct discriminant_info *)
9914        TYPE_ZALLOC (type,
9915                     offsetof (struct discriminant_info, discriminants)
9916                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9917   disc->default_index = default_index;
9918   disc->discriminant_index = discriminant_index;
9919
9920   struct dynamic_prop prop;
9921   prop.kind = PROP_UNDEFINED;
9922   prop.data.baton = disc;
9923
9924   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9925
9926   return disc;
9927 }
9928
9929 /* Some versions of rustc emitted enums in an unusual way.
9930
9931    Ordinary enums were emitted as unions.  The first element of each
9932    structure in the union was named "RUST$ENUM$DISR".  This element
9933    held the discriminant.
9934
9935    These versions of Rust also implemented the "non-zero"
9936    optimization.  When the enum had two values, and one is empty and
9937    the other holds a pointer that cannot be zero, the pointer is used
9938    as the discriminant, with a zero value meaning the empty variant.
9939    Here, the union's first member is of the form
9940    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9941    where the fieldnos are the indices of the fields that should be
9942    traversed in order to find the field (which may be several fields deep)
9943    and the variantname is the name of the variant of the case when the
9944    field is zero.
9945
9946    This function recognizes whether TYPE is of one of these forms,
9947    and, if so, smashes it to be a variant type.  */
9948
9949 static void
9950 quirk_rust_enum (struct type *type, struct objfile *objfile)
9951 {
9952   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9953
9954   /* We don't need to deal with empty enums.  */
9955   if (TYPE_NFIELDS (type) == 0)
9956     return;
9957
9958 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9959   if (TYPE_NFIELDS (type) == 1
9960       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9961     {
9962       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9963
9964       /* Decode the field name to find the offset of the
9965          discriminant.  */
9966       ULONGEST bit_offset = 0;
9967       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9968       while (name[0] >= '0' && name[0] <= '9')
9969         {
9970           char *tail;
9971           unsigned long index = strtoul (name, &tail, 10);
9972           name = tail;
9973           if (*name != '$'
9974               || index >= TYPE_NFIELDS (field_type)
9975               || (TYPE_FIELD_LOC_KIND (field_type, index)
9976                   != FIELD_LOC_KIND_BITPOS))
9977             {
9978               complaint (_("Could not parse Rust enum encoding string \"%s\""
9979                            "[in module %s]"),
9980                          TYPE_FIELD_NAME (type, 0),
9981                          objfile_name (objfile));
9982               return;
9983             }
9984           ++name;
9985
9986           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9987           field_type = TYPE_FIELD_TYPE (field_type, index);
9988         }
9989
9990       /* Make a union to hold the variants.  */
9991       struct type *union_type = alloc_type (objfile);
9992       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9993       TYPE_NFIELDS (union_type) = 3;
9994       TYPE_FIELDS (union_type)
9995         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9996       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9997       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9998
9999       /* Put the discriminant must at index 0.  */
10000       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10001       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10002       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10003       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10004
10005       /* The order of fields doesn't really matter, so put the real
10006          field at index 1 and the data-less field at index 2.  */
10007       struct discriminant_info *disc
10008         = alloc_discriminant_info (union_type, 0, 1);
10009       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10010       TYPE_FIELD_NAME (union_type, 1)
10011         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10012       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10013         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10014                               TYPE_FIELD_NAME (union_type, 1));
10015
10016       const char *dataless_name
10017         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10018                               name);
10019       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10020                                               dataless_name);
10021       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10022       /* NAME points into the original discriminant name, which
10023          already has the correct lifetime.  */
10024       TYPE_FIELD_NAME (union_type, 2) = name;
10025       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10026       disc->discriminants[2] = 0;
10027
10028       /* Smash this type to be a structure type.  We have to do this
10029          because the type has already been recorded.  */
10030       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10031       TYPE_NFIELDS (type) = 1;
10032       TYPE_FIELDS (type)
10033         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10034
10035       /* Install the variant part.  */
10036       TYPE_FIELD_TYPE (type, 0) = union_type;
10037       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10038       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10039     }
10040   else if (TYPE_NFIELDS (type) == 1)
10041     {
10042       /* We assume that a union with a single field is a univariant
10043          enum.  */
10044       /* Smash this type to be a structure type.  We have to do this
10045          because the type has already been recorded.  */
10046       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10047
10048       /* Make a union to hold the variants.  */
10049       struct type *union_type = alloc_type (objfile);
10050       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10051       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10052       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10053       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10054       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10055
10056       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10057       const char *variant_name
10058         = rust_last_path_segment (TYPE_NAME (field_type));
10059       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10060       TYPE_NAME (field_type)
10061         = rust_fully_qualify (&objfile->objfile_obstack,
10062                               TYPE_NAME (type), variant_name);
10063
10064       /* Install the union in the outer struct type.  */
10065       TYPE_NFIELDS (type) = 1;
10066       TYPE_FIELDS (type)
10067         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10068       TYPE_FIELD_TYPE (type, 0) = union_type;
10069       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10070       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10071
10072       alloc_discriminant_info (union_type, -1, 0);
10073     }
10074   else
10075     {
10076       struct type *disr_type = nullptr;
10077       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10078         {
10079           disr_type = TYPE_FIELD_TYPE (type, i);
10080
10081           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10082             {
10083               /* All fields of a true enum will be structs.  */
10084               return;
10085             }
10086           else if (TYPE_NFIELDS (disr_type) == 0)
10087             {
10088               /* Could be data-less variant, so keep going.  */
10089               disr_type = nullptr;
10090             }
10091           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10092                            "RUST$ENUM$DISR") != 0)
10093             {
10094               /* Not a Rust enum.  */
10095               return;
10096             }
10097           else
10098             {
10099               /* Found one.  */
10100               break;
10101             }
10102         }
10103
10104       /* If we got here without a discriminant, then it's probably
10105          just a union.  */
10106       if (disr_type == nullptr)
10107         return;
10108
10109       /* Smash this type to be a structure type.  We have to do this
10110          because the type has already been recorded.  */
10111       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10112
10113       /* Make a union to hold the variants.  */
10114       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10115       struct type *union_type = alloc_type (objfile);
10116       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10117       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10118       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10119       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10120       TYPE_FIELDS (union_type)
10121         = (struct field *) TYPE_ZALLOC (union_type,
10122                                         (TYPE_NFIELDS (union_type)
10123                                          * sizeof (struct field)));
10124
10125       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10126               TYPE_NFIELDS (type) * sizeof (struct field));
10127
10128       /* Install the discriminant at index 0 in the union.  */
10129       TYPE_FIELD (union_type, 0) = *disr_field;
10130       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10131       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10132
10133       /* Install the union in the outer struct type.  */
10134       TYPE_FIELD_TYPE (type, 0) = union_type;
10135       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10136       TYPE_NFIELDS (type) = 1;
10137
10138       /* Set the size and offset of the union type.  */
10139       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10140
10141       /* We need a way to find the correct discriminant given a
10142          variant name.  For convenience we build a map here.  */
10143       struct type *enum_type = FIELD_TYPE (*disr_field);
10144       std::unordered_map<std::string, ULONGEST> discriminant_map;
10145       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10146         {
10147           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10148             {
10149               const char *name
10150                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10151               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10152             }
10153         }
10154
10155       int n_fields = TYPE_NFIELDS (union_type);
10156       struct discriminant_info *disc
10157         = alloc_discriminant_info (union_type, 0, -1);
10158       /* Skip the discriminant here.  */
10159       for (int i = 1; i < n_fields; ++i)
10160         {
10161           /* Find the final word in the name of this variant's type.
10162              That name can be used to look up the correct
10163              discriminant.  */
10164           const char *variant_name
10165             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10166                                                                   i)));
10167
10168           auto iter = discriminant_map.find (variant_name);
10169           if (iter != discriminant_map.end ())
10170             disc->discriminants[i] = iter->second;
10171
10172           /* Remove the discriminant field, if it exists.  */
10173           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10174           if (TYPE_NFIELDS (sub_type) > 0)
10175             {
10176               --TYPE_NFIELDS (sub_type);
10177               ++TYPE_FIELDS (sub_type);
10178             }
10179           TYPE_FIELD_NAME (union_type, i) = variant_name;
10180           TYPE_NAME (sub_type)
10181             = rust_fully_qualify (&objfile->objfile_obstack,
10182                                   TYPE_NAME (type), variant_name);
10183         }
10184     }
10185 }
10186
10187 /* Rewrite some Rust unions to be structures with variants parts.  */
10188
10189 static void
10190 rust_union_quirks (struct dwarf2_cu *cu)
10191 {
10192   gdb_assert (cu->language == language_rust);
10193   for (type *type_ : cu->rust_unions)
10194     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10195   /* We don't need this any more.  */
10196   cu->rust_unions.clear ();
10197 }
10198
10199 /* Return the symtab for PER_CU.  This works properly regardless of
10200    whether we're using the index or psymtabs.  */
10201
10202 static struct compunit_symtab *
10203 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10204 {
10205   return (per_cu->dwarf2_per_objfile->using_index
10206           ? per_cu->v.quick->compunit_symtab
10207           : per_cu->v.psymtab->compunit_symtab);
10208 }
10209
10210 /* A helper function for computing the list of all symbol tables
10211    included by PER_CU.  */
10212
10213 static void
10214 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10215                                 htab_t all_children, htab_t all_type_symtabs,
10216                                 struct dwarf2_per_cu_data *per_cu,
10217                                 struct compunit_symtab *immediate_parent)
10218 {
10219   void **slot;
10220   int ix;
10221   struct compunit_symtab *cust;
10222   struct dwarf2_per_cu_data *iter;
10223
10224   slot = htab_find_slot (all_children, per_cu, INSERT);
10225   if (*slot != NULL)
10226     {
10227       /* This inclusion and its children have been processed.  */
10228       return;
10229     }
10230
10231   *slot = per_cu;
10232   /* Only add a CU if it has a symbol table.  */
10233   cust = get_compunit_symtab (per_cu);
10234   if (cust != NULL)
10235     {
10236       /* If this is a type unit only add its symbol table if we haven't
10237          seen it yet (type unit per_cu's can share symtabs).  */
10238       if (per_cu->is_debug_types)
10239         {
10240           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10241           if (*slot == NULL)
10242             {
10243               *slot = cust;
10244               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10245               if (cust->user == NULL)
10246                 cust->user = immediate_parent;
10247             }
10248         }
10249       else
10250         {
10251           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10252           if (cust->user == NULL)
10253             cust->user = immediate_parent;
10254         }
10255     }
10256
10257   for (ix = 0;
10258        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10259        ++ix)
10260     {
10261       recursively_compute_inclusions (result, all_children,
10262                                       all_type_symtabs, iter, cust);
10263     }
10264 }
10265
10266 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10267    PER_CU.  */
10268
10269 static void
10270 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10271 {
10272   gdb_assert (! per_cu->is_debug_types);
10273
10274   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10275     {
10276       int ix, len;
10277       struct dwarf2_per_cu_data *per_cu_iter;
10278       struct compunit_symtab *compunit_symtab_iter;
10279       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10280       htab_t all_children, all_type_symtabs;
10281       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10282
10283       /* If we don't have a symtab, we can just skip this case.  */
10284       if (cust == NULL)
10285         return;
10286
10287       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10288                                         NULL, xcalloc, xfree);
10289       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10290                                             NULL, xcalloc, xfree);
10291
10292       for (ix = 0;
10293            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10294                         ix, per_cu_iter);
10295            ++ix)
10296         {
10297           recursively_compute_inclusions (&result_symtabs, all_children,
10298                                           all_type_symtabs, per_cu_iter,
10299                                           cust);
10300         }
10301
10302       /* Now we have a transitive closure of all the included symtabs.  */
10303       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10304       cust->includes
10305         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10306                      struct compunit_symtab *, len + 1);
10307       for (ix = 0;
10308            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10309                         compunit_symtab_iter);
10310            ++ix)
10311         cust->includes[ix] = compunit_symtab_iter;
10312       cust->includes[len] = NULL;
10313
10314       VEC_free (compunit_symtab_ptr, result_symtabs);
10315       htab_delete (all_children);
10316       htab_delete (all_type_symtabs);
10317     }
10318 }
10319
10320 /* Compute the 'includes' field for the symtabs of all the CUs we just
10321    read.  */
10322
10323 static void
10324 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10325 {
10326   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10327     {
10328       if (! iter->is_debug_types)
10329         compute_compunit_symtab_includes (iter);
10330     }
10331
10332   dwarf2_per_objfile->just_read_cus.clear ();
10333 }
10334
10335 /* Generate full symbol information for PER_CU, whose DIEs have
10336    already been loaded into memory.  */
10337
10338 static void
10339 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10340                         enum language pretend_language)
10341 {
10342   struct dwarf2_cu *cu = per_cu->cu;
10343   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10344   struct objfile *objfile = dwarf2_per_objfile->objfile;
10345   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10346   CORE_ADDR lowpc, highpc;
10347   struct compunit_symtab *cust;
10348   CORE_ADDR baseaddr;
10349   struct block *static_block;
10350   CORE_ADDR addr;
10351
10352   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10353
10354   /* Clear the list here in case something was left over.  */
10355   cu->method_list.clear ();
10356
10357   cu->language = pretend_language;
10358   cu->language_defn = language_def (cu->language);
10359
10360   /* Do line number decoding in read_file_scope () */
10361   process_die (cu->dies, cu);
10362
10363   /* For now fudge the Go package.  */
10364   if (cu->language == language_go)
10365     fixup_go_packaging (cu);
10366
10367   /* Now that we have processed all the DIEs in the CU, all the types 
10368      should be complete, and it should now be safe to compute all of the
10369      physnames.  */
10370   compute_delayed_physnames (cu);
10371
10372   if (cu->language == language_rust)
10373     rust_union_quirks (cu);
10374
10375   /* Some compilers don't define a DW_AT_high_pc attribute for the
10376      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10377      it, by scanning the DIE's below the compilation unit.  */
10378   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10379
10380   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10381   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10382
10383   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10384      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10385      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10386      addrmap to help ensure it has an accurate map of pc values belonging to
10387      this comp unit.  */
10388   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10389
10390   cust = cu->builder->end_symtab_from_static_block (static_block,
10391                                                     SECT_OFF_TEXT (objfile),
10392                                                     0);
10393
10394   if (cust != NULL)
10395     {
10396       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10397
10398       /* Set symtab language to language from DW_AT_language.  If the
10399          compilation is from a C file generated by language preprocessors, do
10400          not set the language if it was already deduced by start_subfile.  */
10401       if (!(cu->language == language_c
10402             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10403         COMPUNIT_FILETABS (cust)->language = cu->language;
10404
10405       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10406          produce DW_AT_location with location lists but it can be possibly
10407          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10408          there were bugs in prologue debug info, fixed later in GCC-4.5
10409          by "unwind info for epilogues" patch (which is not directly related).
10410
10411          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10412          needed, it would be wrong due to missing DW_AT_producer there.
10413
10414          Still one can confuse GDB by using non-standard GCC compilation
10415          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10416          */ 
10417       if (cu->has_loclist && gcc_4_minor >= 5)
10418         cust->locations_valid = 1;
10419
10420       if (gcc_4_minor >= 5)
10421         cust->epilogue_unwind_valid = 1;
10422
10423       cust->call_site_htab = cu->call_site_htab;
10424     }
10425
10426   if (dwarf2_per_objfile->using_index)
10427     per_cu->v.quick->compunit_symtab = cust;
10428   else
10429     {
10430       struct partial_symtab *pst = per_cu->v.psymtab;
10431       pst->compunit_symtab = cust;
10432       pst->readin = 1;
10433     }
10434
10435   /* Push it for inclusion processing later.  */
10436   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10437
10438   /* Not needed any more.  */
10439   cu->builder.reset ();
10440 }
10441
10442 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10443    already been loaded into memory.  */
10444
10445 static void
10446 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10447                         enum language pretend_language)
10448 {
10449   struct dwarf2_cu *cu = per_cu->cu;
10450   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10451   struct objfile *objfile = dwarf2_per_objfile->objfile;
10452   struct compunit_symtab *cust;
10453   struct signatured_type *sig_type;
10454
10455   gdb_assert (per_cu->is_debug_types);
10456   sig_type = (struct signatured_type *) per_cu;
10457
10458   /* Clear the list here in case something was left over.  */
10459   cu->method_list.clear ();
10460
10461   cu->language = pretend_language;
10462   cu->language_defn = language_def (cu->language);
10463
10464   /* The symbol tables are set up in read_type_unit_scope.  */
10465   process_die (cu->dies, cu);
10466
10467   /* For now fudge the Go package.  */
10468   if (cu->language == language_go)
10469     fixup_go_packaging (cu);
10470
10471   /* Now that we have processed all the DIEs in the CU, all the types 
10472      should be complete, and it should now be safe to compute all of the
10473      physnames.  */
10474   compute_delayed_physnames (cu);
10475
10476   if (cu->language == language_rust)
10477     rust_union_quirks (cu);
10478
10479   /* TUs share symbol tables.
10480      If this is the first TU to use this symtab, complete the construction
10481      of it with end_expandable_symtab.  Otherwise, complete the addition of
10482      this TU's symbols to the existing symtab.  */
10483   if (sig_type->type_unit_group->compunit_symtab == NULL)
10484     {
10485       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10486       sig_type->type_unit_group->compunit_symtab = cust;
10487
10488       if (cust != NULL)
10489         {
10490           /* Set symtab language to language from DW_AT_language.  If the
10491              compilation is from a C file generated by language preprocessors,
10492              do not set the language if it was already deduced by
10493              start_subfile.  */
10494           if (!(cu->language == language_c
10495                 && COMPUNIT_FILETABS (cust)->language != language_c))
10496             COMPUNIT_FILETABS (cust)->language = cu->language;
10497         }
10498     }
10499   else
10500     {
10501       cu->builder->augment_type_symtab ();
10502       cust = sig_type->type_unit_group->compunit_symtab;
10503     }
10504
10505   if (dwarf2_per_objfile->using_index)
10506     per_cu->v.quick->compunit_symtab = cust;
10507   else
10508     {
10509       struct partial_symtab *pst = per_cu->v.psymtab;
10510       pst->compunit_symtab = cust;
10511       pst->readin = 1;
10512     }
10513
10514   /* Not needed any more.  */
10515   cu->builder.reset ();
10516 }
10517
10518 /* Process an imported unit DIE.  */
10519
10520 static void
10521 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10522 {
10523   struct attribute *attr;
10524
10525   /* For now we don't handle imported units in type units.  */
10526   if (cu->per_cu->is_debug_types)
10527     {
10528       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10529                " supported in type units [in module %s]"),
10530              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10531     }
10532
10533   attr = dwarf2_attr (die, DW_AT_import, cu);
10534   if (attr != NULL)
10535     {
10536       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10537       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10538       dwarf2_per_cu_data *per_cu
10539         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10540                                             cu->per_cu->dwarf2_per_objfile);
10541
10542       /* If necessary, add it to the queue and load its DIEs.  */
10543       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10544         load_full_comp_unit (per_cu, false, cu->language);
10545
10546       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10547                      per_cu);
10548     }
10549 }
10550
10551 /* RAII object that represents a process_die scope: i.e.,
10552    starts/finishes processing a DIE.  */
10553 class process_die_scope
10554 {
10555 public:
10556   process_die_scope (die_info *die, dwarf2_cu *cu)
10557     : m_die (die), m_cu (cu)
10558   {
10559     /* We should only be processing DIEs not already in process.  */
10560     gdb_assert (!m_die->in_process);
10561     m_die->in_process = true;
10562   }
10563
10564   ~process_die_scope ()
10565   {
10566     m_die->in_process = false;
10567
10568     /* If we're done processing the DIE for the CU that owns the line
10569        header, we don't need the line header anymore.  */
10570     if (m_cu->line_header_die_owner == m_die)
10571       {
10572         delete m_cu->line_header;
10573         m_cu->line_header = NULL;
10574         m_cu->line_header_die_owner = NULL;
10575       }
10576   }
10577
10578 private:
10579   die_info *m_die;
10580   dwarf2_cu *m_cu;
10581 };
10582
10583 /* Process a die and its children.  */
10584
10585 static void
10586 process_die (struct die_info *die, struct dwarf2_cu *cu)
10587 {
10588   process_die_scope scope (die, cu);
10589
10590   switch (die->tag)
10591     {
10592     case DW_TAG_padding:
10593       break;
10594     case DW_TAG_compile_unit:
10595     case DW_TAG_partial_unit:
10596       read_file_scope (die, cu);
10597       break;
10598     case DW_TAG_type_unit:
10599       read_type_unit_scope (die, cu);
10600       break;
10601     case DW_TAG_subprogram:
10602     case DW_TAG_inlined_subroutine:
10603       read_func_scope (die, cu);
10604       break;
10605     case DW_TAG_lexical_block:
10606     case DW_TAG_try_block:
10607     case DW_TAG_catch_block:
10608       read_lexical_block_scope (die, cu);
10609       break;
10610     case DW_TAG_call_site:
10611     case DW_TAG_GNU_call_site:
10612       read_call_site_scope (die, cu);
10613       break;
10614     case DW_TAG_class_type:
10615     case DW_TAG_interface_type:
10616     case DW_TAG_structure_type:
10617     case DW_TAG_union_type:
10618       process_structure_scope (die, cu);
10619       break;
10620     case DW_TAG_enumeration_type:
10621       process_enumeration_scope (die, cu);
10622       break;
10623
10624     /* These dies have a type, but processing them does not create
10625        a symbol or recurse to process the children.  Therefore we can
10626        read them on-demand through read_type_die.  */
10627     case DW_TAG_subroutine_type:
10628     case DW_TAG_set_type:
10629     case DW_TAG_array_type:
10630     case DW_TAG_pointer_type:
10631     case DW_TAG_ptr_to_member_type:
10632     case DW_TAG_reference_type:
10633     case DW_TAG_rvalue_reference_type:
10634     case DW_TAG_string_type:
10635       break;
10636
10637     case DW_TAG_base_type:
10638     case DW_TAG_subrange_type:
10639     case DW_TAG_typedef:
10640       /* Add a typedef symbol for the type definition, if it has a
10641          DW_AT_name.  */
10642       new_symbol (die, read_type_die (die, cu), cu);
10643       break;
10644     case DW_TAG_common_block:
10645       read_common_block (die, cu);
10646       break;
10647     case DW_TAG_common_inclusion:
10648       break;
10649     case DW_TAG_namespace:
10650       cu->processing_has_namespace_info = 1;
10651       read_namespace (die, cu);
10652       break;
10653     case DW_TAG_module:
10654       cu->processing_has_namespace_info = 1;
10655       read_module (die, cu);
10656       break;
10657     case DW_TAG_imported_declaration:
10658       cu->processing_has_namespace_info = 1;
10659       if (read_namespace_alias (die, cu))
10660         break;
10661       /* The declaration is not a global namespace alias.  */
10662       /* Fall through.  */
10663     case DW_TAG_imported_module:
10664       cu->processing_has_namespace_info = 1;
10665       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10666                                  || cu->language != language_fortran))
10667         complaint (_("Tag '%s' has unexpected children"),
10668                    dwarf_tag_name (die->tag));
10669       read_import_statement (die, cu);
10670       break;
10671
10672     case DW_TAG_imported_unit:
10673       process_imported_unit_die (die, cu);
10674       break;
10675
10676     case DW_TAG_variable:
10677       read_variable (die, cu);
10678       break;
10679
10680     default:
10681       new_symbol (die, NULL, cu);
10682       break;
10683     }
10684 }
10685 \f
10686 /* DWARF name computation.  */
10687
10688 /* A helper function for dwarf2_compute_name which determines whether DIE
10689    needs to have the name of the scope prepended to the name listed in the
10690    die.  */
10691
10692 static int
10693 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10694 {
10695   struct attribute *attr;
10696
10697   switch (die->tag)
10698     {
10699     case DW_TAG_namespace:
10700     case DW_TAG_typedef:
10701     case DW_TAG_class_type:
10702     case DW_TAG_interface_type:
10703     case DW_TAG_structure_type:
10704     case DW_TAG_union_type:
10705     case DW_TAG_enumeration_type:
10706     case DW_TAG_enumerator:
10707     case DW_TAG_subprogram:
10708     case DW_TAG_inlined_subroutine:
10709     case DW_TAG_member:
10710     case DW_TAG_imported_declaration:
10711       return 1;
10712
10713     case DW_TAG_variable:
10714     case DW_TAG_constant:
10715       /* We only need to prefix "globally" visible variables.  These include
10716          any variable marked with DW_AT_external or any variable that
10717          lives in a namespace.  [Variables in anonymous namespaces
10718          require prefixing, but they are not DW_AT_external.]  */
10719
10720       if (dwarf2_attr (die, DW_AT_specification, cu))
10721         {
10722           struct dwarf2_cu *spec_cu = cu;
10723
10724           return die_needs_namespace (die_specification (die, &spec_cu),
10725                                       spec_cu);
10726         }
10727
10728       attr = dwarf2_attr (die, DW_AT_external, cu);
10729       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10730           && die->parent->tag != DW_TAG_module)
10731         return 0;
10732       /* A variable in a lexical block of some kind does not need a
10733          namespace, even though in C++ such variables may be external
10734          and have a mangled name.  */
10735       if (die->parent->tag ==  DW_TAG_lexical_block
10736           || die->parent->tag ==  DW_TAG_try_block
10737           || die->parent->tag ==  DW_TAG_catch_block
10738           || die->parent->tag == DW_TAG_subprogram)
10739         return 0;
10740       return 1;
10741
10742     default:
10743       return 0;
10744     }
10745 }
10746
10747 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10748    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10749    defined for the given DIE.  */
10750
10751 static struct attribute *
10752 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10753 {
10754   struct attribute *attr;
10755
10756   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10757   if (attr == NULL)
10758     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10759
10760   return attr;
10761 }
10762
10763 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10764    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10765    defined for the given DIE.  */
10766
10767 static const char *
10768 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10769 {
10770   const char *linkage_name;
10771
10772   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10773   if (linkage_name == NULL)
10774     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10775
10776   return linkage_name;
10777 }
10778
10779 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10780    compute the physname for the object, which include a method's:
10781    - formal parameters (C++),
10782    - receiver type (Go),
10783
10784    The term "physname" is a bit confusing.
10785    For C++, for example, it is the demangled name.
10786    For Go, for example, it's the mangled name.
10787
10788    For Ada, return the DIE's linkage name rather than the fully qualified
10789    name.  PHYSNAME is ignored..
10790
10791    The result is allocated on the objfile_obstack and canonicalized.  */
10792
10793 static const char *
10794 dwarf2_compute_name (const char *name,
10795                      struct die_info *die, struct dwarf2_cu *cu,
10796                      int physname)
10797 {
10798   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10799
10800   if (name == NULL)
10801     name = dwarf2_name (die, cu);
10802
10803   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10804      but otherwise compute it by typename_concat inside GDB.
10805      FIXME: Actually this is not really true, or at least not always true.
10806      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10807      Fortran names because there is no mangling standard.  So new_symbol
10808      will set the demangled name to the result of dwarf2_full_name, and it is
10809      the demangled name that GDB uses if it exists.  */
10810   if (cu->language == language_ada
10811       || (cu->language == language_fortran && physname))
10812     {
10813       /* For Ada unit, we prefer the linkage name over the name, as
10814          the former contains the exported name, which the user expects
10815          to be able to reference.  Ideally, we want the user to be able
10816          to reference this entity using either natural or linkage name,
10817          but we haven't started looking at this enhancement yet.  */
10818       const char *linkage_name = dw2_linkage_name (die, cu);
10819
10820       if (linkage_name != NULL)
10821         return linkage_name;
10822     }
10823
10824   /* These are the only languages we know how to qualify names in.  */
10825   if (name != NULL
10826       && (cu->language == language_cplus
10827           || cu->language == language_fortran || cu->language == language_d
10828           || cu->language == language_rust))
10829     {
10830       if (die_needs_namespace (die, cu))
10831         {
10832           const char *prefix;
10833           const char *canonical_name = NULL;
10834
10835           string_file buf;
10836
10837           prefix = determine_prefix (die, cu);
10838           if (*prefix != '\0')
10839             {
10840               char *prefixed_name = typename_concat (NULL, prefix, name,
10841                                                      physname, cu);
10842
10843               buf.puts (prefixed_name);
10844               xfree (prefixed_name);
10845             }
10846           else
10847             buf.puts (name);
10848
10849           /* Template parameters may be specified in the DIE's DW_AT_name, or
10850              as children with DW_TAG_template_type_param or
10851              DW_TAG_value_type_param.  If the latter, add them to the name
10852              here.  If the name already has template parameters, then
10853              skip this step; some versions of GCC emit both, and
10854              it is more efficient to use the pre-computed name.
10855
10856              Something to keep in mind about this process: it is very
10857              unlikely, or in some cases downright impossible, to produce
10858              something that will match the mangled name of a function.
10859              If the definition of the function has the same debug info,
10860              we should be able to match up with it anyway.  But fallbacks
10861              using the minimal symbol, for instance to find a method
10862              implemented in a stripped copy of libstdc++, will not work.
10863              If we do not have debug info for the definition, we will have to
10864              match them up some other way.
10865
10866              When we do name matching there is a related problem with function
10867              templates; two instantiated function templates are allowed to
10868              differ only by their return types, which we do not add here.  */
10869
10870           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10871             {
10872               struct attribute *attr;
10873               struct die_info *child;
10874               int first = 1;
10875
10876               die->building_fullname = 1;
10877
10878               for (child = die->child; child != NULL; child = child->sibling)
10879                 {
10880                   struct type *type;
10881                   LONGEST value;
10882                   const gdb_byte *bytes;
10883                   struct dwarf2_locexpr_baton *baton;
10884                   struct value *v;
10885
10886                   if (child->tag != DW_TAG_template_type_param
10887                       && child->tag != DW_TAG_template_value_param)
10888                     continue;
10889
10890                   if (first)
10891                     {
10892                       buf.puts ("<");
10893                       first = 0;
10894                     }
10895                   else
10896                     buf.puts (", ");
10897
10898                   attr = dwarf2_attr (child, DW_AT_type, cu);
10899                   if (attr == NULL)
10900                     {
10901                       complaint (_("template parameter missing DW_AT_type"));
10902                       buf.puts ("UNKNOWN_TYPE");
10903                       continue;
10904                     }
10905                   type = die_type (child, cu);
10906
10907                   if (child->tag == DW_TAG_template_type_param)
10908                     {
10909                       c_print_type (type, "", &buf, -1, 0, cu->language,
10910                                     &type_print_raw_options);
10911                       continue;
10912                     }
10913
10914                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10915                   if (attr == NULL)
10916                     {
10917                       complaint (_("template parameter missing "
10918                                    "DW_AT_const_value"));
10919                       buf.puts ("UNKNOWN_VALUE");
10920                       continue;
10921                     }
10922
10923                   dwarf2_const_value_attr (attr, type, name,
10924                                            &cu->comp_unit_obstack, cu,
10925                                            &value, &bytes, &baton);
10926
10927                   if (TYPE_NOSIGN (type))
10928                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10929                        changed, this can use value_print instead.  */
10930                     c_printchar (value, type, &buf);
10931                   else
10932                     {
10933                       struct value_print_options opts;
10934
10935                       if (baton != NULL)
10936                         v = dwarf2_evaluate_loc_desc (type, NULL,
10937                                                       baton->data,
10938                                                       baton->size,
10939                                                       baton->per_cu);
10940                       else if (bytes != NULL)
10941                         {
10942                           v = allocate_value (type);
10943                           memcpy (value_contents_writeable (v), bytes,
10944                                   TYPE_LENGTH (type));
10945                         }
10946                       else
10947                         v = value_from_longest (type, value);
10948
10949                       /* Specify decimal so that we do not depend on
10950                          the radix.  */
10951                       get_formatted_print_options (&opts, 'd');
10952                       opts.raw = 1;
10953                       value_print (v, &buf, &opts);
10954                       release_value (v);
10955                     }
10956                 }
10957
10958               die->building_fullname = 0;
10959
10960               if (!first)
10961                 {
10962                   /* Close the argument list, with a space if necessary
10963                      (nested templates).  */
10964                   if (!buf.empty () && buf.string ().back () == '>')
10965                     buf.puts (" >");
10966                   else
10967                     buf.puts (">");
10968                 }
10969             }
10970
10971           /* For C++ methods, append formal parameter type
10972              information, if PHYSNAME.  */
10973
10974           if (physname && die->tag == DW_TAG_subprogram
10975               && cu->language == language_cplus)
10976             {
10977               struct type *type = read_type_die (die, cu);
10978
10979               c_type_print_args (type, &buf, 1, cu->language,
10980                                  &type_print_raw_options);
10981
10982               if (cu->language == language_cplus)
10983                 {
10984                   /* Assume that an artificial first parameter is
10985                      "this", but do not crash if it is not.  RealView
10986                      marks unnamed (and thus unused) parameters as
10987                      artificial; there is no way to differentiate
10988                      the two cases.  */
10989                   if (TYPE_NFIELDS (type) > 0
10990                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10991                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10992                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10993                                                                         0))))
10994                     buf.puts (" const");
10995                 }
10996             }
10997
10998           const std::string &intermediate_name = buf.string ();
10999
11000           if (cu->language == language_cplus)
11001             canonical_name
11002               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11003                                           &objfile->per_bfd->storage_obstack);
11004
11005           /* If we only computed INTERMEDIATE_NAME, or if
11006              INTERMEDIATE_NAME is already canonical, then we need to
11007              copy it to the appropriate obstack.  */
11008           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11009             name = ((const char *)
11010                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11011                                    intermediate_name.c_str (),
11012                                    intermediate_name.length ()));
11013           else
11014             name = canonical_name;
11015         }
11016     }
11017
11018   return name;
11019 }
11020
11021 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11022    If scope qualifiers are appropriate they will be added.  The result
11023    will be allocated on the storage_obstack, or NULL if the DIE does
11024    not have a name.  NAME may either be from a previous call to
11025    dwarf2_name or NULL.
11026
11027    The output string will be canonicalized (if C++).  */
11028
11029 static const char *
11030 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11031 {
11032   return dwarf2_compute_name (name, die, cu, 0);
11033 }
11034
11035 /* Construct a physname for the given DIE in CU.  NAME may either be
11036    from a previous call to dwarf2_name or NULL.  The result will be
11037    allocated on the objfile_objstack or NULL if the DIE does not have a
11038    name.
11039
11040    The output string will be canonicalized (if C++).  */
11041
11042 static const char *
11043 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11044 {
11045   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11046   const char *retval, *mangled = NULL, *canon = NULL;
11047   int need_copy = 1;
11048
11049   /* In this case dwarf2_compute_name is just a shortcut not building anything
11050      on its own.  */
11051   if (!die_needs_namespace (die, cu))
11052     return dwarf2_compute_name (name, die, cu, 1);
11053
11054   mangled = dw2_linkage_name (die, cu);
11055
11056   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11057      See https://github.com/rust-lang/rust/issues/32925.  */
11058   if (cu->language == language_rust && mangled != NULL
11059       && strchr (mangled, '{') != NULL)
11060     mangled = NULL;
11061
11062   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11063      has computed.  */
11064   gdb::unique_xmalloc_ptr<char> demangled;
11065   if (mangled != NULL)
11066     {
11067
11068       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11069         {
11070           /* Do nothing (do not demangle the symbol name).  */
11071         }
11072       else if (cu->language == language_go)
11073         {
11074           /* This is a lie, but we already lie to the caller new_symbol.
11075              new_symbol assumes we return the mangled name.
11076              This just undoes that lie until things are cleaned up.  */
11077         }
11078       else
11079         {
11080           /* Use DMGL_RET_DROP for C++ template functions to suppress
11081              their return type.  It is easier for GDB users to search
11082              for such functions as `name(params)' than `long name(params)'.
11083              In such case the minimal symbol names do not match the full
11084              symbol names but for template functions there is never a need
11085              to look up their definition from their declaration so
11086              the only disadvantage remains the minimal symbol variant
11087              `long name(params)' does not have the proper inferior type.  */
11088           demangled.reset (gdb_demangle (mangled,
11089                                          (DMGL_PARAMS | DMGL_ANSI
11090                                           | DMGL_RET_DROP)));
11091         }
11092       if (demangled)
11093         canon = demangled.get ();
11094       else
11095         {
11096           canon = mangled;
11097           need_copy = 0;
11098         }
11099     }
11100
11101   if (canon == NULL || check_physname)
11102     {
11103       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11104
11105       if (canon != NULL && strcmp (physname, canon) != 0)
11106         {
11107           /* It may not mean a bug in GDB.  The compiler could also
11108              compute DW_AT_linkage_name incorrectly.  But in such case
11109              GDB would need to be bug-to-bug compatible.  */
11110
11111           complaint (_("Computed physname <%s> does not match demangled <%s> "
11112                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11113                      physname, canon, mangled, sect_offset_str (die->sect_off),
11114                      objfile_name (objfile));
11115
11116           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11117              is available here - over computed PHYSNAME.  It is safer
11118              against both buggy GDB and buggy compilers.  */
11119
11120           retval = canon;
11121         }
11122       else
11123         {
11124           retval = physname;
11125           need_copy = 0;
11126         }
11127     }
11128   else
11129     retval = canon;
11130
11131   if (need_copy)
11132     retval = ((const char *)
11133               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11134                              retval, strlen (retval)));
11135
11136   return retval;
11137 }
11138
11139 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11140    a new symbol for it.
11141
11142    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11143
11144 static int
11145 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11146 {
11147   struct attribute *attr;
11148
11149   /* If the die does not have a name, this is not a namespace
11150      alias.  */
11151   attr = dwarf2_attr (die, DW_AT_name, cu);
11152   if (attr != NULL)
11153     {
11154       int num;
11155       struct die_info *d = die;
11156       struct dwarf2_cu *imported_cu = cu;
11157
11158       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11159          keep inspecting DIEs until we hit the underlying import.  */
11160 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11161       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11162         {
11163           attr = dwarf2_attr (d, DW_AT_import, cu);
11164           if (attr == NULL)
11165             break;
11166
11167           d = follow_die_ref (d, attr, &imported_cu);
11168           if (d->tag != DW_TAG_imported_declaration)
11169             break;
11170         }
11171
11172       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11173         {
11174           complaint (_("DIE at %s has too many recursively imported "
11175                        "declarations"), sect_offset_str (d->sect_off));
11176           return 0;
11177         }
11178
11179       if (attr != NULL)
11180         {
11181           struct type *type;
11182           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11183
11184           type = get_die_type_at_offset (sect_off, cu->per_cu);
11185           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11186             {
11187               /* This declaration is a global namespace alias.  Add
11188                  a symbol for it whose type is the aliased namespace.  */
11189               new_symbol (die, type, cu);
11190               return 1;
11191             }
11192         }
11193     }
11194
11195   return 0;
11196 }
11197
11198 /* Return the using directives repository (global or local?) to use in the
11199    current context for CU.
11200
11201    For Ada, imported declarations can materialize renamings, which *may* be
11202    global.  However it is impossible (for now?) in DWARF to distinguish
11203    "external" imported declarations and "static" ones.  As all imported
11204    declarations seem to be static in all other languages, make them all CU-wide
11205    global only in Ada.  */
11206
11207 static struct using_direct **
11208 using_directives (struct dwarf2_cu *cu)
11209 {
11210   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11211     return cu->builder->get_global_using_directives ();
11212   else
11213     return cu->builder->get_local_using_directives ();
11214 }
11215
11216 /* Read the import statement specified by the given die and record it.  */
11217
11218 static void
11219 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11220 {
11221   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11222   struct attribute *import_attr;
11223   struct die_info *imported_die, *child_die;
11224   struct dwarf2_cu *imported_cu;
11225   const char *imported_name;
11226   const char *imported_name_prefix;
11227   const char *canonical_name;
11228   const char *import_alias;
11229   const char *imported_declaration = NULL;
11230   const char *import_prefix;
11231   std::vector<const char *> excludes;
11232
11233   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11234   if (import_attr == NULL)
11235     {
11236       complaint (_("Tag '%s' has no DW_AT_import"),
11237                  dwarf_tag_name (die->tag));
11238       return;
11239     }
11240
11241   imported_cu = cu;
11242   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11243   imported_name = dwarf2_name (imported_die, imported_cu);
11244   if (imported_name == NULL)
11245     {
11246       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11247
11248         The import in the following code:
11249         namespace A
11250           {
11251             typedef int B;
11252           }
11253
11254         int main ()
11255           {
11256             using A::B;
11257             B b;
11258             return b;
11259           }
11260
11261         ...
11262          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11263             <52>   DW_AT_decl_file   : 1
11264             <53>   DW_AT_decl_line   : 6
11265             <54>   DW_AT_import      : <0x75>
11266          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11267             <59>   DW_AT_name        : B
11268             <5b>   DW_AT_decl_file   : 1
11269             <5c>   DW_AT_decl_line   : 2
11270             <5d>   DW_AT_type        : <0x6e>
11271         ...
11272          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11273             <76>   DW_AT_byte_size   : 4
11274             <77>   DW_AT_encoding    : 5        (signed)
11275
11276         imports the wrong die ( 0x75 instead of 0x58 ).
11277         This case will be ignored until the gcc bug is fixed.  */
11278       return;
11279     }
11280
11281   /* Figure out the local name after import.  */
11282   import_alias = dwarf2_name (die, cu);
11283
11284   /* Figure out where the statement is being imported to.  */
11285   import_prefix = determine_prefix (die, cu);
11286
11287   /* Figure out what the scope of the imported die is and prepend it
11288      to the name of the imported die.  */
11289   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11290
11291   if (imported_die->tag != DW_TAG_namespace
11292       && imported_die->tag != DW_TAG_module)
11293     {
11294       imported_declaration = imported_name;
11295       canonical_name = imported_name_prefix;
11296     }
11297   else if (strlen (imported_name_prefix) > 0)
11298     canonical_name = obconcat (&objfile->objfile_obstack,
11299                                imported_name_prefix,
11300                                (cu->language == language_d ? "." : "::"),
11301                                imported_name, (char *) NULL);
11302   else
11303     canonical_name = imported_name;
11304
11305   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11306     for (child_die = die->child; child_die && child_die->tag;
11307          child_die = sibling_die (child_die))
11308       {
11309         /* DWARF-4: A Fortran use statement with a “rename list” may be
11310            represented by an imported module entry with an import attribute
11311            referring to the module and owned entries corresponding to those
11312            entities that are renamed as part of being imported.  */
11313
11314         if (child_die->tag != DW_TAG_imported_declaration)
11315           {
11316             complaint (_("child DW_TAG_imported_declaration expected "
11317                          "- DIE at %s [in module %s]"),
11318                        sect_offset_str (child_die->sect_off),
11319                        objfile_name (objfile));
11320             continue;
11321           }
11322
11323         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11324         if (import_attr == NULL)
11325           {
11326             complaint (_("Tag '%s' has no DW_AT_import"),
11327                        dwarf_tag_name (child_die->tag));
11328             continue;
11329           }
11330
11331         imported_cu = cu;
11332         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11333                                               &imported_cu);
11334         imported_name = dwarf2_name (imported_die, imported_cu);
11335         if (imported_name == NULL)
11336           {
11337             complaint (_("child DW_TAG_imported_declaration has unknown "
11338                          "imported name - DIE at %s [in module %s]"),
11339                        sect_offset_str (child_die->sect_off),
11340                        objfile_name (objfile));
11341             continue;
11342           }
11343
11344         excludes.push_back (imported_name);
11345
11346         process_die (child_die, cu);
11347       }
11348
11349   add_using_directive (using_directives (cu),
11350                        import_prefix,
11351                        canonical_name,
11352                        import_alias,
11353                        imported_declaration,
11354                        excludes,
11355                        0,
11356                        &objfile->objfile_obstack);
11357 }
11358
11359 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11360    types, but gives them a size of zero.  Starting with version 14,
11361    ICC is compatible with GCC.  */
11362
11363 static int
11364 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11365 {
11366   if (!cu->checked_producer)
11367     check_producer (cu);
11368
11369   return cu->producer_is_icc_lt_14;
11370 }
11371
11372 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11373    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11374    this, it was first present in GCC release 4.3.0.  */
11375
11376 static int
11377 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11378 {
11379   if (!cu->checked_producer)
11380     check_producer (cu);
11381
11382   return cu->producer_is_gcc_lt_4_3;
11383 }
11384
11385 static file_and_directory
11386 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11387 {
11388   file_and_directory res;
11389
11390   /* Find the filename.  Do not use dwarf2_name here, since the filename
11391      is not a source language identifier.  */
11392   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11393   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11394
11395   if (res.comp_dir == NULL
11396       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11397       && IS_ABSOLUTE_PATH (res.name))
11398     {
11399       res.comp_dir_storage = ldirname (res.name);
11400       if (!res.comp_dir_storage.empty ())
11401         res.comp_dir = res.comp_dir_storage.c_str ();
11402     }
11403   if (res.comp_dir != NULL)
11404     {
11405       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11406          directory, get rid of it.  */
11407       const char *cp = strchr (res.comp_dir, ':');
11408
11409       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11410         res.comp_dir = cp + 1;
11411     }
11412
11413   if (res.name == NULL)
11414     res.name = "<unknown>";
11415
11416   return res;
11417 }
11418
11419 /* Handle DW_AT_stmt_list for a compilation unit.
11420    DIE is the DW_TAG_compile_unit die for CU.
11421    COMP_DIR is the compilation directory.  LOWPC is passed to
11422    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11423
11424 static void
11425 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11426                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11427 {
11428   struct dwarf2_per_objfile *dwarf2_per_objfile
11429     = cu->per_cu->dwarf2_per_objfile;
11430   struct objfile *objfile = dwarf2_per_objfile->objfile;
11431   struct attribute *attr;
11432   struct line_header line_header_local;
11433   hashval_t line_header_local_hash;
11434   void **slot;
11435   int decode_mapping;
11436
11437   gdb_assert (! cu->per_cu->is_debug_types);
11438
11439   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11440   if (attr == NULL)
11441     return;
11442
11443   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11444
11445   /* The line header hash table is only created if needed (it exists to
11446      prevent redundant reading of the line table for partial_units).
11447      If we're given a partial_unit, we'll need it.  If we're given a
11448      compile_unit, then use the line header hash table if it's already
11449      created, but don't create one just yet.  */
11450
11451   if (dwarf2_per_objfile->line_header_hash == NULL
11452       && die->tag == DW_TAG_partial_unit)
11453     {
11454       dwarf2_per_objfile->line_header_hash
11455         = htab_create_alloc_ex (127, line_header_hash_voidp,
11456                                 line_header_eq_voidp,
11457                                 free_line_header_voidp,
11458                                 &objfile->objfile_obstack,
11459                                 hashtab_obstack_allocate,
11460                                 dummy_obstack_deallocate);
11461     }
11462
11463   line_header_local.sect_off = line_offset;
11464   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11465   line_header_local_hash = line_header_hash (&line_header_local);
11466   if (dwarf2_per_objfile->line_header_hash != NULL)
11467     {
11468       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11469                                        &line_header_local,
11470                                        line_header_local_hash, NO_INSERT);
11471
11472       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11473          is not present in *SLOT (since if there is something in *SLOT then
11474          it will be for a partial_unit).  */
11475       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11476         {
11477           gdb_assert (*slot != NULL);
11478           cu->line_header = (struct line_header *) *slot;
11479           return;
11480         }
11481     }
11482
11483   /* dwarf_decode_line_header does not yet provide sufficient information.
11484      We always have to call also dwarf_decode_lines for it.  */
11485   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11486   if (lh == NULL)
11487     return;
11488
11489   cu->line_header = lh.release ();
11490   cu->line_header_die_owner = die;
11491
11492   if (dwarf2_per_objfile->line_header_hash == NULL)
11493     slot = NULL;
11494   else
11495     {
11496       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11497                                        &line_header_local,
11498                                        line_header_local_hash, INSERT);
11499       gdb_assert (slot != NULL);
11500     }
11501   if (slot != NULL && *slot == NULL)
11502     {
11503       /* This newly decoded line number information unit will be owned
11504          by line_header_hash hash table.  */
11505       *slot = cu->line_header;
11506       cu->line_header_die_owner = NULL;
11507     }
11508   else
11509     {
11510       /* We cannot free any current entry in (*slot) as that struct line_header
11511          may be already used by multiple CUs.  Create only temporary decoded
11512          line_header for this CU - it may happen at most once for each line
11513          number information unit.  And if we're not using line_header_hash
11514          then this is what we want as well.  */
11515       gdb_assert (die->tag != DW_TAG_partial_unit);
11516     }
11517   decode_mapping = (die->tag != DW_TAG_partial_unit);
11518   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11519                       decode_mapping);
11520
11521 }
11522
11523 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11524
11525 static void
11526 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11527 {
11528   struct dwarf2_per_objfile *dwarf2_per_objfile
11529     = cu->per_cu->dwarf2_per_objfile;
11530   struct objfile *objfile = dwarf2_per_objfile->objfile;
11531   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11532   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11533   CORE_ADDR highpc = ((CORE_ADDR) 0);
11534   struct attribute *attr;
11535   struct die_info *child_die;
11536   CORE_ADDR baseaddr;
11537
11538   prepare_one_comp_unit (cu, die, cu->language);
11539   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11540
11541   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11542
11543   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11544      from finish_block.  */
11545   if (lowpc == ((CORE_ADDR) -1))
11546     lowpc = highpc;
11547   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11548
11549   file_and_directory fnd = find_file_and_directory (die, cu);
11550
11551   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11552      standardised yet.  As a workaround for the language detection we fall
11553      back to the DW_AT_producer string.  */
11554   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11555     cu->language = language_opencl;
11556
11557   /* Similar hack for Go.  */
11558   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11559     set_cu_language (DW_LANG_Go, cu);
11560
11561   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11562
11563   /* Decode line number information if present.  We do this before
11564      processing child DIEs, so that the line header table is available
11565      for DW_AT_decl_file.  */
11566   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11567
11568   /* Process all dies in compilation unit.  */
11569   if (die->child != NULL)
11570     {
11571       child_die = die->child;
11572       while (child_die && child_die->tag)
11573         {
11574           process_die (child_die, cu);
11575           child_die = sibling_die (child_die);
11576         }
11577     }
11578
11579   /* Decode macro information, if present.  Dwarf 2 macro information
11580      refers to information in the line number info statement program
11581      header, so we can only read it if we've read the header
11582      successfully.  */
11583   attr = dwarf2_attr (die, DW_AT_macros, cu);
11584   if (attr == NULL)
11585     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11586   if (attr && cu->line_header)
11587     {
11588       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11589         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11590
11591       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11592     }
11593   else
11594     {
11595       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11596       if (attr && cu->line_header)
11597         {
11598           unsigned int macro_offset = DW_UNSND (attr);
11599
11600           dwarf_decode_macros (cu, macro_offset, 0);
11601         }
11602     }
11603 }
11604
11605 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11606    Create the set of symtabs used by this TU, or if this TU is sharing
11607    symtabs with another TU and the symtabs have already been created
11608    then restore those symtabs in the line header.
11609    We don't need the pc/line-number mapping for type units.  */
11610
11611 static void
11612 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11613 {
11614   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11615   struct type_unit_group *tu_group;
11616   int first_time;
11617   struct attribute *attr;
11618   unsigned int i;
11619   struct signatured_type *sig_type;
11620
11621   gdb_assert (per_cu->is_debug_types);
11622   sig_type = (struct signatured_type *) per_cu;
11623
11624   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11625
11626   /* If we're using .gdb_index (includes -readnow) then
11627      per_cu->type_unit_group may not have been set up yet.  */
11628   if (sig_type->type_unit_group == NULL)
11629     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11630   tu_group = sig_type->type_unit_group;
11631
11632   /* If we've already processed this stmt_list there's no real need to
11633      do it again, we could fake it and just recreate the part we need
11634      (file name,index -> symtab mapping).  If data shows this optimization
11635      is useful we can do it then.  */
11636   first_time = tu_group->compunit_symtab == NULL;
11637
11638   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11639      debug info.  */
11640   line_header_up lh;
11641   if (attr != NULL)
11642     {
11643       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11644       lh = dwarf_decode_line_header (line_offset, cu);
11645     }
11646   if (lh == NULL)
11647     {
11648       if (first_time)
11649         dwarf2_start_symtab (cu, "", NULL, 0);
11650       else
11651         {
11652           gdb_assert (tu_group->symtabs == NULL);
11653           gdb_assert (cu->builder == nullptr);
11654           struct compunit_symtab *cust = tu_group->compunit_symtab;
11655           cu->builder.reset (new struct buildsym_compunit
11656                              (COMPUNIT_OBJFILE (cust), "",
11657                               COMPUNIT_DIRNAME (cust),
11658                               compunit_language (cust),
11659                               0, cust));
11660         }
11661       return;
11662     }
11663
11664   cu->line_header = lh.release ();
11665   cu->line_header_die_owner = die;
11666
11667   if (first_time)
11668     {
11669       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11670
11671       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11672          still initializing it, and our caller (a few levels up)
11673          process_full_type_unit still needs to know if this is the first
11674          time.  */
11675
11676       tu_group->num_symtabs = cu->line_header->file_names.size ();
11677       tu_group->symtabs = XNEWVEC (struct symtab *,
11678                                    cu->line_header->file_names.size ());
11679
11680       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11681         {
11682           file_entry &fe = cu->line_header->file_names[i];
11683
11684           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11685
11686           if (cu->builder->get_current_subfile ()->symtab == NULL)
11687             {
11688               /* NOTE: start_subfile will recognize when it's been
11689                  passed a file it has already seen.  So we can't
11690                  assume there's a simple mapping from
11691                  cu->line_header->file_names to subfiles, plus
11692                  cu->line_header->file_names may contain dups.  */
11693               cu->builder->get_current_subfile ()->symtab
11694                 = allocate_symtab (cust,
11695                                    cu->builder->get_current_subfile ()->name);
11696             }
11697
11698           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11699           tu_group->symtabs[i] = fe.symtab;
11700         }
11701     }
11702   else
11703     {
11704       gdb_assert (cu->builder == nullptr);
11705       struct compunit_symtab *cust = tu_group->compunit_symtab;
11706       cu->builder.reset (new struct buildsym_compunit
11707                          (COMPUNIT_OBJFILE (cust), "",
11708                           COMPUNIT_DIRNAME (cust),
11709                           compunit_language (cust),
11710                           0, cust));
11711
11712       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11713         {
11714           file_entry &fe = cu->line_header->file_names[i];
11715
11716           fe.symtab = tu_group->symtabs[i];
11717         }
11718     }
11719
11720   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11721      so they don't have a "real" (so to speak) symtab anyway.
11722      There is later code that will assign the main symtab to all symbols
11723      that don't have one.  We need to handle the case of a symbol with a
11724      missing symtab (DW_AT_decl_file) anyway.  */
11725 }
11726
11727 /* Process DW_TAG_type_unit.
11728    For TUs we want to skip the first top level sibling if it's not the
11729    actual type being defined by this TU.  In this case the first top
11730    level sibling is there to provide context only.  */
11731
11732 static void
11733 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11734 {
11735   struct die_info *child_die;
11736
11737   prepare_one_comp_unit (cu, die, language_minimal);
11738
11739   /* Initialize (or reinitialize) the machinery for building symtabs.
11740      We do this before processing child DIEs, so that the line header table
11741      is available for DW_AT_decl_file.  */
11742   setup_type_unit_groups (die, cu);
11743
11744   if (die->child != NULL)
11745     {
11746       child_die = die->child;
11747       while (child_die && child_die->tag)
11748         {
11749           process_die (child_die, cu);
11750           child_die = sibling_die (child_die);
11751         }
11752     }
11753 }
11754 \f
11755 /* DWO/DWP files.
11756
11757    http://gcc.gnu.org/wiki/DebugFission
11758    http://gcc.gnu.org/wiki/DebugFissionDWP
11759
11760    To simplify handling of both DWO files ("object" files with the DWARF info)
11761    and DWP files (a file with the DWOs packaged up into one file), we treat
11762    DWP files as having a collection of virtual DWO files.  */
11763
11764 static hashval_t
11765 hash_dwo_file (const void *item)
11766 {
11767   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11768   hashval_t hash;
11769
11770   hash = htab_hash_string (dwo_file->dwo_name);
11771   if (dwo_file->comp_dir != NULL)
11772     hash += htab_hash_string (dwo_file->comp_dir);
11773   return hash;
11774 }
11775
11776 static int
11777 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11778 {
11779   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11780   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11781
11782   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11783     return 0;
11784   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11785     return lhs->comp_dir == rhs->comp_dir;
11786   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11787 }
11788
11789 /* Allocate a hash table for DWO files.  */
11790
11791 static htab_t
11792 allocate_dwo_file_hash_table (struct objfile *objfile)
11793 {
11794   return htab_create_alloc_ex (41,
11795                                hash_dwo_file,
11796                                eq_dwo_file,
11797                                NULL,
11798                                &objfile->objfile_obstack,
11799                                hashtab_obstack_allocate,
11800                                dummy_obstack_deallocate);
11801 }
11802
11803 /* Lookup DWO file DWO_NAME.  */
11804
11805 static void **
11806 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11807                       const char *dwo_name,
11808                       const char *comp_dir)
11809 {
11810   struct dwo_file find_entry;
11811   void **slot;
11812
11813   if (dwarf2_per_objfile->dwo_files == NULL)
11814     dwarf2_per_objfile->dwo_files
11815       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11816
11817   memset (&find_entry, 0, sizeof (find_entry));
11818   find_entry.dwo_name = dwo_name;
11819   find_entry.comp_dir = comp_dir;
11820   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11821
11822   return slot;
11823 }
11824
11825 static hashval_t
11826 hash_dwo_unit (const void *item)
11827 {
11828   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11829
11830   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11831   return dwo_unit->signature;
11832 }
11833
11834 static int
11835 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11836 {
11837   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11838   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11839
11840   /* The signature is assumed to be unique within the DWO file.
11841      So while object file CU dwo_id's always have the value zero,
11842      that's OK, assuming each object file DWO file has only one CU,
11843      and that's the rule for now.  */
11844   return lhs->signature == rhs->signature;
11845 }
11846
11847 /* Allocate a hash table for DWO CUs,TUs.
11848    There is one of these tables for each of CUs,TUs for each DWO file.  */
11849
11850 static htab_t
11851 allocate_dwo_unit_table (struct objfile *objfile)
11852 {
11853   /* Start out with a pretty small number.
11854      Generally DWO files contain only one CU and maybe some TUs.  */
11855   return htab_create_alloc_ex (3,
11856                                hash_dwo_unit,
11857                                eq_dwo_unit,
11858                                NULL,
11859                                &objfile->objfile_obstack,
11860                                hashtab_obstack_allocate,
11861                                dummy_obstack_deallocate);
11862 }
11863
11864 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11865
11866 struct create_dwo_cu_data
11867 {
11868   struct dwo_file *dwo_file;
11869   struct dwo_unit dwo_unit;
11870 };
11871
11872 /* die_reader_func for create_dwo_cu.  */
11873
11874 static void
11875 create_dwo_cu_reader (const struct die_reader_specs *reader,
11876                       const gdb_byte *info_ptr,
11877                       struct die_info *comp_unit_die,
11878                       int has_children,
11879                       void *datap)
11880 {
11881   struct dwarf2_cu *cu = reader->cu;
11882   sect_offset sect_off = cu->per_cu->sect_off;
11883   struct dwarf2_section_info *section = cu->per_cu->section;
11884   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11885   struct dwo_file *dwo_file = data->dwo_file;
11886   struct dwo_unit *dwo_unit = &data->dwo_unit;
11887   struct attribute *attr;
11888
11889   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11890   if (attr == NULL)
11891     {
11892       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11893                    " its dwo_id [in module %s]"),
11894                  sect_offset_str (sect_off), dwo_file->dwo_name);
11895       return;
11896     }
11897
11898   dwo_unit->dwo_file = dwo_file;
11899   dwo_unit->signature = DW_UNSND (attr);
11900   dwo_unit->section = section;
11901   dwo_unit->sect_off = sect_off;
11902   dwo_unit->length = cu->per_cu->length;
11903
11904   if (dwarf_read_debug)
11905     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11906                         sect_offset_str (sect_off),
11907                         hex_string (dwo_unit->signature));
11908 }
11909
11910 /* Create the dwo_units for the CUs in a DWO_FILE.
11911    Note: This function processes DWO files only, not DWP files.  */
11912
11913 static void
11914 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11915                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11916                        htab_t &cus_htab)
11917 {
11918   struct objfile *objfile = dwarf2_per_objfile->objfile;
11919   const gdb_byte *info_ptr, *end_ptr;
11920
11921   dwarf2_read_section (objfile, &section);
11922   info_ptr = section.buffer;
11923
11924   if (info_ptr == NULL)
11925     return;
11926
11927   if (dwarf_read_debug)
11928     {
11929       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11930                           get_section_name (&section),
11931                           get_section_file_name (&section));
11932     }
11933
11934   end_ptr = info_ptr + section.size;
11935   while (info_ptr < end_ptr)
11936     {
11937       struct dwarf2_per_cu_data per_cu;
11938       struct create_dwo_cu_data create_dwo_cu_data;
11939       struct dwo_unit *dwo_unit;
11940       void **slot;
11941       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11942
11943       memset (&create_dwo_cu_data.dwo_unit, 0,
11944               sizeof (create_dwo_cu_data.dwo_unit));
11945       memset (&per_cu, 0, sizeof (per_cu));
11946       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11947       per_cu.is_debug_types = 0;
11948       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11949       per_cu.section = &section;
11950       create_dwo_cu_data.dwo_file = &dwo_file;
11951
11952       init_cutu_and_read_dies_no_follow (
11953           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11954       info_ptr += per_cu.length;
11955
11956       // If the unit could not be parsed, skip it.
11957       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11958         continue;
11959
11960       if (cus_htab == NULL)
11961         cus_htab = allocate_dwo_unit_table (objfile);
11962
11963       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11964       *dwo_unit = create_dwo_cu_data.dwo_unit;
11965       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11966       gdb_assert (slot != NULL);
11967       if (*slot != NULL)
11968         {
11969           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11970           sect_offset dup_sect_off = dup_cu->sect_off;
11971
11972           complaint (_("debug cu entry at offset %s is duplicate to"
11973                        " the entry at offset %s, signature %s"),
11974                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11975                      hex_string (dwo_unit->signature));
11976         }
11977       *slot = (void *)dwo_unit;
11978     }
11979 }
11980
11981 /* DWP file .debug_{cu,tu}_index section format:
11982    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11983
11984    DWP Version 1:
11985
11986    Both index sections have the same format, and serve to map a 64-bit
11987    signature to a set of section numbers.  Each section begins with a header,
11988    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11989    indexes, and a pool of 32-bit section numbers.  The index sections will be
11990    aligned at 8-byte boundaries in the file.
11991
11992    The index section header consists of:
11993
11994     V, 32 bit version number
11995     -, 32 bits unused
11996     N, 32 bit number of compilation units or type units in the index
11997     M, 32 bit number of slots in the hash table
11998
11999    Numbers are recorded using the byte order of the application binary.
12000
12001    The hash table begins at offset 16 in the section, and consists of an array
12002    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12003    order of the application binary).  Unused slots in the hash table are 0.
12004    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12005
12006    The parallel table begins immediately after the hash table
12007    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12008    array of 32-bit indexes (using the byte order of the application binary),
12009    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12010    table contains a 32-bit index into the pool of section numbers.  For unused
12011    hash table slots, the corresponding entry in the parallel table will be 0.
12012
12013    The pool of section numbers begins immediately following the hash table
12014    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12015    section numbers consists of an array of 32-bit words (using the byte order
12016    of the application binary).  Each item in the array is indexed starting
12017    from 0.  The hash table entry provides the index of the first section
12018    number in the set.  Additional section numbers in the set follow, and the
12019    set is terminated by a 0 entry (section number 0 is not used in ELF).
12020
12021    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12022    section must be the first entry in the set, and the .debug_abbrev.dwo must
12023    be the second entry. Other members of the set may follow in any order.
12024
12025    ---
12026
12027    DWP Version 2:
12028
12029    DWP Version 2 combines all the .debug_info, etc. sections into one,
12030    and the entries in the index tables are now offsets into these sections.
12031    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12032    section.
12033
12034    Index Section Contents:
12035     Header
12036     Hash Table of Signatures   dwp_hash_table.hash_table
12037     Parallel Table of Indices  dwp_hash_table.unit_table
12038     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12039     Table of Section Sizes     dwp_hash_table.v2.sizes
12040
12041    The index section header consists of:
12042
12043     V, 32 bit version number
12044     L, 32 bit number of columns in the table of section offsets
12045     N, 32 bit number of compilation units or type units in the index
12046     M, 32 bit number of slots in the hash table
12047
12048    Numbers are recorded using the byte order of the application binary.
12049
12050    The hash table has the same format as version 1.
12051    The parallel table of indices has the same format as version 1,
12052    except that the entries are origin-1 indices into the table of sections
12053    offsets and the table of section sizes.
12054
12055    The table of offsets begins immediately following the parallel table
12056    (at offset 16 + 12 * M from the beginning of the section).  The table is
12057    a two-dimensional array of 32-bit words (using the byte order of the
12058    application binary), with L columns and N+1 rows, in row-major order.
12059    Each row in the array is indexed starting from 0.  The first row provides
12060    a key to the remaining rows: each column in this row provides an identifier
12061    for a debug section, and the offsets in the same column of subsequent rows
12062    refer to that section.  The section identifiers are:
12063
12064     DW_SECT_INFO         1  .debug_info.dwo
12065     DW_SECT_TYPES        2  .debug_types.dwo
12066     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12067     DW_SECT_LINE         4  .debug_line.dwo
12068     DW_SECT_LOC          5  .debug_loc.dwo
12069     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12070     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12071     DW_SECT_MACRO        8  .debug_macro.dwo
12072
12073    The offsets provided by the CU and TU index sections are the base offsets
12074    for the contributions made by each CU or TU to the corresponding section
12075    in the package file.  Each CU and TU header contains an abbrev_offset
12076    field, used to find the abbreviations table for that CU or TU within the
12077    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12078    be interpreted as relative to the base offset given in the index section.
12079    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12080    should be interpreted as relative to the base offset for .debug_line.dwo,
12081    and offsets into other debug sections obtained from DWARF attributes should
12082    also be interpreted as relative to the corresponding base offset.
12083
12084    The table of sizes begins immediately following the table of offsets.
12085    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12086    with L columns and N rows, in row-major order.  Each row in the array is
12087    indexed starting from 1 (row 0 is shared by the two tables).
12088
12089    ---
12090
12091    Hash table lookup is handled the same in version 1 and 2:
12092
12093    We assume that N and M will not exceed 2^32 - 1.
12094    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12095
12096    Given a 64-bit compilation unit signature or a type signature S, an entry
12097    in the hash table is located as follows:
12098
12099    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12100       the low-order k bits all set to 1.
12101
12102    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12103
12104    3) If the hash table entry at index H matches the signature, use that
12105       entry.  If the hash table entry at index H is unused (all zeroes),
12106       terminate the search: the signature is not present in the table.
12107
12108    4) Let H = (H + H') modulo M. Repeat at Step 3.
12109
12110    Because M > N and H' and M are relatively prime, the search is guaranteed
12111    to stop at an unused slot or find the match.  */
12112
12113 /* Create a hash table to map DWO IDs to their CU/TU entry in
12114    .debug_{info,types}.dwo in DWP_FILE.
12115    Returns NULL if there isn't one.
12116    Note: This function processes DWP files only, not DWO files.  */
12117
12118 static struct dwp_hash_table *
12119 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12120                        struct dwp_file *dwp_file, int is_debug_types)
12121 {
12122   struct objfile *objfile = dwarf2_per_objfile->objfile;
12123   bfd *dbfd = dwp_file->dbfd.get ();
12124   const gdb_byte *index_ptr, *index_end;
12125   struct dwarf2_section_info *index;
12126   uint32_t version, nr_columns, nr_units, nr_slots;
12127   struct dwp_hash_table *htab;
12128
12129   if (is_debug_types)
12130     index = &dwp_file->sections.tu_index;
12131   else
12132     index = &dwp_file->sections.cu_index;
12133
12134   if (dwarf2_section_empty_p (index))
12135     return NULL;
12136   dwarf2_read_section (objfile, index);
12137
12138   index_ptr = index->buffer;
12139   index_end = index_ptr + index->size;
12140
12141   version = read_4_bytes (dbfd, index_ptr);
12142   index_ptr += 4;
12143   if (version == 2)
12144     nr_columns = read_4_bytes (dbfd, index_ptr);
12145   else
12146     nr_columns = 0;
12147   index_ptr += 4;
12148   nr_units = read_4_bytes (dbfd, index_ptr);
12149   index_ptr += 4;
12150   nr_slots = read_4_bytes (dbfd, index_ptr);
12151   index_ptr += 4;
12152
12153   if (version != 1 && version != 2)
12154     {
12155       error (_("Dwarf Error: unsupported DWP file version (%s)"
12156                " [in module %s]"),
12157              pulongest (version), dwp_file->name);
12158     }
12159   if (nr_slots != (nr_slots & -nr_slots))
12160     {
12161       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12162                " is not power of 2 [in module %s]"),
12163              pulongest (nr_slots), dwp_file->name);
12164     }
12165
12166   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12167   htab->version = version;
12168   htab->nr_columns = nr_columns;
12169   htab->nr_units = nr_units;
12170   htab->nr_slots = nr_slots;
12171   htab->hash_table = index_ptr;
12172   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12173
12174   /* Exit early if the table is empty.  */
12175   if (nr_slots == 0 || nr_units == 0
12176       || (version == 2 && nr_columns == 0))
12177     {
12178       /* All must be zero.  */
12179       if (nr_slots != 0 || nr_units != 0
12180           || (version == 2 && nr_columns != 0))
12181         {
12182           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12183                        " all zero [in modules %s]"),
12184                      dwp_file->name);
12185         }
12186       return htab;
12187     }
12188
12189   if (version == 1)
12190     {
12191       htab->section_pool.v1.indices =
12192         htab->unit_table + sizeof (uint32_t) * nr_slots;
12193       /* It's harder to decide whether the section is too small in v1.
12194          V1 is deprecated anyway so we punt.  */
12195     }
12196   else
12197     {
12198       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12199       int *ids = htab->section_pool.v2.section_ids;
12200       /* Reverse map for error checking.  */
12201       int ids_seen[DW_SECT_MAX + 1];
12202       int i;
12203
12204       if (nr_columns < 2)
12205         {
12206           error (_("Dwarf Error: bad DWP hash table, too few columns"
12207                    " in section table [in module %s]"),
12208                  dwp_file->name);
12209         }
12210       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12211         {
12212           error (_("Dwarf Error: bad DWP hash table, too many columns"
12213                    " in section table [in module %s]"),
12214                  dwp_file->name);
12215         }
12216       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12217       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12218       for (i = 0; i < nr_columns; ++i)
12219         {
12220           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12221
12222           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12223             {
12224               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12225                        " in section table [in module %s]"),
12226                      id, dwp_file->name);
12227             }
12228           if (ids_seen[id] != -1)
12229             {
12230               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12231                        " id %d in section table [in module %s]"),
12232                      id, dwp_file->name);
12233             }
12234           ids_seen[id] = i;
12235           ids[i] = id;
12236         }
12237       /* Must have exactly one info or types section.  */
12238       if (((ids_seen[DW_SECT_INFO] != -1)
12239            + (ids_seen[DW_SECT_TYPES] != -1))
12240           != 1)
12241         {
12242           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12243                    " DWO info/types section [in module %s]"),
12244                  dwp_file->name);
12245         }
12246       /* Must have an abbrev section.  */
12247       if (ids_seen[DW_SECT_ABBREV] == -1)
12248         {
12249           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12250                    " section [in module %s]"),
12251                  dwp_file->name);
12252         }
12253       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12254       htab->section_pool.v2.sizes =
12255         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12256                                          * nr_units * nr_columns);
12257       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12258                                           * nr_units * nr_columns))
12259           > index_end)
12260         {
12261           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12262                    " [in module %s]"),
12263                  dwp_file->name);
12264         }
12265     }
12266
12267   return htab;
12268 }
12269
12270 /* Update SECTIONS with the data from SECTP.
12271
12272    This function is like the other "locate" section routines that are
12273    passed to bfd_map_over_sections, but in this context the sections to
12274    read comes from the DWP V1 hash table, not the full ELF section table.
12275
12276    The result is non-zero for success, or zero if an error was found.  */
12277
12278 static int
12279 locate_v1_virtual_dwo_sections (asection *sectp,
12280                                 struct virtual_v1_dwo_sections *sections)
12281 {
12282   const struct dwop_section_names *names = &dwop_section_names;
12283
12284   if (section_is_p (sectp->name, &names->abbrev_dwo))
12285     {
12286       /* There can be only one.  */
12287       if (sections->abbrev.s.section != NULL)
12288         return 0;
12289       sections->abbrev.s.section = sectp;
12290       sections->abbrev.size = bfd_get_section_size (sectp);
12291     }
12292   else if (section_is_p (sectp->name, &names->info_dwo)
12293            || section_is_p (sectp->name, &names->types_dwo))
12294     {
12295       /* There can be only one.  */
12296       if (sections->info_or_types.s.section != NULL)
12297         return 0;
12298       sections->info_or_types.s.section = sectp;
12299       sections->info_or_types.size = bfd_get_section_size (sectp);
12300     }
12301   else if (section_is_p (sectp->name, &names->line_dwo))
12302     {
12303       /* There can be only one.  */
12304       if (sections->line.s.section != NULL)
12305         return 0;
12306       sections->line.s.section = sectp;
12307       sections->line.size = bfd_get_section_size (sectp);
12308     }
12309   else if (section_is_p (sectp->name, &names->loc_dwo))
12310     {
12311       /* There can be only one.  */
12312       if (sections->loc.s.section != NULL)
12313         return 0;
12314       sections->loc.s.section = sectp;
12315       sections->loc.size = bfd_get_section_size (sectp);
12316     }
12317   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12318     {
12319       /* There can be only one.  */
12320       if (sections->macinfo.s.section != NULL)
12321         return 0;
12322       sections->macinfo.s.section = sectp;
12323       sections->macinfo.size = bfd_get_section_size (sectp);
12324     }
12325   else if (section_is_p (sectp->name, &names->macro_dwo))
12326     {
12327       /* There can be only one.  */
12328       if (sections->macro.s.section != NULL)
12329         return 0;
12330       sections->macro.s.section = sectp;
12331       sections->macro.size = bfd_get_section_size (sectp);
12332     }
12333   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12334     {
12335       /* There can be only one.  */
12336       if (sections->str_offsets.s.section != NULL)
12337         return 0;
12338       sections->str_offsets.s.section = sectp;
12339       sections->str_offsets.size = bfd_get_section_size (sectp);
12340     }
12341   else
12342     {
12343       /* No other kind of section is valid.  */
12344       return 0;
12345     }
12346
12347   return 1;
12348 }
12349
12350 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12351    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12352    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12353    This is for DWP version 1 files.  */
12354
12355 static struct dwo_unit *
12356 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12357                            struct dwp_file *dwp_file,
12358                            uint32_t unit_index,
12359                            const char *comp_dir,
12360                            ULONGEST signature, int is_debug_types)
12361 {
12362   struct objfile *objfile = dwarf2_per_objfile->objfile;
12363   const struct dwp_hash_table *dwp_htab =
12364     is_debug_types ? dwp_file->tus : dwp_file->cus;
12365   bfd *dbfd = dwp_file->dbfd.get ();
12366   const char *kind = is_debug_types ? "TU" : "CU";
12367   struct dwo_file *dwo_file;
12368   struct dwo_unit *dwo_unit;
12369   struct virtual_v1_dwo_sections sections;
12370   void **dwo_file_slot;
12371   int i;
12372
12373   gdb_assert (dwp_file->version == 1);
12374
12375   if (dwarf_read_debug)
12376     {
12377       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12378                           kind,
12379                           pulongest (unit_index), hex_string (signature),
12380                           dwp_file->name);
12381     }
12382
12383   /* Fetch the sections of this DWO unit.
12384      Put a limit on the number of sections we look for so that bad data
12385      doesn't cause us to loop forever.  */
12386
12387 #define MAX_NR_V1_DWO_SECTIONS \
12388   (1 /* .debug_info or .debug_types */ \
12389    + 1 /* .debug_abbrev */ \
12390    + 1 /* .debug_line */ \
12391    + 1 /* .debug_loc */ \
12392    + 1 /* .debug_str_offsets */ \
12393    + 1 /* .debug_macro or .debug_macinfo */ \
12394    + 1 /* trailing zero */)
12395
12396   memset (&sections, 0, sizeof (sections));
12397
12398   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12399     {
12400       asection *sectp;
12401       uint32_t section_nr =
12402         read_4_bytes (dbfd,
12403                       dwp_htab->section_pool.v1.indices
12404                       + (unit_index + i) * sizeof (uint32_t));
12405
12406       if (section_nr == 0)
12407         break;
12408       if (section_nr >= dwp_file->num_sections)
12409         {
12410           error (_("Dwarf Error: bad DWP hash table, section number too large"
12411                    " [in module %s]"),
12412                  dwp_file->name);
12413         }
12414
12415       sectp = dwp_file->elf_sections[section_nr];
12416       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12417         {
12418           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12419                    " [in module %s]"),
12420                  dwp_file->name);
12421         }
12422     }
12423
12424   if (i < 2
12425       || dwarf2_section_empty_p (&sections.info_or_types)
12426       || dwarf2_section_empty_p (&sections.abbrev))
12427     {
12428       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12429                " [in module %s]"),
12430              dwp_file->name);
12431     }
12432   if (i == MAX_NR_V1_DWO_SECTIONS)
12433     {
12434       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12435                " [in module %s]"),
12436              dwp_file->name);
12437     }
12438
12439   /* It's easier for the rest of the code if we fake a struct dwo_file and
12440      have dwo_unit "live" in that.  At least for now.
12441
12442      The DWP file can be made up of a random collection of CUs and TUs.
12443      However, for each CU + set of TUs that came from the same original DWO
12444      file, we can combine them back into a virtual DWO file to save space
12445      (fewer struct dwo_file objects to allocate).  Remember that for really
12446      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12447
12448   std::string virtual_dwo_name =
12449     string_printf ("virtual-dwo/%d-%d-%d-%d",
12450                    get_section_id (&sections.abbrev),
12451                    get_section_id (&sections.line),
12452                    get_section_id (&sections.loc),
12453                    get_section_id (&sections.str_offsets));
12454   /* Can we use an existing virtual DWO file?  */
12455   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12456                                         virtual_dwo_name.c_str (),
12457                                         comp_dir);
12458   /* Create one if necessary.  */
12459   if (*dwo_file_slot == NULL)
12460     {
12461       if (dwarf_read_debug)
12462         {
12463           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12464                               virtual_dwo_name.c_str ());
12465         }
12466       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12467       dwo_file->dwo_name
12468         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12469                                         virtual_dwo_name.c_str (),
12470                                         virtual_dwo_name.size ());
12471       dwo_file->comp_dir = comp_dir;
12472       dwo_file->sections.abbrev = sections.abbrev;
12473       dwo_file->sections.line = sections.line;
12474       dwo_file->sections.loc = sections.loc;
12475       dwo_file->sections.macinfo = sections.macinfo;
12476       dwo_file->sections.macro = sections.macro;
12477       dwo_file->sections.str_offsets = sections.str_offsets;
12478       /* The "str" section is global to the entire DWP file.  */
12479       dwo_file->sections.str = dwp_file->sections.str;
12480       /* The info or types section is assigned below to dwo_unit,
12481          there's no need to record it in dwo_file.
12482          Also, we can't simply record type sections in dwo_file because
12483          we record a pointer into the vector in dwo_unit.  As we collect more
12484          types we'll grow the vector and eventually have to reallocate space
12485          for it, invalidating all copies of pointers into the previous
12486          contents.  */
12487       *dwo_file_slot = dwo_file;
12488     }
12489   else
12490     {
12491       if (dwarf_read_debug)
12492         {
12493           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12494                               virtual_dwo_name.c_str ());
12495         }
12496       dwo_file = (struct dwo_file *) *dwo_file_slot;
12497     }
12498
12499   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12500   dwo_unit->dwo_file = dwo_file;
12501   dwo_unit->signature = signature;
12502   dwo_unit->section =
12503     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12504   *dwo_unit->section = sections.info_or_types;
12505   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12506
12507   return dwo_unit;
12508 }
12509
12510 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12511    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12512    piece within that section used by a TU/CU, return a virtual section
12513    of just that piece.  */
12514
12515 static struct dwarf2_section_info
12516 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12517                        struct dwarf2_section_info *section,
12518                        bfd_size_type offset, bfd_size_type size)
12519 {
12520   struct dwarf2_section_info result;
12521   asection *sectp;
12522
12523   gdb_assert (section != NULL);
12524   gdb_assert (!section->is_virtual);
12525
12526   memset (&result, 0, sizeof (result));
12527   result.s.containing_section = section;
12528   result.is_virtual = 1;
12529
12530   if (size == 0)
12531     return result;
12532
12533   sectp = get_section_bfd_section (section);
12534
12535   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12536      bounds of the real section.  This is a pretty-rare event, so just
12537      flag an error (easier) instead of a warning and trying to cope.  */
12538   if (sectp == NULL
12539       || offset + size > bfd_get_section_size (sectp))
12540     {
12541       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12542                " in section %s [in module %s]"),
12543              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12544              objfile_name (dwarf2_per_objfile->objfile));
12545     }
12546
12547   result.virtual_offset = offset;
12548   result.size = size;
12549   return result;
12550 }
12551
12552 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12553    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12554    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12555    This is for DWP version 2 files.  */
12556
12557 static struct dwo_unit *
12558 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12559                            struct dwp_file *dwp_file,
12560                            uint32_t unit_index,
12561                            const char *comp_dir,
12562                            ULONGEST signature, int is_debug_types)
12563 {
12564   struct objfile *objfile = dwarf2_per_objfile->objfile;
12565   const struct dwp_hash_table *dwp_htab =
12566     is_debug_types ? dwp_file->tus : dwp_file->cus;
12567   bfd *dbfd = dwp_file->dbfd.get ();
12568   const char *kind = is_debug_types ? "TU" : "CU";
12569   struct dwo_file *dwo_file;
12570   struct dwo_unit *dwo_unit;
12571   struct virtual_v2_dwo_sections sections;
12572   void **dwo_file_slot;
12573   int i;
12574
12575   gdb_assert (dwp_file->version == 2);
12576
12577   if (dwarf_read_debug)
12578     {
12579       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12580                           kind,
12581                           pulongest (unit_index), hex_string (signature),
12582                           dwp_file->name);
12583     }
12584
12585   /* Fetch the section offsets of this DWO unit.  */
12586
12587   memset (&sections, 0, sizeof (sections));
12588
12589   for (i = 0; i < dwp_htab->nr_columns; ++i)
12590     {
12591       uint32_t offset = read_4_bytes (dbfd,
12592                                       dwp_htab->section_pool.v2.offsets
12593                                       + (((unit_index - 1) * dwp_htab->nr_columns
12594                                           + i)
12595                                          * sizeof (uint32_t)));
12596       uint32_t size = read_4_bytes (dbfd,
12597                                     dwp_htab->section_pool.v2.sizes
12598                                     + (((unit_index - 1) * dwp_htab->nr_columns
12599                                         + i)
12600                                        * sizeof (uint32_t)));
12601
12602       switch (dwp_htab->section_pool.v2.section_ids[i])
12603         {
12604         case DW_SECT_INFO:
12605         case DW_SECT_TYPES:
12606           sections.info_or_types_offset = offset;
12607           sections.info_or_types_size = size;
12608           break;
12609         case DW_SECT_ABBREV:
12610           sections.abbrev_offset = offset;
12611           sections.abbrev_size = size;
12612           break;
12613         case DW_SECT_LINE:
12614           sections.line_offset = offset;
12615           sections.line_size = size;
12616           break;
12617         case DW_SECT_LOC:
12618           sections.loc_offset = offset;
12619           sections.loc_size = size;
12620           break;
12621         case DW_SECT_STR_OFFSETS:
12622           sections.str_offsets_offset = offset;
12623           sections.str_offsets_size = size;
12624           break;
12625         case DW_SECT_MACINFO:
12626           sections.macinfo_offset = offset;
12627           sections.macinfo_size = size;
12628           break;
12629         case DW_SECT_MACRO:
12630           sections.macro_offset = offset;
12631           sections.macro_size = size;
12632           break;
12633         }
12634     }
12635
12636   /* It's easier for the rest of the code if we fake a struct dwo_file and
12637      have dwo_unit "live" in that.  At least for now.
12638
12639      The DWP file can be made up of a random collection of CUs and TUs.
12640      However, for each CU + set of TUs that came from the same original DWO
12641      file, we can combine them back into a virtual DWO file to save space
12642      (fewer struct dwo_file objects to allocate).  Remember that for really
12643      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12644
12645   std::string virtual_dwo_name =
12646     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12647                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12648                    (long) (sections.line_size ? sections.line_offset : 0),
12649                    (long) (sections.loc_size ? sections.loc_offset : 0),
12650                    (long) (sections.str_offsets_size
12651                            ? sections.str_offsets_offset : 0));
12652   /* Can we use an existing virtual DWO file?  */
12653   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12654                                         virtual_dwo_name.c_str (),
12655                                         comp_dir);
12656   /* Create one if necessary.  */
12657   if (*dwo_file_slot == NULL)
12658     {
12659       if (dwarf_read_debug)
12660         {
12661           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12662                               virtual_dwo_name.c_str ());
12663         }
12664       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12665       dwo_file->dwo_name
12666         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12667                                         virtual_dwo_name.c_str (),
12668                                         virtual_dwo_name.size ());
12669       dwo_file->comp_dir = comp_dir;
12670       dwo_file->sections.abbrev =
12671         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12672                                sections.abbrev_offset, sections.abbrev_size);
12673       dwo_file->sections.line =
12674         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12675                                sections.line_offset, sections.line_size);
12676       dwo_file->sections.loc =
12677         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12678                                sections.loc_offset, sections.loc_size);
12679       dwo_file->sections.macinfo =
12680         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12681                                sections.macinfo_offset, sections.macinfo_size);
12682       dwo_file->sections.macro =
12683         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12684                                sections.macro_offset, sections.macro_size);
12685       dwo_file->sections.str_offsets =
12686         create_dwp_v2_section (dwarf2_per_objfile,
12687                                &dwp_file->sections.str_offsets,
12688                                sections.str_offsets_offset,
12689                                sections.str_offsets_size);
12690       /* The "str" section is global to the entire DWP file.  */
12691       dwo_file->sections.str = dwp_file->sections.str;
12692       /* The info or types section is assigned below to dwo_unit,
12693          there's no need to record it in dwo_file.
12694          Also, we can't simply record type sections in dwo_file because
12695          we record a pointer into the vector in dwo_unit.  As we collect more
12696          types we'll grow the vector and eventually have to reallocate space
12697          for it, invalidating all copies of pointers into the previous
12698          contents.  */
12699       *dwo_file_slot = dwo_file;
12700     }
12701   else
12702     {
12703       if (dwarf_read_debug)
12704         {
12705           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12706                               virtual_dwo_name.c_str ());
12707         }
12708       dwo_file = (struct dwo_file *) *dwo_file_slot;
12709     }
12710
12711   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12712   dwo_unit->dwo_file = dwo_file;
12713   dwo_unit->signature = signature;
12714   dwo_unit->section =
12715     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12716   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12717                                               is_debug_types
12718                                               ? &dwp_file->sections.types
12719                                               : &dwp_file->sections.info,
12720                                               sections.info_or_types_offset,
12721                                               sections.info_or_types_size);
12722   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12723
12724   return dwo_unit;
12725 }
12726
12727 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12728    Returns NULL if the signature isn't found.  */
12729
12730 static struct dwo_unit *
12731 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12732                         struct dwp_file *dwp_file, const char *comp_dir,
12733                         ULONGEST signature, int is_debug_types)
12734 {
12735   const struct dwp_hash_table *dwp_htab =
12736     is_debug_types ? dwp_file->tus : dwp_file->cus;
12737   bfd *dbfd = dwp_file->dbfd.get ();
12738   uint32_t mask = dwp_htab->nr_slots - 1;
12739   uint32_t hash = signature & mask;
12740   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12741   unsigned int i;
12742   void **slot;
12743   struct dwo_unit find_dwo_cu;
12744
12745   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12746   find_dwo_cu.signature = signature;
12747   slot = htab_find_slot (is_debug_types
12748                          ? dwp_file->loaded_tus
12749                          : dwp_file->loaded_cus,
12750                          &find_dwo_cu, INSERT);
12751
12752   if (*slot != NULL)
12753     return (struct dwo_unit *) *slot;
12754
12755   /* Use a for loop so that we don't loop forever on bad debug info.  */
12756   for (i = 0; i < dwp_htab->nr_slots; ++i)
12757     {
12758       ULONGEST signature_in_table;
12759
12760       signature_in_table =
12761         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12762       if (signature_in_table == signature)
12763         {
12764           uint32_t unit_index =
12765             read_4_bytes (dbfd,
12766                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12767
12768           if (dwp_file->version == 1)
12769             {
12770               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12771                                                  dwp_file, unit_index,
12772                                                  comp_dir, signature,
12773                                                  is_debug_types);
12774             }
12775           else
12776             {
12777               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12778                                                  dwp_file, unit_index,
12779                                                  comp_dir, signature,
12780                                                  is_debug_types);
12781             }
12782           return (struct dwo_unit *) *slot;
12783         }
12784       if (signature_in_table == 0)
12785         return NULL;
12786       hash = (hash + hash2) & mask;
12787     }
12788
12789   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12790            " [in module %s]"),
12791          dwp_file->name);
12792 }
12793
12794 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12795    Open the file specified by FILE_NAME and hand it off to BFD for
12796    preliminary analysis.  Return a newly initialized bfd *, which
12797    includes a canonicalized copy of FILE_NAME.
12798    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12799    SEARCH_CWD is true if the current directory is to be searched.
12800    It will be searched before debug-file-directory.
12801    If successful, the file is added to the bfd include table of the
12802    objfile's bfd (see gdb_bfd_record_inclusion).
12803    If unable to find/open the file, return NULL.
12804    NOTE: This function is derived from symfile_bfd_open.  */
12805
12806 static gdb_bfd_ref_ptr
12807 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12808                     const char *file_name, int is_dwp, int search_cwd)
12809 {
12810   int desc;
12811   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12812      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12813      to debug_file_directory.  */
12814   const char *search_path;
12815   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12816
12817   gdb::unique_xmalloc_ptr<char> search_path_holder;
12818   if (search_cwd)
12819     {
12820       if (*debug_file_directory != '\0')
12821         {
12822           search_path_holder.reset (concat (".", dirname_separator_string,
12823                                             debug_file_directory,
12824                                             (char *) NULL));
12825           search_path = search_path_holder.get ();
12826         }
12827       else
12828         search_path = ".";
12829     }
12830   else
12831     search_path = debug_file_directory;
12832
12833   openp_flags flags = OPF_RETURN_REALPATH;
12834   if (is_dwp)
12835     flags |= OPF_SEARCH_IN_PATH;
12836
12837   gdb::unique_xmalloc_ptr<char> absolute_name;
12838   desc = openp (search_path, flags, file_name,
12839                 O_RDONLY | O_BINARY, &absolute_name);
12840   if (desc < 0)
12841     return NULL;
12842
12843   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12844                                          gnutarget, desc));
12845   if (sym_bfd == NULL)
12846     return NULL;
12847   bfd_set_cacheable (sym_bfd.get (), 1);
12848
12849   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12850     return NULL;
12851
12852   /* Success.  Record the bfd as having been included by the objfile's bfd.
12853      This is important because things like demangled_names_hash lives in the
12854      objfile's per_bfd space and may have references to things like symbol
12855      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12856   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12857
12858   return sym_bfd;
12859 }
12860
12861 /* Try to open DWO file FILE_NAME.
12862    COMP_DIR is the DW_AT_comp_dir attribute.
12863    The result is the bfd handle of the file.
12864    If there is a problem finding or opening the file, return NULL.
12865    Upon success, the canonicalized path of the file is stored in the bfd,
12866    same as symfile_bfd_open.  */
12867
12868 static gdb_bfd_ref_ptr
12869 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12870                const char *file_name, const char *comp_dir)
12871 {
12872   if (IS_ABSOLUTE_PATH (file_name))
12873     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12874                                0 /*is_dwp*/, 0 /*search_cwd*/);
12875
12876   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12877
12878   if (comp_dir != NULL)
12879     {
12880       char *path_to_try = concat (comp_dir, SLASH_STRING,
12881                                   file_name, (char *) NULL);
12882
12883       /* NOTE: If comp_dir is a relative path, this will also try the
12884          search path, which seems useful.  */
12885       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12886                                                 path_to_try,
12887                                                 0 /*is_dwp*/,
12888                                                 1 /*search_cwd*/));
12889       xfree (path_to_try);
12890       if (abfd != NULL)
12891         return abfd;
12892     }
12893
12894   /* That didn't work, try debug-file-directory, which, despite its name,
12895      is a list of paths.  */
12896
12897   if (*debug_file_directory == '\0')
12898     return NULL;
12899
12900   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12901                              0 /*is_dwp*/, 1 /*search_cwd*/);
12902 }
12903
12904 /* This function is mapped across the sections and remembers the offset and
12905    size of each of the DWO debugging sections we are interested in.  */
12906
12907 static void
12908 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12909 {
12910   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12911   const struct dwop_section_names *names = &dwop_section_names;
12912
12913   if (section_is_p (sectp->name, &names->abbrev_dwo))
12914     {
12915       dwo_sections->abbrev.s.section = sectp;
12916       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12917     }
12918   else if (section_is_p (sectp->name, &names->info_dwo))
12919     {
12920       dwo_sections->info.s.section = sectp;
12921       dwo_sections->info.size = bfd_get_section_size (sectp);
12922     }
12923   else if (section_is_p (sectp->name, &names->line_dwo))
12924     {
12925       dwo_sections->line.s.section = sectp;
12926       dwo_sections->line.size = bfd_get_section_size (sectp);
12927     }
12928   else if (section_is_p (sectp->name, &names->loc_dwo))
12929     {
12930       dwo_sections->loc.s.section = sectp;
12931       dwo_sections->loc.size = bfd_get_section_size (sectp);
12932     }
12933   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12934     {
12935       dwo_sections->macinfo.s.section = sectp;
12936       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12937     }
12938   else if (section_is_p (sectp->name, &names->macro_dwo))
12939     {
12940       dwo_sections->macro.s.section = sectp;
12941       dwo_sections->macro.size = bfd_get_section_size (sectp);
12942     }
12943   else if (section_is_p (sectp->name, &names->str_dwo))
12944     {
12945       dwo_sections->str.s.section = sectp;
12946       dwo_sections->str.size = bfd_get_section_size (sectp);
12947     }
12948   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12949     {
12950       dwo_sections->str_offsets.s.section = sectp;
12951       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12952     }
12953   else if (section_is_p (sectp->name, &names->types_dwo))
12954     {
12955       struct dwarf2_section_info type_section;
12956
12957       memset (&type_section, 0, sizeof (type_section));
12958       type_section.s.section = sectp;
12959       type_section.size = bfd_get_section_size (sectp);
12960       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12961                      &type_section);
12962     }
12963 }
12964
12965 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12966    by PER_CU.  This is for the non-DWP case.
12967    The result is NULL if DWO_NAME can't be found.  */
12968
12969 static struct dwo_file *
12970 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12971                         const char *dwo_name, const char *comp_dir)
12972 {
12973   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12974   struct objfile *objfile = dwarf2_per_objfile->objfile;
12975
12976   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12977   if (dbfd == NULL)
12978     {
12979       if (dwarf_read_debug)
12980         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12981       return NULL;
12982     }
12983
12984   /* We use a unique pointer here, despite the obstack allocation,
12985      because a dwo_file needs some cleanup if it is abandoned.  */
12986   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12987                                         struct dwo_file));
12988   dwo_file->dwo_name = dwo_name;
12989   dwo_file->comp_dir = comp_dir;
12990   dwo_file->dbfd = dbfd.release ();
12991
12992   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12993                          &dwo_file->sections);
12994
12995   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12996                          dwo_file->cus);
12997
12998   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12999                                  dwo_file->sections.types, dwo_file->tus);
13000
13001   if (dwarf_read_debug)
13002     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13003
13004   return dwo_file.release ();
13005 }
13006
13007 /* This function is mapped across the sections and remembers the offset and
13008    size of each of the DWP debugging sections common to version 1 and 2 that
13009    we are interested in.  */
13010
13011 static void
13012 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13013                                    void *dwp_file_ptr)
13014 {
13015   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13016   const struct dwop_section_names *names = &dwop_section_names;
13017   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13018
13019   /* Record the ELF section number for later lookup: this is what the
13020      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13021   gdb_assert (elf_section_nr < dwp_file->num_sections);
13022   dwp_file->elf_sections[elf_section_nr] = sectp;
13023
13024   /* Look for specific sections that we need.  */
13025   if (section_is_p (sectp->name, &names->str_dwo))
13026     {
13027       dwp_file->sections.str.s.section = sectp;
13028       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13029     }
13030   else if (section_is_p (sectp->name, &names->cu_index))
13031     {
13032       dwp_file->sections.cu_index.s.section = sectp;
13033       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13034     }
13035   else if (section_is_p (sectp->name, &names->tu_index))
13036     {
13037       dwp_file->sections.tu_index.s.section = sectp;
13038       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13039     }
13040 }
13041
13042 /* This function is mapped across the sections and remembers the offset and
13043    size of each of the DWP version 2 debugging sections that we are interested
13044    in.  This is split into a separate function because we don't know if we
13045    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13046
13047 static void
13048 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13049 {
13050   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13051   const struct dwop_section_names *names = &dwop_section_names;
13052   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13053
13054   /* Record the ELF section number for later lookup: this is what the
13055      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13056   gdb_assert (elf_section_nr < dwp_file->num_sections);
13057   dwp_file->elf_sections[elf_section_nr] = sectp;
13058
13059   /* Look for specific sections that we need.  */
13060   if (section_is_p (sectp->name, &names->abbrev_dwo))
13061     {
13062       dwp_file->sections.abbrev.s.section = sectp;
13063       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13064     }
13065   else if (section_is_p (sectp->name, &names->info_dwo))
13066     {
13067       dwp_file->sections.info.s.section = sectp;
13068       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13069     }
13070   else if (section_is_p (sectp->name, &names->line_dwo))
13071     {
13072       dwp_file->sections.line.s.section = sectp;
13073       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13074     }
13075   else if (section_is_p (sectp->name, &names->loc_dwo))
13076     {
13077       dwp_file->sections.loc.s.section = sectp;
13078       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13079     }
13080   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13081     {
13082       dwp_file->sections.macinfo.s.section = sectp;
13083       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13084     }
13085   else if (section_is_p (sectp->name, &names->macro_dwo))
13086     {
13087       dwp_file->sections.macro.s.section = sectp;
13088       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13089     }
13090   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13091     {
13092       dwp_file->sections.str_offsets.s.section = sectp;
13093       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13094     }
13095   else if (section_is_p (sectp->name, &names->types_dwo))
13096     {
13097       dwp_file->sections.types.s.section = sectp;
13098       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13099     }
13100 }
13101
13102 /* Hash function for dwp_file loaded CUs/TUs.  */
13103
13104 static hashval_t
13105 hash_dwp_loaded_cutus (const void *item)
13106 {
13107   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13108
13109   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13110   return dwo_unit->signature;
13111 }
13112
13113 /* Equality function for dwp_file loaded CUs/TUs.  */
13114
13115 static int
13116 eq_dwp_loaded_cutus (const void *a, const void *b)
13117 {
13118   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13119   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13120
13121   return dua->signature == dub->signature;
13122 }
13123
13124 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13125
13126 static htab_t
13127 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13128 {
13129   return htab_create_alloc_ex (3,
13130                                hash_dwp_loaded_cutus,
13131                                eq_dwp_loaded_cutus,
13132                                NULL,
13133                                &objfile->objfile_obstack,
13134                                hashtab_obstack_allocate,
13135                                dummy_obstack_deallocate);
13136 }
13137
13138 /* Try to open DWP file FILE_NAME.
13139    The result is the bfd handle of the file.
13140    If there is a problem finding or opening the file, return NULL.
13141    Upon success, the canonicalized path of the file is stored in the bfd,
13142    same as symfile_bfd_open.  */
13143
13144 static gdb_bfd_ref_ptr
13145 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13146                const char *file_name)
13147 {
13148   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13149                                             1 /*is_dwp*/,
13150                                             1 /*search_cwd*/));
13151   if (abfd != NULL)
13152     return abfd;
13153
13154   /* Work around upstream bug 15652.
13155      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13156      [Whether that's a "bug" is debatable, but it is getting in our way.]
13157      We have no real idea where the dwp file is, because gdb's realpath-ing
13158      of the executable's path may have discarded the needed info.
13159      [IWBN if the dwp file name was recorded in the executable, akin to
13160      .gnu_debuglink, but that doesn't exist yet.]
13161      Strip the directory from FILE_NAME and search again.  */
13162   if (*debug_file_directory != '\0')
13163     {
13164       /* Don't implicitly search the current directory here.
13165          If the user wants to search "." to handle this case,
13166          it must be added to debug-file-directory.  */
13167       return try_open_dwop_file (dwarf2_per_objfile,
13168                                  lbasename (file_name), 1 /*is_dwp*/,
13169                                  0 /*search_cwd*/);
13170     }
13171
13172   return NULL;
13173 }
13174
13175 /* Initialize the use of the DWP file for the current objfile.
13176    By convention the name of the DWP file is ${objfile}.dwp.
13177    The result is NULL if it can't be found.  */
13178
13179 static std::unique_ptr<struct dwp_file>
13180 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13181 {
13182   struct objfile *objfile = dwarf2_per_objfile->objfile;
13183
13184   /* Try to find first .dwp for the binary file before any symbolic links
13185      resolving.  */
13186
13187   /* If the objfile is a debug file, find the name of the real binary
13188      file and get the name of dwp file from there.  */
13189   std::string dwp_name;
13190   if (objfile->separate_debug_objfile_backlink != NULL)
13191     {
13192       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13193       const char *backlink_basename = lbasename (backlink->original_name);
13194
13195       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13196     }
13197   else
13198     dwp_name = objfile->original_name;
13199
13200   dwp_name += ".dwp";
13201
13202   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13203   if (dbfd == NULL
13204       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13205     {
13206       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13207       dwp_name = objfile_name (objfile);
13208       dwp_name += ".dwp";
13209       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13210     }
13211
13212   if (dbfd == NULL)
13213     {
13214       if (dwarf_read_debug)
13215         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13216       return std::unique_ptr<dwp_file> ();
13217     }
13218
13219   const char *name = bfd_get_filename (dbfd.get ());
13220   std::unique_ptr<struct dwp_file> dwp_file
13221     (new struct dwp_file (name, std::move (dbfd)));
13222
13223   /* +1: section 0 is unused */
13224   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13225   dwp_file->elf_sections =
13226     OBSTACK_CALLOC (&objfile->objfile_obstack,
13227                     dwp_file->num_sections, asection *);
13228
13229   bfd_map_over_sections (dwp_file->dbfd.get (),
13230                          dwarf2_locate_common_dwp_sections,
13231                          dwp_file.get ());
13232
13233   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13234                                          0);
13235
13236   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13237                                          1);
13238
13239   /* The DWP file version is stored in the hash table.  Oh well.  */
13240   if (dwp_file->cus && dwp_file->tus
13241       && dwp_file->cus->version != dwp_file->tus->version)
13242     {
13243       /* Technically speaking, we should try to limp along, but this is
13244          pretty bizarre.  We use pulongest here because that's the established
13245          portability solution (e.g, we cannot use %u for uint32_t).  */
13246       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13247                " TU version %s [in DWP file %s]"),
13248              pulongest (dwp_file->cus->version),
13249              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13250     }
13251
13252   if (dwp_file->cus)
13253     dwp_file->version = dwp_file->cus->version;
13254   else if (dwp_file->tus)
13255     dwp_file->version = dwp_file->tus->version;
13256   else
13257     dwp_file->version = 2;
13258
13259   if (dwp_file->version == 2)
13260     bfd_map_over_sections (dwp_file->dbfd.get (),
13261                            dwarf2_locate_v2_dwp_sections,
13262                            dwp_file.get ());
13263
13264   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13265   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13266
13267   if (dwarf_read_debug)
13268     {
13269       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13270       fprintf_unfiltered (gdb_stdlog,
13271                           "    %s CUs, %s TUs\n",
13272                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13273                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13274     }
13275
13276   return dwp_file;
13277 }
13278
13279 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13280
13281 static struct dwp_file *
13282 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13283 {
13284   if (! dwarf2_per_objfile->dwp_checked)
13285     {
13286       dwarf2_per_objfile->dwp_file
13287         = open_and_init_dwp_file (dwarf2_per_objfile);
13288       dwarf2_per_objfile->dwp_checked = 1;
13289     }
13290   return dwarf2_per_objfile->dwp_file.get ();
13291 }
13292
13293 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13294    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13295    or in the DWP file for the objfile, referenced by THIS_UNIT.
13296    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13297    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13298
13299    This is called, for example, when wanting to read a variable with a
13300    complex location.  Therefore we don't want to do file i/o for every call.
13301    Therefore we don't want to look for a DWO file on every call.
13302    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13303    then we check if we've already seen DWO_NAME, and only THEN do we check
13304    for a DWO file.
13305
13306    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13307    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13308
13309 static struct dwo_unit *
13310 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13311                  const char *dwo_name, const char *comp_dir,
13312                  ULONGEST signature, int is_debug_types)
13313 {
13314   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13315   struct objfile *objfile = dwarf2_per_objfile->objfile;
13316   const char *kind = is_debug_types ? "TU" : "CU";
13317   void **dwo_file_slot;
13318   struct dwo_file *dwo_file;
13319   struct dwp_file *dwp_file;
13320
13321   /* First see if there's a DWP file.
13322      If we have a DWP file but didn't find the DWO inside it, don't
13323      look for the original DWO file.  It makes gdb behave differently
13324      depending on whether one is debugging in the build tree.  */
13325
13326   dwp_file = get_dwp_file (dwarf2_per_objfile);
13327   if (dwp_file != NULL)
13328     {
13329       const struct dwp_hash_table *dwp_htab =
13330         is_debug_types ? dwp_file->tus : dwp_file->cus;
13331
13332       if (dwp_htab != NULL)
13333         {
13334           struct dwo_unit *dwo_cutu =
13335             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13336                                     signature, is_debug_types);
13337
13338           if (dwo_cutu != NULL)
13339             {
13340               if (dwarf_read_debug)
13341                 {
13342                   fprintf_unfiltered (gdb_stdlog,
13343                                       "Virtual DWO %s %s found: @%s\n",
13344                                       kind, hex_string (signature),
13345                                       host_address_to_string (dwo_cutu));
13346                 }
13347               return dwo_cutu;
13348             }
13349         }
13350     }
13351   else
13352     {
13353       /* No DWP file, look for the DWO file.  */
13354
13355       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13356                                             dwo_name, comp_dir);
13357       if (*dwo_file_slot == NULL)
13358         {
13359           /* Read in the file and build a table of the CUs/TUs it contains.  */
13360           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13361         }
13362       /* NOTE: This will be NULL if unable to open the file.  */
13363       dwo_file = (struct dwo_file *) *dwo_file_slot;
13364
13365       if (dwo_file != NULL)
13366         {
13367           struct dwo_unit *dwo_cutu = NULL;
13368
13369           if (is_debug_types && dwo_file->tus)
13370             {
13371               struct dwo_unit find_dwo_cutu;
13372
13373               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13374               find_dwo_cutu.signature = signature;
13375               dwo_cutu
13376                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13377             }
13378           else if (!is_debug_types && dwo_file->cus)
13379             {
13380               struct dwo_unit find_dwo_cutu;
13381
13382               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13383               find_dwo_cutu.signature = signature;
13384               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13385                                                        &find_dwo_cutu);
13386             }
13387
13388           if (dwo_cutu != NULL)
13389             {
13390               if (dwarf_read_debug)
13391                 {
13392                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13393                                       kind, dwo_name, hex_string (signature),
13394                                       host_address_to_string (dwo_cutu));
13395                 }
13396               return dwo_cutu;
13397             }
13398         }
13399     }
13400
13401   /* We didn't find it.  This could mean a dwo_id mismatch, or
13402      someone deleted the DWO/DWP file, or the search path isn't set up
13403      correctly to find the file.  */
13404
13405   if (dwarf_read_debug)
13406     {
13407       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13408                           kind, dwo_name, hex_string (signature));
13409     }
13410
13411   /* This is a warning and not a complaint because it can be caused by
13412      pilot error (e.g., user accidentally deleting the DWO).  */
13413   {
13414     /* Print the name of the DWP file if we looked there, helps the user
13415        better diagnose the problem.  */
13416     std::string dwp_text;
13417
13418     if (dwp_file != NULL)
13419       dwp_text = string_printf (" [in DWP file %s]",
13420                                 lbasename (dwp_file->name));
13421
13422     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13423                " [in module %s]"),
13424              kind, dwo_name, hex_string (signature),
13425              dwp_text.c_str (),
13426              this_unit->is_debug_types ? "TU" : "CU",
13427              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13428   }
13429   return NULL;
13430 }
13431
13432 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13433    See lookup_dwo_cutu_unit for details.  */
13434
13435 static struct dwo_unit *
13436 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13437                       const char *dwo_name, const char *comp_dir,
13438                       ULONGEST signature)
13439 {
13440   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13441 }
13442
13443 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13444    See lookup_dwo_cutu_unit for details.  */
13445
13446 static struct dwo_unit *
13447 lookup_dwo_type_unit (struct signatured_type *this_tu,
13448                       const char *dwo_name, const char *comp_dir)
13449 {
13450   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13451 }
13452
13453 /* Traversal function for queue_and_load_all_dwo_tus.  */
13454
13455 static int
13456 queue_and_load_dwo_tu (void **slot, void *info)
13457 {
13458   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13459   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13460   ULONGEST signature = dwo_unit->signature;
13461   struct signatured_type *sig_type =
13462     lookup_dwo_signatured_type (per_cu->cu, signature);
13463
13464   if (sig_type != NULL)
13465     {
13466       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13467
13468       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13469          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13470          while processing PER_CU.  */
13471       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13472         load_full_type_unit (sig_cu);
13473       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13474     }
13475
13476   return 1;
13477 }
13478
13479 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13480    The DWO may have the only definition of the type, though it may not be
13481    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13482    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13483
13484 static void
13485 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13486 {
13487   struct dwo_unit *dwo_unit;
13488   struct dwo_file *dwo_file;
13489
13490   gdb_assert (!per_cu->is_debug_types);
13491   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13492   gdb_assert (per_cu->cu != NULL);
13493
13494   dwo_unit = per_cu->cu->dwo_unit;
13495   gdb_assert (dwo_unit != NULL);
13496
13497   dwo_file = dwo_unit->dwo_file;
13498   if (dwo_file->tus != NULL)
13499     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13500 }
13501
13502 /* Free all resources associated with DWO_FILE.
13503    Close the DWO file and munmap the sections.  */
13504
13505 static void
13506 free_dwo_file (struct dwo_file *dwo_file)
13507 {
13508   /* Note: dbfd is NULL for virtual DWO files.  */
13509   gdb_bfd_unref (dwo_file->dbfd);
13510
13511   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13512 }
13513
13514 /* Traversal function for free_dwo_files.  */
13515
13516 static int
13517 free_dwo_file_from_slot (void **slot, void *info)
13518 {
13519   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13520
13521   free_dwo_file (dwo_file);
13522
13523   return 1;
13524 }
13525
13526 /* Free all resources associated with DWO_FILES.  */
13527
13528 static void
13529 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13530 {
13531   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13532 }
13533 \f
13534 /* Read in various DIEs.  */
13535
13536 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13537    Inherit only the children of the DW_AT_abstract_origin DIE not being
13538    already referenced by DW_AT_abstract_origin from the children of the
13539    current DIE.  */
13540
13541 static void
13542 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13543 {
13544   struct die_info *child_die;
13545   sect_offset *offsetp;
13546   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13547   struct die_info *origin_die;
13548   /* Iterator of the ORIGIN_DIE children.  */
13549   struct die_info *origin_child_die;
13550   struct attribute *attr;
13551   struct dwarf2_cu *origin_cu;
13552   struct pending **origin_previous_list_in_scope;
13553
13554   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13555   if (!attr)
13556     return;
13557
13558   /* Note that following die references may follow to a die in a
13559      different cu.  */
13560
13561   origin_cu = cu;
13562   origin_die = follow_die_ref (die, attr, &origin_cu);
13563
13564   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13565      symbols in.  */
13566   origin_previous_list_in_scope = origin_cu->list_in_scope;
13567   origin_cu->list_in_scope = cu->list_in_scope;
13568
13569   if (die->tag != origin_die->tag
13570       && !(die->tag == DW_TAG_inlined_subroutine
13571            && origin_die->tag == DW_TAG_subprogram))
13572     complaint (_("DIE %s and its abstract origin %s have different tags"),
13573                sect_offset_str (die->sect_off),
13574                sect_offset_str (origin_die->sect_off));
13575
13576   std::vector<sect_offset> offsets;
13577
13578   for (child_die = die->child;
13579        child_die && child_die->tag;
13580        child_die = sibling_die (child_die))
13581     {
13582       struct die_info *child_origin_die;
13583       struct dwarf2_cu *child_origin_cu;
13584
13585       /* We are trying to process concrete instance entries:
13586          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13587          it's not relevant to our analysis here. i.e. detecting DIEs that are
13588          present in the abstract instance but not referenced in the concrete
13589          one.  */
13590       if (child_die->tag == DW_TAG_call_site
13591           || child_die->tag == DW_TAG_GNU_call_site)
13592         continue;
13593
13594       /* For each CHILD_DIE, find the corresponding child of
13595          ORIGIN_DIE.  If there is more than one layer of
13596          DW_AT_abstract_origin, follow them all; there shouldn't be,
13597          but GCC versions at least through 4.4 generate this (GCC PR
13598          40573).  */
13599       child_origin_die = child_die;
13600       child_origin_cu = cu;
13601       while (1)
13602         {
13603           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13604                               child_origin_cu);
13605           if (attr == NULL)
13606             break;
13607           child_origin_die = follow_die_ref (child_origin_die, attr,
13608                                              &child_origin_cu);
13609         }
13610
13611       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13612          counterpart may exist.  */
13613       if (child_origin_die != child_die)
13614         {
13615           if (child_die->tag != child_origin_die->tag
13616               && !(child_die->tag == DW_TAG_inlined_subroutine
13617                    && child_origin_die->tag == DW_TAG_subprogram))
13618             complaint (_("Child DIE %s and its abstract origin %s have "
13619                          "different tags"),
13620                        sect_offset_str (child_die->sect_off),
13621                        sect_offset_str (child_origin_die->sect_off));
13622           if (child_origin_die->parent != origin_die)
13623             complaint (_("Child DIE %s and its abstract origin %s have "
13624                          "different parents"),
13625                        sect_offset_str (child_die->sect_off),
13626                        sect_offset_str (child_origin_die->sect_off));
13627           else
13628             offsets.push_back (child_origin_die->sect_off);
13629         }
13630     }
13631   std::sort (offsets.begin (), offsets.end ());
13632   sect_offset *offsets_end = offsets.data () + offsets.size ();
13633   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13634     if (offsetp[-1] == *offsetp)
13635       complaint (_("Multiple children of DIE %s refer "
13636                    "to DIE %s as their abstract origin"),
13637                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13638
13639   offsetp = offsets.data ();
13640   origin_child_die = origin_die->child;
13641   while (origin_child_die && origin_child_die->tag)
13642     {
13643       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13644       while (offsetp < offsets_end
13645              && *offsetp < origin_child_die->sect_off)
13646         offsetp++;
13647       if (offsetp >= offsets_end
13648           || *offsetp > origin_child_die->sect_off)
13649         {
13650           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13651              Check whether we're already processing ORIGIN_CHILD_DIE.
13652              This can happen with mutually referenced abstract_origins.
13653              PR 16581.  */
13654           if (!origin_child_die->in_process)
13655             process_die (origin_child_die, origin_cu);
13656         }
13657       origin_child_die = sibling_die (origin_child_die);
13658     }
13659   origin_cu->list_in_scope = origin_previous_list_in_scope;
13660 }
13661
13662 static void
13663 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13664 {
13665   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13666   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13667   struct context_stack *newobj;
13668   CORE_ADDR lowpc;
13669   CORE_ADDR highpc;
13670   struct die_info *child_die;
13671   struct attribute *attr, *call_line, *call_file;
13672   const char *name;
13673   CORE_ADDR baseaddr;
13674   struct block *block;
13675   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13676   std::vector<struct symbol *> template_args;
13677   struct template_symbol *templ_func = NULL;
13678
13679   if (inlined_func)
13680     {
13681       /* If we do not have call site information, we can't show the
13682          caller of this inlined function.  That's too confusing, so
13683          only use the scope for local variables.  */
13684       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13685       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13686       if (call_line == NULL || call_file == NULL)
13687         {
13688           read_lexical_block_scope (die, cu);
13689           return;
13690         }
13691     }
13692
13693   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13694
13695   name = dwarf2_name (die, cu);
13696
13697   /* Ignore functions with missing or empty names.  These are actually
13698      illegal according to the DWARF standard.  */
13699   if (name == NULL)
13700     {
13701       complaint (_("missing name for subprogram DIE at %s"),
13702                  sect_offset_str (die->sect_off));
13703       return;
13704     }
13705
13706   /* Ignore functions with missing or invalid low and high pc attributes.  */
13707   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13708       <= PC_BOUNDS_INVALID)
13709     {
13710       attr = dwarf2_attr (die, DW_AT_external, cu);
13711       if (!attr || !DW_UNSND (attr))
13712         complaint (_("cannot get low and high bounds "
13713                      "for subprogram DIE at %s"),
13714                    sect_offset_str (die->sect_off));
13715       return;
13716     }
13717
13718   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13719   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13720
13721   /* If we have any template arguments, then we must allocate a
13722      different sort of symbol.  */
13723   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13724     {
13725       if (child_die->tag == DW_TAG_template_type_param
13726           || child_die->tag == DW_TAG_template_value_param)
13727         {
13728           templ_func = allocate_template_symbol (objfile);
13729           templ_func->subclass = SYMBOL_TEMPLATE;
13730           break;
13731         }
13732     }
13733
13734   newobj = cu->builder->push_context (0, lowpc);
13735   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13736                              (struct symbol *) templ_func);
13737
13738   /* If there is a location expression for DW_AT_frame_base, record
13739      it.  */
13740   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13741   if (attr)
13742     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13743
13744   /* If there is a location for the static link, record it.  */
13745   newobj->static_link = NULL;
13746   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13747   if (attr)
13748     {
13749       newobj->static_link
13750         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13751       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13752     }
13753
13754   cu->list_in_scope = cu->builder->get_local_symbols ();
13755
13756   if (die->child != NULL)
13757     {
13758       child_die = die->child;
13759       while (child_die && child_die->tag)
13760         {
13761           if (child_die->tag == DW_TAG_template_type_param
13762               || child_die->tag == DW_TAG_template_value_param)
13763             {
13764               struct symbol *arg = new_symbol (child_die, NULL, cu);
13765
13766               if (arg != NULL)
13767                 template_args.push_back (arg);
13768             }
13769           else
13770             process_die (child_die, cu);
13771           child_die = sibling_die (child_die);
13772         }
13773     }
13774
13775   inherit_abstract_dies (die, cu);
13776
13777   /* If we have a DW_AT_specification, we might need to import using
13778      directives from the context of the specification DIE.  See the
13779      comment in determine_prefix.  */
13780   if (cu->language == language_cplus
13781       && dwarf2_attr (die, DW_AT_specification, cu))
13782     {
13783       struct dwarf2_cu *spec_cu = cu;
13784       struct die_info *spec_die = die_specification (die, &spec_cu);
13785
13786       while (spec_die)
13787         {
13788           child_die = spec_die->child;
13789           while (child_die && child_die->tag)
13790             {
13791               if (child_die->tag == DW_TAG_imported_module)
13792                 process_die (child_die, spec_cu);
13793               child_die = sibling_die (child_die);
13794             }
13795
13796           /* In some cases, GCC generates specification DIEs that
13797              themselves contain DW_AT_specification attributes.  */
13798           spec_die = die_specification (spec_die, &spec_cu);
13799         }
13800     }
13801
13802   struct context_stack cstk = cu->builder->pop_context ();
13803   /* Make a block for the local symbols within.  */
13804   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13805                                      cstk.static_link, lowpc, highpc);
13806
13807   /* For C++, set the block's scope.  */
13808   if ((cu->language == language_cplus
13809        || cu->language == language_fortran
13810        || cu->language == language_d
13811        || cu->language == language_rust)
13812       && cu->processing_has_namespace_info)
13813     block_set_scope (block, determine_prefix (die, cu),
13814                      &objfile->objfile_obstack);
13815
13816   /* If we have address ranges, record them.  */
13817   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13818
13819   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13820
13821   /* Attach template arguments to function.  */
13822   if (!template_args.empty ())
13823     {
13824       gdb_assert (templ_func != NULL);
13825
13826       templ_func->n_template_arguments = template_args.size ();
13827       templ_func->template_arguments
13828         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13829                      templ_func->n_template_arguments);
13830       memcpy (templ_func->template_arguments,
13831               template_args.data (),
13832               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13833
13834       /* Make sure that the symtab is set on the new symbols.  Even
13835          though they don't appear in this symtab directly, other parts
13836          of gdb assume that symbols do, and this is reasonably
13837          true.  */
13838       for (struct symbol *sym : template_args)
13839         symbol_set_symtab (sym, symbol_symtab (templ_func));
13840     }
13841
13842   /* In C++, we can have functions nested inside functions (e.g., when
13843      a function declares a class that has methods).  This means that
13844      when we finish processing a function scope, we may need to go
13845      back to building a containing block's symbol lists.  */
13846   *cu->builder->get_local_symbols () = cstk.locals;
13847   cu->builder->set_local_using_directives (cstk.local_using_directives);
13848
13849   /* If we've finished processing a top-level function, subsequent
13850      symbols go in the file symbol list.  */
13851   if (cu->builder->outermost_context_p ())
13852     cu->list_in_scope = cu->builder->get_file_symbols ();
13853 }
13854
13855 /* Process all the DIES contained within a lexical block scope.  Start
13856    a new scope, process the dies, and then close the scope.  */
13857
13858 static void
13859 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13860 {
13861   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13862   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13863   CORE_ADDR lowpc, highpc;
13864   struct die_info *child_die;
13865   CORE_ADDR baseaddr;
13866
13867   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13868
13869   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13870   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13871      as multiple lexical blocks?  Handling children in a sane way would
13872      be nasty.  Might be easier to properly extend generic blocks to
13873      describe ranges.  */
13874   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13875     {
13876     case PC_BOUNDS_NOT_PRESENT:
13877       /* DW_TAG_lexical_block has no attributes, process its children as if
13878          there was no wrapping by that DW_TAG_lexical_block.
13879          GCC does no longer produces such DWARF since GCC r224161.  */
13880       for (child_die = die->child;
13881            child_die != NULL && child_die->tag;
13882            child_die = sibling_die (child_die))
13883         process_die (child_die, cu);
13884       return;
13885     case PC_BOUNDS_INVALID:
13886       return;
13887     }
13888   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13889   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13890
13891   cu->builder->push_context (0, lowpc);
13892   if (die->child != NULL)
13893     {
13894       child_die = die->child;
13895       while (child_die && child_die->tag)
13896         {
13897           process_die (child_die, cu);
13898           child_die = sibling_die (child_die);
13899         }
13900     }
13901   inherit_abstract_dies (die, cu);
13902   struct context_stack cstk = cu->builder->pop_context ();
13903
13904   if (*cu->builder->get_local_symbols () != NULL
13905       || (*cu->builder->get_local_using_directives ()) != NULL)
13906     {
13907       struct block *block
13908         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13909                                      cstk.start_addr, highpc);
13910
13911       /* Note that recording ranges after traversing children, as we
13912          do here, means that recording a parent's ranges entails
13913          walking across all its children's ranges as they appear in
13914          the address map, which is quadratic behavior.
13915
13916          It would be nicer to record the parent's ranges before
13917          traversing its children, simply overriding whatever you find
13918          there.  But since we don't even decide whether to create a
13919          block until after we've traversed its children, that's hard
13920          to do.  */
13921       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13922     }
13923   *cu->builder->get_local_symbols () = cstk.locals;
13924   cu->builder->set_local_using_directives (cstk.local_using_directives);
13925 }
13926
13927 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13928
13929 static void
13930 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13931 {
13932   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13933   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13934   CORE_ADDR pc, baseaddr;
13935   struct attribute *attr;
13936   struct call_site *call_site, call_site_local;
13937   void **slot;
13938   int nparams;
13939   struct die_info *child_die;
13940
13941   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13942
13943   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13944   if (attr == NULL)
13945     {
13946       /* This was a pre-DWARF-5 GNU extension alias
13947          for DW_AT_call_return_pc.  */
13948       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13949     }
13950   if (!attr)
13951     {
13952       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13953                    "DIE %s [in module %s]"),
13954                  sect_offset_str (die->sect_off), objfile_name (objfile));
13955       return;
13956     }
13957   pc = attr_value_as_address (attr) + baseaddr;
13958   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13959
13960   if (cu->call_site_htab == NULL)
13961     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13962                                                NULL, &objfile->objfile_obstack,
13963                                                hashtab_obstack_allocate, NULL);
13964   call_site_local.pc = pc;
13965   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13966   if (*slot != NULL)
13967     {
13968       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13969                    "DIE %s [in module %s]"),
13970                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13971                  objfile_name (objfile));
13972       return;
13973     }
13974
13975   /* Count parameters at the caller.  */
13976
13977   nparams = 0;
13978   for (child_die = die->child; child_die && child_die->tag;
13979        child_die = sibling_die (child_die))
13980     {
13981       if (child_die->tag != DW_TAG_call_site_parameter
13982           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13983         {
13984           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13985                        "DW_TAG_call_site child DIE %s [in module %s]"),
13986                      child_die->tag, sect_offset_str (child_die->sect_off),
13987                      objfile_name (objfile));
13988           continue;
13989         }
13990
13991       nparams++;
13992     }
13993
13994   call_site
13995     = ((struct call_site *)
13996        obstack_alloc (&objfile->objfile_obstack,
13997                       sizeof (*call_site)
13998                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13999   *slot = call_site;
14000   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14001   call_site->pc = pc;
14002
14003   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14004       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14005     {
14006       struct die_info *func_die;
14007
14008       /* Skip also over DW_TAG_inlined_subroutine.  */
14009       for (func_die = die->parent;
14010            func_die && func_die->tag != DW_TAG_subprogram
14011            && func_die->tag != DW_TAG_subroutine_type;
14012            func_die = func_die->parent);
14013
14014       /* DW_AT_call_all_calls is a superset
14015          of DW_AT_call_all_tail_calls.  */
14016       if (func_die
14017           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14018           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14019           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14020           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14021         {
14022           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14023              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14024              both the initial caller containing the real return address PC and
14025              the final callee containing the current PC of a chain of tail
14026              calls do not need to have the tail call list complete.  But any
14027              function candidate for a virtual tail call frame searched via
14028              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14029              determined unambiguously.  */
14030         }
14031       else
14032         {
14033           struct type *func_type = NULL;
14034
14035           if (func_die)
14036             func_type = get_die_type (func_die, cu);
14037           if (func_type != NULL)
14038             {
14039               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14040
14041               /* Enlist this call site to the function.  */
14042               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14043               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14044             }
14045           else
14046             complaint (_("Cannot find function owning DW_TAG_call_site "
14047                          "DIE %s [in module %s]"),
14048                        sect_offset_str (die->sect_off), objfile_name (objfile));
14049         }
14050     }
14051
14052   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14053   if (attr == NULL)
14054     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14055   if (attr == NULL)
14056     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14057   if (attr == NULL)
14058     {
14059       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14060       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14061     }
14062   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14063   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14064     /* Keep NULL DWARF_BLOCK.  */;
14065   else if (attr_form_is_block (attr))
14066     {
14067       struct dwarf2_locexpr_baton *dlbaton;
14068
14069       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14070       dlbaton->data = DW_BLOCK (attr)->data;
14071       dlbaton->size = DW_BLOCK (attr)->size;
14072       dlbaton->per_cu = cu->per_cu;
14073
14074       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14075     }
14076   else if (attr_form_is_ref (attr))
14077     {
14078       struct dwarf2_cu *target_cu = cu;
14079       struct die_info *target_die;
14080
14081       target_die = follow_die_ref (die, attr, &target_cu);
14082       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14083       if (die_is_declaration (target_die, target_cu))
14084         {
14085           const char *target_physname;
14086
14087           /* Prefer the mangled name; otherwise compute the demangled one.  */
14088           target_physname = dw2_linkage_name (target_die, target_cu);
14089           if (target_physname == NULL)
14090             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14091           if (target_physname == NULL)
14092             complaint (_("DW_AT_call_target target DIE has invalid "
14093                          "physname, for referencing DIE %s [in module %s]"),
14094                        sect_offset_str (die->sect_off), objfile_name (objfile));
14095           else
14096             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14097         }
14098       else
14099         {
14100           CORE_ADDR lowpc;
14101
14102           /* DW_AT_entry_pc should be preferred.  */
14103           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14104               <= PC_BOUNDS_INVALID)
14105             complaint (_("DW_AT_call_target target DIE has invalid "
14106                          "low pc, for referencing DIE %s [in module %s]"),
14107                        sect_offset_str (die->sect_off), objfile_name (objfile));
14108           else
14109             {
14110               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14111               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14112             }
14113         }
14114     }
14115   else
14116     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14117                  "block nor reference, for DIE %s [in module %s]"),
14118                sect_offset_str (die->sect_off), objfile_name (objfile));
14119
14120   call_site->per_cu = cu->per_cu;
14121
14122   for (child_die = die->child;
14123        child_die && child_die->tag;
14124        child_die = sibling_die (child_die))
14125     {
14126       struct call_site_parameter *parameter;
14127       struct attribute *loc, *origin;
14128
14129       if (child_die->tag != DW_TAG_call_site_parameter
14130           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14131         {
14132           /* Already printed the complaint above.  */
14133           continue;
14134         }
14135
14136       gdb_assert (call_site->parameter_count < nparams);
14137       parameter = &call_site->parameter[call_site->parameter_count];
14138
14139       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14140          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14141          register is contained in DW_AT_call_value.  */
14142
14143       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14144       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14145       if (origin == NULL)
14146         {
14147           /* This was a pre-DWARF-5 GNU extension alias
14148              for DW_AT_call_parameter.  */
14149           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14150         }
14151       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14152         {
14153           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14154
14155           sect_offset sect_off
14156             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14157           if (!offset_in_cu_p (&cu->header, sect_off))
14158             {
14159               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14160                  binding can be done only inside one CU.  Such referenced DIE
14161                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14162               complaint (_("DW_AT_call_parameter offset is not in CU for "
14163                            "DW_TAG_call_site child DIE %s [in module %s]"),
14164                          sect_offset_str (child_die->sect_off),
14165                          objfile_name (objfile));
14166               continue;
14167             }
14168           parameter->u.param_cu_off
14169             = (cu_offset) (sect_off - cu->header.sect_off);
14170         }
14171       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14172         {
14173           complaint (_("No DW_FORM_block* DW_AT_location for "
14174                        "DW_TAG_call_site child DIE %s [in module %s]"),
14175                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14176           continue;
14177         }
14178       else
14179         {
14180           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14181             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14182           if (parameter->u.dwarf_reg != -1)
14183             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14184           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14185                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14186                                              &parameter->u.fb_offset))
14187             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14188           else
14189             {
14190               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14191                            "for DW_FORM_block* DW_AT_location is supported for "
14192                            "DW_TAG_call_site child DIE %s "
14193                            "[in module %s]"),
14194                          sect_offset_str (child_die->sect_off),
14195                          objfile_name (objfile));
14196               continue;
14197             }
14198         }
14199
14200       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14201       if (attr == NULL)
14202         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14203       if (!attr_form_is_block (attr))
14204         {
14205           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14206                        "DW_TAG_call_site child DIE %s [in module %s]"),
14207                      sect_offset_str (child_die->sect_off),
14208                      objfile_name (objfile));
14209           continue;
14210         }
14211       parameter->value = DW_BLOCK (attr)->data;
14212       parameter->value_size = DW_BLOCK (attr)->size;
14213
14214       /* Parameters are not pre-cleared by memset above.  */
14215       parameter->data_value = NULL;
14216       parameter->data_value_size = 0;
14217       call_site->parameter_count++;
14218
14219       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14220       if (attr == NULL)
14221         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14222       if (attr)
14223         {
14224           if (!attr_form_is_block (attr))
14225             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14226                          "DW_TAG_call_site child DIE %s [in module %s]"),
14227                        sect_offset_str (child_die->sect_off),
14228                        objfile_name (objfile));
14229           else
14230             {
14231               parameter->data_value = DW_BLOCK (attr)->data;
14232               parameter->data_value_size = DW_BLOCK (attr)->size;
14233             }
14234         }
14235     }
14236 }
14237
14238 /* Helper function for read_variable.  If DIE represents a virtual
14239    table, then return the type of the concrete object that is
14240    associated with the virtual table.  Otherwise, return NULL.  */
14241
14242 static struct type *
14243 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14244 {
14245   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14246   if (attr == NULL)
14247     return NULL;
14248
14249   /* Find the type DIE.  */
14250   struct die_info *type_die = NULL;
14251   struct dwarf2_cu *type_cu = cu;
14252
14253   if (attr_form_is_ref (attr))
14254     type_die = follow_die_ref (die, attr, &type_cu);
14255   if (type_die == NULL)
14256     return NULL;
14257
14258   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14259     return NULL;
14260   return die_containing_type (type_die, type_cu);
14261 }
14262
14263 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14264
14265 static void
14266 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14267 {
14268   struct rust_vtable_symbol *storage = NULL;
14269
14270   if (cu->language == language_rust)
14271     {
14272       struct type *containing_type = rust_containing_type (die, cu);
14273
14274       if (containing_type != NULL)
14275         {
14276           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14277
14278           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14279                                     struct rust_vtable_symbol);
14280           initialize_objfile_symbol (storage);
14281           storage->concrete_type = containing_type;
14282           storage->subclass = SYMBOL_RUST_VTABLE;
14283         }
14284     }
14285
14286   new_symbol (die, NULL, cu, storage);
14287 }
14288
14289 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14290    reading .debug_rnglists.
14291    Callback's type should be:
14292     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14293    Return true if the attributes are present and valid, otherwise,
14294    return false.  */
14295
14296 template <typename Callback>
14297 static bool
14298 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14299                          Callback &&callback)
14300 {
14301   struct dwarf2_per_objfile *dwarf2_per_objfile
14302     = cu->per_cu->dwarf2_per_objfile;
14303   struct objfile *objfile = dwarf2_per_objfile->objfile;
14304   bfd *obfd = objfile->obfd;
14305   /* Base address selection entry.  */
14306   CORE_ADDR base;
14307   int found_base;
14308   const gdb_byte *buffer;
14309   CORE_ADDR baseaddr;
14310   bool overflow = false;
14311
14312   found_base = cu->base_known;
14313   base = cu->base_address;
14314
14315   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14316   if (offset >= dwarf2_per_objfile->rnglists.size)
14317     {
14318       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14319                  offset);
14320       return false;
14321     }
14322   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14323
14324   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14325
14326   while (1)
14327     {
14328       /* Initialize it due to a false compiler warning.  */
14329       CORE_ADDR range_beginning = 0, range_end = 0;
14330       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14331                                  + dwarf2_per_objfile->rnglists.size);
14332       unsigned int bytes_read;
14333
14334       if (buffer == buf_end)
14335         {
14336           overflow = true;
14337           break;
14338         }
14339       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14340       switch (rlet)
14341         {
14342         case DW_RLE_end_of_list:
14343           break;
14344         case DW_RLE_base_address:
14345           if (buffer + cu->header.addr_size > buf_end)
14346             {
14347               overflow = true;
14348               break;
14349             }
14350           base = read_address (obfd, buffer, cu, &bytes_read);
14351           found_base = 1;
14352           buffer += bytes_read;
14353           break;
14354         case DW_RLE_start_length:
14355           if (buffer + cu->header.addr_size > buf_end)
14356             {
14357               overflow = true;
14358               break;
14359             }
14360           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14361           buffer += bytes_read;
14362           range_end = (range_beginning
14363                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14364           buffer += bytes_read;
14365           if (buffer > buf_end)
14366             {
14367               overflow = true;
14368               break;
14369             }
14370           break;
14371         case DW_RLE_offset_pair:
14372           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14373           buffer += bytes_read;
14374           if (buffer > buf_end)
14375             {
14376               overflow = true;
14377               break;
14378             }
14379           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14380           buffer += bytes_read;
14381           if (buffer > buf_end)
14382             {
14383               overflow = true;
14384               break;
14385             }
14386           break;
14387         case DW_RLE_start_end:
14388           if (buffer + 2 * cu->header.addr_size > buf_end)
14389             {
14390               overflow = true;
14391               break;
14392             }
14393           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14394           buffer += bytes_read;
14395           range_end = read_address (obfd, buffer, cu, &bytes_read);
14396           buffer += bytes_read;
14397           break;
14398         default:
14399           complaint (_("Invalid .debug_rnglists data (no base address)"));
14400           return false;
14401         }
14402       if (rlet == DW_RLE_end_of_list || overflow)
14403         break;
14404       if (rlet == DW_RLE_base_address)
14405         continue;
14406
14407       if (!found_base)
14408         {
14409           /* We have no valid base address for the ranges
14410              data.  */
14411           complaint (_("Invalid .debug_rnglists data (no base address)"));
14412           return false;
14413         }
14414
14415       if (range_beginning > range_end)
14416         {
14417           /* Inverted range entries are invalid.  */
14418           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14419           return false;
14420         }
14421
14422       /* Empty range entries have no effect.  */
14423       if (range_beginning == range_end)
14424         continue;
14425
14426       range_beginning += base;
14427       range_end += base;
14428
14429       /* A not-uncommon case of bad debug info.
14430          Don't pollute the addrmap with bad data.  */
14431       if (range_beginning + baseaddr == 0
14432           && !dwarf2_per_objfile->has_section_at_zero)
14433         {
14434           complaint (_(".debug_rnglists entry has start address of zero"
14435                        " [in module %s]"), objfile_name (objfile));
14436           continue;
14437         }
14438
14439       callback (range_beginning, range_end);
14440     }
14441
14442   if (overflow)
14443     {
14444       complaint (_("Offset %d is not terminated "
14445                    "for DW_AT_ranges attribute"),
14446                  offset);
14447       return false;
14448     }
14449
14450   return true;
14451 }
14452
14453 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14454    Callback's type should be:
14455     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14456    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14457
14458 template <typename Callback>
14459 static int
14460 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14461                        Callback &&callback)
14462 {
14463   struct dwarf2_per_objfile *dwarf2_per_objfile
14464       = cu->per_cu->dwarf2_per_objfile;
14465   struct objfile *objfile = dwarf2_per_objfile->objfile;
14466   struct comp_unit_head *cu_header = &cu->header;
14467   bfd *obfd = objfile->obfd;
14468   unsigned int addr_size = cu_header->addr_size;
14469   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14470   /* Base address selection entry.  */
14471   CORE_ADDR base;
14472   int found_base;
14473   unsigned int dummy;
14474   const gdb_byte *buffer;
14475   CORE_ADDR baseaddr;
14476
14477   if (cu_header->version >= 5)
14478     return dwarf2_rnglists_process (offset, cu, callback);
14479
14480   found_base = cu->base_known;
14481   base = cu->base_address;
14482
14483   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14484   if (offset >= dwarf2_per_objfile->ranges.size)
14485     {
14486       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14487                  offset);
14488       return 0;
14489     }
14490   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14491
14492   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14493
14494   while (1)
14495     {
14496       CORE_ADDR range_beginning, range_end;
14497
14498       range_beginning = read_address (obfd, buffer, cu, &dummy);
14499       buffer += addr_size;
14500       range_end = read_address (obfd, buffer, cu, &dummy);
14501       buffer += addr_size;
14502       offset += 2 * addr_size;
14503
14504       /* An end of list marker is a pair of zero addresses.  */
14505       if (range_beginning == 0 && range_end == 0)
14506         /* Found the end of list entry.  */
14507         break;
14508
14509       /* Each base address selection entry is a pair of 2 values.
14510          The first is the largest possible address, the second is
14511          the base address.  Check for a base address here.  */
14512       if ((range_beginning & mask) == mask)
14513         {
14514           /* If we found the largest possible address, then we already
14515              have the base address in range_end.  */
14516           base = range_end;
14517           found_base = 1;
14518           continue;
14519         }
14520
14521       if (!found_base)
14522         {
14523           /* We have no valid base address for the ranges
14524              data.  */
14525           complaint (_("Invalid .debug_ranges data (no base address)"));
14526           return 0;
14527         }
14528
14529       if (range_beginning > range_end)
14530         {
14531           /* Inverted range entries are invalid.  */
14532           complaint (_("Invalid .debug_ranges data (inverted range)"));
14533           return 0;
14534         }
14535
14536       /* Empty range entries have no effect.  */
14537       if (range_beginning == range_end)
14538         continue;
14539
14540       range_beginning += base;
14541       range_end += base;
14542
14543       /* A not-uncommon case of bad debug info.
14544          Don't pollute the addrmap with bad data.  */
14545       if (range_beginning + baseaddr == 0
14546           && !dwarf2_per_objfile->has_section_at_zero)
14547         {
14548           complaint (_(".debug_ranges entry has start address of zero"
14549                        " [in module %s]"), objfile_name (objfile));
14550           continue;
14551         }
14552
14553       callback (range_beginning, range_end);
14554     }
14555
14556   return 1;
14557 }
14558
14559 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14560    Return 1 if the attributes are present and valid, otherwise, return 0.
14561    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14562
14563 static int
14564 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14565                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14566                     struct partial_symtab *ranges_pst)
14567 {
14568   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14569   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14570   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14571                                        SECT_OFF_TEXT (objfile));
14572   int low_set = 0;
14573   CORE_ADDR low = 0;
14574   CORE_ADDR high = 0;
14575   int retval;
14576
14577   retval = dwarf2_ranges_process (offset, cu,
14578     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14579     {
14580       if (ranges_pst != NULL)
14581         {
14582           CORE_ADDR lowpc;
14583           CORE_ADDR highpc;
14584
14585           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14586                                                range_beginning + baseaddr)
14587                    - baseaddr);
14588           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14589                                                 range_end + baseaddr)
14590                     - baseaddr);
14591           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14592                              ranges_pst);
14593         }
14594
14595       /* FIXME: This is recording everything as a low-high
14596          segment of consecutive addresses.  We should have a
14597          data structure for discontiguous block ranges
14598          instead.  */
14599       if (! low_set)
14600         {
14601           low = range_beginning;
14602           high = range_end;
14603           low_set = 1;
14604         }
14605       else
14606         {
14607           if (range_beginning < low)
14608             low = range_beginning;
14609           if (range_end > high)
14610             high = range_end;
14611         }
14612     });
14613   if (!retval)
14614     return 0;
14615
14616   if (! low_set)
14617     /* If the first entry is an end-of-list marker, the range
14618        describes an empty scope, i.e. no instructions.  */
14619     return 0;
14620
14621   if (low_return)
14622     *low_return = low;
14623   if (high_return)
14624     *high_return = high;
14625   return 1;
14626 }
14627
14628 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14629    definition for the return value.  *LOWPC and *HIGHPC are set iff
14630    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14631
14632 static enum pc_bounds_kind
14633 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14634                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14635                       struct partial_symtab *pst)
14636 {
14637   struct dwarf2_per_objfile *dwarf2_per_objfile
14638     = cu->per_cu->dwarf2_per_objfile;
14639   struct attribute *attr;
14640   struct attribute *attr_high;
14641   CORE_ADDR low = 0;
14642   CORE_ADDR high = 0;
14643   enum pc_bounds_kind ret;
14644
14645   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14646   if (attr_high)
14647     {
14648       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14649       if (attr)
14650         {
14651           low = attr_value_as_address (attr);
14652           high = attr_value_as_address (attr_high);
14653           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14654             high += low;
14655         }
14656       else
14657         /* Found high w/o low attribute.  */
14658         return PC_BOUNDS_INVALID;
14659
14660       /* Found consecutive range of addresses.  */
14661       ret = PC_BOUNDS_HIGH_LOW;
14662     }
14663   else
14664     {
14665       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14666       if (attr != NULL)
14667         {
14668           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14669              We take advantage of the fact that DW_AT_ranges does not appear
14670              in DW_TAG_compile_unit of DWO files.  */
14671           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14672           unsigned int ranges_offset = (DW_UNSND (attr)
14673                                         + (need_ranges_base
14674                                            ? cu->ranges_base
14675                                            : 0));
14676
14677           /* Value of the DW_AT_ranges attribute is the offset in the
14678              .debug_ranges section.  */
14679           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14680             return PC_BOUNDS_INVALID;
14681           /* Found discontinuous range of addresses.  */
14682           ret = PC_BOUNDS_RANGES;
14683         }
14684       else
14685         return PC_BOUNDS_NOT_PRESENT;
14686     }
14687
14688   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14689   if (high <= low)
14690     return PC_BOUNDS_INVALID;
14691
14692   /* When using the GNU linker, .gnu.linkonce. sections are used to
14693      eliminate duplicate copies of functions and vtables and such.
14694      The linker will arbitrarily choose one and discard the others.
14695      The AT_*_pc values for such functions refer to local labels in
14696      these sections.  If the section from that file was discarded, the
14697      labels are not in the output, so the relocs get a value of 0.
14698      If this is a discarded function, mark the pc bounds as invalid,
14699      so that GDB will ignore it.  */
14700   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14701     return PC_BOUNDS_INVALID;
14702
14703   *lowpc = low;
14704   if (highpc)
14705     *highpc = high;
14706   return ret;
14707 }
14708
14709 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14710    its low and high PC addresses.  Do nothing if these addresses could not
14711    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14712    and HIGHPC to the high address if greater than HIGHPC.  */
14713
14714 static void
14715 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14716                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14717                                  struct dwarf2_cu *cu)
14718 {
14719   CORE_ADDR low, high;
14720   struct die_info *child = die->child;
14721
14722   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14723     {
14724       *lowpc = std::min (*lowpc, low);
14725       *highpc = std::max (*highpc, high);
14726     }
14727
14728   /* If the language does not allow nested subprograms (either inside
14729      subprograms or lexical blocks), we're done.  */
14730   if (cu->language != language_ada)
14731     return;
14732
14733   /* Check all the children of the given DIE.  If it contains nested
14734      subprograms, then check their pc bounds.  Likewise, we need to
14735      check lexical blocks as well, as they may also contain subprogram
14736      definitions.  */
14737   while (child && child->tag)
14738     {
14739       if (child->tag == DW_TAG_subprogram
14740           || child->tag == DW_TAG_lexical_block)
14741         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14742       child = sibling_die (child);
14743     }
14744 }
14745
14746 /* Get the low and high pc's represented by the scope DIE, and store
14747    them in *LOWPC and *HIGHPC.  If the correct values can't be
14748    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14749
14750 static void
14751 get_scope_pc_bounds (struct die_info *die,
14752                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14753                      struct dwarf2_cu *cu)
14754 {
14755   CORE_ADDR best_low = (CORE_ADDR) -1;
14756   CORE_ADDR best_high = (CORE_ADDR) 0;
14757   CORE_ADDR current_low, current_high;
14758
14759   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14760       >= PC_BOUNDS_RANGES)
14761     {
14762       best_low = current_low;
14763       best_high = current_high;
14764     }
14765   else
14766     {
14767       struct die_info *child = die->child;
14768
14769       while (child && child->tag)
14770         {
14771           switch (child->tag) {
14772           case DW_TAG_subprogram:
14773             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14774             break;
14775           case DW_TAG_namespace:
14776           case DW_TAG_module:
14777             /* FIXME: carlton/2004-01-16: Should we do this for
14778                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14779                that current GCC's always emit the DIEs corresponding
14780                to definitions of methods of classes as children of a
14781                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14782                the DIEs giving the declarations, which could be
14783                anywhere).  But I don't see any reason why the
14784                standards says that they have to be there.  */
14785             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14786
14787             if (current_low != ((CORE_ADDR) -1))
14788               {
14789                 best_low = std::min (best_low, current_low);
14790                 best_high = std::max (best_high, current_high);
14791               }
14792             break;
14793           default:
14794             /* Ignore.  */
14795             break;
14796           }
14797
14798           child = sibling_die (child);
14799         }
14800     }
14801
14802   *lowpc = best_low;
14803   *highpc = best_high;
14804 }
14805
14806 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14807    in DIE.  */
14808
14809 static void
14810 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14811                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14812 {
14813   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14814   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14815   struct attribute *attr;
14816   struct attribute *attr_high;
14817
14818   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14819   if (attr_high)
14820     {
14821       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14822       if (attr)
14823         {
14824           CORE_ADDR low = attr_value_as_address (attr);
14825           CORE_ADDR high = attr_value_as_address (attr_high);
14826
14827           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14828             high += low;
14829
14830           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14831           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14832           cu->builder->record_block_range (block, low, high - 1);
14833         }
14834     }
14835
14836   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14837   if (attr)
14838     {
14839       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14840          We take advantage of the fact that DW_AT_ranges does not appear
14841          in DW_TAG_compile_unit of DWO files.  */
14842       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14843
14844       /* The value of the DW_AT_ranges attribute is the offset of the
14845          address range list in the .debug_ranges section.  */
14846       unsigned long offset = (DW_UNSND (attr)
14847                               + (need_ranges_base ? cu->ranges_base : 0));
14848
14849       dwarf2_ranges_process (offset, cu,
14850         [&] (CORE_ADDR start, CORE_ADDR end)
14851         {
14852           start += baseaddr;
14853           end += baseaddr;
14854           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14855           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14856           cu->builder->record_block_range (block, start, end - 1);
14857         });
14858     }
14859 }
14860
14861 /* Check whether the producer field indicates either of GCC < 4.6, or the
14862    Intel C/C++ compiler, and cache the result in CU.  */
14863
14864 static void
14865 check_producer (struct dwarf2_cu *cu)
14866 {
14867   int major, minor;
14868
14869   if (cu->producer == NULL)
14870     {
14871       /* For unknown compilers expect their behavior is DWARF version
14872          compliant.
14873
14874          GCC started to support .debug_types sections by -gdwarf-4 since
14875          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14876          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14877          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14878          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14879     }
14880   else if (producer_is_gcc (cu->producer, &major, &minor))
14881     {
14882       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14883       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14884     }
14885   else if (producer_is_icc (cu->producer, &major, &minor))
14886     cu->producer_is_icc_lt_14 = major < 14;
14887   else
14888     {
14889       /* For other non-GCC compilers, expect their behavior is DWARF version
14890          compliant.  */
14891     }
14892
14893   cu->checked_producer = 1;
14894 }
14895
14896 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14897    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14898    during 4.6.0 experimental.  */
14899
14900 static int
14901 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14902 {
14903   if (!cu->checked_producer)
14904     check_producer (cu);
14905
14906   return cu->producer_is_gxx_lt_4_6;
14907 }
14908
14909 /* Return the default accessibility type if it is not overriden by
14910    DW_AT_accessibility.  */
14911
14912 static enum dwarf_access_attribute
14913 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14914 {
14915   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14916     {
14917       /* The default DWARF 2 accessibility for members is public, the default
14918          accessibility for inheritance is private.  */
14919
14920       if (die->tag != DW_TAG_inheritance)
14921         return DW_ACCESS_public;
14922       else
14923         return DW_ACCESS_private;
14924     }
14925   else
14926     {
14927       /* DWARF 3+ defines the default accessibility a different way.  The same
14928          rules apply now for DW_TAG_inheritance as for the members and it only
14929          depends on the container kind.  */
14930
14931       if (die->parent->tag == DW_TAG_class_type)
14932         return DW_ACCESS_private;
14933       else
14934         return DW_ACCESS_public;
14935     }
14936 }
14937
14938 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14939    offset.  If the attribute was not found return 0, otherwise return
14940    1.  If it was found but could not properly be handled, set *OFFSET
14941    to 0.  */
14942
14943 static int
14944 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14945                              LONGEST *offset)
14946 {
14947   struct attribute *attr;
14948
14949   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14950   if (attr != NULL)
14951     {
14952       *offset = 0;
14953
14954       /* Note that we do not check for a section offset first here.
14955          This is because DW_AT_data_member_location is new in DWARF 4,
14956          so if we see it, we can assume that a constant form is really
14957          a constant and not a section offset.  */
14958       if (attr_form_is_constant (attr))
14959         *offset = dwarf2_get_attr_constant_value (attr, 0);
14960       else if (attr_form_is_section_offset (attr))
14961         dwarf2_complex_location_expr_complaint ();
14962       else if (attr_form_is_block (attr))
14963         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14964       else
14965         dwarf2_complex_location_expr_complaint ();
14966
14967       return 1;
14968     }
14969
14970   return 0;
14971 }
14972
14973 /* Add an aggregate field to the field list.  */
14974
14975 static void
14976 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14977                   struct dwarf2_cu *cu)
14978 {
14979   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14980   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14981   struct nextfield *new_field;
14982   struct attribute *attr;
14983   struct field *fp;
14984   const char *fieldname = "";
14985
14986   if (die->tag == DW_TAG_inheritance)
14987     {
14988       fip->baseclasses.emplace_back ();
14989       new_field = &fip->baseclasses.back ();
14990     }
14991   else
14992     {
14993       fip->fields.emplace_back ();
14994       new_field = &fip->fields.back ();
14995     }
14996
14997   fip->nfields++;
14998
14999   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15000   if (attr)
15001     new_field->accessibility = DW_UNSND (attr);
15002   else
15003     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15004   if (new_field->accessibility != DW_ACCESS_public)
15005     fip->non_public_fields = 1;
15006
15007   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15008   if (attr)
15009     new_field->virtuality = DW_UNSND (attr);
15010   else
15011     new_field->virtuality = DW_VIRTUALITY_none;
15012
15013   fp = &new_field->field;
15014
15015   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15016     {
15017       LONGEST offset;
15018
15019       /* Data member other than a C++ static data member.  */
15020
15021       /* Get type of field.  */
15022       fp->type = die_type (die, cu);
15023
15024       SET_FIELD_BITPOS (*fp, 0);
15025
15026       /* Get bit size of field (zero if none).  */
15027       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15028       if (attr)
15029         {
15030           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15031         }
15032       else
15033         {
15034           FIELD_BITSIZE (*fp) = 0;
15035         }
15036
15037       /* Get bit offset of field.  */
15038       if (handle_data_member_location (die, cu, &offset))
15039         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15040       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15041       if (attr)
15042         {
15043           if (gdbarch_bits_big_endian (gdbarch))
15044             {
15045               /* For big endian bits, the DW_AT_bit_offset gives the
15046                  additional bit offset from the MSB of the containing
15047                  anonymous object to the MSB of the field.  We don't
15048                  have to do anything special since we don't need to
15049                  know the size of the anonymous object.  */
15050               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15051             }
15052           else
15053             {
15054               /* For little endian bits, compute the bit offset to the
15055                  MSB of the anonymous object, subtract off the number of
15056                  bits from the MSB of the field to the MSB of the
15057                  object, and then subtract off the number of bits of
15058                  the field itself.  The result is the bit offset of
15059                  the LSB of the field.  */
15060               int anonymous_size;
15061               int bit_offset = DW_UNSND (attr);
15062
15063               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15064               if (attr)
15065                 {
15066                   /* The size of the anonymous object containing
15067                      the bit field is explicit, so use the
15068                      indicated size (in bytes).  */
15069                   anonymous_size = DW_UNSND (attr);
15070                 }
15071               else
15072                 {
15073                   /* The size of the anonymous object containing
15074                      the bit field must be inferred from the type
15075                      attribute of the data member containing the
15076                      bit field.  */
15077                   anonymous_size = TYPE_LENGTH (fp->type);
15078                 }
15079               SET_FIELD_BITPOS (*fp,
15080                                 (FIELD_BITPOS (*fp)
15081                                  + anonymous_size * bits_per_byte
15082                                  - bit_offset - FIELD_BITSIZE (*fp)));
15083             }
15084         }
15085       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15086       if (attr != NULL)
15087         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15088                                 + dwarf2_get_attr_constant_value (attr, 0)));
15089
15090       /* Get name of field.  */
15091       fieldname = dwarf2_name (die, cu);
15092       if (fieldname == NULL)
15093         fieldname = "";
15094
15095       /* The name is already allocated along with this objfile, so we don't
15096          need to duplicate it for the type.  */
15097       fp->name = fieldname;
15098
15099       /* Change accessibility for artificial fields (e.g. virtual table
15100          pointer or virtual base class pointer) to private.  */
15101       if (dwarf2_attr (die, DW_AT_artificial, cu))
15102         {
15103           FIELD_ARTIFICIAL (*fp) = 1;
15104           new_field->accessibility = DW_ACCESS_private;
15105           fip->non_public_fields = 1;
15106         }
15107     }
15108   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15109     {
15110       /* C++ static member.  */
15111
15112       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15113          is a declaration, but all versions of G++ as of this writing
15114          (so through at least 3.2.1) incorrectly generate
15115          DW_TAG_variable tags.  */
15116
15117       const char *physname;
15118
15119       /* Get name of field.  */
15120       fieldname = dwarf2_name (die, cu);
15121       if (fieldname == NULL)
15122         return;
15123
15124       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15125       if (attr
15126           /* Only create a symbol if this is an external value.
15127              new_symbol checks this and puts the value in the global symbol
15128              table, which we want.  If it is not external, new_symbol
15129              will try to put the value in cu->list_in_scope which is wrong.  */
15130           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15131         {
15132           /* A static const member, not much different than an enum as far as
15133              we're concerned, except that we can support more types.  */
15134           new_symbol (die, NULL, cu);
15135         }
15136
15137       /* Get physical name.  */
15138       physname = dwarf2_physname (fieldname, die, cu);
15139
15140       /* The name is already allocated along with this objfile, so we don't
15141          need to duplicate it for the type.  */
15142       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15143       FIELD_TYPE (*fp) = die_type (die, cu);
15144       FIELD_NAME (*fp) = fieldname;
15145     }
15146   else if (die->tag == DW_TAG_inheritance)
15147     {
15148       LONGEST offset;
15149
15150       /* C++ base class field.  */
15151       if (handle_data_member_location (die, cu, &offset))
15152         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15153       FIELD_BITSIZE (*fp) = 0;
15154       FIELD_TYPE (*fp) = die_type (die, cu);
15155       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15156     }
15157   else if (die->tag == DW_TAG_variant_part)
15158     {
15159       /* process_structure_scope will treat this DIE as a union.  */
15160       process_structure_scope (die, cu);
15161
15162       /* The variant part is relative to the start of the enclosing
15163          structure.  */
15164       SET_FIELD_BITPOS (*fp, 0);
15165       fp->type = get_die_type (die, cu);
15166       fp->artificial = 1;
15167       fp->name = "<<variant>>";
15168     }
15169   else
15170     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15171 }
15172
15173 /* Can the type given by DIE define another type?  */
15174
15175 static bool
15176 type_can_define_types (const struct die_info *die)
15177 {
15178   switch (die->tag)
15179     {
15180     case DW_TAG_typedef:
15181     case DW_TAG_class_type:
15182     case DW_TAG_structure_type:
15183     case DW_TAG_union_type:
15184     case DW_TAG_enumeration_type:
15185       return true;
15186
15187     default:
15188       return false;
15189     }
15190 }
15191
15192 /* Add a type definition defined in the scope of the FIP's class.  */
15193
15194 static void
15195 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15196                       struct dwarf2_cu *cu)
15197 {
15198   struct decl_field fp;
15199   memset (&fp, 0, sizeof (fp));
15200
15201   gdb_assert (type_can_define_types (die));
15202
15203   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15204   fp.name = dwarf2_name (die, cu);
15205   fp.type = read_type_die (die, cu);
15206
15207   /* Save accessibility.  */
15208   enum dwarf_access_attribute accessibility;
15209   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15210   if (attr != NULL)
15211     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15212   else
15213     accessibility = dwarf2_default_access_attribute (die, cu);
15214   switch (accessibility)
15215     {
15216     case DW_ACCESS_public:
15217       /* The assumed value if neither private nor protected.  */
15218       break;
15219     case DW_ACCESS_private:
15220       fp.is_private = 1;
15221       break;
15222     case DW_ACCESS_protected:
15223       fp.is_protected = 1;
15224       break;
15225     default:
15226       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15227     }
15228
15229   if (die->tag == DW_TAG_typedef)
15230     fip->typedef_field_list.push_back (fp);
15231   else
15232     fip->nested_types_list.push_back (fp);
15233 }
15234
15235 /* Create the vector of fields, and attach it to the type.  */
15236
15237 static void
15238 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15239                               struct dwarf2_cu *cu)
15240 {
15241   int nfields = fip->nfields;
15242
15243   /* Record the field count, allocate space for the array of fields,
15244      and create blank accessibility bitfields if necessary.  */
15245   TYPE_NFIELDS (type) = nfields;
15246   TYPE_FIELDS (type) = (struct field *)
15247     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15248
15249   if (fip->non_public_fields && cu->language != language_ada)
15250     {
15251       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15252
15253       TYPE_FIELD_PRIVATE_BITS (type) =
15254         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15255       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15256
15257       TYPE_FIELD_PROTECTED_BITS (type) =
15258         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15259       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15260
15261       TYPE_FIELD_IGNORE_BITS (type) =
15262         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15263       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15264     }
15265
15266   /* If the type has baseclasses, allocate and clear a bit vector for
15267      TYPE_FIELD_VIRTUAL_BITS.  */
15268   if (!fip->baseclasses.empty () && cu->language != language_ada)
15269     {
15270       int num_bytes = B_BYTES (fip->baseclasses.size ());
15271       unsigned char *pointer;
15272
15273       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15274       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15275       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15276       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15277       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15278     }
15279
15280   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15281     {
15282       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15283
15284       for (int index = 0; index < nfields; ++index)
15285         {
15286           struct nextfield &field = fip->fields[index];
15287
15288           if (field.variant.is_discriminant)
15289             di->discriminant_index = index;
15290           else if (field.variant.default_branch)
15291             di->default_index = index;
15292           else
15293             di->discriminants[index] = field.variant.discriminant_value;
15294         }
15295     }
15296
15297   /* Copy the saved-up fields into the field vector.  */
15298   for (int i = 0; i < nfields; ++i)
15299     {
15300       struct nextfield &field
15301         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15302            : fip->fields[i - fip->baseclasses.size ()]);
15303
15304       TYPE_FIELD (type, i) = field.field;
15305       switch (field.accessibility)
15306         {
15307         case DW_ACCESS_private:
15308           if (cu->language != language_ada)
15309             SET_TYPE_FIELD_PRIVATE (type, i);
15310           break;
15311
15312         case DW_ACCESS_protected:
15313           if (cu->language != language_ada)
15314             SET_TYPE_FIELD_PROTECTED (type, i);
15315           break;
15316
15317         case DW_ACCESS_public:
15318           break;
15319
15320         default:
15321           /* Unknown accessibility.  Complain and treat it as public.  */
15322           {
15323             complaint (_("unsupported accessibility %d"),
15324                        field.accessibility);
15325           }
15326           break;
15327         }
15328       if (i < fip->baseclasses.size ())
15329         {
15330           switch (field.virtuality)
15331             {
15332             case DW_VIRTUALITY_virtual:
15333             case DW_VIRTUALITY_pure_virtual:
15334               if (cu->language == language_ada)
15335                 error (_("unexpected virtuality in component of Ada type"));
15336               SET_TYPE_FIELD_VIRTUAL (type, i);
15337               break;
15338             }
15339         }
15340     }
15341 }
15342
15343 /* Return true if this member function is a constructor, false
15344    otherwise.  */
15345
15346 static int
15347 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15348 {
15349   const char *fieldname;
15350   const char *type_name;
15351   int len;
15352
15353   if (die->parent == NULL)
15354     return 0;
15355
15356   if (die->parent->tag != DW_TAG_structure_type
15357       && die->parent->tag != DW_TAG_union_type
15358       && die->parent->tag != DW_TAG_class_type)
15359     return 0;
15360
15361   fieldname = dwarf2_name (die, cu);
15362   type_name = dwarf2_name (die->parent, cu);
15363   if (fieldname == NULL || type_name == NULL)
15364     return 0;
15365
15366   len = strlen (fieldname);
15367   return (strncmp (fieldname, type_name, len) == 0
15368           && (type_name[len] == '\0' || type_name[len] == '<'));
15369 }
15370
15371 /* Add a member function to the proper fieldlist.  */
15372
15373 static void
15374 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15375                       struct type *type, struct dwarf2_cu *cu)
15376 {
15377   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15378   struct attribute *attr;
15379   int i;
15380   struct fnfieldlist *flp = nullptr;
15381   struct fn_field *fnp;
15382   const char *fieldname;
15383   struct type *this_type;
15384   enum dwarf_access_attribute accessibility;
15385
15386   if (cu->language == language_ada)
15387     error (_("unexpected member function in Ada type"));
15388
15389   /* Get name of member function.  */
15390   fieldname = dwarf2_name (die, cu);
15391   if (fieldname == NULL)
15392     return;
15393
15394   /* Look up member function name in fieldlist.  */
15395   for (i = 0; i < fip->fnfieldlists.size (); i++)
15396     {
15397       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15398         {
15399           flp = &fip->fnfieldlists[i];
15400           break;
15401         }
15402     }
15403
15404   /* Create a new fnfieldlist if necessary.  */
15405   if (flp == nullptr)
15406     {
15407       fip->fnfieldlists.emplace_back ();
15408       flp = &fip->fnfieldlists.back ();
15409       flp->name = fieldname;
15410       i = fip->fnfieldlists.size () - 1;
15411     }
15412
15413   /* Create a new member function field and add it to the vector of
15414      fnfieldlists.  */
15415   flp->fnfields.emplace_back ();
15416   fnp = &flp->fnfields.back ();
15417
15418   /* Delay processing of the physname until later.  */
15419   if (cu->language == language_cplus)
15420     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15421                         die, cu);
15422   else
15423     {
15424       const char *physname = dwarf2_physname (fieldname, die, cu);
15425       fnp->physname = physname ? physname : "";
15426     }
15427
15428   fnp->type = alloc_type (objfile);
15429   this_type = read_type_die (die, cu);
15430   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15431     {
15432       int nparams = TYPE_NFIELDS (this_type);
15433
15434       /* TYPE is the domain of this method, and THIS_TYPE is the type
15435            of the method itself (TYPE_CODE_METHOD).  */
15436       smash_to_method_type (fnp->type, type,
15437                             TYPE_TARGET_TYPE (this_type),
15438                             TYPE_FIELDS (this_type),
15439                             TYPE_NFIELDS (this_type),
15440                             TYPE_VARARGS (this_type));
15441
15442       /* Handle static member functions.
15443          Dwarf2 has no clean way to discern C++ static and non-static
15444          member functions.  G++ helps GDB by marking the first
15445          parameter for non-static member functions (which is the this
15446          pointer) as artificial.  We obtain this information from
15447          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15448       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15449         fnp->voffset = VOFFSET_STATIC;
15450     }
15451   else
15452     complaint (_("member function type missing for '%s'"),
15453                dwarf2_full_name (fieldname, die, cu));
15454
15455   /* Get fcontext from DW_AT_containing_type if present.  */
15456   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15457     fnp->fcontext = die_containing_type (die, cu);
15458
15459   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15460      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15461
15462   /* Get accessibility.  */
15463   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15464   if (attr)
15465     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15466   else
15467     accessibility = dwarf2_default_access_attribute (die, cu);
15468   switch (accessibility)
15469     {
15470     case DW_ACCESS_private:
15471       fnp->is_private = 1;
15472       break;
15473     case DW_ACCESS_protected:
15474       fnp->is_protected = 1;
15475       break;
15476     }
15477
15478   /* Check for artificial methods.  */
15479   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15480   if (attr && DW_UNSND (attr) != 0)
15481     fnp->is_artificial = 1;
15482
15483   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15484
15485   /* Get index in virtual function table if it is a virtual member
15486      function.  For older versions of GCC, this is an offset in the
15487      appropriate virtual table, as specified by DW_AT_containing_type.
15488      For everyone else, it is an expression to be evaluated relative
15489      to the object address.  */
15490
15491   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15492   if (attr)
15493     {
15494       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15495         {
15496           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15497             {
15498               /* Old-style GCC.  */
15499               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15500             }
15501           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15502                    || (DW_BLOCK (attr)->size > 1
15503                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15504                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15505             {
15506               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15507               if ((fnp->voffset % cu->header.addr_size) != 0)
15508                 dwarf2_complex_location_expr_complaint ();
15509               else
15510                 fnp->voffset /= cu->header.addr_size;
15511               fnp->voffset += 2;
15512             }
15513           else
15514             dwarf2_complex_location_expr_complaint ();
15515
15516           if (!fnp->fcontext)
15517             {
15518               /* If there is no `this' field and no DW_AT_containing_type,
15519                  we cannot actually find a base class context for the
15520                  vtable!  */
15521               if (TYPE_NFIELDS (this_type) == 0
15522                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15523                 {
15524                   complaint (_("cannot determine context for virtual member "
15525                                "function \"%s\" (offset %s)"),
15526                              fieldname, sect_offset_str (die->sect_off));
15527                 }
15528               else
15529                 {
15530                   fnp->fcontext
15531                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15532                 }
15533             }
15534         }
15535       else if (attr_form_is_section_offset (attr))
15536         {
15537           dwarf2_complex_location_expr_complaint ();
15538         }
15539       else
15540         {
15541           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15542                                                  fieldname);
15543         }
15544     }
15545   else
15546     {
15547       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15548       if (attr && DW_UNSND (attr))
15549         {
15550           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15551           complaint (_("Member function \"%s\" (offset %s) is virtual "
15552                        "but the vtable offset is not specified"),
15553                      fieldname, sect_offset_str (die->sect_off));
15554           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15555           TYPE_CPLUS_DYNAMIC (type) = 1;
15556         }
15557     }
15558 }
15559
15560 /* Create the vector of member function fields, and attach it to the type.  */
15561
15562 static void
15563 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15564                                  struct dwarf2_cu *cu)
15565 {
15566   if (cu->language == language_ada)
15567     error (_("unexpected member functions in Ada type"));
15568
15569   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15570   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15571     TYPE_ALLOC (type,
15572                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15573
15574   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15575     {
15576       struct fnfieldlist &nf = fip->fnfieldlists[i];
15577       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15578
15579       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15580       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15581       fn_flp->fn_fields = (struct fn_field *)
15582         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15583
15584       for (int k = 0; k < nf.fnfields.size (); ++k)
15585         fn_flp->fn_fields[k] = nf.fnfields[k];
15586     }
15587
15588   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15589 }
15590
15591 /* Returns non-zero if NAME is the name of a vtable member in CU's
15592    language, zero otherwise.  */
15593 static int
15594 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15595 {
15596   static const char vptr[] = "_vptr";
15597
15598   /* Look for the C++ form of the vtable.  */
15599   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15600     return 1;
15601
15602   return 0;
15603 }
15604
15605 /* GCC outputs unnamed structures that are really pointers to member
15606    functions, with the ABI-specified layout.  If TYPE describes
15607    such a structure, smash it into a member function type.
15608
15609    GCC shouldn't do this; it should just output pointer to member DIEs.
15610    This is GCC PR debug/28767.  */
15611
15612 static void
15613 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15614 {
15615   struct type *pfn_type, *self_type, *new_type;
15616
15617   /* Check for a structure with no name and two children.  */
15618   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15619     return;
15620
15621   /* Check for __pfn and __delta members.  */
15622   if (TYPE_FIELD_NAME (type, 0) == NULL
15623       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15624       || TYPE_FIELD_NAME (type, 1) == NULL
15625       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15626     return;
15627
15628   /* Find the type of the method.  */
15629   pfn_type = TYPE_FIELD_TYPE (type, 0);
15630   if (pfn_type == NULL
15631       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15632       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15633     return;
15634
15635   /* Look for the "this" argument.  */
15636   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15637   if (TYPE_NFIELDS (pfn_type) == 0
15638       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15639       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15640     return;
15641
15642   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15643   new_type = alloc_type (objfile);
15644   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15645                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15646                         TYPE_VARARGS (pfn_type));
15647   smash_to_methodptr_type (type, new_type);
15648 }
15649
15650 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15651    appropriate error checking and issuing complaints if there is a
15652    problem.  */
15653
15654 static ULONGEST
15655 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15656 {
15657   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15658
15659   if (attr == nullptr)
15660     return 0;
15661
15662   if (!attr_form_is_constant (attr))
15663     {
15664       complaint (_("DW_AT_alignment must have constant form"
15665                    " - DIE at %s [in module %s]"),
15666                  sect_offset_str (die->sect_off),
15667                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15668       return 0;
15669     }
15670
15671   ULONGEST align;
15672   if (attr->form == DW_FORM_sdata)
15673     {
15674       LONGEST val = DW_SND (attr);
15675       if (val < 0)
15676         {
15677           complaint (_("DW_AT_alignment value must not be negative"
15678                        " - DIE at %s [in module %s]"),
15679                      sect_offset_str (die->sect_off),
15680                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15681           return 0;
15682         }
15683       align = val;
15684     }
15685   else
15686     align = DW_UNSND (attr);
15687
15688   if (align == 0)
15689     {
15690       complaint (_("DW_AT_alignment value must not be zero"
15691                    " - DIE at %s [in module %s]"),
15692                  sect_offset_str (die->sect_off),
15693                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15694       return 0;
15695     }
15696   if ((align & (align - 1)) != 0)
15697     {
15698       complaint (_("DW_AT_alignment value must be a power of 2"
15699                    " - DIE at %s [in module %s]"),
15700                  sect_offset_str (die->sect_off),
15701                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15702       return 0;
15703     }
15704
15705   return align;
15706 }
15707
15708 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15709    the alignment for TYPE.  */
15710
15711 static void
15712 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15713                      struct type *type)
15714 {
15715   if (!set_type_align (type, get_alignment (cu, die)))
15716     complaint (_("DW_AT_alignment value too large"
15717                  " - DIE at %s [in module %s]"),
15718                sect_offset_str (die->sect_off),
15719                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15720 }
15721
15722 /* Called when we find the DIE that starts a structure or union scope
15723    (definition) to create a type for the structure or union.  Fill in
15724    the type's name and general properties; the members will not be
15725    processed until process_structure_scope.  A symbol table entry for
15726    the type will also not be done until process_structure_scope (assuming
15727    the type has a name).
15728
15729    NOTE: we need to call these functions regardless of whether or not the
15730    DIE has a DW_AT_name attribute, since it might be an anonymous
15731    structure or union.  This gets the type entered into our set of
15732    user defined types.  */
15733
15734 static struct type *
15735 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15736 {
15737   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15738   struct type *type;
15739   struct attribute *attr;
15740   const char *name;
15741
15742   /* If the definition of this type lives in .debug_types, read that type.
15743      Don't follow DW_AT_specification though, that will take us back up
15744      the chain and we want to go down.  */
15745   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15746   if (attr)
15747     {
15748       type = get_DW_AT_signature_type (die, attr, cu);
15749
15750       /* The type's CU may not be the same as CU.
15751          Ensure TYPE is recorded with CU in die_type_hash.  */
15752       return set_die_type (die, type, cu);
15753     }
15754
15755   type = alloc_type (objfile);
15756   INIT_CPLUS_SPECIFIC (type);
15757
15758   name = dwarf2_name (die, cu);
15759   if (name != NULL)
15760     {
15761       if (cu->language == language_cplus
15762           || cu->language == language_d
15763           || cu->language == language_rust)
15764         {
15765           const char *full_name = dwarf2_full_name (name, die, cu);
15766
15767           /* dwarf2_full_name might have already finished building the DIE's
15768              type.  If so, there is no need to continue.  */
15769           if (get_die_type (die, cu) != NULL)
15770             return get_die_type (die, cu);
15771
15772           TYPE_NAME (type) = full_name;
15773         }
15774       else
15775         {
15776           /* The name is already allocated along with this objfile, so
15777              we don't need to duplicate it for the type.  */
15778           TYPE_NAME (type) = name;
15779         }
15780     }
15781
15782   if (die->tag == DW_TAG_structure_type)
15783     {
15784       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15785     }
15786   else if (die->tag == DW_TAG_union_type)
15787     {
15788       TYPE_CODE (type) = TYPE_CODE_UNION;
15789     }
15790   else if (die->tag == DW_TAG_variant_part)
15791     {
15792       TYPE_CODE (type) = TYPE_CODE_UNION;
15793       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15794     }
15795   else
15796     {
15797       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15798     }
15799
15800   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15801     TYPE_DECLARED_CLASS (type) = 1;
15802
15803   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15804   if (attr)
15805     {
15806       if (attr_form_is_constant (attr))
15807         TYPE_LENGTH (type) = DW_UNSND (attr);
15808       else
15809         {
15810           /* For the moment, dynamic type sizes are not supported
15811              by GDB's struct type.  The actual size is determined
15812              on-demand when resolving the type of a given object,
15813              so set the type's length to zero for now.  Otherwise,
15814              we record an expression as the length, and that expression
15815              could lead to a very large value, which could eventually
15816              lead to us trying to allocate that much memory when creating
15817              a value of that type.  */
15818           TYPE_LENGTH (type) = 0;
15819         }
15820     }
15821   else
15822     {
15823       TYPE_LENGTH (type) = 0;
15824     }
15825
15826   maybe_set_alignment (cu, die, type);
15827
15828   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15829     {
15830       /* ICC<14 does not output the required DW_AT_declaration on
15831          incomplete types, but gives them a size of zero.  */
15832       TYPE_STUB (type) = 1;
15833     }
15834   else
15835     TYPE_STUB_SUPPORTED (type) = 1;
15836
15837   if (die_is_declaration (die, cu))
15838     TYPE_STUB (type) = 1;
15839   else if (attr == NULL && die->child == NULL
15840            && producer_is_realview (cu->producer))
15841     /* RealView does not output the required DW_AT_declaration
15842        on incomplete types.  */
15843     TYPE_STUB (type) = 1;
15844
15845   /* We need to add the type field to the die immediately so we don't
15846      infinitely recurse when dealing with pointers to the structure
15847      type within the structure itself.  */
15848   set_die_type (die, type, cu);
15849
15850   /* set_die_type should be already done.  */
15851   set_descriptive_type (type, die, cu);
15852
15853   return type;
15854 }
15855
15856 /* A helper for process_structure_scope that handles a single member
15857    DIE.  */
15858
15859 static void
15860 handle_struct_member_die (struct die_info *child_die, struct type *type,
15861                           struct field_info *fi,
15862                           std::vector<struct symbol *> *template_args,
15863                           struct dwarf2_cu *cu)
15864 {
15865   if (child_die->tag == DW_TAG_member
15866       || child_die->tag == DW_TAG_variable
15867       || child_die->tag == DW_TAG_variant_part)
15868     {
15869       /* NOTE: carlton/2002-11-05: A C++ static data member
15870          should be a DW_TAG_member that is a declaration, but
15871          all versions of G++ as of this writing (so through at
15872          least 3.2.1) incorrectly generate DW_TAG_variable
15873          tags for them instead.  */
15874       dwarf2_add_field (fi, child_die, cu);
15875     }
15876   else if (child_die->tag == DW_TAG_subprogram)
15877     {
15878       /* Rust doesn't have member functions in the C++ sense.
15879          However, it does emit ordinary functions as children
15880          of a struct DIE.  */
15881       if (cu->language == language_rust)
15882         read_func_scope (child_die, cu);
15883       else
15884         {
15885           /* C++ member function.  */
15886           dwarf2_add_member_fn (fi, child_die, type, cu);
15887         }
15888     }
15889   else if (child_die->tag == DW_TAG_inheritance)
15890     {
15891       /* C++ base class field.  */
15892       dwarf2_add_field (fi, child_die, cu);
15893     }
15894   else if (type_can_define_types (child_die))
15895     dwarf2_add_type_defn (fi, child_die, cu);
15896   else if (child_die->tag == DW_TAG_template_type_param
15897            || child_die->tag == DW_TAG_template_value_param)
15898     {
15899       struct symbol *arg = new_symbol (child_die, NULL, cu);
15900
15901       if (arg != NULL)
15902         template_args->push_back (arg);
15903     }
15904   else if (child_die->tag == DW_TAG_variant)
15905     {
15906       /* In a variant we want to get the discriminant and also add a
15907          field for our sole member child.  */
15908       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15909
15910       for (struct die_info *variant_child = child_die->child;
15911            variant_child != NULL;
15912            variant_child = sibling_die (variant_child))
15913         {
15914           if (variant_child->tag == DW_TAG_member)
15915             {
15916               handle_struct_member_die (variant_child, type, fi,
15917                                         template_args, cu);
15918               /* Only handle the one.  */
15919               break;
15920             }
15921         }
15922
15923       /* We don't handle this but we might as well report it if we see
15924          it.  */
15925       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15926           complaint (_("DW_AT_discr_list is not supported yet"
15927                        " - DIE at %s [in module %s]"),
15928                      sect_offset_str (child_die->sect_off),
15929                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15930
15931       /* The first field was just added, so we can stash the
15932          discriminant there.  */
15933       gdb_assert (!fi->fields.empty ());
15934       if (discr == NULL)
15935         fi->fields.back ().variant.default_branch = true;
15936       else
15937         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15938     }
15939 }
15940
15941 /* Finish creating a structure or union type, including filling in
15942    its members and creating a symbol for it.  */
15943
15944 static void
15945 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15946 {
15947   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15948   struct die_info *child_die;
15949   struct type *type;
15950
15951   type = get_die_type (die, cu);
15952   if (type == NULL)
15953     type = read_structure_type (die, cu);
15954
15955   /* When reading a DW_TAG_variant_part, we need to notice when we
15956      read the discriminant member, so we can record it later in the
15957      discriminant_info.  */
15958   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15959   sect_offset discr_offset;
15960   bool has_template_parameters = false;
15961
15962   if (is_variant_part)
15963     {
15964       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15965       if (discr == NULL)
15966         {
15967           /* Maybe it's a univariant form, an extension we support.
15968              In this case arrange not to check the offset.  */
15969           is_variant_part = false;
15970         }
15971       else if (attr_form_is_ref (discr))
15972         {
15973           struct dwarf2_cu *target_cu = cu;
15974           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15975
15976           discr_offset = target_die->sect_off;
15977         }
15978       else
15979         {
15980           complaint (_("DW_AT_discr does not have DIE reference form"
15981                        " - DIE at %s [in module %s]"),
15982                      sect_offset_str (die->sect_off),
15983                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15984           is_variant_part = false;
15985         }
15986     }
15987
15988   if (die->child != NULL && ! die_is_declaration (die, cu))
15989     {
15990       struct field_info fi;
15991       std::vector<struct symbol *> template_args;
15992
15993       child_die = die->child;
15994
15995       while (child_die && child_die->tag)
15996         {
15997           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
15998
15999           if (is_variant_part && discr_offset == child_die->sect_off)
16000             fi.fields.back ().variant.is_discriminant = true;
16001
16002           child_die = sibling_die (child_die);
16003         }
16004
16005       /* Attach template arguments to type.  */
16006       if (!template_args.empty ())
16007         {
16008           has_template_parameters = true;
16009           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16010           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16011           TYPE_TEMPLATE_ARGUMENTS (type)
16012             = XOBNEWVEC (&objfile->objfile_obstack,
16013                          struct symbol *,
16014                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16015           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16016                   template_args.data (),
16017                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16018                    * sizeof (struct symbol *)));
16019         }
16020
16021       /* Attach fields and member functions to the type.  */
16022       if (fi.nfields)
16023         dwarf2_attach_fields_to_type (&fi, type, cu);
16024       if (!fi.fnfieldlists.empty ())
16025         {
16026           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16027
16028           /* Get the type which refers to the base class (possibly this
16029              class itself) which contains the vtable pointer for the current
16030              class from the DW_AT_containing_type attribute.  This use of
16031              DW_AT_containing_type is a GNU extension.  */
16032
16033           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16034             {
16035               struct type *t = die_containing_type (die, cu);
16036
16037               set_type_vptr_basetype (type, t);
16038               if (type == t)
16039                 {
16040                   int i;
16041
16042                   /* Our own class provides vtbl ptr.  */
16043                   for (i = TYPE_NFIELDS (t) - 1;
16044                        i >= TYPE_N_BASECLASSES (t);
16045                        --i)
16046                     {
16047                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16048
16049                       if (is_vtable_name (fieldname, cu))
16050                         {
16051                           set_type_vptr_fieldno (type, i);
16052                           break;
16053                         }
16054                     }
16055
16056                   /* Complain if virtual function table field not found.  */
16057                   if (i < TYPE_N_BASECLASSES (t))
16058                     complaint (_("virtual function table pointer "
16059                                  "not found when defining class '%s'"),
16060                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16061                 }
16062               else
16063                 {
16064                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16065                 }
16066             }
16067           else if (cu->producer
16068                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16069             {
16070               /* The IBM XLC compiler does not provide direct indication
16071                  of the containing type, but the vtable pointer is
16072                  always named __vfp.  */
16073
16074               int i;
16075
16076               for (i = TYPE_NFIELDS (type) - 1;
16077                    i >= TYPE_N_BASECLASSES (type);
16078                    --i)
16079                 {
16080                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16081                     {
16082                       set_type_vptr_fieldno (type, i);
16083                       set_type_vptr_basetype (type, type);
16084                       break;
16085                     }
16086                 }
16087             }
16088         }
16089
16090       /* Copy fi.typedef_field_list linked list elements content into the
16091          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16092       if (!fi.typedef_field_list.empty ())
16093         {
16094           int count = fi.typedef_field_list.size ();
16095
16096           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16097           TYPE_TYPEDEF_FIELD_ARRAY (type)
16098             = ((struct decl_field *)
16099                TYPE_ALLOC (type,
16100                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16101           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16102
16103           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16104             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16105         }
16106
16107       /* Copy fi.nested_types_list linked list elements content into the
16108          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16109       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16110         {
16111           int count = fi.nested_types_list.size ();
16112
16113           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16114           TYPE_NESTED_TYPES_ARRAY (type)
16115             = ((struct decl_field *)
16116                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16117           TYPE_NESTED_TYPES_COUNT (type) = count;
16118
16119           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16120             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16121         }
16122     }
16123
16124   quirk_gcc_member_function_pointer (type, objfile);
16125   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16126     cu->rust_unions.push_back (type);
16127
16128   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16129      snapshots) has been known to create a die giving a declaration
16130      for a class that has, as a child, a die giving a definition for a
16131      nested class.  So we have to process our children even if the
16132      current die is a declaration.  Normally, of course, a declaration
16133      won't have any children at all.  */
16134
16135   child_die = die->child;
16136
16137   while (child_die != NULL && child_die->tag)
16138     {
16139       if (child_die->tag == DW_TAG_member
16140           || child_die->tag == DW_TAG_variable
16141           || child_die->tag == DW_TAG_inheritance
16142           || child_die->tag == DW_TAG_template_value_param
16143           || child_die->tag == DW_TAG_template_type_param)
16144         {
16145           /* Do nothing.  */
16146         }
16147       else
16148         process_die (child_die, cu);
16149
16150       child_die = sibling_die (child_die);
16151     }
16152
16153   /* Do not consider external references.  According to the DWARF standard,
16154      these DIEs are identified by the fact that they have no byte_size
16155      attribute, and a declaration attribute.  */
16156   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16157       || !die_is_declaration (die, cu))
16158     {
16159       struct symbol *sym = new_symbol (die, type, cu);
16160
16161       if (has_template_parameters)
16162         {
16163           /* Make sure that the symtab is set on the new symbols.
16164              Even though they don't appear in this symtab directly,
16165              other parts of gdb assume that symbols do, and this is
16166              reasonably true.  */
16167           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16168             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16169                                symbol_symtab (sym));
16170         }
16171     }
16172 }
16173
16174 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16175    update TYPE using some information only available in DIE's children.  */
16176
16177 static void
16178 update_enumeration_type_from_children (struct die_info *die,
16179                                        struct type *type,
16180                                        struct dwarf2_cu *cu)
16181 {
16182   struct die_info *child_die;
16183   int unsigned_enum = 1;
16184   int flag_enum = 1;
16185   ULONGEST mask = 0;
16186
16187   auto_obstack obstack;
16188
16189   for (child_die = die->child;
16190        child_die != NULL && child_die->tag;
16191        child_die = sibling_die (child_die))
16192     {
16193       struct attribute *attr;
16194       LONGEST value;
16195       const gdb_byte *bytes;
16196       struct dwarf2_locexpr_baton *baton;
16197       const char *name;
16198
16199       if (child_die->tag != DW_TAG_enumerator)
16200         continue;
16201
16202       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16203       if (attr == NULL)
16204         continue;
16205
16206       name = dwarf2_name (child_die, cu);
16207       if (name == NULL)
16208         name = "<anonymous enumerator>";
16209
16210       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16211                                &value, &bytes, &baton);
16212       if (value < 0)
16213         {
16214           unsigned_enum = 0;
16215           flag_enum = 0;
16216         }
16217       else if ((mask & value) != 0)
16218         flag_enum = 0;
16219       else
16220         mask |= value;
16221
16222       /* If we already know that the enum type is neither unsigned, nor
16223          a flag type, no need to look at the rest of the enumerates.  */
16224       if (!unsigned_enum && !flag_enum)
16225         break;
16226     }
16227
16228   if (unsigned_enum)
16229     TYPE_UNSIGNED (type) = 1;
16230   if (flag_enum)
16231     TYPE_FLAG_ENUM (type) = 1;
16232 }
16233
16234 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16235    complete the type's fields yet, or create any symbols.  */
16236
16237 static struct type *
16238 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16239 {
16240   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16241   struct type *type;
16242   struct attribute *attr;
16243   const char *name;
16244
16245   /* If the definition of this type lives in .debug_types, read that type.
16246      Don't follow DW_AT_specification though, that will take us back up
16247      the chain and we want to go down.  */
16248   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16249   if (attr)
16250     {
16251       type = get_DW_AT_signature_type (die, attr, cu);
16252
16253       /* The type's CU may not be the same as CU.
16254          Ensure TYPE is recorded with CU in die_type_hash.  */
16255       return set_die_type (die, type, cu);
16256     }
16257
16258   type = alloc_type (objfile);
16259
16260   TYPE_CODE (type) = TYPE_CODE_ENUM;
16261   name = dwarf2_full_name (NULL, die, cu);
16262   if (name != NULL)
16263     TYPE_NAME (type) = name;
16264
16265   attr = dwarf2_attr (die, DW_AT_type, cu);
16266   if (attr != NULL)
16267     {
16268       struct type *underlying_type = die_type (die, cu);
16269
16270       TYPE_TARGET_TYPE (type) = underlying_type;
16271     }
16272
16273   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16274   if (attr)
16275     {
16276       TYPE_LENGTH (type) = DW_UNSND (attr);
16277     }
16278   else
16279     {
16280       TYPE_LENGTH (type) = 0;
16281     }
16282
16283   maybe_set_alignment (cu, die, type);
16284
16285   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16286      declared as private in the package spec, and then defined only
16287      inside the package body.  Such types are known as Taft Amendment
16288      Types.  When another package uses such a type, an incomplete DIE
16289      may be generated by the compiler.  */
16290   if (die_is_declaration (die, cu))
16291     TYPE_STUB (type) = 1;
16292
16293   /* Finish the creation of this type by using the enum's children.
16294      We must call this even when the underlying type has been provided
16295      so that we can determine if we're looking at a "flag" enum.  */
16296   update_enumeration_type_from_children (die, type, cu);
16297
16298   /* If this type has an underlying type that is not a stub, then we
16299      may use its attributes.  We always use the "unsigned" attribute
16300      in this situation, because ordinarily we guess whether the type
16301      is unsigned -- but the guess can be wrong and the underlying type
16302      can tell us the reality.  However, we defer to a local size
16303      attribute if one exists, because this lets the compiler override
16304      the underlying type if needed.  */
16305   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16306     {
16307       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16308       if (TYPE_LENGTH (type) == 0)
16309         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16310       if (TYPE_RAW_ALIGN (type) == 0
16311           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16312         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16313     }
16314
16315   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16316
16317   return set_die_type (die, type, cu);
16318 }
16319
16320 /* Given a pointer to a die which begins an enumeration, process all
16321    the dies that define the members of the enumeration, and create the
16322    symbol for the enumeration type.
16323
16324    NOTE: We reverse the order of the element list.  */
16325
16326 static void
16327 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16328 {
16329   struct type *this_type;
16330
16331   this_type = get_die_type (die, cu);
16332   if (this_type == NULL)
16333     this_type = read_enumeration_type (die, cu);
16334
16335   if (die->child != NULL)
16336     {
16337       struct die_info *child_die;
16338       struct symbol *sym;
16339       struct field *fields = NULL;
16340       int num_fields = 0;
16341       const char *name;
16342
16343       child_die = die->child;
16344       while (child_die && child_die->tag)
16345         {
16346           if (child_die->tag != DW_TAG_enumerator)
16347             {
16348               process_die (child_die, cu);
16349             }
16350           else
16351             {
16352               name = dwarf2_name (child_die, cu);
16353               if (name)
16354                 {
16355                   sym = new_symbol (child_die, this_type, cu);
16356
16357                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16358                     {
16359                       fields = (struct field *)
16360                         xrealloc (fields,
16361                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16362                                   * sizeof (struct field));
16363                     }
16364
16365                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16366                   FIELD_TYPE (fields[num_fields]) = NULL;
16367                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16368                   FIELD_BITSIZE (fields[num_fields]) = 0;
16369
16370                   num_fields++;
16371                 }
16372             }
16373
16374           child_die = sibling_die (child_die);
16375         }
16376
16377       if (num_fields)
16378         {
16379           TYPE_NFIELDS (this_type) = num_fields;
16380           TYPE_FIELDS (this_type) = (struct field *)
16381             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16382           memcpy (TYPE_FIELDS (this_type), fields,
16383                   sizeof (struct field) * num_fields);
16384           xfree (fields);
16385         }
16386     }
16387
16388   /* If we are reading an enum from a .debug_types unit, and the enum
16389      is a declaration, and the enum is not the signatured type in the
16390      unit, then we do not want to add a symbol for it.  Adding a
16391      symbol would in some cases obscure the true definition of the
16392      enum, giving users an incomplete type when the definition is
16393      actually available.  Note that we do not want to do this for all
16394      enums which are just declarations, because C++0x allows forward
16395      enum declarations.  */
16396   if (cu->per_cu->is_debug_types
16397       && die_is_declaration (die, cu))
16398     {
16399       struct signatured_type *sig_type;
16400
16401       sig_type = (struct signatured_type *) cu->per_cu;
16402       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16403       if (sig_type->type_offset_in_section != die->sect_off)
16404         return;
16405     }
16406
16407   new_symbol (die, this_type, cu);
16408 }
16409
16410 /* Extract all information from a DW_TAG_array_type DIE and put it in
16411    the DIE's type field.  For now, this only handles one dimensional
16412    arrays.  */
16413
16414 static struct type *
16415 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16416 {
16417   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16418   struct die_info *child_die;
16419   struct type *type;
16420   struct type *element_type, *range_type, *index_type;
16421   struct attribute *attr;
16422   const char *name;
16423   struct dynamic_prop *byte_stride_prop = NULL;
16424   unsigned int bit_stride = 0;
16425
16426   element_type = die_type (die, cu);
16427
16428   /* The die_type call above may have already set the type for this DIE.  */
16429   type = get_die_type (die, cu);
16430   if (type)
16431     return type;
16432
16433   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16434   if (attr != NULL)
16435     {
16436       int stride_ok;
16437
16438       byte_stride_prop
16439         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16440       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16441       if (!stride_ok)
16442         {
16443           complaint (_("unable to read array DW_AT_byte_stride "
16444                        " - DIE at %s [in module %s]"),
16445                      sect_offset_str (die->sect_off),
16446                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16447           /* Ignore this attribute.  We will likely not be able to print
16448              arrays of this type correctly, but there is little we can do
16449              to help if we cannot read the attribute's value.  */
16450           byte_stride_prop = NULL;
16451         }
16452     }
16453
16454   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16455   if (attr != NULL)
16456     bit_stride = DW_UNSND (attr);
16457
16458   /* Irix 6.2 native cc creates array types without children for
16459      arrays with unspecified length.  */
16460   if (die->child == NULL)
16461     {
16462       index_type = objfile_type (objfile)->builtin_int;
16463       range_type = create_static_range_type (NULL, index_type, 0, -1);
16464       type = create_array_type_with_stride (NULL, element_type, range_type,
16465                                             byte_stride_prop, bit_stride);
16466       return set_die_type (die, type, cu);
16467     }
16468
16469   std::vector<struct type *> range_types;
16470   child_die = die->child;
16471   while (child_die && child_die->tag)
16472     {
16473       if (child_die->tag == DW_TAG_subrange_type)
16474         {
16475           struct type *child_type = read_type_die (child_die, cu);
16476
16477           if (child_type != NULL)
16478             {
16479               /* The range type was succesfully read.  Save it for the
16480                  array type creation.  */
16481               range_types.push_back (child_type);
16482             }
16483         }
16484       child_die = sibling_die (child_die);
16485     }
16486
16487   /* Dwarf2 dimensions are output from left to right, create the
16488      necessary array types in backwards order.  */
16489
16490   type = element_type;
16491
16492   if (read_array_order (die, cu) == DW_ORD_col_major)
16493     {
16494       int i = 0;
16495
16496       while (i < range_types.size ())
16497         type = create_array_type_with_stride (NULL, type, range_types[i++],
16498                                               byte_stride_prop, bit_stride);
16499     }
16500   else
16501     {
16502       size_t ndim = range_types.size ();
16503       while (ndim-- > 0)
16504         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16505                                               byte_stride_prop, bit_stride);
16506     }
16507
16508   /* Understand Dwarf2 support for vector types (like they occur on
16509      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16510      array type.  This is not part of the Dwarf2/3 standard yet, but a
16511      custom vendor extension.  The main difference between a regular
16512      array and the vector variant is that vectors are passed by value
16513      to functions.  */
16514   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16515   if (attr)
16516     make_vector_type (type);
16517
16518   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16519      implementation may choose to implement triple vectors using this
16520      attribute.  */
16521   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16522   if (attr)
16523     {
16524       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16525         TYPE_LENGTH (type) = DW_UNSND (attr);
16526       else
16527         complaint (_("DW_AT_byte_size for array type smaller "
16528                      "than the total size of elements"));
16529     }
16530
16531   name = dwarf2_name (die, cu);
16532   if (name)
16533     TYPE_NAME (type) = name;
16534
16535   maybe_set_alignment (cu, die, type);
16536
16537   /* Install the type in the die.  */
16538   set_die_type (die, type, cu);
16539
16540   /* set_die_type should be already done.  */
16541   set_descriptive_type (type, die, cu);
16542
16543   return type;
16544 }
16545
16546 static enum dwarf_array_dim_ordering
16547 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16548 {
16549   struct attribute *attr;
16550
16551   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16552
16553   if (attr)
16554     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16555
16556   /* GNU F77 is a special case, as at 08/2004 array type info is the
16557      opposite order to the dwarf2 specification, but data is still
16558      laid out as per normal fortran.
16559
16560      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16561      version checking.  */
16562
16563   if (cu->language == language_fortran
16564       && cu->producer && strstr (cu->producer, "GNU F77"))
16565     {
16566       return DW_ORD_row_major;
16567     }
16568
16569   switch (cu->language_defn->la_array_ordering)
16570     {
16571     case array_column_major:
16572       return DW_ORD_col_major;
16573     case array_row_major:
16574     default:
16575       return DW_ORD_row_major;
16576     };
16577 }
16578
16579 /* Extract all information from a DW_TAG_set_type DIE and put it in
16580    the DIE's type field.  */
16581
16582 static struct type *
16583 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16584 {
16585   struct type *domain_type, *set_type;
16586   struct attribute *attr;
16587
16588   domain_type = die_type (die, cu);
16589
16590   /* The die_type call above may have already set the type for this DIE.  */
16591   set_type = get_die_type (die, cu);
16592   if (set_type)
16593     return set_type;
16594
16595   set_type = create_set_type (NULL, domain_type);
16596
16597   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16598   if (attr)
16599     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16600
16601   maybe_set_alignment (cu, die, set_type);
16602
16603   return set_die_type (die, set_type, cu);
16604 }
16605
16606 /* A helper for read_common_block that creates a locexpr baton.
16607    SYM is the symbol which we are marking as computed.
16608    COMMON_DIE is the DIE for the common block.
16609    COMMON_LOC is the location expression attribute for the common
16610    block itself.
16611    MEMBER_LOC is the location expression attribute for the particular
16612    member of the common block that we are processing.
16613    CU is the CU from which the above come.  */
16614
16615 static void
16616 mark_common_block_symbol_computed (struct symbol *sym,
16617                                    struct die_info *common_die,
16618                                    struct attribute *common_loc,
16619                                    struct attribute *member_loc,
16620                                    struct dwarf2_cu *cu)
16621 {
16622   struct dwarf2_per_objfile *dwarf2_per_objfile
16623     = cu->per_cu->dwarf2_per_objfile;
16624   struct objfile *objfile = dwarf2_per_objfile->objfile;
16625   struct dwarf2_locexpr_baton *baton;
16626   gdb_byte *ptr;
16627   unsigned int cu_off;
16628   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16629   LONGEST offset = 0;
16630
16631   gdb_assert (common_loc && member_loc);
16632   gdb_assert (attr_form_is_block (common_loc));
16633   gdb_assert (attr_form_is_block (member_loc)
16634               || attr_form_is_constant (member_loc));
16635
16636   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16637   baton->per_cu = cu->per_cu;
16638   gdb_assert (baton->per_cu);
16639
16640   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16641
16642   if (attr_form_is_constant (member_loc))
16643     {
16644       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16645       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16646     }
16647   else
16648     baton->size += DW_BLOCK (member_loc)->size;
16649
16650   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16651   baton->data = ptr;
16652
16653   *ptr++ = DW_OP_call4;
16654   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16655   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16656   ptr += 4;
16657
16658   if (attr_form_is_constant (member_loc))
16659     {
16660       *ptr++ = DW_OP_addr;
16661       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16662       ptr += cu->header.addr_size;
16663     }
16664   else
16665     {
16666       /* We have to copy the data here, because DW_OP_call4 will only
16667          use a DW_AT_location attribute.  */
16668       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16669       ptr += DW_BLOCK (member_loc)->size;
16670     }
16671
16672   *ptr++ = DW_OP_plus;
16673   gdb_assert (ptr - baton->data == baton->size);
16674
16675   SYMBOL_LOCATION_BATON (sym) = baton;
16676   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16677 }
16678
16679 /* Create appropriate locally-scoped variables for all the
16680    DW_TAG_common_block entries.  Also create a struct common_block
16681    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16682    is used to sepate the common blocks name namespace from regular
16683    variable names.  */
16684
16685 static void
16686 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16687 {
16688   struct attribute *attr;
16689
16690   attr = dwarf2_attr (die, DW_AT_location, cu);
16691   if (attr)
16692     {
16693       /* Support the .debug_loc offsets.  */
16694       if (attr_form_is_block (attr))
16695         {
16696           /* Ok.  */
16697         }
16698       else if (attr_form_is_section_offset (attr))
16699         {
16700           dwarf2_complex_location_expr_complaint ();
16701           attr = NULL;
16702         }
16703       else
16704         {
16705           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16706                                                  "common block member");
16707           attr = NULL;
16708         }
16709     }
16710
16711   if (die->child != NULL)
16712     {
16713       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16714       struct die_info *child_die;
16715       size_t n_entries = 0, size;
16716       struct common_block *common_block;
16717       struct symbol *sym;
16718
16719       for (child_die = die->child;
16720            child_die && child_die->tag;
16721            child_die = sibling_die (child_die))
16722         ++n_entries;
16723
16724       size = (sizeof (struct common_block)
16725               + (n_entries - 1) * sizeof (struct symbol *));
16726       common_block
16727         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16728                                                  size);
16729       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16730       common_block->n_entries = 0;
16731
16732       for (child_die = die->child;
16733            child_die && child_die->tag;
16734            child_die = sibling_die (child_die))
16735         {
16736           /* Create the symbol in the DW_TAG_common_block block in the current
16737              symbol scope.  */
16738           sym = new_symbol (child_die, NULL, cu);
16739           if (sym != NULL)
16740             {
16741               struct attribute *member_loc;
16742
16743               common_block->contents[common_block->n_entries++] = sym;
16744
16745               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16746                                         cu);
16747               if (member_loc)
16748                 {
16749                   /* GDB has handled this for a long time, but it is
16750                      not specified by DWARF.  It seems to have been
16751                      emitted by gfortran at least as recently as:
16752                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16753                   complaint (_("Variable in common block has "
16754                                "DW_AT_data_member_location "
16755                                "- DIE at %s [in module %s]"),
16756                                sect_offset_str (child_die->sect_off),
16757                              objfile_name (objfile));
16758
16759                   if (attr_form_is_section_offset (member_loc))
16760                     dwarf2_complex_location_expr_complaint ();
16761                   else if (attr_form_is_constant (member_loc)
16762                            || attr_form_is_block (member_loc))
16763                     {
16764                       if (attr)
16765                         mark_common_block_symbol_computed (sym, die, attr,
16766                                                            member_loc, cu);
16767                     }
16768                   else
16769                     dwarf2_complex_location_expr_complaint ();
16770                 }
16771             }
16772         }
16773
16774       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16775       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16776     }
16777 }
16778
16779 /* Create a type for a C++ namespace.  */
16780
16781 static struct type *
16782 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16783 {
16784   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16785   const char *previous_prefix, *name;
16786   int is_anonymous;
16787   struct type *type;
16788
16789   /* For extensions, reuse the type of the original namespace.  */
16790   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16791     {
16792       struct die_info *ext_die;
16793       struct dwarf2_cu *ext_cu = cu;
16794
16795       ext_die = dwarf2_extension (die, &ext_cu);
16796       type = read_type_die (ext_die, ext_cu);
16797
16798       /* EXT_CU may not be the same as CU.
16799          Ensure TYPE is recorded with CU in die_type_hash.  */
16800       return set_die_type (die, type, cu);
16801     }
16802
16803   name = namespace_name (die, &is_anonymous, cu);
16804
16805   /* Now build the name of the current namespace.  */
16806
16807   previous_prefix = determine_prefix (die, cu);
16808   if (previous_prefix[0] != '\0')
16809     name = typename_concat (&objfile->objfile_obstack,
16810                             previous_prefix, name, 0, cu);
16811
16812   /* Create the type.  */
16813   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16814
16815   return set_die_type (die, type, cu);
16816 }
16817
16818 /* Read a namespace scope.  */
16819
16820 static void
16821 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16822 {
16823   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16824   int is_anonymous;
16825
16826   /* Add a symbol associated to this if we haven't seen the namespace
16827      before.  Also, add a using directive if it's an anonymous
16828      namespace.  */
16829
16830   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16831     {
16832       struct type *type;
16833
16834       type = read_type_die (die, cu);
16835       new_symbol (die, type, cu);
16836
16837       namespace_name (die, &is_anonymous, cu);
16838       if (is_anonymous)
16839         {
16840           const char *previous_prefix = determine_prefix (die, cu);
16841
16842           std::vector<const char *> excludes;
16843           add_using_directive (using_directives (cu),
16844                                previous_prefix, TYPE_NAME (type), NULL,
16845                                NULL, excludes, 0, &objfile->objfile_obstack);
16846         }
16847     }
16848
16849   if (die->child != NULL)
16850     {
16851       struct die_info *child_die = die->child;
16852
16853       while (child_die && child_die->tag)
16854         {
16855           process_die (child_die, cu);
16856           child_die = sibling_die (child_die);
16857         }
16858     }
16859 }
16860
16861 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16862    imported module.  Still we need that type as local Fortran "use ... only"
16863    declaration imports depend on the created type in determine_prefix.  */
16864
16865 static struct type *
16866 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16867 {
16868   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16869   const char *module_name;
16870   struct type *type;
16871
16872   module_name = dwarf2_name (die, cu);
16873   if (!module_name)
16874     complaint (_("DW_TAG_module has no name, offset %s"),
16875                sect_offset_str (die->sect_off));
16876   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16877
16878   return set_die_type (die, type, cu);
16879 }
16880
16881 /* Read a Fortran module.  */
16882
16883 static void
16884 read_module (struct die_info *die, struct dwarf2_cu *cu)
16885 {
16886   struct die_info *child_die = die->child;
16887   struct type *type;
16888
16889   type = read_type_die (die, cu);
16890   new_symbol (die, type, cu);
16891
16892   while (child_die && child_die->tag)
16893     {
16894       process_die (child_die, cu);
16895       child_die = sibling_die (child_die);
16896     }
16897 }
16898
16899 /* Return the name of the namespace represented by DIE.  Set
16900    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16901    namespace.  */
16902
16903 static const char *
16904 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16905 {
16906   struct die_info *current_die;
16907   const char *name = NULL;
16908
16909   /* Loop through the extensions until we find a name.  */
16910
16911   for (current_die = die;
16912        current_die != NULL;
16913        current_die = dwarf2_extension (die, &cu))
16914     {
16915       /* We don't use dwarf2_name here so that we can detect the absence
16916          of a name -> anonymous namespace.  */
16917       name = dwarf2_string_attr (die, DW_AT_name, cu);
16918
16919       if (name != NULL)
16920         break;
16921     }
16922
16923   /* Is it an anonymous namespace?  */
16924
16925   *is_anonymous = (name == NULL);
16926   if (*is_anonymous)
16927     name = CP_ANONYMOUS_NAMESPACE_STR;
16928
16929   return name;
16930 }
16931
16932 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16933    the user defined type vector.  */
16934
16935 static struct type *
16936 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16937 {
16938   struct gdbarch *gdbarch
16939     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16940   struct comp_unit_head *cu_header = &cu->header;
16941   struct type *type;
16942   struct attribute *attr_byte_size;
16943   struct attribute *attr_address_class;
16944   int byte_size, addr_class;
16945   struct type *target_type;
16946
16947   target_type = die_type (die, cu);
16948
16949   /* The die_type call above may have already set the type for this DIE.  */
16950   type = get_die_type (die, cu);
16951   if (type)
16952     return type;
16953
16954   type = lookup_pointer_type (target_type);
16955
16956   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16957   if (attr_byte_size)
16958     byte_size = DW_UNSND (attr_byte_size);
16959   else
16960     byte_size = cu_header->addr_size;
16961
16962   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16963   if (attr_address_class)
16964     addr_class = DW_UNSND (attr_address_class);
16965   else
16966     addr_class = DW_ADDR_none;
16967
16968   ULONGEST alignment = get_alignment (cu, die);
16969
16970   /* If the pointer size, alignment, or address class is different
16971      than the default, create a type variant marked as such and set
16972      the length accordingly.  */
16973   if (TYPE_LENGTH (type) != byte_size
16974       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
16975           && alignment != TYPE_RAW_ALIGN (type))
16976       || addr_class != DW_ADDR_none)
16977     {
16978       if (gdbarch_address_class_type_flags_p (gdbarch))
16979         {
16980           int type_flags;
16981
16982           type_flags = gdbarch_address_class_type_flags
16983                          (gdbarch, byte_size, addr_class);
16984           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
16985                       == 0);
16986           type = make_type_with_address_space (type, type_flags);
16987         }
16988       else if (TYPE_LENGTH (type) != byte_size)
16989         {
16990           complaint (_("invalid pointer size %d"), byte_size);
16991         }
16992       else if (TYPE_RAW_ALIGN (type) != alignment)
16993         {
16994           complaint (_("Invalid DW_AT_alignment"
16995                        " - DIE at %s [in module %s]"),
16996                      sect_offset_str (die->sect_off),
16997                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16998         }
16999       else
17000         {
17001           /* Should we also complain about unhandled address classes?  */
17002         }
17003     }
17004
17005   TYPE_LENGTH (type) = byte_size;
17006   set_type_align (type, alignment);
17007   return set_die_type (die, type, cu);
17008 }
17009
17010 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17011    the user defined type vector.  */
17012
17013 static struct type *
17014 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17015 {
17016   struct type *type;
17017   struct type *to_type;
17018   struct type *domain;
17019
17020   to_type = die_type (die, cu);
17021   domain = die_containing_type (die, cu);
17022
17023   /* The calls above may have already set the type for this DIE.  */
17024   type = get_die_type (die, cu);
17025   if (type)
17026     return type;
17027
17028   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17029     type = lookup_methodptr_type (to_type);
17030   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17031     {
17032       struct type *new_type
17033         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17034
17035       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17036                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17037                             TYPE_VARARGS (to_type));
17038       type = lookup_methodptr_type (new_type);
17039     }
17040   else
17041     type = lookup_memberptr_type (to_type, domain);
17042
17043   return set_die_type (die, type, cu);
17044 }
17045
17046 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17047    the user defined type vector.  */
17048
17049 static struct type *
17050 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17051                           enum type_code refcode)
17052 {
17053   struct comp_unit_head *cu_header = &cu->header;
17054   struct type *type, *target_type;
17055   struct attribute *attr;
17056
17057   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17058
17059   target_type = die_type (die, cu);
17060
17061   /* The die_type call above may have already set the type for this DIE.  */
17062   type = get_die_type (die, cu);
17063   if (type)
17064     return type;
17065
17066   type = lookup_reference_type (target_type, refcode);
17067   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17068   if (attr)
17069     {
17070       TYPE_LENGTH (type) = DW_UNSND (attr);
17071     }
17072   else
17073     {
17074       TYPE_LENGTH (type) = cu_header->addr_size;
17075     }
17076   maybe_set_alignment (cu, die, type);
17077   return set_die_type (die, type, cu);
17078 }
17079
17080 /* Add the given cv-qualifiers to the element type of the array.  GCC
17081    outputs DWARF type qualifiers that apply to an array, not the
17082    element type.  But GDB relies on the array element type to carry
17083    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17084    specification.  */
17085
17086 static struct type *
17087 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17088                    struct type *base_type, int cnst, int voltl)
17089 {
17090   struct type *el_type, *inner_array;
17091
17092   base_type = copy_type (base_type);
17093   inner_array = base_type;
17094
17095   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17096     {
17097       TYPE_TARGET_TYPE (inner_array) =
17098         copy_type (TYPE_TARGET_TYPE (inner_array));
17099       inner_array = TYPE_TARGET_TYPE (inner_array);
17100     }
17101
17102   el_type = TYPE_TARGET_TYPE (inner_array);
17103   cnst |= TYPE_CONST (el_type);
17104   voltl |= TYPE_VOLATILE (el_type);
17105   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17106
17107   return set_die_type (die, base_type, cu);
17108 }
17109
17110 static struct type *
17111 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17112 {
17113   struct type *base_type, *cv_type;
17114
17115   base_type = die_type (die, cu);
17116
17117   /* The die_type call above may have already set the type for this DIE.  */
17118   cv_type = get_die_type (die, cu);
17119   if (cv_type)
17120     return cv_type;
17121
17122   /* In case the const qualifier is applied to an array type, the element type
17123      is so qualified, not the array type (section 6.7.3 of C99).  */
17124   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17125     return add_array_cv_type (die, cu, base_type, 1, 0);
17126
17127   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17128   return set_die_type (die, cv_type, cu);
17129 }
17130
17131 static struct type *
17132 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17133 {
17134   struct type *base_type, *cv_type;
17135
17136   base_type = die_type (die, cu);
17137
17138   /* The die_type call above may have already set the type for this DIE.  */
17139   cv_type = get_die_type (die, cu);
17140   if (cv_type)
17141     return cv_type;
17142
17143   /* In case the volatile qualifier is applied to an array type, the
17144      element type is so qualified, not the array type (section 6.7.3
17145      of C99).  */
17146   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17147     return add_array_cv_type (die, cu, base_type, 0, 1);
17148
17149   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17150   return set_die_type (die, cv_type, cu);
17151 }
17152
17153 /* Handle DW_TAG_restrict_type.  */
17154
17155 static struct type *
17156 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17157 {
17158   struct type *base_type, *cv_type;
17159
17160   base_type = die_type (die, cu);
17161
17162   /* The die_type call above may have already set the type for this DIE.  */
17163   cv_type = get_die_type (die, cu);
17164   if (cv_type)
17165     return cv_type;
17166
17167   cv_type = make_restrict_type (base_type);
17168   return set_die_type (die, cv_type, cu);
17169 }
17170
17171 /* Handle DW_TAG_atomic_type.  */
17172
17173 static struct type *
17174 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17175 {
17176   struct type *base_type, *cv_type;
17177
17178   base_type = die_type (die, cu);
17179
17180   /* The die_type call above may have already set the type for this DIE.  */
17181   cv_type = get_die_type (die, cu);
17182   if (cv_type)
17183     return cv_type;
17184
17185   cv_type = make_atomic_type (base_type);
17186   return set_die_type (die, cv_type, cu);
17187 }
17188
17189 /* Extract all information from a DW_TAG_string_type DIE and add to
17190    the user defined type vector.  It isn't really a user defined type,
17191    but it behaves like one, with other DIE's using an AT_user_def_type
17192    attribute to reference it.  */
17193
17194 static struct type *
17195 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17196 {
17197   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17198   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17199   struct type *type, *range_type, *index_type, *char_type;
17200   struct attribute *attr;
17201   unsigned int length;
17202
17203   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17204   if (attr)
17205     {
17206       length = DW_UNSND (attr);
17207     }
17208   else
17209     {
17210       /* Check for the DW_AT_byte_size attribute.  */
17211       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17212       if (attr)
17213         {
17214           length = DW_UNSND (attr);
17215         }
17216       else
17217         {
17218           length = 1;
17219         }
17220     }
17221
17222   index_type = objfile_type (objfile)->builtin_int;
17223   range_type = create_static_range_type (NULL, index_type, 1, length);
17224   char_type = language_string_char_type (cu->language_defn, gdbarch);
17225   type = create_string_type (NULL, char_type, range_type);
17226
17227   return set_die_type (die, type, cu);
17228 }
17229
17230 /* Assuming that DIE corresponds to a function, returns nonzero
17231    if the function is prototyped.  */
17232
17233 static int
17234 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17235 {
17236   struct attribute *attr;
17237
17238   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17239   if (attr && (DW_UNSND (attr) != 0))
17240     return 1;
17241
17242   /* The DWARF standard implies that the DW_AT_prototyped attribute
17243      is only meaninful for C, but the concept also extends to other
17244      languages that allow unprototyped functions (Eg: Objective C).
17245      For all other languages, assume that functions are always
17246      prototyped.  */
17247   if (cu->language != language_c
17248       && cu->language != language_objc
17249       && cu->language != language_opencl)
17250     return 1;
17251
17252   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17253      prototyped and unprototyped functions; default to prototyped,
17254      since that is more common in modern code (and RealView warns
17255      about unprototyped functions).  */
17256   if (producer_is_realview (cu->producer))
17257     return 1;
17258
17259   return 0;
17260 }
17261
17262 /* Handle DIES due to C code like:
17263
17264    struct foo
17265    {
17266    int (*funcp)(int a, long l);
17267    int b;
17268    };
17269
17270    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17271
17272 static struct type *
17273 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17274 {
17275   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17276   struct type *type;            /* Type that this function returns.  */
17277   struct type *ftype;           /* Function that returns above type.  */
17278   struct attribute *attr;
17279
17280   type = die_type (die, cu);
17281
17282   /* The die_type call above may have already set the type for this DIE.  */
17283   ftype = get_die_type (die, cu);
17284   if (ftype)
17285     return ftype;
17286
17287   ftype = lookup_function_type (type);
17288
17289   if (prototyped_function_p (die, cu))
17290     TYPE_PROTOTYPED (ftype) = 1;
17291
17292   /* Store the calling convention in the type if it's available in
17293      the subroutine die.  Otherwise set the calling convention to
17294      the default value DW_CC_normal.  */
17295   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17296   if (attr)
17297     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17298   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17299     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17300   else
17301     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17302
17303   /* Record whether the function returns normally to its caller or not
17304      if the DWARF producer set that information.  */
17305   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17306   if (attr && (DW_UNSND (attr) != 0))
17307     TYPE_NO_RETURN (ftype) = 1;
17308
17309   /* We need to add the subroutine type to the die immediately so
17310      we don't infinitely recurse when dealing with parameters
17311      declared as the same subroutine type.  */
17312   set_die_type (die, ftype, cu);
17313
17314   if (die->child != NULL)
17315     {
17316       struct type *void_type = objfile_type (objfile)->builtin_void;
17317       struct die_info *child_die;
17318       int nparams, iparams;
17319
17320       /* Count the number of parameters.
17321          FIXME: GDB currently ignores vararg functions, but knows about
17322          vararg member functions.  */
17323       nparams = 0;
17324       child_die = die->child;
17325       while (child_die && child_die->tag)
17326         {
17327           if (child_die->tag == DW_TAG_formal_parameter)
17328             nparams++;
17329           else if (child_die->tag == DW_TAG_unspecified_parameters)
17330             TYPE_VARARGS (ftype) = 1;
17331           child_die = sibling_die (child_die);
17332         }
17333
17334       /* Allocate storage for parameters and fill them in.  */
17335       TYPE_NFIELDS (ftype) = nparams;
17336       TYPE_FIELDS (ftype) = (struct field *)
17337         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17338
17339       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17340          even if we error out during the parameters reading below.  */
17341       for (iparams = 0; iparams < nparams; iparams++)
17342         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17343
17344       iparams = 0;
17345       child_die = die->child;
17346       while (child_die && child_die->tag)
17347         {
17348           if (child_die->tag == DW_TAG_formal_parameter)
17349             {
17350               struct type *arg_type;
17351
17352               /* DWARF version 2 has no clean way to discern C++
17353                  static and non-static member functions.  G++ helps
17354                  GDB by marking the first parameter for non-static
17355                  member functions (which is the this pointer) as
17356                  artificial.  We pass this information to
17357                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17358
17359                  DWARF version 3 added DW_AT_object_pointer, which GCC
17360                  4.5 does not yet generate.  */
17361               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17362               if (attr)
17363                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17364               else
17365                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17366               arg_type = die_type (child_die, cu);
17367
17368               /* RealView does not mark THIS as const, which the testsuite
17369                  expects.  GCC marks THIS as const in method definitions,
17370                  but not in the class specifications (GCC PR 43053).  */
17371               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17372                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17373                 {
17374                   int is_this = 0;
17375                   struct dwarf2_cu *arg_cu = cu;
17376                   const char *name = dwarf2_name (child_die, cu);
17377
17378                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17379                   if (attr)
17380                     {
17381                       /* If the compiler emits this, use it.  */
17382                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17383                         is_this = 1;
17384                     }
17385                   else if (name && strcmp (name, "this") == 0)
17386                     /* Function definitions will have the argument names.  */
17387                     is_this = 1;
17388                   else if (name == NULL && iparams == 0)
17389                     /* Declarations may not have the names, so like
17390                        elsewhere in GDB, assume an artificial first
17391                        argument is "this".  */
17392                     is_this = 1;
17393
17394                   if (is_this)
17395                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17396                                              arg_type, 0);
17397                 }
17398
17399               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17400               iparams++;
17401             }
17402           child_die = sibling_die (child_die);
17403         }
17404     }
17405
17406   return ftype;
17407 }
17408
17409 static struct type *
17410 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17411 {
17412   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17413   const char *name = NULL;
17414   struct type *this_type, *target_type;
17415
17416   name = dwarf2_full_name (NULL, die, cu);
17417   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17418   TYPE_TARGET_STUB (this_type) = 1;
17419   set_die_type (die, this_type, cu);
17420   target_type = die_type (die, cu);
17421   if (target_type != this_type)
17422     TYPE_TARGET_TYPE (this_type) = target_type;
17423   else
17424     {
17425       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17426          spec and cause infinite loops in GDB.  */
17427       complaint (_("Self-referential DW_TAG_typedef "
17428                    "- DIE at %s [in module %s]"),
17429                  sect_offset_str (die->sect_off), objfile_name (objfile));
17430       TYPE_TARGET_TYPE (this_type) = NULL;
17431     }
17432   return this_type;
17433 }
17434
17435 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17436    (which may be different from NAME) to the architecture back-end to allow
17437    it to guess the correct format if necessary.  */
17438
17439 static struct type *
17440 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17441                         const char *name_hint)
17442 {
17443   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17444   const struct floatformat **format;
17445   struct type *type;
17446
17447   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17448   if (format)
17449     type = init_float_type (objfile, bits, name, format);
17450   else
17451     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17452
17453   return type;
17454 }
17455
17456 /* Find a representation of a given base type and install
17457    it in the TYPE field of the die.  */
17458
17459 static struct type *
17460 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17461 {
17462   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17463   struct type *type;
17464   struct attribute *attr;
17465   int encoding = 0, bits = 0;
17466   const char *name;
17467
17468   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17469   if (attr)
17470     {
17471       encoding = DW_UNSND (attr);
17472     }
17473   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17474   if (attr)
17475     {
17476       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17477     }
17478   name = dwarf2_name (die, cu);
17479   if (!name)
17480     {
17481       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17482     }
17483
17484   switch (encoding)
17485     {
17486       case DW_ATE_address:
17487         /* Turn DW_ATE_address into a void * pointer.  */
17488         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17489         type = init_pointer_type (objfile, bits, name, type);
17490         break;
17491       case DW_ATE_boolean:
17492         type = init_boolean_type (objfile, bits, 1, name);
17493         break;
17494       case DW_ATE_complex_float:
17495         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17496         type = init_complex_type (objfile, name, type);
17497         break;
17498       case DW_ATE_decimal_float:
17499         type = init_decfloat_type (objfile, bits, name);
17500         break;
17501       case DW_ATE_float:
17502         type = dwarf2_init_float_type (objfile, bits, name, name);
17503         break;
17504       case DW_ATE_signed:
17505         type = init_integer_type (objfile, bits, 0, name);
17506         break;
17507       case DW_ATE_unsigned:
17508         if (cu->language == language_fortran
17509             && name
17510             && startswith (name, "character("))
17511           type = init_character_type (objfile, bits, 1, name);
17512         else
17513           type = init_integer_type (objfile, bits, 1, name);
17514         break;
17515       case DW_ATE_signed_char:
17516         if (cu->language == language_ada || cu->language == language_m2
17517             || cu->language == language_pascal
17518             || cu->language == language_fortran)
17519           type = init_character_type (objfile, bits, 0, name);
17520         else
17521           type = init_integer_type (objfile, bits, 0, name);
17522         break;
17523       case DW_ATE_unsigned_char:
17524         if (cu->language == language_ada || cu->language == language_m2
17525             || cu->language == language_pascal
17526             || cu->language == language_fortran
17527             || cu->language == language_rust)
17528           type = init_character_type (objfile, bits, 1, name);
17529         else
17530           type = init_integer_type (objfile, bits, 1, name);
17531         break;
17532       case DW_ATE_UTF:
17533         {
17534           gdbarch *arch = get_objfile_arch (objfile);
17535
17536           if (bits == 16)
17537             type = builtin_type (arch)->builtin_char16;
17538           else if (bits == 32)
17539             type = builtin_type (arch)->builtin_char32;
17540           else
17541             {
17542               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17543                          bits);
17544               type = init_integer_type (objfile, bits, 1, name);
17545             }
17546           return set_die_type (die, type, cu);
17547         }
17548         break;
17549
17550       default:
17551         complaint (_("unsupported DW_AT_encoding: '%s'"),
17552                    dwarf_type_encoding_name (encoding));
17553         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17554         break;
17555     }
17556
17557   if (name && strcmp (name, "char") == 0)
17558     TYPE_NOSIGN (type) = 1;
17559
17560   maybe_set_alignment (cu, die, type);
17561
17562   return set_die_type (die, type, cu);
17563 }
17564
17565 /* Parse dwarf attribute if it's a block, reference or constant and put the
17566    resulting value of the attribute into struct bound_prop.
17567    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17568
17569 static int
17570 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17571                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17572 {
17573   struct dwarf2_property_baton *baton;
17574   struct obstack *obstack
17575     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17576
17577   if (attr == NULL || prop == NULL)
17578     return 0;
17579
17580   if (attr_form_is_block (attr))
17581     {
17582       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17583       baton->referenced_type = NULL;
17584       baton->locexpr.per_cu = cu->per_cu;
17585       baton->locexpr.size = DW_BLOCK (attr)->size;
17586       baton->locexpr.data = DW_BLOCK (attr)->data;
17587       prop->data.baton = baton;
17588       prop->kind = PROP_LOCEXPR;
17589       gdb_assert (prop->data.baton != NULL);
17590     }
17591   else if (attr_form_is_ref (attr))
17592     {
17593       struct dwarf2_cu *target_cu = cu;
17594       struct die_info *target_die;
17595       struct attribute *target_attr;
17596
17597       target_die = follow_die_ref (die, attr, &target_cu);
17598       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17599       if (target_attr == NULL)
17600         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17601                                    target_cu);
17602       if (target_attr == NULL)
17603         return 0;
17604
17605       switch (target_attr->name)
17606         {
17607           case DW_AT_location:
17608             if (attr_form_is_section_offset (target_attr))
17609               {
17610                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17611                 baton->referenced_type = die_type (target_die, target_cu);
17612                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17613                 prop->data.baton = baton;
17614                 prop->kind = PROP_LOCLIST;
17615                 gdb_assert (prop->data.baton != NULL);
17616               }
17617             else if (attr_form_is_block (target_attr))
17618               {
17619                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17620                 baton->referenced_type = die_type (target_die, target_cu);
17621                 baton->locexpr.per_cu = cu->per_cu;
17622                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17623                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17624                 prop->data.baton = baton;
17625                 prop->kind = PROP_LOCEXPR;
17626                 gdb_assert (prop->data.baton != NULL);
17627               }
17628             else
17629               {
17630                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17631                                                        "dynamic property");
17632                 return 0;
17633               }
17634             break;
17635           case DW_AT_data_member_location:
17636             {
17637               LONGEST offset;
17638
17639               if (!handle_data_member_location (target_die, target_cu,
17640                                                 &offset))
17641                 return 0;
17642
17643               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17644               baton->referenced_type = read_type_die (target_die->parent,
17645                                                       target_cu);
17646               baton->offset_info.offset = offset;
17647               baton->offset_info.type = die_type (target_die, target_cu);
17648               prop->data.baton = baton;
17649               prop->kind = PROP_ADDR_OFFSET;
17650               break;
17651             }
17652         }
17653     }
17654   else if (attr_form_is_constant (attr))
17655     {
17656       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17657       prop->kind = PROP_CONST;
17658     }
17659   else
17660     {
17661       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17662                                              dwarf2_name (die, cu));
17663       return 0;
17664     }
17665
17666   return 1;
17667 }
17668
17669 /* Read the given DW_AT_subrange DIE.  */
17670
17671 static struct type *
17672 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17673 {
17674   struct type *base_type, *orig_base_type;
17675   struct type *range_type;
17676   struct attribute *attr;
17677   struct dynamic_prop low, high;
17678   int low_default_is_valid;
17679   int high_bound_is_count = 0;
17680   const char *name;
17681   LONGEST negative_mask;
17682
17683   orig_base_type = die_type (die, cu);
17684   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17685      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17686      creating the range type, but we use the result of check_typedef
17687      when examining properties of the type.  */
17688   base_type = check_typedef (orig_base_type);
17689
17690   /* The die_type call above may have already set the type for this DIE.  */
17691   range_type = get_die_type (die, cu);
17692   if (range_type)
17693     return range_type;
17694
17695   low.kind = PROP_CONST;
17696   high.kind = PROP_CONST;
17697   high.data.const_val = 0;
17698
17699   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17700      omitting DW_AT_lower_bound.  */
17701   switch (cu->language)
17702     {
17703     case language_c:
17704     case language_cplus:
17705       low.data.const_val = 0;
17706       low_default_is_valid = 1;
17707       break;
17708     case language_fortran:
17709       low.data.const_val = 1;
17710       low_default_is_valid = 1;
17711       break;
17712     case language_d:
17713     case language_objc:
17714     case language_rust:
17715       low.data.const_val = 0;
17716       low_default_is_valid = (cu->header.version >= 4);
17717       break;
17718     case language_ada:
17719     case language_m2:
17720     case language_pascal:
17721       low.data.const_val = 1;
17722       low_default_is_valid = (cu->header.version >= 4);
17723       break;
17724     default:
17725       low.data.const_val = 0;
17726       low_default_is_valid = 0;
17727       break;
17728     }
17729
17730   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17731   if (attr)
17732     attr_to_dynamic_prop (attr, die, cu, &low);
17733   else if (!low_default_is_valid)
17734     complaint (_("Missing DW_AT_lower_bound "
17735                                       "- DIE at %s [in module %s]"),
17736                sect_offset_str (die->sect_off),
17737                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17738
17739   struct attribute *attr_ub, *attr_count;
17740   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17741   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17742     {
17743       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17744       if (attr_to_dynamic_prop (attr, die, cu, &high))
17745         {
17746           /* If bounds are constant do the final calculation here.  */
17747           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17748             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17749           else
17750             high_bound_is_count = 1;
17751         }
17752       else
17753         {
17754           if (attr_ub != NULL)
17755             complaint (_("Unresolved DW_AT_upper_bound "
17756                          "- DIE at %s [in module %s]"),
17757                        sect_offset_str (die->sect_off),
17758                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17759           if (attr_count != NULL)
17760             complaint (_("Unresolved DW_AT_count "
17761                          "- DIE at %s [in module %s]"),
17762                        sect_offset_str (die->sect_off),
17763                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17764         }
17765         
17766     }
17767
17768   /* Dwarf-2 specifications explicitly allows to create subrange types
17769      without specifying a base type.
17770      In that case, the base type must be set to the type of
17771      the lower bound, upper bound or count, in that order, if any of these
17772      three attributes references an object that has a type.
17773      If no base type is found, the Dwarf-2 specifications say that
17774      a signed integer type of size equal to the size of an address should
17775      be used.
17776      For the following C code: `extern char gdb_int [];'
17777      GCC produces an empty range DIE.
17778      FIXME: muller/2010-05-28: Possible references to object for low bound,
17779      high bound or count are not yet handled by this code.  */
17780   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17781     {
17782       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17783       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17784       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17785       struct type *int_type = objfile_type (objfile)->builtin_int;
17786
17787       /* Test "int", "long int", and "long long int" objfile types,
17788          and select the first one having a size above or equal to the
17789          architecture address size.  */
17790       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17791         base_type = int_type;
17792       else
17793         {
17794           int_type = objfile_type (objfile)->builtin_long;
17795           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17796             base_type = int_type;
17797           else
17798             {
17799               int_type = objfile_type (objfile)->builtin_long_long;
17800               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17801                 base_type = int_type;
17802             }
17803         }
17804     }
17805
17806   /* Normally, the DWARF producers are expected to use a signed
17807      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17808      But this is unfortunately not always the case, as witnessed
17809      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17810      is used instead.  To work around that ambiguity, we treat
17811      the bounds as signed, and thus sign-extend their values, when
17812      the base type is signed.  */
17813   negative_mask =
17814     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17815   if (low.kind == PROP_CONST
17816       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17817     low.data.const_val |= negative_mask;
17818   if (high.kind == PROP_CONST
17819       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17820     high.data.const_val |= negative_mask;
17821
17822   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17823
17824   if (high_bound_is_count)
17825     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17826
17827   /* Ada expects an empty array on no boundary attributes.  */
17828   if (attr == NULL && cu->language != language_ada)
17829     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17830
17831   name = dwarf2_name (die, cu);
17832   if (name)
17833     TYPE_NAME (range_type) = name;
17834
17835   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17836   if (attr)
17837     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17838
17839   maybe_set_alignment (cu, die, range_type);
17840
17841   set_die_type (die, range_type, cu);
17842
17843   /* set_die_type should be already done.  */
17844   set_descriptive_type (range_type, die, cu);
17845
17846   return range_type;
17847 }
17848
17849 static struct type *
17850 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17851 {
17852   struct type *type;
17853
17854   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17855                     NULL);
17856   TYPE_NAME (type) = dwarf2_name (die, cu);
17857
17858   /* In Ada, an unspecified type is typically used when the description
17859      of the type is defered to a different unit.  When encountering
17860      such a type, we treat it as a stub, and try to resolve it later on,
17861      when needed.  */
17862   if (cu->language == language_ada)
17863     TYPE_STUB (type) = 1;
17864
17865   return set_die_type (die, type, cu);
17866 }
17867
17868 /* Read a single die and all its descendents.  Set the die's sibling
17869    field to NULL; set other fields in the die correctly, and set all
17870    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17871    location of the info_ptr after reading all of those dies.  PARENT
17872    is the parent of the die in question.  */
17873
17874 static struct die_info *
17875 read_die_and_children (const struct die_reader_specs *reader,
17876                        const gdb_byte *info_ptr,
17877                        const gdb_byte **new_info_ptr,
17878                        struct die_info *parent)
17879 {
17880   struct die_info *die;
17881   const gdb_byte *cur_ptr;
17882   int has_children;
17883
17884   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17885   if (die == NULL)
17886     {
17887       *new_info_ptr = cur_ptr;
17888       return NULL;
17889     }
17890   store_in_ref_table (die, reader->cu);
17891
17892   if (has_children)
17893     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17894   else
17895     {
17896       die->child = NULL;
17897       *new_info_ptr = cur_ptr;
17898     }
17899
17900   die->sibling = NULL;
17901   die->parent = parent;
17902   return die;
17903 }
17904
17905 /* Read a die, all of its descendents, and all of its siblings; set
17906    all of the fields of all of the dies correctly.  Arguments are as
17907    in read_die_and_children.  */
17908
17909 static struct die_info *
17910 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17911                          const gdb_byte *info_ptr,
17912                          const gdb_byte **new_info_ptr,
17913                          struct die_info *parent)
17914 {
17915   struct die_info *first_die, *last_sibling;
17916   const gdb_byte *cur_ptr;
17917
17918   cur_ptr = info_ptr;
17919   first_die = last_sibling = NULL;
17920
17921   while (1)
17922     {
17923       struct die_info *die
17924         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17925
17926       if (die == NULL)
17927         {
17928           *new_info_ptr = cur_ptr;
17929           return first_die;
17930         }
17931
17932       if (!first_die)
17933         first_die = die;
17934       else
17935         last_sibling->sibling = die;
17936
17937       last_sibling = die;
17938     }
17939 }
17940
17941 /* Read a die, all of its descendents, and all of its siblings; set
17942    all of the fields of all of the dies correctly.  Arguments are as
17943    in read_die_and_children.
17944    This the main entry point for reading a DIE and all its children.  */
17945
17946 static struct die_info *
17947 read_die_and_siblings (const struct die_reader_specs *reader,
17948                        const gdb_byte *info_ptr,
17949                        const gdb_byte **new_info_ptr,
17950                        struct die_info *parent)
17951 {
17952   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17953                                                   new_info_ptr, parent);
17954
17955   if (dwarf_die_debug)
17956     {
17957       fprintf_unfiltered (gdb_stdlog,
17958                           "Read die from %s@0x%x of %s:\n",
17959                           get_section_name (reader->die_section),
17960                           (unsigned) (info_ptr - reader->die_section->buffer),
17961                           bfd_get_filename (reader->abfd));
17962       dump_die (die, dwarf_die_debug);
17963     }
17964
17965   return die;
17966 }
17967
17968 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17969    attributes.
17970    The caller is responsible for filling in the extra attributes
17971    and updating (*DIEP)->num_attrs.
17972    Set DIEP to point to a newly allocated die with its information,
17973    except for its child, sibling, and parent fields.
17974    Set HAS_CHILDREN to tell whether the die has children or not.  */
17975
17976 static const gdb_byte *
17977 read_full_die_1 (const struct die_reader_specs *reader,
17978                  struct die_info **diep, const gdb_byte *info_ptr,
17979                  int *has_children, int num_extra_attrs)
17980 {
17981   unsigned int abbrev_number, bytes_read, i;
17982   struct abbrev_info *abbrev;
17983   struct die_info *die;
17984   struct dwarf2_cu *cu = reader->cu;
17985   bfd *abfd = reader->abfd;
17986
17987   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
17988   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
17989   info_ptr += bytes_read;
17990   if (!abbrev_number)
17991     {
17992       *diep = NULL;
17993       *has_children = 0;
17994       return info_ptr;
17995     }
17996
17997   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
17998   if (!abbrev)
17999     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18000            abbrev_number,
18001            bfd_get_filename (abfd));
18002
18003   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18004   die->sect_off = sect_off;
18005   die->tag = abbrev->tag;
18006   die->abbrev = abbrev_number;
18007
18008   /* Make the result usable.
18009      The caller needs to update num_attrs after adding the extra
18010      attributes.  */
18011   die->num_attrs = abbrev->num_attrs;
18012
18013   for (i = 0; i < abbrev->num_attrs; ++i)
18014     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18015                                info_ptr);
18016
18017   *diep = die;
18018   *has_children = abbrev->has_children;
18019   return info_ptr;
18020 }
18021
18022 /* Read a die and all its attributes.
18023    Set DIEP to point to a newly allocated die with its information,
18024    except for its child, sibling, and parent fields.
18025    Set HAS_CHILDREN to tell whether the die has children or not.  */
18026
18027 static const gdb_byte *
18028 read_full_die (const struct die_reader_specs *reader,
18029                struct die_info **diep, const gdb_byte *info_ptr,
18030                int *has_children)
18031 {
18032   const gdb_byte *result;
18033
18034   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18035
18036   if (dwarf_die_debug)
18037     {
18038       fprintf_unfiltered (gdb_stdlog,
18039                           "Read die from %s@0x%x of %s:\n",
18040                           get_section_name (reader->die_section),
18041                           (unsigned) (info_ptr - reader->die_section->buffer),
18042                           bfd_get_filename (reader->abfd));
18043       dump_die (*diep, dwarf_die_debug);
18044     }
18045
18046   return result;
18047 }
18048 \f
18049 /* Abbreviation tables.
18050
18051    In DWARF version 2, the description of the debugging information is
18052    stored in a separate .debug_abbrev section.  Before we read any
18053    dies from a section we read in all abbreviations and install them
18054    in a hash table.  */
18055
18056 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18057
18058 struct abbrev_info *
18059 abbrev_table::alloc_abbrev ()
18060 {
18061   struct abbrev_info *abbrev;
18062
18063   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18064   memset (abbrev, 0, sizeof (struct abbrev_info));
18065
18066   return abbrev;
18067 }
18068
18069 /* Add an abbreviation to the table.  */
18070
18071 void
18072 abbrev_table::add_abbrev (unsigned int abbrev_number,
18073                           struct abbrev_info *abbrev)
18074 {
18075   unsigned int hash_number;
18076
18077   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18078   abbrev->next = m_abbrevs[hash_number];
18079   m_abbrevs[hash_number] = abbrev;
18080 }
18081
18082 /* Look up an abbrev in the table.
18083    Returns NULL if the abbrev is not found.  */
18084
18085 struct abbrev_info *
18086 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18087 {
18088   unsigned int hash_number;
18089   struct abbrev_info *abbrev;
18090
18091   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18092   abbrev = m_abbrevs[hash_number];
18093
18094   while (abbrev)
18095     {
18096       if (abbrev->number == abbrev_number)
18097         return abbrev;
18098       abbrev = abbrev->next;
18099     }
18100   return NULL;
18101 }
18102
18103 /* Read in an abbrev table.  */
18104
18105 static abbrev_table_up
18106 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18107                          struct dwarf2_section_info *section,
18108                          sect_offset sect_off)
18109 {
18110   struct objfile *objfile = dwarf2_per_objfile->objfile;
18111   bfd *abfd = get_section_bfd_owner (section);
18112   const gdb_byte *abbrev_ptr;
18113   struct abbrev_info *cur_abbrev;
18114   unsigned int abbrev_number, bytes_read, abbrev_name;
18115   unsigned int abbrev_form;
18116   struct attr_abbrev *cur_attrs;
18117   unsigned int allocated_attrs;
18118
18119   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18120
18121   dwarf2_read_section (objfile, section);
18122   abbrev_ptr = section->buffer + to_underlying (sect_off);
18123   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18124   abbrev_ptr += bytes_read;
18125
18126   allocated_attrs = ATTR_ALLOC_CHUNK;
18127   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18128
18129   /* Loop until we reach an abbrev number of 0.  */
18130   while (abbrev_number)
18131     {
18132       cur_abbrev = abbrev_table->alloc_abbrev ();
18133
18134       /* read in abbrev header */
18135       cur_abbrev->number = abbrev_number;
18136       cur_abbrev->tag
18137         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18138       abbrev_ptr += bytes_read;
18139       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18140       abbrev_ptr += 1;
18141
18142       /* now read in declarations */
18143       for (;;)
18144         {
18145           LONGEST implicit_const;
18146
18147           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18148           abbrev_ptr += bytes_read;
18149           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18150           abbrev_ptr += bytes_read;
18151           if (abbrev_form == DW_FORM_implicit_const)
18152             {
18153               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18154                                                    &bytes_read);
18155               abbrev_ptr += bytes_read;
18156             }
18157           else
18158             {
18159               /* Initialize it due to a false compiler warning.  */
18160               implicit_const = -1;
18161             }
18162
18163           if (abbrev_name == 0)
18164             break;
18165
18166           if (cur_abbrev->num_attrs == allocated_attrs)
18167             {
18168               allocated_attrs += ATTR_ALLOC_CHUNK;
18169               cur_attrs
18170                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18171             }
18172
18173           cur_attrs[cur_abbrev->num_attrs].name
18174             = (enum dwarf_attribute) abbrev_name;
18175           cur_attrs[cur_abbrev->num_attrs].form
18176             = (enum dwarf_form) abbrev_form;
18177           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18178           ++cur_abbrev->num_attrs;
18179         }
18180
18181       cur_abbrev->attrs =
18182         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18183                    cur_abbrev->num_attrs);
18184       memcpy (cur_abbrev->attrs, cur_attrs,
18185               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18186
18187       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18188
18189       /* Get next abbreviation.
18190          Under Irix6 the abbreviations for a compilation unit are not
18191          always properly terminated with an abbrev number of 0.
18192          Exit loop if we encounter an abbreviation which we have
18193          already read (which means we are about to read the abbreviations
18194          for the next compile unit) or if the end of the abbreviation
18195          table is reached.  */
18196       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18197         break;
18198       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18199       abbrev_ptr += bytes_read;
18200       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18201         break;
18202     }
18203
18204   xfree (cur_attrs);
18205   return abbrev_table;
18206 }
18207
18208 /* Returns nonzero if TAG represents a type that we might generate a partial
18209    symbol for.  */
18210
18211 static int
18212 is_type_tag_for_partial (int tag)
18213 {
18214   switch (tag)
18215     {
18216 #if 0
18217     /* Some types that would be reasonable to generate partial symbols for,
18218        that we don't at present.  */
18219     case DW_TAG_array_type:
18220     case DW_TAG_file_type:
18221     case DW_TAG_ptr_to_member_type:
18222     case DW_TAG_set_type:
18223     case DW_TAG_string_type:
18224     case DW_TAG_subroutine_type:
18225 #endif
18226     case DW_TAG_base_type:
18227     case DW_TAG_class_type:
18228     case DW_TAG_interface_type:
18229     case DW_TAG_enumeration_type:
18230     case DW_TAG_structure_type:
18231     case DW_TAG_subrange_type:
18232     case DW_TAG_typedef:
18233     case DW_TAG_union_type:
18234       return 1;
18235     default:
18236       return 0;
18237     }
18238 }
18239
18240 /* Load all DIEs that are interesting for partial symbols into memory.  */
18241
18242 static struct partial_die_info *
18243 load_partial_dies (const struct die_reader_specs *reader,
18244                    const gdb_byte *info_ptr, int building_psymtab)
18245 {
18246   struct dwarf2_cu *cu = reader->cu;
18247   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18248   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18249   unsigned int bytes_read;
18250   unsigned int load_all = 0;
18251   int nesting_level = 1;
18252
18253   parent_die = NULL;
18254   last_die = NULL;
18255
18256   gdb_assert (cu->per_cu != NULL);
18257   if (cu->per_cu->load_all_dies)
18258     load_all = 1;
18259
18260   cu->partial_dies
18261     = htab_create_alloc_ex (cu->header.length / 12,
18262                             partial_die_hash,
18263                             partial_die_eq,
18264                             NULL,
18265                             &cu->comp_unit_obstack,
18266                             hashtab_obstack_allocate,
18267                             dummy_obstack_deallocate);
18268
18269   while (1)
18270     {
18271       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18272
18273       /* A NULL abbrev means the end of a series of children.  */
18274       if (abbrev == NULL)
18275         {
18276           if (--nesting_level == 0)
18277             return first_die;
18278
18279           info_ptr += bytes_read;
18280           last_die = parent_die;
18281           parent_die = parent_die->die_parent;
18282           continue;
18283         }
18284
18285       /* Check for template arguments.  We never save these; if
18286          they're seen, we just mark the parent, and go on our way.  */
18287       if (parent_die != NULL
18288           && cu->language == language_cplus
18289           && (abbrev->tag == DW_TAG_template_type_param
18290               || abbrev->tag == DW_TAG_template_value_param))
18291         {
18292           parent_die->has_template_arguments = 1;
18293
18294           if (!load_all)
18295             {
18296               /* We don't need a partial DIE for the template argument.  */
18297               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18298               continue;
18299             }
18300         }
18301
18302       /* We only recurse into c++ subprograms looking for template arguments.
18303          Skip their other children.  */
18304       if (!load_all
18305           && cu->language == language_cplus
18306           && parent_die != NULL
18307           && parent_die->tag == DW_TAG_subprogram)
18308         {
18309           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18310           continue;
18311         }
18312
18313       /* Check whether this DIE is interesting enough to save.  Normally
18314          we would not be interested in members here, but there may be
18315          later variables referencing them via DW_AT_specification (for
18316          static members).  */
18317       if (!load_all
18318           && !is_type_tag_for_partial (abbrev->tag)
18319           && abbrev->tag != DW_TAG_constant
18320           && abbrev->tag != DW_TAG_enumerator
18321           && abbrev->tag != DW_TAG_subprogram
18322           && abbrev->tag != DW_TAG_inlined_subroutine
18323           && abbrev->tag != DW_TAG_lexical_block
18324           && abbrev->tag != DW_TAG_variable
18325           && abbrev->tag != DW_TAG_namespace
18326           && abbrev->tag != DW_TAG_module
18327           && abbrev->tag != DW_TAG_member
18328           && abbrev->tag != DW_TAG_imported_unit
18329           && abbrev->tag != DW_TAG_imported_declaration)
18330         {
18331           /* Otherwise we skip to the next sibling, if any.  */
18332           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18333           continue;
18334         }
18335
18336       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18337                                    abbrev);
18338
18339       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18340
18341       /* This two-pass algorithm for processing partial symbols has a
18342          high cost in cache pressure.  Thus, handle some simple cases
18343          here which cover the majority of C partial symbols.  DIEs
18344          which neither have specification tags in them, nor could have
18345          specification tags elsewhere pointing at them, can simply be
18346          processed and discarded.
18347
18348          This segment is also optional; scan_partial_symbols and
18349          add_partial_symbol will handle these DIEs if we chain
18350          them in normally.  When compilers which do not emit large
18351          quantities of duplicate debug information are more common,
18352          this code can probably be removed.  */
18353
18354       /* Any complete simple types at the top level (pretty much all
18355          of them, for a language without namespaces), can be processed
18356          directly.  */
18357       if (parent_die == NULL
18358           && pdi.has_specification == 0
18359           && pdi.is_declaration == 0
18360           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18361               || pdi.tag == DW_TAG_base_type
18362               || pdi.tag == DW_TAG_subrange_type))
18363         {
18364           if (building_psymtab && pdi.name != NULL)
18365             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18366                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18367                                  &objfile->static_psymbols,
18368                                  0, cu->language, objfile);
18369           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18370           continue;
18371         }
18372
18373       /* The exception for DW_TAG_typedef with has_children above is
18374          a workaround of GCC PR debug/47510.  In the case of this complaint
18375          type_name_or_error will error on such types later.
18376
18377          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18378          it could not find the child DIEs referenced later, this is checked
18379          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18380
18381       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18382         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18383                      "- DIE at %s [in module %s]"),
18384                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18385
18386       /* If we're at the second level, and we're an enumerator, and
18387          our parent has no specification (meaning possibly lives in a
18388          namespace elsewhere), then we can add the partial symbol now
18389          instead of queueing it.  */
18390       if (pdi.tag == DW_TAG_enumerator
18391           && parent_die != NULL
18392           && parent_die->die_parent == NULL
18393           && parent_die->tag == DW_TAG_enumeration_type
18394           && parent_die->has_specification == 0)
18395         {
18396           if (pdi.name == NULL)
18397             complaint (_("malformed enumerator DIE ignored"));
18398           else if (building_psymtab)
18399             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18400                                  VAR_DOMAIN, LOC_CONST, -1,
18401                                  cu->language == language_cplus
18402                                  ? &objfile->global_psymbols
18403                                  : &objfile->static_psymbols,
18404                                  0, cu->language, objfile);
18405
18406           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18407           continue;
18408         }
18409
18410       struct partial_die_info *part_die
18411         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18412
18413       /* We'll save this DIE so link it in.  */
18414       part_die->die_parent = parent_die;
18415       part_die->die_sibling = NULL;
18416       part_die->die_child = NULL;
18417
18418       if (last_die && last_die == parent_die)
18419         last_die->die_child = part_die;
18420       else if (last_die)
18421         last_die->die_sibling = part_die;
18422
18423       last_die = part_die;
18424
18425       if (first_die == NULL)
18426         first_die = part_die;
18427
18428       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18429          find interesting need to be in the hash table, because we
18430          also have the parent/sibling/child chains; only those that we
18431          might refer to by offset later during partial symbol reading.
18432
18433          For now this means things that might have be the target of a
18434          DW_AT_specification, DW_AT_abstract_origin, or
18435          DW_AT_extension.  DW_AT_extension will refer only to
18436          namespaces; DW_AT_abstract_origin refers to functions (and
18437          many things under the function DIE, but we do not recurse
18438          into function DIEs during partial symbol reading) and
18439          possibly variables as well; DW_AT_specification refers to
18440          declarations.  Declarations ought to have the DW_AT_declaration
18441          flag.  It happens that GCC forgets to put it in sometimes, but
18442          only for functions, not for types.
18443
18444          Adding more things than necessary to the hash table is harmless
18445          except for the performance cost.  Adding too few will result in
18446          wasted time in find_partial_die, when we reread the compilation
18447          unit with load_all_dies set.  */
18448
18449       if (load_all
18450           || abbrev->tag == DW_TAG_constant
18451           || abbrev->tag == DW_TAG_subprogram
18452           || abbrev->tag == DW_TAG_variable
18453           || abbrev->tag == DW_TAG_namespace
18454           || part_die->is_declaration)
18455         {
18456           void **slot;
18457
18458           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18459                                            to_underlying (part_die->sect_off),
18460                                            INSERT);
18461           *slot = part_die;
18462         }
18463
18464       /* For some DIEs we want to follow their children (if any).  For C
18465          we have no reason to follow the children of structures; for other
18466          languages we have to, so that we can get at method physnames
18467          to infer fully qualified class names, for DW_AT_specification,
18468          and for C++ template arguments.  For C++, we also look one level
18469          inside functions to find template arguments (if the name of the
18470          function does not already contain the template arguments).
18471
18472          For Ada, we need to scan the children of subprograms and lexical
18473          blocks as well because Ada allows the definition of nested
18474          entities that could be interesting for the debugger, such as
18475          nested subprograms for instance.  */
18476       if (last_die->has_children
18477           && (load_all
18478               || last_die->tag == DW_TAG_namespace
18479               || last_die->tag == DW_TAG_module
18480               || last_die->tag == DW_TAG_enumeration_type
18481               || (cu->language == language_cplus
18482                   && last_die->tag == DW_TAG_subprogram
18483                   && (last_die->name == NULL
18484                       || strchr (last_die->name, '<') == NULL))
18485               || (cu->language != language_c
18486                   && (last_die->tag == DW_TAG_class_type
18487                       || last_die->tag == DW_TAG_interface_type
18488                       || last_die->tag == DW_TAG_structure_type
18489                       || last_die->tag == DW_TAG_union_type))
18490               || (cu->language == language_ada
18491                   && (last_die->tag == DW_TAG_subprogram
18492                       || last_die->tag == DW_TAG_lexical_block))))
18493         {
18494           nesting_level++;
18495           parent_die = last_die;
18496           continue;
18497         }
18498
18499       /* Otherwise we skip to the next sibling, if any.  */
18500       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18501
18502       /* Back to the top, do it again.  */
18503     }
18504 }
18505
18506 partial_die_info::partial_die_info (sect_offset sect_off_,
18507                                     struct abbrev_info *abbrev)
18508   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18509 {
18510 }
18511
18512 /* Read a minimal amount of information into the minimal die structure.
18513    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18514
18515 const gdb_byte *
18516 partial_die_info::read (const struct die_reader_specs *reader,
18517                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18518 {
18519   struct dwarf2_cu *cu = reader->cu;
18520   struct dwarf2_per_objfile *dwarf2_per_objfile
18521     = cu->per_cu->dwarf2_per_objfile;
18522   unsigned int i;
18523   int has_low_pc_attr = 0;
18524   int has_high_pc_attr = 0;
18525   int high_pc_relative = 0;
18526
18527   for (i = 0; i < abbrev.num_attrs; ++i)
18528     {
18529       struct attribute attr;
18530
18531       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18532
18533       /* Store the data if it is of an attribute we want to keep in a
18534          partial symbol table.  */
18535       switch (attr.name)
18536         {
18537         case DW_AT_name:
18538           switch (tag)
18539             {
18540             case DW_TAG_compile_unit:
18541             case DW_TAG_partial_unit:
18542             case DW_TAG_type_unit:
18543               /* Compilation units have a DW_AT_name that is a filename, not
18544                  a source language identifier.  */
18545             case DW_TAG_enumeration_type:
18546             case DW_TAG_enumerator:
18547               /* These tags always have simple identifiers already; no need
18548                  to canonicalize them.  */
18549               name = DW_STRING (&attr);
18550               break;
18551             default:
18552               {
18553                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18554
18555                 name
18556                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18557                                               &objfile->per_bfd->storage_obstack);
18558               }
18559               break;
18560             }
18561           break;
18562         case DW_AT_linkage_name:
18563         case DW_AT_MIPS_linkage_name:
18564           /* Note that both forms of linkage name might appear.  We
18565              assume they will be the same, and we only store the last
18566              one we see.  */
18567           if (cu->language == language_ada)
18568             name = DW_STRING (&attr);
18569           linkage_name = DW_STRING (&attr);
18570           break;
18571         case DW_AT_low_pc:
18572           has_low_pc_attr = 1;
18573           lowpc = attr_value_as_address (&attr);
18574           break;
18575         case DW_AT_high_pc:
18576           has_high_pc_attr = 1;
18577           highpc = attr_value_as_address (&attr);
18578           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18579                 high_pc_relative = 1;
18580           break;
18581         case DW_AT_location:
18582           /* Support the .debug_loc offsets.  */
18583           if (attr_form_is_block (&attr))
18584             {
18585                d.locdesc = DW_BLOCK (&attr);
18586             }
18587           else if (attr_form_is_section_offset (&attr))
18588             {
18589               dwarf2_complex_location_expr_complaint ();
18590             }
18591           else
18592             {
18593               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18594                                                      "partial symbol information");
18595             }
18596           break;
18597         case DW_AT_external:
18598           is_external = DW_UNSND (&attr);
18599           break;
18600         case DW_AT_declaration:
18601           is_declaration = DW_UNSND (&attr);
18602           break;
18603         case DW_AT_type:
18604           has_type = 1;
18605           break;
18606         case DW_AT_abstract_origin:
18607         case DW_AT_specification:
18608         case DW_AT_extension:
18609           has_specification = 1;
18610           spec_offset = dwarf2_get_ref_die_offset (&attr);
18611           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18612                                    || cu->per_cu->is_dwz);
18613           break;
18614         case DW_AT_sibling:
18615           /* Ignore absolute siblings, they might point outside of
18616              the current compile unit.  */
18617           if (attr.form == DW_FORM_ref_addr)
18618             complaint (_("ignoring absolute DW_AT_sibling"));
18619           else
18620             {
18621               const gdb_byte *buffer = reader->buffer;
18622               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18623               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18624
18625               if (sibling_ptr < info_ptr)
18626                 complaint (_("DW_AT_sibling points backwards"));
18627               else if (sibling_ptr > reader->buffer_end)
18628                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18629               else
18630                 sibling = sibling_ptr;
18631             }
18632           break;
18633         case DW_AT_byte_size:
18634           has_byte_size = 1;
18635           break;
18636         case DW_AT_const_value:
18637           has_const_value = 1;
18638           break;
18639         case DW_AT_calling_convention:
18640           /* DWARF doesn't provide a way to identify a program's source-level
18641              entry point.  DW_AT_calling_convention attributes are only meant
18642              to describe functions' calling conventions.
18643
18644              However, because it's a necessary piece of information in
18645              Fortran, and before DWARF 4 DW_CC_program was the only
18646              piece of debugging information whose definition refers to
18647              a 'main program' at all, several compilers marked Fortran
18648              main programs with DW_CC_program --- even when those
18649              functions use the standard calling conventions.
18650
18651              Although DWARF now specifies a way to provide this
18652              information, we support this practice for backward
18653              compatibility.  */
18654           if (DW_UNSND (&attr) == DW_CC_program
18655               && cu->language == language_fortran)
18656             main_subprogram = 1;
18657           break;
18658         case DW_AT_inline:
18659           if (DW_UNSND (&attr) == DW_INL_inlined
18660               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18661             may_be_inlined = 1;
18662           break;
18663
18664         case DW_AT_import:
18665           if (tag == DW_TAG_imported_unit)
18666             {
18667               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18668               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18669                                   || cu->per_cu->is_dwz);
18670             }
18671           break;
18672
18673         case DW_AT_main_subprogram:
18674           main_subprogram = DW_UNSND (&attr);
18675           break;
18676
18677         default:
18678           break;
18679         }
18680     }
18681
18682   if (high_pc_relative)
18683     highpc += lowpc;
18684
18685   if (has_low_pc_attr && has_high_pc_attr)
18686     {
18687       /* When using the GNU linker, .gnu.linkonce. sections are used to
18688          eliminate duplicate copies of functions and vtables and such.
18689          The linker will arbitrarily choose one and discard the others.
18690          The AT_*_pc values for such functions refer to local labels in
18691          these sections.  If the section from that file was discarded, the
18692          labels are not in the output, so the relocs get a value of 0.
18693          If this is a discarded function, mark the pc bounds as invalid,
18694          so that GDB will ignore it.  */
18695       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18696         {
18697           struct objfile *objfile = dwarf2_per_objfile->objfile;
18698           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18699
18700           complaint (_("DW_AT_low_pc %s is zero "
18701                        "for DIE at %s [in module %s]"),
18702                      paddress (gdbarch, lowpc),
18703                      sect_offset_str (sect_off),
18704                      objfile_name (objfile));
18705         }
18706       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18707       else if (lowpc >= highpc)
18708         {
18709           struct objfile *objfile = dwarf2_per_objfile->objfile;
18710           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18711
18712           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18713                        "for DIE at %s [in module %s]"),
18714                      paddress (gdbarch, lowpc),
18715                      paddress (gdbarch, highpc),
18716                      sect_offset_str (sect_off),
18717                      objfile_name (objfile));
18718         }
18719       else
18720         has_pc_info = 1;
18721     }
18722
18723   return info_ptr;
18724 }
18725
18726 /* Find a cached partial DIE at OFFSET in CU.  */
18727
18728 struct partial_die_info *
18729 dwarf2_cu::find_partial_die (sect_offset sect_off)
18730 {
18731   struct partial_die_info *lookup_die = NULL;
18732   struct partial_die_info part_die (sect_off);
18733
18734   lookup_die = ((struct partial_die_info *)
18735                 htab_find_with_hash (partial_dies, &part_die,
18736                                      to_underlying (sect_off)));
18737
18738   return lookup_die;
18739 }
18740
18741 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18742    except in the case of .debug_types DIEs which do not reference
18743    outside their CU (they do however referencing other types via
18744    DW_FORM_ref_sig8).  */
18745
18746 static struct partial_die_info *
18747 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18748 {
18749   struct dwarf2_per_objfile *dwarf2_per_objfile
18750     = cu->per_cu->dwarf2_per_objfile;
18751   struct objfile *objfile = dwarf2_per_objfile->objfile;
18752   struct dwarf2_per_cu_data *per_cu = NULL;
18753   struct partial_die_info *pd = NULL;
18754
18755   if (offset_in_dwz == cu->per_cu->is_dwz
18756       && offset_in_cu_p (&cu->header, sect_off))
18757     {
18758       pd = cu->find_partial_die (sect_off);
18759       if (pd != NULL)
18760         return pd;
18761       /* We missed recording what we needed.
18762          Load all dies and try again.  */
18763       per_cu = cu->per_cu;
18764     }
18765   else
18766     {
18767       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18768       if (cu->per_cu->is_debug_types)
18769         {
18770           error (_("Dwarf Error: Type Unit at offset %s contains"
18771                    " external reference to offset %s [in module %s].\n"),
18772                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18773                  bfd_get_filename (objfile->obfd));
18774         }
18775       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18776                                                  dwarf2_per_objfile);
18777
18778       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18779         load_partial_comp_unit (per_cu);
18780
18781       per_cu->cu->last_used = 0;
18782       pd = per_cu->cu->find_partial_die (sect_off);
18783     }
18784
18785   /* If we didn't find it, and not all dies have been loaded,
18786      load them all and try again.  */
18787
18788   if (pd == NULL && per_cu->load_all_dies == 0)
18789     {
18790       per_cu->load_all_dies = 1;
18791
18792       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18793          THIS_CU->cu may already be in use.  So we can't just free it and
18794          replace its DIEs with the ones we read in.  Instead, we leave those
18795          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18796          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18797          set.  */
18798       load_partial_comp_unit (per_cu);
18799
18800       pd = per_cu->cu->find_partial_die (sect_off);
18801     }
18802
18803   if (pd == NULL)
18804     internal_error (__FILE__, __LINE__,
18805                     _("could not find partial DIE %s "
18806                       "in cache [from module %s]\n"),
18807                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18808   return pd;
18809 }
18810
18811 /* See if we can figure out if the class lives in a namespace.  We do
18812    this by looking for a member function; its demangled name will
18813    contain namespace info, if there is any.  */
18814
18815 static void
18816 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18817                                   struct dwarf2_cu *cu)
18818 {
18819   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18820      what template types look like, because the demangler
18821      frequently doesn't give the same name as the debug info.  We
18822      could fix this by only using the demangled name to get the
18823      prefix (but see comment in read_structure_type).  */
18824
18825   struct partial_die_info *real_pdi;
18826   struct partial_die_info *child_pdi;
18827
18828   /* If this DIE (this DIE's specification, if any) has a parent, then
18829      we should not do this.  We'll prepend the parent's fully qualified
18830      name when we create the partial symbol.  */
18831
18832   real_pdi = struct_pdi;
18833   while (real_pdi->has_specification)
18834     real_pdi = find_partial_die (real_pdi->spec_offset,
18835                                  real_pdi->spec_is_dwz, cu);
18836
18837   if (real_pdi->die_parent != NULL)
18838     return;
18839
18840   for (child_pdi = struct_pdi->die_child;
18841        child_pdi != NULL;
18842        child_pdi = child_pdi->die_sibling)
18843     {
18844       if (child_pdi->tag == DW_TAG_subprogram
18845           && child_pdi->linkage_name != NULL)
18846         {
18847           char *actual_class_name
18848             = language_class_name_from_physname (cu->language_defn,
18849                                                  child_pdi->linkage_name);
18850           if (actual_class_name != NULL)
18851             {
18852               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18853               struct_pdi->name
18854                 = ((const char *)
18855                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18856                                   actual_class_name,
18857                                   strlen (actual_class_name)));
18858               xfree (actual_class_name);
18859             }
18860           break;
18861         }
18862     }
18863 }
18864
18865 void
18866 partial_die_info::fixup (struct dwarf2_cu *cu)
18867 {
18868   /* Once we've fixed up a die, there's no point in doing so again.
18869      This also avoids a memory leak if we were to call
18870      guess_partial_die_structure_name multiple times.  */
18871   if (fixup_called)
18872     return;
18873
18874   /* If we found a reference attribute and the DIE has no name, try
18875      to find a name in the referred to DIE.  */
18876
18877   if (name == NULL && has_specification)
18878     {
18879       struct partial_die_info *spec_die;
18880
18881       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18882
18883       spec_die->fixup (cu);
18884
18885       if (spec_die->name)
18886         {
18887           name = spec_die->name;
18888
18889           /* Copy DW_AT_external attribute if it is set.  */
18890           if (spec_die->is_external)
18891             is_external = spec_die->is_external;
18892         }
18893     }
18894
18895   /* Set default names for some unnamed DIEs.  */
18896
18897   if (name == NULL && tag == DW_TAG_namespace)
18898     name = CP_ANONYMOUS_NAMESPACE_STR;
18899
18900   /* If there is no parent die to provide a namespace, and there are
18901      children, see if we can determine the namespace from their linkage
18902      name.  */
18903   if (cu->language == language_cplus
18904       && !VEC_empty (dwarf2_section_info_def,
18905                      cu->per_cu->dwarf2_per_objfile->types)
18906       && die_parent == NULL
18907       && has_children
18908       && (tag == DW_TAG_class_type
18909           || tag == DW_TAG_structure_type
18910           || tag == DW_TAG_union_type))
18911     guess_partial_die_structure_name (this, cu);
18912
18913   /* GCC might emit a nameless struct or union that has a linkage
18914      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18915   if (name == NULL
18916       && (tag == DW_TAG_class_type
18917           || tag == DW_TAG_interface_type
18918           || tag == DW_TAG_structure_type
18919           || tag == DW_TAG_union_type)
18920       && linkage_name != NULL)
18921     {
18922       char *demangled;
18923
18924       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18925       if (demangled)
18926         {
18927           const char *base;
18928
18929           /* Strip any leading namespaces/classes, keep only the base name.
18930              DW_AT_name for named DIEs does not contain the prefixes.  */
18931           base = strrchr (demangled, ':');
18932           if (base && base > demangled && base[-1] == ':')
18933             base++;
18934           else
18935             base = demangled;
18936
18937           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18938           name
18939             = ((const char *)
18940                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18941                               base, strlen (base)));
18942           xfree (demangled);
18943         }
18944     }
18945
18946   fixup_called = 1;
18947 }
18948
18949 /* Read an attribute value described by an attribute form.  */
18950
18951 static const gdb_byte *
18952 read_attribute_value (const struct die_reader_specs *reader,
18953                       struct attribute *attr, unsigned form,
18954                       LONGEST implicit_const, const gdb_byte *info_ptr)
18955 {
18956   struct dwarf2_cu *cu = reader->cu;
18957   struct dwarf2_per_objfile *dwarf2_per_objfile
18958     = cu->per_cu->dwarf2_per_objfile;
18959   struct objfile *objfile = dwarf2_per_objfile->objfile;
18960   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18961   bfd *abfd = reader->abfd;
18962   struct comp_unit_head *cu_header = &cu->header;
18963   unsigned int bytes_read;
18964   struct dwarf_block *blk;
18965
18966   attr->form = (enum dwarf_form) form;
18967   switch (form)
18968     {
18969     case DW_FORM_ref_addr:
18970       if (cu->header.version == 2)
18971         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18972       else
18973         DW_UNSND (attr) = read_offset (abfd, info_ptr,
18974                                        &cu->header, &bytes_read);
18975       info_ptr += bytes_read;
18976       break;
18977     case DW_FORM_GNU_ref_alt:
18978       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18979       info_ptr += bytes_read;
18980       break;
18981     case DW_FORM_addr:
18982       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18983       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
18984       info_ptr += bytes_read;
18985       break;
18986     case DW_FORM_block2:
18987       blk = dwarf_alloc_block (cu);
18988       blk->size = read_2_bytes (abfd, info_ptr);
18989       info_ptr += 2;
18990       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18991       info_ptr += blk->size;
18992       DW_BLOCK (attr) = blk;
18993       break;
18994     case DW_FORM_block4:
18995       blk = dwarf_alloc_block (cu);
18996       blk->size = read_4_bytes (abfd, info_ptr);
18997       info_ptr += 4;
18998       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18999       info_ptr += blk->size;
19000       DW_BLOCK (attr) = blk;
19001       break;
19002     case DW_FORM_data2:
19003       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19004       info_ptr += 2;
19005       break;
19006     case DW_FORM_data4:
19007       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19008       info_ptr += 4;
19009       break;
19010     case DW_FORM_data8:
19011       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19012       info_ptr += 8;
19013       break;
19014     case DW_FORM_data16:
19015       blk = dwarf_alloc_block (cu);
19016       blk->size = 16;
19017       blk->data = read_n_bytes (abfd, info_ptr, 16);
19018       info_ptr += 16;
19019       DW_BLOCK (attr) = blk;
19020       break;
19021     case DW_FORM_sec_offset:
19022       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19023       info_ptr += bytes_read;
19024       break;
19025     case DW_FORM_string:
19026       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19027       DW_STRING_IS_CANONICAL (attr) = 0;
19028       info_ptr += bytes_read;
19029       break;
19030     case DW_FORM_strp:
19031       if (!cu->per_cu->is_dwz)
19032         {
19033           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19034                                                    abfd, info_ptr, cu_header,
19035                                                    &bytes_read);
19036           DW_STRING_IS_CANONICAL (attr) = 0;
19037           info_ptr += bytes_read;
19038           break;
19039         }
19040       /* FALLTHROUGH */
19041     case DW_FORM_line_strp:
19042       if (!cu->per_cu->is_dwz)
19043         {
19044           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19045                                                         abfd, info_ptr,
19046                                                         cu_header, &bytes_read);
19047           DW_STRING_IS_CANONICAL (attr) = 0;
19048           info_ptr += bytes_read;
19049           break;
19050         }
19051       /* FALLTHROUGH */
19052     case DW_FORM_GNU_strp_alt:
19053       {
19054         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19055         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19056                                           &bytes_read);
19057
19058         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19059                                                           dwz, str_offset);
19060         DW_STRING_IS_CANONICAL (attr) = 0;
19061         info_ptr += bytes_read;
19062       }
19063       break;
19064     case DW_FORM_exprloc:
19065     case DW_FORM_block:
19066       blk = dwarf_alloc_block (cu);
19067       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19068       info_ptr += bytes_read;
19069       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19070       info_ptr += blk->size;
19071       DW_BLOCK (attr) = blk;
19072       break;
19073     case DW_FORM_block1:
19074       blk = dwarf_alloc_block (cu);
19075       blk->size = read_1_byte (abfd, info_ptr);
19076       info_ptr += 1;
19077       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19078       info_ptr += blk->size;
19079       DW_BLOCK (attr) = blk;
19080       break;
19081     case DW_FORM_data1:
19082       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19083       info_ptr += 1;
19084       break;
19085     case DW_FORM_flag:
19086       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19087       info_ptr += 1;
19088       break;
19089     case DW_FORM_flag_present:
19090       DW_UNSND (attr) = 1;
19091       break;
19092     case DW_FORM_sdata:
19093       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19094       info_ptr += bytes_read;
19095       break;
19096     case DW_FORM_udata:
19097       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19098       info_ptr += bytes_read;
19099       break;
19100     case DW_FORM_ref1:
19101       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19102                          + read_1_byte (abfd, info_ptr));
19103       info_ptr += 1;
19104       break;
19105     case DW_FORM_ref2:
19106       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19107                          + read_2_bytes (abfd, info_ptr));
19108       info_ptr += 2;
19109       break;
19110     case DW_FORM_ref4:
19111       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19112                          + read_4_bytes (abfd, info_ptr));
19113       info_ptr += 4;
19114       break;
19115     case DW_FORM_ref8:
19116       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19117                          + read_8_bytes (abfd, info_ptr));
19118       info_ptr += 8;
19119       break;
19120     case DW_FORM_ref_sig8:
19121       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19122       info_ptr += 8;
19123       break;
19124     case DW_FORM_ref_udata:
19125       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19126                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19127       info_ptr += bytes_read;
19128       break;
19129     case DW_FORM_indirect:
19130       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19131       info_ptr += bytes_read;
19132       if (form == DW_FORM_implicit_const)
19133         {
19134           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19135           info_ptr += bytes_read;
19136         }
19137       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19138                                        info_ptr);
19139       break;
19140     case DW_FORM_implicit_const:
19141       DW_SND (attr) = implicit_const;
19142       break;
19143     case DW_FORM_GNU_addr_index:
19144       if (reader->dwo_file == NULL)
19145         {
19146           /* For now flag a hard error.
19147              Later we can turn this into a complaint.  */
19148           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19149                  dwarf_form_name (form),
19150                  bfd_get_filename (abfd));
19151         }
19152       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19153       info_ptr += bytes_read;
19154       break;
19155     case DW_FORM_GNU_str_index:
19156       if (reader->dwo_file == NULL)
19157         {
19158           /* For now flag a hard error.
19159              Later we can turn this into a complaint if warranted.  */
19160           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19161                  dwarf_form_name (form),
19162                  bfd_get_filename (abfd));
19163         }
19164       {
19165         ULONGEST str_index =
19166           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19167
19168         DW_STRING (attr) = read_str_index (reader, str_index);
19169         DW_STRING_IS_CANONICAL (attr) = 0;
19170         info_ptr += bytes_read;
19171       }
19172       break;
19173     default:
19174       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19175              dwarf_form_name (form),
19176              bfd_get_filename (abfd));
19177     }
19178
19179   /* Super hack.  */
19180   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19181     attr->form = DW_FORM_GNU_ref_alt;
19182
19183   /* We have seen instances where the compiler tried to emit a byte
19184      size attribute of -1 which ended up being encoded as an unsigned
19185      0xffffffff.  Although 0xffffffff is technically a valid size value,
19186      an object of this size seems pretty unlikely so we can relatively
19187      safely treat these cases as if the size attribute was invalid and
19188      treat them as zero by default.  */
19189   if (attr->name == DW_AT_byte_size
19190       && form == DW_FORM_data4
19191       && DW_UNSND (attr) >= 0xffffffff)
19192     {
19193       complaint
19194         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19195          hex_string (DW_UNSND (attr)));
19196       DW_UNSND (attr) = 0;
19197     }
19198
19199   return info_ptr;
19200 }
19201
19202 /* Read an attribute described by an abbreviated attribute.  */
19203
19204 static const gdb_byte *
19205 read_attribute (const struct die_reader_specs *reader,
19206                 struct attribute *attr, struct attr_abbrev *abbrev,
19207                 const gdb_byte *info_ptr)
19208 {
19209   attr->name = abbrev->name;
19210   return read_attribute_value (reader, attr, abbrev->form,
19211                                abbrev->implicit_const, info_ptr);
19212 }
19213
19214 /* Read dwarf information from a buffer.  */
19215
19216 static unsigned int
19217 read_1_byte (bfd *abfd, const gdb_byte *buf)
19218 {
19219   return bfd_get_8 (abfd, buf);
19220 }
19221
19222 static int
19223 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19224 {
19225   return bfd_get_signed_8 (abfd, buf);
19226 }
19227
19228 static unsigned int
19229 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19230 {
19231   return bfd_get_16 (abfd, buf);
19232 }
19233
19234 static int
19235 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19236 {
19237   return bfd_get_signed_16 (abfd, buf);
19238 }
19239
19240 static unsigned int
19241 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19242 {
19243   return bfd_get_32 (abfd, buf);
19244 }
19245
19246 static int
19247 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19248 {
19249   return bfd_get_signed_32 (abfd, buf);
19250 }
19251
19252 static ULONGEST
19253 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19254 {
19255   return bfd_get_64 (abfd, buf);
19256 }
19257
19258 static CORE_ADDR
19259 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19260               unsigned int *bytes_read)
19261 {
19262   struct comp_unit_head *cu_header = &cu->header;
19263   CORE_ADDR retval = 0;
19264
19265   if (cu_header->signed_addr_p)
19266     {
19267       switch (cu_header->addr_size)
19268         {
19269         case 2:
19270           retval = bfd_get_signed_16 (abfd, buf);
19271           break;
19272         case 4:
19273           retval = bfd_get_signed_32 (abfd, buf);
19274           break;
19275         case 8:
19276           retval = bfd_get_signed_64 (abfd, buf);
19277           break;
19278         default:
19279           internal_error (__FILE__, __LINE__,
19280                           _("read_address: bad switch, signed [in module %s]"),
19281                           bfd_get_filename (abfd));
19282         }
19283     }
19284   else
19285     {
19286       switch (cu_header->addr_size)
19287         {
19288         case 2:
19289           retval = bfd_get_16 (abfd, buf);
19290           break;
19291         case 4:
19292           retval = bfd_get_32 (abfd, buf);
19293           break;
19294         case 8:
19295           retval = bfd_get_64 (abfd, buf);
19296           break;
19297         default:
19298           internal_error (__FILE__, __LINE__,
19299                           _("read_address: bad switch, "
19300                             "unsigned [in module %s]"),
19301                           bfd_get_filename (abfd));
19302         }
19303     }
19304
19305   *bytes_read = cu_header->addr_size;
19306   return retval;
19307 }
19308
19309 /* Read the initial length from a section.  The (draft) DWARF 3
19310    specification allows the initial length to take up either 4 bytes
19311    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19312    bytes describe the length and all offsets will be 8 bytes in length
19313    instead of 4.
19314
19315    An older, non-standard 64-bit format is also handled by this
19316    function.  The older format in question stores the initial length
19317    as an 8-byte quantity without an escape value.  Lengths greater
19318    than 2^32 aren't very common which means that the initial 4 bytes
19319    is almost always zero.  Since a length value of zero doesn't make
19320    sense for the 32-bit format, this initial zero can be considered to
19321    be an escape value which indicates the presence of the older 64-bit
19322    format.  As written, the code can't detect (old format) lengths
19323    greater than 4GB.  If it becomes necessary to handle lengths
19324    somewhat larger than 4GB, we could allow other small values (such
19325    as the non-sensical values of 1, 2, and 3) to also be used as
19326    escape values indicating the presence of the old format.
19327
19328    The value returned via bytes_read should be used to increment the
19329    relevant pointer after calling read_initial_length().
19330
19331    [ Note:  read_initial_length() and read_offset() are based on the
19332      document entitled "DWARF Debugging Information Format", revision
19333      3, draft 8, dated November 19, 2001.  This document was obtained
19334      from:
19335
19336         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19337
19338      This document is only a draft and is subject to change.  (So beware.)
19339
19340      Details regarding the older, non-standard 64-bit format were
19341      determined empirically by examining 64-bit ELF files produced by
19342      the SGI toolchain on an IRIX 6.5 machine.
19343
19344      - Kevin, July 16, 2002
19345    ] */
19346
19347 static LONGEST
19348 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19349 {
19350   LONGEST length = bfd_get_32 (abfd, buf);
19351
19352   if (length == 0xffffffff)
19353     {
19354       length = bfd_get_64 (abfd, buf + 4);
19355       *bytes_read = 12;
19356     }
19357   else if (length == 0)
19358     {
19359       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19360       length = bfd_get_64 (abfd, buf);
19361       *bytes_read = 8;
19362     }
19363   else
19364     {
19365       *bytes_read = 4;
19366     }
19367
19368   return length;
19369 }
19370
19371 /* Cover function for read_initial_length.
19372    Returns the length of the object at BUF, and stores the size of the
19373    initial length in *BYTES_READ and stores the size that offsets will be in
19374    *OFFSET_SIZE.
19375    If the initial length size is not equivalent to that specified in
19376    CU_HEADER then issue a complaint.
19377    This is useful when reading non-comp-unit headers.  */
19378
19379 static LONGEST
19380 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19381                                         const struct comp_unit_head *cu_header,
19382                                         unsigned int *bytes_read,
19383                                         unsigned int *offset_size)
19384 {
19385   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19386
19387   gdb_assert (cu_header->initial_length_size == 4
19388               || cu_header->initial_length_size == 8
19389               || cu_header->initial_length_size == 12);
19390
19391   if (cu_header->initial_length_size != *bytes_read)
19392     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19393
19394   *offset_size = (*bytes_read == 4) ? 4 : 8;
19395   return length;
19396 }
19397
19398 /* Read an offset from the data stream.  The size of the offset is
19399    given by cu_header->offset_size.  */
19400
19401 static LONGEST
19402 read_offset (bfd *abfd, const gdb_byte *buf,
19403              const struct comp_unit_head *cu_header,
19404              unsigned int *bytes_read)
19405 {
19406   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19407
19408   *bytes_read = cu_header->offset_size;
19409   return offset;
19410 }
19411
19412 /* Read an offset from the data stream.  */
19413
19414 static LONGEST
19415 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19416 {
19417   LONGEST retval = 0;
19418
19419   switch (offset_size)
19420     {
19421     case 4:
19422       retval = bfd_get_32 (abfd, buf);
19423       break;
19424     case 8:
19425       retval = bfd_get_64 (abfd, buf);
19426       break;
19427     default:
19428       internal_error (__FILE__, __LINE__,
19429                       _("read_offset_1: bad switch [in module %s]"),
19430                       bfd_get_filename (abfd));
19431     }
19432
19433   return retval;
19434 }
19435
19436 static const gdb_byte *
19437 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19438 {
19439   /* If the size of a host char is 8 bits, we can return a pointer
19440      to the buffer, otherwise we have to copy the data to a buffer
19441      allocated on the temporary obstack.  */
19442   gdb_assert (HOST_CHAR_BIT == 8);
19443   return buf;
19444 }
19445
19446 static const char *
19447 read_direct_string (bfd *abfd, const gdb_byte *buf,
19448                     unsigned int *bytes_read_ptr)
19449 {
19450   /* If the size of a host char is 8 bits, we can return a pointer
19451      to the string, otherwise we have to copy the string to a buffer
19452      allocated on the temporary obstack.  */
19453   gdb_assert (HOST_CHAR_BIT == 8);
19454   if (*buf == '\0')
19455     {
19456       *bytes_read_ptr = 1;
19457       return NULL;
19458     }
19459   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19460   return (const char *) buf;
19461 }
19462
19463 /* Return pointer to string at section SECT offset STR_OFFSET with error
19464    reporting strings FORM_NAME and SECT_NAME.  */
19465
19466 static const char *
19467 read_indirect_string_at_offset_from (struct objfile *objfile,
19468                                      bfd *abfd, LONGEST str_offset,
19469                                      struct dwarf2_section_info *sect,
19470                                      const char *form_name,
19471                                      const char *sect_name)
19472 {
19473   dwarf2_read_section (objfile, sect);
19474   if (sect->buffer == NULL)
19475     error (_("%s used without %s section [in module %s]"),
19476            form_name, sect_name, bfd_get_filename (abfd));
19477   if (str_offset >= sect->size)
19478     error (_("%s pointing outside of %s section [in module %s]"),
19479            form_name, sect_name, bfd_get_filename (abfd));
19480   gdb_assert (HOST_CHAR_BIT == 8);
19481   if (sect->buffer[str_offset] == '\0')
19482     return NULL;
19483   return (const char *) (sect->buffer + str_offset);
19484 }
19485
19486 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19487
19488 static const char *
19489 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19490                                 bfd *abfd, LONGEST str_offset)
19491 {
19492   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19493                                               abfd, str_offset,
19494                                               &dwarf2_per_objfile->str,
19495                                               "DW_FORM_strp", ".debug_str");
19496 }
19497
19498 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19499
19500 static const char *
19501 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19502                                      bfd *abfd, LONGEST str_offset)
19503 {
19504   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19505                                               abfd, str_offset,
19506                                               &dwarf2_per_objfile->line_str,
19507                                               "DW_FORM_line_strp",
19508                                               ".debug_line_str");
19509 }
19510
19511 /* Read a string at offset STR_OFFSET in the .debug_str section from
19512    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19513    the string consists of a single NUL byte, return NULL; otherwise
19514    return a pointer to the string.  */
19515
19516 static const char *
19517 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19518                                LONGEST str_offset)
19519 {
19520   dwarf2_read_section (objfile, &dwz->str);
19521
19522   if (dwz->str.buffer == NULL)
19523     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19524              "section [in module %s]"),
19525            bfd_get_filename (dwz->dwz_bfd));
19526   if (str_offset >= dwz->str.size)
19527     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19528              ".debug_str section [in module %s]"),
19529            bfd_get_filename (dwz->dwz_bfd));
19530   gdb_assert (HOST_CHAR_BIT == 8);
19531   if (dwz->str.buffer[str_offset] == '\0')
19532     return NULL;
19533   return (const char *) (dwz->str.buffer + str_offset);
19534 }
19535
19536 /* Return pointer to string at .debug_str offset as read from BUF.
19537    BUF is assumed to be in a compilation unit described by CU_HEADER.
19538    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19539
19540 static const char *
19541 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19542                       const gdb_byte *buf,
19543                       const struct comp_unit_head *cu_header,
19544                       unsigned int *bytes_read_ptr)
19545 {
19546   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19547
19548   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19549 }
19550
19551 /* Return pointer to string at .debug_line_str offset as read from BUF.
19552    BUF is assumed to be in a compilation unit described by CU_HEADER.
19553    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19554
19555 static const char *
19556 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19557                            bfd *abfd, const gdb_byte *buf,
19558                            const struct comp_unit_head *cu_header,
19559                            unsigned int *bytes_read_ptr)
19560 {
19561   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19562
19563   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19564                                               str_offset);
19565 }
19566
19567 ULONGEST
19568 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19569                           unsigned int *bytes_read_ptr)
19570 {
19571   ULONGEST result;
19572   unsigned int num_read;
19573   int shift;
19574   unsigned char byte;
19575
19576   result = 0;
19577   shift = 0;
19578   num_read = 0;
19579   while (1)
19580     {
19581       byte = bfd_get_8 (abfd, buf);
19582       buf++;
19583       num_read++;
19584       result |= ((ULONGEST) (byte & 127) << shift);
19585       if ((byte & 128) == 0)
19586         {
19587           break;
19588         }
19589       shift += 7;
19590     }
19591   *bytes_read_ptr = num_read;
19592   return result;
19593 }
19594
19595 static LONGEST
19596 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19597                     unsigned int *bytes_read_ptr)
19598 {
19599   LONGEST result;
19600   int shift, num_read;
19601   unsigned char byte;
19602
19603   result = 0;
19604   shift = 0;
19605   num_read = 0;
19606   while (1)
19607     {
19608       byte = bfd_get_8 (abfd, buf);
19609       buf++;
19610       num_read++;
19611       result |= ((LONGEST) (byte & 127) << shift);
19612       shift += 7;
19613       if ((byte & 128) == 0)
19614         {
19615           break;
19616         }
19617     }
19618   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19619     result |= -(((LONGEST) 1) << shift);
19620   *bytes_read_ptr = num_read;
19621   return result;
19622 }
19623
19624 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19625    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19626    ADDR_SIZE is the size of addresses from the CU header.  */
19627
19628 static CORE_ADDR
19629 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19630                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19631 {
19632   struct objfile *objfile = dwarf2_per_objfile->objfile;
19633   bfd *abfd = objfile->obfd;
19634   const gdb_byte *info_ptr;
19635
19636   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19637   if (dwarf2_per_objfile->addr.buffer == NULL)
19638     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19639            objfile_name (objfile));
19640   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19641     error (_("DW_FORM_addr_index pointing outside of "
19642              ".debug_addr section [in module %s]"),
19643            objfile_name (objfile));
19644   info_ptr = (dwarf2_per_objfile->addr.buffer
19645               + addr_base + addr_index * addr_size);
19646   if (addr_size == 4)
19647     return bfd_get_32 (abfd, info_ptr);
19648   else
19649     return bfd_get_64 (abfd, info_ptr);
19650 }
19651
19652 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19653
19654 static CORE_ADDR
19655 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19656 {
19657   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19658                             cu->addr_base, cu->header.addr_size);
19659 }
19660
19661 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19662
19663 static CORE_ADDR
19664 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19665                              unsigned int *bytes_read)
19666 {
19667   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19668   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19669
19670   return read_addr_index (cu, addr_index);
19671 }
19672
19673 /* Data structure to pass results from dwarf2_read_addr_index_reader
19674    back to dwarf2_read_addr_index.  */
19675
19676 struct dwarf2_read_addr_index_data
19677 {
19678   ULONGEST addr_base;
19679   int addr_size;
19680 };
19681
19682 /* die_reader_func for dwarf2_read_addr_index.  */
19683
19684 static void
19685 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19686                                const gdb_byte *info_ptr,
19687                                struct die_info *comp_unit_die,
19688                                int has_children,
19689                                void *data)
19690 {
19691   struct dwarf2_cu *cu = reader->cu;
19692   struct dwarf2_read_addr_index_data *aidata =
19693     (struct dwarf2_read_addr_index_data *) data;
19694
19695   aidata->addr_base = cu->addr_base;
19696   aidata->addr_size = cu->header.addr_size;
19697 }
19698
19699 /* Given an index in .debug_addr, fetch the value.
19700    NOTE: This can be called during dwarf expression evaluation,
19701    long after the debug information has been read, and thus per_cu->cu
19702    may no longer exist.  */
19703
19704 CORE_ADDR
19705 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19706                         unsigned int addr_index)
19707 {
19708   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19709   struct dwarf2_cu *cu = per_cu->cu;
19710   ULONGEST addr_base;
19711   int addr_size;
19712
19713   /* We need addr_base and addr_size.
19714      If we don't have PER_CU->cu, we have to get it.
19715      Nasty, but the alternative is storing the needed info in PER_CU,
19716      which at this point doesn't seem justified: it's not clear how frequently
19717      it would get used and it would increase the size of every PER_CU.
19718      Entry points like dwarf2_per_cu_addr_size do a similar thing
19719      so we're not in uncharted territory here.
19720      Alas we need to be a bit more complicated as addr_base is contained
19721      in the DIE.
19722
19723      We don't need to read the entire CU(/TU).
19724      We just need the header and top level die.
19725
19726      IWBN to use the aging mechanism to let us lazily later discard the CU.
19727      For now we skip this optimization.  */
19728
19729   if (cu != NULL)
19730     {
19731       addr_base = cu->addr_base;
19732       addr_size = cu->header.addr_size;
19733     }
19734   else
19735     {
19736       struct dwarf2_read_addr_index_data aidata;
19737
19738       /* Note: We can't use init_cutu_and_read_dies_simple here,
19739          we need addr_base.  */
19740       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19741                                dwarf2_read_addr_index_reader, &aidata);
19742       addr_base = aidata.addr_base;
19743       addr_size = aidata.addr_size;
19744     }
19745
19746   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19747                             addr_size);
19748 }
19749
19750 /* Given a DW_FORM_GNU_str_index, fetch the string.
19751    This is only used by the Fission support.  */
19752
19753 static const char *
19754 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19755 {
19756   struct dwarf2_cu *cu = reader->cu;
19757   struct dwarf2_per_objfile *dwarf2_per_objfile
19758     = cu->per_cu->dwarf2_per_objfile;
19759   struct objfile *objfile = dwarf2_per_objfile->objfile;
19760   const char *objf_name = objfile_name (objfile);
19761   bfd *abfd = objfile->obfd;
19762   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19763   struct dwarf2_section_info *str_offsets_section =
19764     &reader->dwo_file->sections.str_offsets;
19765   const gdb_byte *info_ptr;
19766   ULONGEST str_offset;
19767   static const char form_name[] = "DW_FORM_GNU_str_index";
19768
19769   dwarf2_read_section (objfile, str_section);
19770   dwarf2_read_section (objfile, str_offsets_section);
19771   if (str_section->buffer == NULL)
19772     error (_("%s used without .debug_str.dwo section"
19773              " in CU at offset %s [in module %s]"),
19774            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19775   if (str_offsets_section->buffer == NULL)
19776     error (_("%s used without .debug_str_offsets.dwo section"
19777              " in CU at offset %s [in module %s]"),
19778            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19779   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19780     error (_("%s pointing outside of .debug_str_offsets.dwo"
19781              " section in CU at offset %s [in module %s]"),
19782            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19783   info_ptr = (str_offsets_section->buffer
19784               + str_index * cu->header.offset_size);
19785   if (cu->header.offset_size == 4)
19786     str_offset = bfd_get_32 (abfd, info_ptr);
19787   else
19788     str_offset = bfd_get_64 (abfd, info_ptr);
19789   if (str_offset >= str_section->size)
19790     error (_("Offset from %s pointing outside of"
19791              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19792            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19793   return (const char *) (str_section->buffer + str_offset);
19794 }
19795
19796 /* Return the length of an LEB128 number in BUF.  */
19797
19798 static int
19799 leb128_size (const gdb_byte *buf)
19800 {
19801   const gdb_byte *begin = buf;
19802   gdb_byte byte;
19803
19804   while (1)
19805     {
19806       byte = *buf++;
19807       if ((byte & 128) == 0)
19808         return buf - begin;
19809     }
19810 }
19811
19812 static void
19813 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19814 {
19815   switch (lang)
19816     {
19817     case DW_LANG_C89:
19818     case DW_LANG_C99:
19819     case DW_LANG_C11:
19820     case DW_LANG_C:
19821     case DW_LANG_UPC:
19822       cu->language = language_c;
19823       break;
19824     case DW_LANG_Java:
19825     case DW_LANG_C_plus_plus:
19826     case DW_LANG_C_plus_plus_11:
19827     case DW_LANG_C_plus_plus_14:
19828       cu->language = language_cplus;
19829       break;
19830     case DW_LANG_D:
19831       cu->language = language_d;
19832       break;
19833     case DW_LANG_Fortran77:
19834     case DW_LANG_Fortran90:
19835     case DW_LANG_Fortran95:
19836     case DW_LANG_Fortran03:
19837     case DW_LANG_Fortran08:
19838       cu->language = language_fortran;
19839       break;
19840     case DW_LANG_Go:
19841       cu->language = language_go;
19842       break;
19843     case DW_LANG_Mips_Assembler:
19844       cu->language = language_asm;
19845       break;
19846     case DW_LANG_Ada83:
19847     case DW_LANG_Ada95:
19848       cu->language = language_ada;
19849       break;
19850     case DW_LANG_Modula2:
19851       cu->language = language_m2;
19852       break;
19853     case DW_LANG_Pascal83:
19854       cu->language = language_pascal;
19855       break;
19856     case DW_LANG_ObjC:
19857       cu->language = language_objc;
19858       break;
19859     case DW_LANG_Rust:
19860     case DW_LANG_Rust_old:
19861       cu->language = language_rust;
19862       break;
19863     case DW_LANG_Cobol74:
19864     case DW_LANG_Cobol85:
19865     default:
19866       cu->language = language_minimal;
19867       break;
19868     }
19869   cu->language_defn = language_def (cu->language);
19870 }
19871
19872 /* Return the named attribute or NULL if not there.  */
19873
19874 static struct attribute *
19875 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19876 {
19877   for (;;)
19878     {
19879       unsigned int i;
19880       struct attribute *spec = NULL;
19881
19882       for (i = 0; i < die->num_attrs; ++i)
19883         {
19884           if (die->attrs[i].name == name)
19885             return &die->attrs[i];
19886           if (die->attrs[i].name == DW_AT_specification
19887               || die->attrs[i].name == DW_AT_abstract_origin)
19888             spec = &die->attrs[i];
19889         }
19890
19891       if (!spec)
19892         break;
19893
19894       die = follow_die_ref (die, spec, &cu);
19895     }
19896
19897   return NULL;
19898 }
19899
19900 /* Return the named attribute or NULL if not there,
19901    but do not follow DW_AT_specification, etc.
19902    This is for use in contexts where we're reading .debug_types dies.
19903    Following DW_AT_specification, DW_AT_abstract_origin will take us
19904    back up the chain, and we want to go down.  */
19905
19906 static struct attribute *
19907 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19908 {
19909   unsigned int i;
19910
19911   for (i = 0; i < die->num_attrs; ++i)
19912     if (die->attrs[i].name == name)
19913       return &die->attrs[i];
19914
19915   return NULL;
19916 }
19917
19918 /* Return the string associated with a string-typed attribute, or NULL if it
19919    is either not found or is of an incorrect type.  */
19920
19921 static const char *
19922 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19923 {
19924   struct attribute *attr;
19925   const char *str = NULL;
19926
19927   attr = dwarf2_attr (die, name, cu);
19928
19929   if (attr != NULL)
19930     {
19931       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19932           || attr->form == DW_FORM_string
19933           || attr->form == DW_FORM_GNU_str_index
19934           || attr->form == DW_FORM_GNU_strp_alt)
19935         str = DW_STRING (attr);
19936       else
19937         complaint (_("string type expected for attribute %s for "
19938                      "DIE at %s in module %s"),
19939                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19940                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19941     }
19942
19943   return str;
19944 }
19945
19946 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19947    and holds a non-zero value.  This function should only be used for
19948    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19949
19950 static int
19951 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19952 {
19953   struct attribute *attr = dwarf2_attr (die, name, cu);
19954
19955   return (attr && DW_UNSND (attr));
19956 }
19957
19958 static int
19959 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19960 {
19961   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19962      which value is non-zero.  However, we have to be careful with
19963      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19964      (via dwarf2_flag_true_p) follows this attribute.  So we may
19965      end up accidently finding a declaration attribute that belongs
19966      to a different DIE referenced by the specification attribute,
19967      even though the given DIE does not have a declaration attribute.  */
19968   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
19969           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
19970 }
19971
19972 /* Return the die giving the specification for DIE, if there is
19973    one.  *SPEC_CU is the CU containing DIE on input, and the CU
19974    containing the return value on output.  If there is no
19975    specification, but there is an abstract origin, that is
19976    returned.  */
19977
19978 static struct die_info *
19979 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
19980 {
19981   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
19982                                              *spec_cu);
19983
19984   if (spec_attr == NULL)
19985     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
19986
19987   if (spec_attr == NULL)
19988     return NULL;
19989   else
19990     return follow_die_ref (die, spec_attr, spec_cu);
19991 }
19992
19993 /* Stub for free_line_header to match void * callback types.  */
19994
19995 static void
19996 free_line_header_voidp (void *arg)
19997 {
19998   struct line_header *lh = (struct line_header *) arg;
19999
20000   delete lh;
20001 }
20002
20003 void
20004 line_header::add_include_dir (const char *include_dir)
20005 {
20006   if (dwarf_line_debug >= 2)
20007     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20008                         include_dirs.size () + 1, include_dir);
20009
20010   include_dirs.push_back (include_dir);
20011 }
20012
20013 void
20014 line_header::add_file_name (const char *name,
20015                             dir_index d_index,
20016                             unsigned int mod_time,
20017                             unsigned int length)
20018 {
20019   if (dwarf_line_debug >= 2)
20020     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20021                         (unsigned) file_names.size () + 1, name);
20022
20023   file_names.emplace_back (name, d_index, mod_time, length);
20024 }
20025
20026 /* A convenience function to find the proper .debug_line section for a CU.  */
20027
20028 static struct dwarf2_section_info *
20029 get_debug_line_section (struct dwarf2_cu *cu)
20030 {
20031   struct dwarf2_section_info *section;
20032   struct dwarf2_per_objfile *dwarf2_per_objfile
20033     = cu->per_cu->dwarf2_per_objfile;
20034
20035   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20036      DWO file.  */
20037   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20038     section = &cu->dwo_unit->dwo_file->sections.line;
20039   else if (cu->per_cu->is_dwz)
20040     {
20041       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20042
20043       section = &dwz->line;
20044     }
20045   else
20046     section = &dwarf2_per_objfile->line;
20047
20048   return section;
20049 }
20050
20051 /* Read directory or file name entry format, starting with byte of
20052    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20053    entries count and the entries themselves in the described entry
20054    format.  */
20055
20056 static void
20057 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20058                         bfd *abfd, const gdb_byte **bufp,
20059                         struct line_header *lh,
20060                         const struct comp_unit_head *cu_header,
20061                         void (*callback) (struct line_header *lh,
20062                                           const char *name,
20063                                           dir_index d_index,
20064                                           unsigned int mod_time,
20065                                           unsigned int length))
20066 {
20067   gdb_byte format_count, formati;
20068   ULONGEST data_count, datai;
20069   const gdb_byte *buf = *bufp;
20070   const gdb_byte *format_header_data;
20071   unsigned int bytes_read;
20072
20073   format_count = read_1_byte (abfd, buf);
20074   buf += 1;
20075   format_header_data = buf;
20076   for (formati = 0; formati < format_count; formati++)
20077     {
20078       read_unsigned_leb128 (abfd, buf, &bytes_read);
20079       buf += bytes_read;
20080       read_unsigned_leb128 (abfd, buf, &bytes_read);
20081       buf += bytes_read;
20082     }
20083
20084   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20085   buf += bytes_read;
20086   for (datai = 0; datai < data_count; datai++)
20087     {
20088       const gdb_byte *format = format_header_data;
20089       struct file_entry fe;
20090
20091       for (formati = 0; formati < format_count; formati++)
20092         {
20093           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20094           format += bytes_read;
20095
20096           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20097           format += bytes_read;
20098
20099           gdb::optional<const char *> string;
20100           gdb::optional<unsigned int> uint;
20101
20102           switch (form)
20103             {
20104             case DW_FORM_string:
20105               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20106               buf += bytes_read;
20107               break;
20108
20109             case DW_FORM_line_strp:
20110               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20111                                                          abfd, buf,
20112                                                          cu_header,
20113                                                          &bytes_read));
20114               buf += bytes_read;
20115               break;
20116
20117             case DW_FORM_data1:
20118               uint.emplace (read_1_byte (abfd, buf));
20119               buf += 1;
20120               break;
20121
20122             case DW_FORM_data2:
20123               uint.emplace (read_2_bytes (abfd, buf));
20124               buf += 2;
20125               break;
20126
20127             case DW_FORM_data4:
20128               uint.emplace (read_4_bytes (abfd, buf));
20129               buf += 4;
20130               break;
20131
20132             case DW_FORM_data8:
20133               uint.emplace (read_8_bytes (abfd, buf));
20134               buf += 8;
20135               break;
20136
20137             case DW_FORM_udata:
20138               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20139               buf += bytes_read;
20140               break;
20141
20142             case DW_FORM_block:
20143               /* It is valid only for DW_LNCT_timestamp which is ignored by
20144                  current GDB.  */
20145               break;
20146             }
20147
20148           switch (content_type)
20149             {
20150             case DW_LNCT_path:
20151               if (string.has_value ())
20152                 fe.name = *string;
20153               break;
20154             case DW_LNCT_directory_index:
20155               if (uint.has_value ())
20156                 fe.d_index = (dir_index) *uint;
20157               break;
20158             case DW_LNCT_timestamp:
20159               if (uint.has_value ())
20160                 fe.mod_time = *uint;
20161               break;
20162             case DW_LNCT_size:
20163               if (uint.has_value ())
20164                 fe.length = *uint;
20165               break;
20166             case DW_LNCT_MD5:
20167               break;
20168             default:
20169               complaint (_("Unknown format content type %s"),
20170                          pulongest (content_type));
20171             }
20172         }
20173
20174       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20175     }
20176
20177   *bufp = buf;
20178 }
20179
20180 /* Read the statement program header starting at OFFSET in
20181    .debug_line, or .debug_line.dwo.  Return a pointer
20182    to a struct line_header, allocated using xmalloc.
20183    Returns NULL if there is a problem reading the header, e.g., if it
20184    has a version we don't understand.
20185
20186    NOTE: the strings in the include directory and file name tables of
20187    the returned object point into the dwarf line section buffer,
20188    and must not be freed.  */
20189
20190 static line_header_up
20191 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20192 {
20193   const gdb_byte *line_ptr;
20194   unsigned int bytes_read, offset_size;
20195   int i;
20196   const char *cur_dir, *cur_file;
20197   struct dwarf2_section_info *section;
20198   bfd *abfd;
20199   struct dwarf2_per_objfile *dwarf2_per_objfile
20200     = cu->per_cu->dwarf2_per_objfile;
20201
20202   section = get_debug_line_section (cu);
20203   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20204   if (section->buffer == NULL)
20205     {
20206       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20207         complaint (_("missing .debug_line.dwo section"));
20208       else
20209         complaint (_("missing .debug_line section"));
20210       return 0;
20211     }
20212
20213   /* We can't do this until we know the section is non-empty.
20214      Only then do we know we have such a section.  */
20215   abfd = get_section_bfd_owner (section);
20216
20217   /* Make sure that at least there's room for the total_length field.
20218      That could be 12 bytes long, but we're just going to fudge that.  */
20219   if (to_underlying (sect_off) + 4 >= section->size)
20220     {
20221       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20222       return 0;
20223     }
20224
20225   line_header_up lh (new line_header ());
20226
20227   lh->sect_off = sect_off;
20228   lh->offset_in_dwz = cu->per_cu->is_dwz;
20229
20230   line_ptr = section->buffer + to_underlying (sect_off);
20231
20232   /* Read in the header.  */
20233   lh->total_length =
20234     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20235                                             &bytes_read, &offset_size);
20236   line_ptr += bytes_read;
20237   if (line_ptr + lh->total_length > (section->buffer + section->size))
20238     {
20239       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20240       return 0;
20241     }
20242   lh->statement_program_end = line_ptr + lh->total_length;
20243   lh->version = read_2_bytes (abfd, line_ptr);
20244   line_ptr += 2;
20245   if (lh->version > 5)
20246     {
20247       /* This is a version we don't understand.  The format could have
20248          changed in ways we don't handle properly so just punt.  */
20249       complaint (_("unsupported version in .debug_line section"));
20250       return NULL;
20251     }
20252   if (lh->version >= 5)
20253     {
20254       gdb_byte segment_selector_size;
20255
20256       /* Skip address size.  */
20257       read_1_byte (abfd, line_ptr);
20258       line_ptr += 1;
20259
20260       segment_selector_size = read_1_byte (abfd, line_ptr);
20261       line_ptr += 1;
20262       if (segment_selector_size != 0)
20263         {
20264           complaint (_("unsupported segment selector size %u "
20265                        "in .debug_line section"),
20266                      segment_selector_size);
20267           return NULL;
20268         }
20269     }
20270   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20271   line_ptr += offset_size;
20272   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20273   line_ptr += 1;
20274   if (lh->version >= 4)
20275     {
20276       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20277       line_ptr += 1;
20278     }
20279   else
20280     lh->maximum_ops_per_instruction = 1;
20281
20282   if (lh->maximum_ops_per_instruction == 0)
20283     {
20284       lh->maximum_ops_per_instruction = 1;
20285       complaint (_("invalid maximum_ops_per_instruction "
20286                    "in `.debug_line' section"));
20287     }
20288
20289   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20290   line_ptr += 1;
20291   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20292   line_ptr += 1;
20293   lh->line_range = read_1_byte (abfd, line_ptr);
20294   line_ptr += 1;
20295   lh->opcode_base = read_1_byte (abfd, line_ptr);
20296   line_ptr += 1;
20297   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20298
20299   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20300   for (i = 1; i < lh->opcode_base; ++i)
20301     {
20302       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20303       line_ptr += 1;
20304     }
20305
20306   if (lh->version >= 5)
20307     {
20308       /* Read directory table.  */
20309       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20310                               &cu->header,
20311                               [] (struct line_header *lh, const char *name,
20312                                   dir_index d_index, unsigned int mod_time,
20313                                   unsigned int length)
20314         {
20315           lh->add_include_dir (name);
20316         });
20317
20318       /* Read file name table.  */
20319       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20320                               &cu->header,
20321                               [] (struct line_header *lh, const char *name,
20322                                   dir_index d_index, unsigned int mod_time,
20323                                   unsigned int length)
20324         {
20325           lh->add_file_name (name, d_index, mod_time, length);
20326         });
20327     }
20328   else
20329     {
20330       /* Read directory table.  */
20331       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20332         {
20333           line_ptr += bytes_read;
20334           lh->add_include_dir (cur_dir);
20335         }
20336       line_ptr += bytes_read;
20337
20338       /* Read file name table.  */
20339       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20340         {
20341           unsigned int mod_time, length;
20342           dir_index d_index;
20343
20344           line_ptr += bytes_read;
20345           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20346           line_ptr += bytes_read;
20347           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20348           line_ptr += bytes_read;
20349           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20350           line_ptr += bytes_read;
20351
20352           lh->add_file_name (cur_file, d_index, mod_time, length);
20353         }
20354       line_ptr += bytes_read;
20355     }
20356   lh->statement_program_start = line_ptr;
20357
20358   if (line_ptr > (section->buffer + section->size))
20359     complaint (_("line number info header doesn't "
20360                  "fit in `.debug_line' section"));
20361
20362   return lh;
20363 }
20364
20365 /* Subroutine of dwarf_decode_lines to simplify it.
20366    Return the file name of the psymtab for included file FILE_INDEX
20367    in line header LH of PST.
20368    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20369    If space for the result is malloc'd, *NAME_HOLDER will be set.
20370    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20371
20372 static const char *
20373 psymtab_include_file_name (const struct line_header *lh, int file_index,
20374                            const struct partial_symtab *pst,
20375                            const char *comp_dir,
20376                            gdb::unique_xmalloc_ptr<char> *name_holder)
20377 {
20378   const file_entry &fe = lh->file_names[file_index];
20379   const char *include_name = fe.name;
20380   const char *include_name_to_compare = include_name;
20381   const char *pst_filename;
20382   int file_is_pst;
20383
20384   const char *dir_name = fe.include_dir (lh);
20385
20386   gdb::unique_xmalloc_ptr<char> hold_compare;
20387   if (!IS_ABSOLUTE_PATH (include_name)
20388       && (dir_name != NULL || comp_dir != NULL))
20389     {
20390       /* Avoid creating a duplicate psymtab for PST.
20391          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20392          Before we do the comparison, however, we need to account
20393          for DIR_NAME and COMP_DIR.
20394          First prepend dir_name (if non-NULL).  If we still don't
20395          have an absolute path prepend comp_dir (if non-NULL).
20396          However, the directory we record in the include-file's
20397          psymtab does not contain COMP_DIR (to match the
20398          corresponding symtab(s)).
20399
20400          Example:
20401
20402          bash$ cd /tmp
20403          bash$ gcc -g ./hello.c
20404          include_name = "hello.c"
20405          dir_name = "."
20406          DW_AT_comp_dir = comp_dir = "/tmp"
20407          DW_AT_name = "./hello.c"
20408
20409       */
20410
20411       if (dir_name != NULL)
20412         {
20413           name_holder->reset (concat (dir_name, SLASH_STRING,
20414                                       include_name, (char *) NULL));
20415           include_name = name_holder->get ();
20416           include_name_to_compare = include_name;
20417         }
20418       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20419         {
20420           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20421                                       include_name, (char *) NULL));
20422           include_name_to_compare = hold_compare.get ();
20423         }
20424     }
20425
20426   pst_filename = pst->filename;
20427   gdb::unique_xmalloc_ptr<char> copied_name;
20428   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20429     {
20430       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20431                                  pst_filename, (char *) NULL));
20432       pst_filename = copied_name.get ();
20433     }
20434
20435   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20436
20437   if (file_is_pst)
20438     return NULL;
20439   return include_name;
20440 }
20441
20442 /* State machine to track the state of the line number program.  */
20443
20444 class lnp_state_machine
20445 {
20446 public:
20447   /* Initialize a machine state for the start of a line number
20448      program.  */
20449   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20450                      bool record_lines_p);
20451
20452   file_entry *current_file ()
20453   {
20454     /* lh->file_names is 0-based, but the file name numbers in the
20455        statement program are 1-based.  */
20456     return m_line_header->file_name_at (m_file);
20457   }
20458
20459   /* Record the line in the state machine.  END_SEQUENCE is true if
20460      we're processing the end of a sequence.  */
20461   void record_line (bool end_sequence);
20462
20463   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20464      nop-out rest of the lines in this sequence.  */
20465   void check_line_address (struct dwarf2_cu *cu,
20466                            const gdb_byte *line_ptr,
20467                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20468
20469   void handle_set_discriminator (unsigned int discriminator)
20470   {
20471     m_discriminator = discriminator;
20472     m_line_has_non_zero_discriminator |= discriminator != 0;
20473   }
20474
20475   /* Handle DW_LNE_set_address.  */
20476   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20477   {
20478     m_op_index = 0;
20479     address += baseaddr;
20480     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20481   }
20482
20483   /* Handle DW_LNS_advance_pc.  */
20484   void handle_advance_pc (CORE_ADDR adjust);
20485
20486   /* Handle a special opcode.  */
20487   void handle_special_opcode (unsigned char op_code);
20488
20489   /* Handle DW_LNS_advance_line.  */
20490   void handle_advance_line (int line_delta)
20491   {
20492     advance_line (line_delta);
20493   }
20494
20495   /* Handle DW_LNS_set_file.  */
20496   void handle_set_file (file_name_index file);
20497
20498   /* Handle DW_LNS_negate_stmt.  */
20499   void handle_negate_stmt ()
20500   {
20501     m_is_stmt = !m_is_stmt;
20502   }
20503
20504   /* Handle DW_LNS_const_add_pc.  */
20505   void handle_const_add_pc ();
20506
20507   /* Handle DW_LNS_fixed_advance_pc.  */
20508   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20509   {
20510     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20511     m_op_index = 0;
20512   }
20513
20514   /* Handle DW_LNS_copy.  */
20515   void handle_copy ()
20516   {
20517     record_line (false);
20518     m_discriminator = 0;
20519   }
20520
20521   /* Handle DW_LNE_end_sequence.  */
20522   void handle_end_sequence ()
20523   {
20524     m_currently_recording_lines = true;
20525   }
20526
20527 private:
20528   /* Advance the line by LINE_DELTA.  */
20529   void advance_line (int line_delta)
20530   {
20531     m_line += line_delta;
20532
20533     if (line_delta != 0)
20534       m_line_has_non_zero_discriminator = m_discriminator != 0;
20535   }
20536
20537   struct dwarf2_cu *m_cu;
20538
20539   gdbarch *m_gdbarch;
20540
20541   /* True if we're recording lines.
20542      Otherwise we're building partial symtabs and are just interested in
20543      finding include files mentioned by the line number program.  */
20544   bool m_record_lines_p;
20545
20546   /* The line number header.  */
20547   line_header *m_line_header;
20548
20549   /* These are part of the standard DWARF line number state machine,
20550      and initialized according to the DWARF spec.  */
20551
20552   unsigned char m_op_index = 0;
20553   /* The line table index (1-based) of the current file.  */
20554   file_name_index m_file = (file_name_index) 1;
20555   unsigned int m_line = 1;
20556
20557   /* These are initialized in the constructor.  */
20558
20559   CORE_ADDR m_address;
20560   bool m_is_stmt;
20561   unsigned int m_discriminator;
20562
20563   /* Additional bits of state we need to track.  */
20564
20565   /* The last file that we called dwarf2_start_subfile for.
20566      This is only used for TLLs.  */
20567   unsigned int m_last_file = 0;
20568   /* The last file a line number was recorded for.  */
20569   struct subfile *m_last_subfile = NULL;
20570
20571   /* When true, record the lines we decode.  */
20572   bool m_currently_recording_lines = false;
20573
20574   /* The last line number that was recorded, used to coalesce
20575      consecutive entries for the same line.  This can happen, for
20576      example, when discriminators are present.  PR 17276.  */
20577   unsigned int m_last_line = 0;
20578   bool m_line_has_non_zero_discriminator = false;
20579 };
20580
20581 void
20582 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20583 {
20584   CORE_ADDR addr_adj = (((m_op_index + adjust)
20585                          / m_line_header->maximum_ops_per_instruction)
20586                         * m_line_header->minimum_instruction_length);
20587   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20588   m_op_index = ((m_op_index + adjust)
20589                 % m_line_header->maximum_ops_per_instruction);
20590 }
20591
20592 void
20593 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20594 {
20595   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20596   CORE_ADDR addr_adj = (((m_op_index
20597                           + (adj_opcode / m_line_header->line_range))
20598                          / m_line_header->maximum_ops_per_instruction)
20599                         * m_line_header->minimum_instruction_length);
20600   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20601   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20602                 % m_line_header->maximum_ops_per_instruction);
20603
20604   int line_delta = (m_line_header->line_base
20605                     + (adj_opcode % m_line_header->line_range));
20606   advance_line (line_delta);
20607   record_line (false);
20608   m_discriminator = 0;
20609 }
20610
20611 void
20612 lnp_state_machine::handle_set_file (file_name_index file)
20613 {
20614   m_file = file;
20615
20616   const file_entry *fe = current_file ();
20617   if (fe == NULL)
20618     dwarf2_debug_line_missing_file_complaint ();
20619   else if (m_record_lines_p)
20620     {
20621       const char *dir = fe->include_dir (m_line_header);
20622
20623       m_last_subfile = m_cu->builder->get_current_subfile ();
20624       m_line_has_non_zero_discriminator = m_discriminator != 0;
20625       dwarf2_start_subfile (m_cu, fe->name, dir);
20626     }
20627 }
20628
20629 void
20630 lnp_state_machine::handle_const_add_pc ()
20631 {
20632   CORE_ADDR adjust
20633     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20634
20635   CORE_ADDR addr_adj
20636     = (((m_op_index + adjust)
20637         / m_line_header->maximum_ops_per_instruction)
20638        * m_line_header->minimum_instruction_length);
20639
20640   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20641   m_op_index = ((m_op_index + adjust)
20642                 % m_line_header->maximum_ops_per_instruction);
20643 }
20644
20645 /* Return non-zero if we should add LINE to the line number table.
20646    LINE is the line to add, LAST_LINE is the last line that was added,
20647    LAST_SUBFILE is the subfile for LAST_LINE.
20648    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20649    had a non-zero discriminator.
20650
20651    We have to be careful in the presence of discriminators.
20652    E.g., for this line:
20653
20654      for (i = 0; i < 100000; i++);
20655
20656    clang can emit four line number entries for that one line,
20657    each with a different discriminator.
20658    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20659
20660    However, we want gdb to coalesce all four entries into one.
20661    Otherwise the user could stepi into the middle of the line and
20662    gdb would get confused about whether the pc really was in the
20663    middle of the line.
20664
20665    Things are further complicated by the fact that two consecutive
20666    line number entries for the same line is a heuristic used by gcc
20667    to denote the end of the prologue.  So we can't just discard duplicate
20668    entries, we have to be selective about it.  The heuristic we use is
20669    that we only collapse consecutive entries for the same line if at least
20670    one of those entries has a non-zero discriminator.  PR 17276.
20671
20672    Note: Addresses in the line number state machine can never go backwards
20673    within one sequence, thus this coalescing is ok.  */
20674
20675 static int
20676 dwarf_record_line_p (struct dwarf2_cu *cu,
20677                      unsigned int line, unsigned int last_line,
20678                      int line_has_non_zero_discriminator,
20679                      struct subfile *last_subfile)
20680 {
20681   if (cu->builder->get_current_subfile () != last_subfile)
20682     return 1;
20683   if (line != last_line)
20684     return 1;
20685   /* Same line for the same file that we've seen already.
20686      As a last check, for pr 17276, only record the line if the line
20687      has never had a non-zero discriminator.  */
20688   if (!line_has_non_zero_discriminator)
20689     return 1;
20690   return 0;
20691 }
20692
20693 /* Use the CU's builder to record line number LINE beginning at
20694    address ADDRESS in the line table of subfile SUBFILE.  */
20695
20696 static void
20697 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20698                      unsigned int line, CORE_ADDR address,
20699                      struct dwarf2_cu *cu)
20700 {
20701   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20702
20703   if (dwarf_line_debug)
20704     {
20705       fprintf_unfiltered (gdb_stdlog,
20706                           "Recording line %u, file %s, address %s\n",
20707                           line, lbasename (subfile->name),
20708                           paddress (gdbarch, address));
20709     }
20710
20711   if (cu != nullptr)
20712     cu->builder->record_line (subfile, line, addr);
20713 }
20714
20715 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20716    Mark the end of a set of line number records.
20717    The arguments are the same as for dwarf_record_line_1.
20718    If SUBFILE is NULL the request is ignored.  */
20719
20720 static void
20721 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20722                    CORE_ADDR address, struct dwarf2_cu *cu)
20723 {
20724   if (subfile == NULL)
20725     return;
20726
20727   if (dwarf_line_debug)
20728     {
20729       fprintf_unfiltered (gdb_stdlog,
20730                           "Finishing current line, file %s, address %s\n",
20731                           lbasename (subfile->name),
20732                           paddress (gdbarch, address));
20733     }
20734
20735   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20736 }
20737
20738 void
20739 lnp_state_machine::record_line (bool end_sequence)
20740 {
20741   if (dwarf_line_debug)
20742     {
20743       fprintf_unfiltered (gdb_stdlog,
20744                           "Processing actual line %u: file %u,"
20745                           " address %s, is_stmt %u, discrim %u\n",
20746                           m_line, to_underlying (m_file),
20747                           paddress (m_gdbarch, m_address),
20748                           m_is_stmt, m_discriminator);
20749     }
20750
20751   file_entry *fe = current_file ();
20752
20753   if (fe == NULL)
20754     dwarf2_debug_line_missing_file_complaint ();
20755   /* For now we ignore lines not starting on an instruction boundary.
20756      But not when processing end_sequence for compatibility with the
20757      previous version of the code.  */
20758   else if (m_op_index == 0 || end_sequence)
20759     {
20760       fe->included_p = 1;
20761       if (m_record_lines_p && m_is_stmt)
20762         {
20763           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20764               || end_sequence)
20765             {
20766               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20767                                  m_currently_recording_lines ? m_cu : nullptr);
20768             }
20769
20770           if (!end_sequence)
20771             {
20772               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20773                                        m_line_has_non_zero_discriminator,
20774                                        m_last_subfile))
20775                 {
20776                   dwarf_record_line_1 (m_gdbarch,
20777                                        m_cu->builder->get_current_subfile (),
20778                                        m_line, m_address,
20779                                        m_currently_recording_lines ? m_cu : nullptr);
20780                 }
20781               m_last_subfile = m_cu->builder->get_current_subfile ();
20782               m_last_line = m_line;
20783             }
20784         }
20785     }
20786 }
20787
20788 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20789                                       line_header *lh, bool record_lines_p)
20790 {
20791   m_cu = cu;
20792   m_gdbarch = arch;
20793   m_record_lines_p = record_lines_p;
20794   m_line_header = lh;
20795
20796   m_currently_recording_lines = true;
20797
20798   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20799      was a line entry for it so that the backend has a chance to adjust it
20800      and also record it in case it needs it.  This is currently used by MIPS
20801      code, cf. `mips_adjust_dwarf2_line'.  */
20802   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20803   m_is_stmt = lh->default_is_stmt;
20804   m_discriminator = 0;
20805 }
20806
20807 void
20808 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20809                                        const gdb_byte *line_ptr,
20810                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20811 {
20812   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20813      the pc range of the CU.  However, we restrict the test to only ADDRESS
20814      values of zero to preserve GDB's previous behaviour which is to handle
20815      the specific case of a function being GC'd by the linker.  */
20816
20817   if (address == 0 && address < unrelocated_lowpc)
20818     {
20819       /* This line table is for a function which has been
20820          GCd by the linker.  Ignore it.  PR gdb/12528 */
20821
20822       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20823       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20824
20825       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20826                  line_offset, objfile_name (objfile));
20827       m_currently_recording_lines = false;
20828       /* Note: m_currently_recording_lines is left as false until we see
20829          DW_LNE_end_sequence.  */
20830     }
20831 }
20832
20833 /* Subroutine of dwarf_decode_lines to simplify it.
20834    Process the line number information in LH.
20835    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20836    program in order to set included_p for every referenced header.  */
20837
20838 static void
20839 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20840                       const int decode_for_pst_p, CORE_ADDR lowpc)
20841 {
20842   const gdb_byte *line_ptr, *extended_end;
20843   const gdb_byte *line_end;
20844   unsigned int bytes_read, extended_len;
20845   unsigned char op_code, extended_op;
20846   CORE_ADDR baseaddr;
20847   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20848   bfd *abfd = objfile->obfd;
20849   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20850   /* True if we're recording line info (as opposed to building partial
20851      symtabs and just interested in finding include files mentioned by
20852      the line number program).  */
20853   bool record_lines_p = !decode_for_pst_p;
20854
20855   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20856
20857   line_ptr = lh->statement_program_start;
20858   line_end = lh->statement_program_end;
20859
20860   /* Read the statement sequences until there's nothing left.  */
20861   while (line_ptr < line_end)
20862     {
20863       /* The DWARF line number program state machine.  Reset the state
20864          machine at the start of each sequence.  */
20865       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20866       bool end_sequence = false;
20867
20868       if (record_lines_p)
20869         {
20870           /* Start a subfile for the current file of the state
20871              machine.  */
20872           const file_entry *fe = state_machine.current_file ();
20873
20874           if (fe != NULL)
20875             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20876         }
20877
20878       /* Decode the table.  */
20879       while (line_ptr < line_end && !end_sequence)
20880         {
20881           op_code = read_1_byte (abfd, line_ptr);
20882           line_ptr += 1;
20883
20884           if (op_code >= lh->opcode_base)
20885             {
20886               /* Special opcode.  */
20887               state_machine.handle_special_opcode (op_code);
20888             }
20889           else switch (op_code)
20890             {
20891             case DW_LNS_extended_op:
20892               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20893                                                    &bytes_read);
20894               line_ptr += bytes_read;
20895               extended_end = line_ptr + extended_len;
20896               extended_op = read_1_byte (abfd, line_ptr);
20897               line_ptr += 1;
20898               switch (extended_op)
20899                 {
20900                 case DW_LNE_end_sequence:
20901                   state_machine.handle_end_sequence ();
20902                   end_sequence = true;
20903                   break;
20904                 case DW_LNE_set_address:
20905                   {
20906                     CORE_ADDR address
20907                       = read_address (abfd, line_ptr, cu, &bytes_read);
20908                     line_ptr += bytes_read;
20909
20910                     state_machine.check_line_address (cu, line_ptr,
20911                                                       lowpc - baseaddr, address);
20912                     state_machine.handle_set_address (baseaddr, address);
20913                   }
20914                   break;
20915                 case DW_LNE_define_file:
20916                   {
20917                     const char *cur_file;
20918                     unsigned int mod_time, length;
20919                     dir_index dindex;
20920
20921                     cur_file = read_direct_string (abfd, line_ptr,
20922                                                    &bytes_read);
20923                     line_ptr += bytes_read;
20924                     dindex = (dir_index)
20925                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20926                     line_ptr += bytes_read;
20927                     mod_time =
20928                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20929                     line_ptr += bytes_read;
20930                     length =
20931                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20932                     line_ptr += bytes_read;
20933                     lh->add_file_name (cur_file, dindex, mod_time, length);
20934                   }
20935                   break;
20936                 case DW_LNE_set_discriminator:
20937                   {
20938                     /* The discriminator is not interesting to the
20939                        debugger; just ignore it.  We still need to
20940                        check its value though:
20941                        if there are consecutive entries for the same
20942                        (non-prologue) line we want to coalesce them.
20943                        PR 17276.  */
20944                     unsigned int discr
20945                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20946                     line_ptr += bytes_read;
20947
20948                     state_machine.handle_set_discriminator (discr);
20949                   }
20950                   break;
20951                 default:
20952                   complaint (_("mangled .debug_line section"));
20953                   return;
20954                 }
20955               /* Make sure that we parsed the extended op correctly.  If e.g.
20956                  we expected a different address size than the producer used,
20957                  we may have read the wrong number of bytes.  */
20958               if (line_ptr != extended_end)
20959                 {
20960                   complaint (_("mangled .debug_line section"));
20961                   return;
20962                 }
20963               break;
20964             case DW_LNS_copy:
20965               state_machine.handle_copy ();
20966               break;
20967             case DW_LNS_advance_pc:
20968               {
20969                 CORE_ADDR adjust
20970                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20971                 line_ptr += bytes_read;
20972
20973                 state_machine.handle_advance_pc (adjust);
20974               }
20975               break;
20976             case DW_LNS_advance_line:
20977               {
20978                 int line_delta
20979                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
20980                 line_ptr += bytes_read;
20981
20982                 state_machine.handle_advance_line (line_delta);
20983               }
20984               break;
20985             case DW_LNS_set_file:
20986               {
20987                 file_name_index file
20988                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
20989                                                             &bytes_read);
20990                 line_ptr += bytes_read;
20991
20992                 state_machine.handle_set_file (file);
20993               }
20994               break;
20995             case DW_LNS_set_column:
20996               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20997               line_ptr += bytes_read;
20998               break;
20999             case DW_LNS_negate_stmt:
21000               state_machine.handle_negate_stmt ();
21001               break;
21002             case DW_LNS_set_basic_block:
21003               break;
21004             /* Add to the address register of the state machine the
21005                address increment value corresponding to special opcode
21006                255.  I.e., this value is scaled by the minimum
21007                instruction length since special opcode 255 would have
21008                scaled the increment.  */
21009             case DW_LNS_const_add_pc:
21010               state_machine.handle_const_add_pc ();
21011               break;
21012             case DW_LNS_fixed_advance_pc:
21013               {
21014                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21015                 line_ptr += 2;
21016
21017                 state_machine.handle_fixed_advance_pc (addr_adj);
21018               }
21019               break;
21020             default:
21021               {
21022                 /* Unknown standard opcode, ignore it.  */
21023                 int i;
21024
21025                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21026                   {
21027                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21028                     line_ptr += bytes_read;
21029                   }
21030               }
21031             }
21032         }
21033
21034       if (!end_sequence)
21035         dwarf2_debug_line_missing_end_sequence_complaint ();
21036
21037       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21038          in which case we still finish recording the last line).  */
21039       state_machine.record_line (true);
21040     }
21041 }
21042
21043 /* Decode the Line Number Program (LNP) for the given line_header
21044    structure and CU.  The actual information extracted and the type
21045    of structures created from the LNP depends on the value of PST.
21046
21047    1. If PST is NULL, then this procedure uses the data from the program
21048       to create all necessary symbol tables, and their linetables.
21049
21050    2. If PST is not NULL, this procedure reads the program to determine
21051       the list of files included by the unit represented by PST, and
21052       builds all the associated partial symbol tables.
21053
21054    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21055    It is used for relative paths in the line table.
21056    NOTE: When processing partial symtabs (pst != NULL),
21057    comp_dir == pst->dirname.
21058
21059    NOTE: It is important that psymtabs have the same file name (via strcmp)
21060    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21061    symtab we don't use it in the name of the psymtabs we create.
21062    E.g. expand_line_sal requires this when finding psymtabs to expand.
21063    A good testcase for this is mb-inline.exp.
21064
21065    LOWPC is the lowest address in CU (or 0 if not known).
21066
21067    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21068    for its PC<->lines mapping information.  Otherwise only the filename
21069    table is read in.  */
21070
21071 static void
21072 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21073                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21074                     CORE_ADDR lowpc, int decode_mapping)
21075 {
21076   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21077   const int decode_for_pst_p = (pst != NULL);
21078
21079   if (decode_mapping)
21080     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21081
21082   if (decode_for_pst_p)
21083     {
21084       int file_index;
21085
21086       /* Now that we're done scanning the Line Header Program, we can
21087          create the psymtab of each included file.  */
21088       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21089         if (lh->file_names[file_index].included_p == 1)
21090           {
21091             gdb::unique_xmalloc_ptr<char> name_holder;
21092             const char *include_name =
21093               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21094                                          &name_holder);
21095             if (include_name != NULL)
21096               dwarf2_create_include_psymtab (include_name, pst, objfile);
21097           }
21098     }
21099   else
21100     {
21101       /* Make sure a symtab is created for every file, even files
21102          which contain only variables (i.e. no code with associated
21103          line numbers).  */
21104       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21105       int i;
21106
21107       for (i = 0; i < lh->file_names.size (); i++)
21108         {
21109           file_entry &fe = lh->file_names[i];
21110
21111           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21112
21113           if (cu->builder->get_current_subfile ()->symtab == NULL)
21114             {
21115               cu->builder->get_current_subfile ()->symtab
21116                 = allocate_symtab (cust,
21117                                    cu->builder->get_current_subfile ()->name);
21118             }
21119           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21120         }
21121     }
21122 }
21123
21124 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21125    DIRNAME the name of the source directory which contains FILENAME
21126    or NULL if not known.
21127    This routine tries to keep line numbers from identical absolute and
21128    relative file names in a common subfile.
21129
21130    Using the `list' example from the GDB testsuite, which resides in
21131    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21132    of /srcdir/list0.c yields the following debugging information for list0.c:
21133
21134    DW_AT_name:          /srcdir/list0.c
21135    DW_AT_comp_dir:      /compdir
21136    files.files[0].name: list0.h
21137    files.files[0].dir:  /srcdir
21138    files.files[1].name: list0.c
21139    files.files[1].dir:  /srcdir
21140
21141    The line number information for list0.c has to end up in a single
21142    subfile, so that `break /srcdir/list0.c:1' works as expected.
21143    start_subfile will ensure that this happens provided that we pass the
21144    concatenation of files.files[1].dir and files.files[1].name as the
21145    subfile's name.  */
21146
21147 static void
21148 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21149                       const char *dirname)
21150 {
21151   char *copy = NULL;
21152
21153   /* In order not to lose the line information directory,
21154      we concatenate it to the filename when it makes sense.
21155      Note that the Dwarf3 standard says (speaking of filenames in line
21156      information): ``The directory index is ignored for file names
21157      that represent full path names''.  Thus ignoring dirname in the
21158      `else' branch below isn't an issue.  */
21159
21160   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21161     {
21162       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21163       filename = copy;
21164     }
21165
21166   cu->builder->start_subfile (filename);
21167
21168   if (copy != NULL)
21169     xfree (copy);
21170 }
21171
21172 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21173    buildsym_compunit constructor.  */
21174
21175 static struct compunit_symtab *
21176 dwarf2_start_symtab (struct dwarf2_cu *cu,
21177                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21178 {
21179   gdb_assert (cu->builder == nullptr);
21180
21181   cu->builder.reset (new struct buildsym_compunit
21182                      (cu->per_cu->dwarf2_per_objfile->objfile,
21183                       name, comp_dir, cu->language, low_pc));
21184
21185   cu->list_in_scope = cu->builder->get_file_symbols ();
21186
21187   cu->builder->record_debugformat ("DWARF 2");
21188   cu->builder->record_producer (cu->producer);
21189
21190   cu->processing_has_namespace_info = 0;
21191
21192   return cu->builder->get_compunit_symtab ();
21193 }
21194
21195 static void
21196 var_decode_location (struct attribute *attr, struct symbol *sym,
21197                      struct dwarf2_cu *cu)
21198 {
21199   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21200   struct comp_unit_head *cu_header = &cu->header;
21201
21202   /* NOTE drow/2003-01-30: There used to be a comment and some special
21203      code here to turn a symbol with DW_AT_external and a
21204      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21205      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21206      with some versions of binutils) where shared libraries could have
21207      relocations against symbols in their debug information - the
21208      minimal symbol would have the right address, but the debug info
21209      would not.  It's no longer necessary, because we will explicitly
21210      apply relocations when we read in the debug information now.  */
21211
21212   /* A DW_AT_location attribute with no contents indicates that a
21213      variable has been optimized away.  */
21214   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21215     {
21216       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21217       return;
21218     }
21219
21220   /* Handle one degenerate form of location expression specially, to
21221      preserve GDB's previous behavior when section offsets are
21222      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21223      then mark this symbol as LOC_STATIC.  */
21224
21225   if (attr_form_is_block (attr)
21226       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21227            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21228           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21229               && (DW_BLOCK (attr)->size
21230                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21231     {
21232       unsigned int dummy;
21233
21234       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21235         SYMBOL_VALUE_ADDRESS (sym) =
21236           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21237       else
21238         SYMBOL_VALUE_ADDRESS (sym) =
21239           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21240       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21241       fixup_symbol_section (sym, objfile);
21242       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21243                                               SYMBOL_SECTION (sym));
21244       return;
21245     }
21246
21247   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21248      expression evaluator, and use LOC_COMPUTED only when necessary
21249      (i.e. when the value of a register or memory location is
21250      referenced, or a thread-local block, etc.).  Then again, it might
21251      not be worthwhile.  I'm assuming that it isn't unless performance
21252      or memory numbers show me otherwise.  */
21253
21254   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21255
21256   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21257     cu->has_loclist = 1;
21258 }
21259
21260 /* Given a pointer to a DWARF information entry, figure out if we need
21261    to make a symbol table entry for it, and if so, create a new entry
21262    and return a pointer to it.
21263    If TYPE is NULL, determine symbol type from the die, otherwise
21264    used the passed type.
21265    If SPACE is not NULL, use it to hold the new symbol.  If it is
21266    NULL, allocate a new symbol on the objfile's obstack.  */
21267
21268 static struct symbol *
21269 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21270             struct symbol *space)
21271 {
21272   struct dwarf2_per_objfile *dwarf2_per_objfile
21273     = cu->per_cu->dwarf2_per_objfile;
21274   struct objfile *objfile = dwarf2_per_objfile->objfile;
21275   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21276   struct symbol *sym = NULL;
21277   const char *name;
21278   struct attribute *attr = NULL;
21279   struct attribute *attr2 = NULL;
21280   CORE_ADDR baseaddr;
21281   struct pending **list_to_add = NULL;
21282
21283   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21284
21285   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21286
21287   name = dwarf2_name (die, cu);
21288   if (name)
21289     {
21290       const char *linkagename;
21291       int suppress_add = 0;
21292
21293       if (space)
21294         sym = space;
21295       else
21296         sym = allocate_symbol (objfile);
21297       OBJSTAT (objfile, n_syms++);
21298
21299       /* Cache this symbol's name and the name's demangled form (if any).  */
21300       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21301       linkagename = dwarf2_physname (name, die, cu);
21302       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21303
21304       /* Fortran does not have mangling standard and the mangling does differ
21305          between gfortran, iFort etc.  */
21306       if (cu->language == language_fortran
21307           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21308         symbol_set_demangled_name (&(sym->ginfo),
21309                                    dwarf2_full_name (name, die, cu),
21310                                    NULL);
21311
21312       /* Default assumptions.
21313          Use the passed type or decode it from the die.  */
21314       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21315       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21316       if (type != NULL)
21317         SYMBOL_TYPE (sym) = type;
21318       else
21319         SYMBOL_TYPE (sym) = die_type (die, cu);
21320       attr = dwarf2_attr (die,
21321                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21322                           cu);
21323       if (attr)
21324         {
21325           SYMBOL_LINE (sym) = DW_UNSND (attr);
21326         }
21327
21328       attr = dwarf2_attr (die,
21329                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21330                           cu);
21331       if (attr)
21332         {
21333           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21334           struct file_entry *fe;
21335
21336           if (cu->line_header != NULL)
21337             fe = cu->line_header->file_name_at (file_index);
21338           else
21339             fe = NULL;
21340
21341           if (fe == NULL)
21342             complaint (_("file index out of range"));
21343           else
21344             symbol_set_symtab (sym, fe->symtab);
21345         }
21346
21347       switch (die->tag)
21348         {
21349         case DW_TAG_label:
21350           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21351           if (attr)
21352             {
21353               CORE_ADDR addr;
21354
21355               addr = attr_value_as_address (attr);
21356               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21357               SYMBOL_VALUE_ADDRESS (sym) = addr;
21358             }
21359           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21360           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21361           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21362           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21363           break;
21364         case DW_TAG_subprogram:
21365           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21366              finish_block.  */
21367           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21368           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21369           if ((attr2 && (DW_UNSND (attr2) != 0))
21370               || cu->language == language_ada)
21371             {
21372               /* Subprograms marked external are stored as a global symbol.
21373                  Ada subprograms, whether marked external or not, are always
21374                  stored as a global symbol, because we want to be able to
21375                  access them globally.  For instance, we want to be able
21376                  to break on a nested subprogram without having to
21377                  specify the context.  */
21378               list_to_add = cu->builder->get_global_symbols ();
21379             }
21380           else
21381             {
21382               list_to_add = cu->list_in_scope;
21383             }
21384           break;
21385         case DW_TAG_inlined_subroutine:
21386           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21387              finish_block.  */
21388           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21389           SYMBOL_INLINED (sym) = 1;
21390           list_to_add = cu->list_in_scope;
21391           break;
21392         case DW_TAG_template_value_param:
21393           suppress_add = 1;
21394           /* Fall through.  */
21395         case DW_TAG_constant:
21396         case DW_TAG_variable:
21397         case DW_TAG_member:
21398           /* Compilation with minimal debug info may result in
21399              variables with missing type entries.  Change the
21400              misleading `void' type to something sensible.  */
21401           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21402             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21403
21404           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21405           /* In the case of DW_TAG_member, we should only be called for
21406              static const members.  */
21407           if (die->tag == DW_TAG_member)
21408             {
21409               /* dwarf2_add_field uses die_is_declaration,
21410                  so we do the same.  */
21411               gdb_assert (die_is_declaration (die, cu));
21412               gdb_assert (attr);
21413             }
21414           if (attr)
21415             {
21416               dwarf2_const_value (attr, sym, cu);
21417               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21418               if (!suppress_add)
21419                 {
21420                   if (attr2 && (DW_UNSND (attr2) != 0))
21421                     list_to_add = cu->builder->get_global_symbols ();
21422                   else
21423                     list_to_add = cu->list_in_scope;
21424                 }
21425               break;
21426             }
21427           attr = dwarf2_attr (die, DW_AT_location, cu);
21428           if (attr)
21429             {
21430               var_decode_location (attr, sym, cu);
21431               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21432
21433               /* Fortran explicitly imports any global symbols to the local
21434                  scope by DW_TAG_common_block.  */
21435               if (cu->language == language_fortran && die->parent
21436                   && die->parent->tag == DW_TAG_common_block)
21437                 attr2 = NULL;
21438
21439               if (SYMBOL_CLASS (sym) == LOC_STATIC
21440                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21441                   && !dwarf2_per_objfile->has_section_at_zero)
21442                 {
21443                   /* When a static variable is eliminated by the linker,
21444                      the corresponding debug information is not stripped
21445                      out, but the variable address is set to null;
21446                      do not add such variables into symbol table.  */
21447                 }
21448               else if (attr2 && (DW_UNSND (attr2) != 0))
21449                 {
21450                   /* Workaround gfortran PR debug/40040 - it uses
21451                      DW_AT_location for variables in -fPIC libraries which may
21452                      get overriden by other libraries/executable and get
21453                      a different address.  Resolve it by the minimal symbol
21454                      which may come from inferior's executable using copy
21455                      relocation.  Make this workaround only for gfortran as for
21456                      other compilers GDB cannot guess the minimal symbol
21457                      Fortran mangling kind.  */
21458                   if (cu->language == language_fortran && die->parent
21459                       && die->parent->tag == DW_TAG_module
21460                       && cu->producer
21461                       && startswith (cu->producer, "GNU Fortran"))
21462                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21463
21464                   /* A variable with DW_AT_external is never static,
21465                      but it may be block-scoped.  */
21466                   list_to_add
21467                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21468                        ? cu->builder->get_global_symbols ()
21469                        : cu->list_in_scope);
21470                 }
21471               else
21472                 list_to_add = cu->list_in_scope;
21473             }
21474           else
21475             {
21476               /* We do not know the address of this symbol.
21477                  If it is an external symbol and we have type information
21478                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21479                  The address of the variable will then be determined from
21480                  the minimal symbol table whenever the variable is
21481                  referenced.  */
21482               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21483
21484               /* Fortran explicitly imports any global symbols to the local
21485                  scope by DW_TAG_common_block.  */
21486               if (cu->language == language_fortran && die->parent
21487                   && die->parent->tag == DW_TAG_common_block)
21488                 {
21489                   /* SYMBOL_CLASS doesn't matter here because
21490                      read_common_block is going to reset it.  */
21491                   if (!suppress_add)
21492                     list_to_add = cu->list_in_scope;
21493                 }
21494               else if (attr2 && (DW_UNSND (attr2) != 0)
21495                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21496                 {
21497                   /* A variable with DW_AT_external is never static, but it
21498                      may be block-scoped.  */
21499                   list_to_add
21500                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21501                        ? cu->builder->get_global_symbols ()
21502                        : cu->list_in_scope);
21503
21504                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21505                 }
21506               else if (!die_is_declaration (die, cu))
21507                 {
21508                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21509                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21510                   if (!suppress_add)
21511                     list_to_add = cu->list_in_scope;
21512                 }
21513             }
21514           break;
21515         case DW_TAG_formal_parameter:
21516           {
21517             /* If we are inside a function, mark this as an argument.  If
21518                not, we might be looking at an argument to an inlined function
21519                when we do not have enough information to show inlined frames;
21520                pretend it's a local variable in that case so that the user can
21521                still see it.  */
21522             struct context_stack *curr
21523               = cu->builder->get_current_context_stack ();
21524             if (curr != nullptr && curr->name != nullptr)
21525               SYMBOL_IS_ARGUMENT (sym) = 1;
21526             attr = dwarf2_attr (die, DW_AT_location, cu);
21527             if (attr)
21528               {
21529                 var_decode_location (attr, sym, cu);
21530               }
21531             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21532             if (attr)
21533               {
21534                 dwarf2_const_value (attr, sym, cu);
21535               }
21536
21537             list_to_add = cu->list_in_scope;
21538           }
21539           break;
21540         case DW_TAG_unspecified_parameters:
21541           /* From varargs functions; gdb doesn't seem to have any
21542              interest in this information, so just ignore it for now.
21543              (FIXME?) */
21544           break;
21545         case DW_TAG_template_type_param:
21546           suppress_add = 1;
21547           /* Fall through.  */
21548         case DW_TAG_class_type:
21549         case DW_TAG_interface_type:
21550         case DW_TAG_structure_type:
21551         case DW_TAG_union_type:
21552         case DW_TAG_set_type:
21553         case DW_TAG_enumeration_type:
21554           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21555           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21556
21557           {
21558             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21559                really ever be static objects: otherwise, if you try
21560                to, say, break of a class's method and you're in a file
21561                which doesn't mention that class, it won't work unless
21562                the check for all static symbols in lookup_symbol_aux
21563                saves you.  See the OtherFileClass tests in
21564                gdb.c++/namespace.exp.  */
21565
21566             if (!suppress_add)
21567               {
21568                 list_to_add
21569                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21570                      && cu->language == language_cplus
21571                      ? cu->builder->get_global_symbols ()
21572                      : cu->list_in_scope);
21573
21574                 /* The semantics of C++ state that "struct foo {
21575                    ... }" also defines a typedef for "foo".  */
21576                 if (cu->language == language_cplus
21577                     || cu->language == language_ada
21578                     || cu->language == language_d
21579                     || cu->language == language_rust)
21580                   {
21581                     /* The symbol's name is already allocated along
21582                        with this objfile, so we don't need to
21583                        duplicate it for the type.  */
21584                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21585                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21586                   }
21587               }
21588           }
21589           break;
21590         case DW_TAG_typedef:
21591           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21592           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21593           list_to_add = cu->list_in_scope;
21594           break;
21595         case DW_TAG_base_type:
21596         case DW_TAG_subrange_type:
21597           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21598           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21599           list_to_add = cu->list_in_scope;
21600           break;
21601         case DW_TAG_enumerator:
21602           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21603           if (attr)
21604             {
21605               dwarf2_const_value (attr, sym, cu);
21606             }
21607           {
21608             /* NOTE: carlton/2003-11-10: See comment above in the
21609                DW_TAG_class_type, etc. block.  */
21610
21611             list_to_add
21612               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21613                  && cu->language == language_cplus
21614                  ? cu->builder->get_global_symbols ()
21615                  : cu->list_in_scope);
21616           }
21617           break;
21618         case DW_TAG_imported_declaration:
21619         case DW_TAG_namespace:
21620           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21621           list_to_add = cu->builder->get_global_symbols ();
21622           break;
21623         case DW_TAG_module:
21624           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21625           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21626           list_to_add = cu->builder->get_global_symbols ();
21627           break;
21628         case DW_TAG_common_block:
21629           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21630           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21631           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21632           break;
21633         default:
21634           /* Not a tag we recognize.  Hopefully we aren't processing
21635              trash data, but since we must specifically ignore things
21636              we don't recognize, there is nothing else we should do at
21637              this point.  */
21638           complaint (_("unsupported tag: '%s'"),
21639                      dwarf_tag_name (die->tag));
21640           break;
21641         }
21642
21643       if (suppress_add)
21644         {
21645           sym->hash_next = objfile->template_symbols;
21646           objfile->template_symbols = sym;
21647           list_to_add = NULL;
21648         }
21649
21650       if (list_to_add != NULL)
21651         dw2_add_symbol_to_list (sym, list_to_add);
21652
21653       /* For the benefit of old versions of GCC, check for anonymous
21654          namespaces based on the demangled name.  */
21655       if (!cu->processing_has_namespace_info
21656           && cu->language == language_cplus)
21657         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21658     }
21659   return (sym);
21660 }
21661
21662 /* Given an attr with a DW_FORM_dataN value in host byte order,
21663    zero-extend it as appropriate for the symbol's type.  The DWARF
21664    standard (v4) is not entirely clear about the meaning of using
21665    DW_FORM_dataN for a constant with a signed type, where the type is
21666    wider than the data.  The conclusion of a discussion on the DWARF
21667    list was that this is unspecified.  We choose to always zero-extend
21668    because that is the interpretation long in use by GCC.  */
21669
21670 static gdb_byte *
21671 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21672                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21673 {
21674   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21675   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21676                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21677   LONGEST l = DW_UNSND (attr);
21678
21679   if (bits < sizeof (*value) * 8)
21680     {
21681       l &= ((LONGEST) 1 << bits) - 1;
21682       *value = l;
21683     }
21684   else if (bits == sizeof (*value) * 8)
21685     *value = l;
21686   else
21687     {
21688       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21689       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21690       return bytes;
21691     }
21692
21693   return NULL;
21694 }
21695
21696 /* Read a constant value from an attribute.  Either set *VALUE, or if
21697    the value does not fit in *VALUE, set *BYTES - either already
21698    allocated on the objfile obstack, or newly allocated on OBSTACK,
21699    or, set *BATON, if we translated the constant to a location
21700    expression.  */
21701
21702 static void
21703 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21704                          const char *name, struct obstack *obstack,
21705                          struct dwarf2_cu *cu,
21706                          LONGEST *value, const gdb_byte **bytes,
21707                          struct dwarf2_locexpr_baton **baton)
21708 {
21709   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21710   struct comp_unit_head *cu_header = &cu->header;
21711   struct dwarf_block *blk;
21712   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21713                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21714
21715   *value = 0;
21716   *bytes = NULL;
21717   *baton = NULL;
21718
21719   switch (attr->form)
21720     {
21721     case DW_FORM_addr:
21722     case DW_FORM_GNU_addr_index:
21723       {
21724         gdb_byte *data;
21725
21726         if (TYPE_LENGTH (type) != cu_header->addr_size)
21727           dwarf2_const_value_length_mismatch_complaint (name,
21728                                                         cu_header->addr_size,
21729                                                         TYPE_LENGTH (type));
21730         /* Symbols of this form are reasonably rare, so we just
21731            piggyback on the existing location code rather than writing
21732            a new implementation of symbol_computed_ops.  */
21733         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21734         (*baton)->per_cu = cu->per_cu;
21735         gdb_assert ((*baton)->per_cu);
21736
21737         (*baton)->size = 2 + cu_header->addr_size;
21738         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21739         (*baton)->data = data;
21740
21741         data[0] = DW_OP_addr;
21742         store_unsigned_integer (&data[1], cu_header->addr_size,
21743                                 byte_order, DW_ADDR (attr));
21744         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21745       }
21746       break;
21747     case DW_FORM_string:
21748     case DW_FORM_strp:
21749     case DW_FORM_GNU_str_index:
21750     case DW_FORM_GNU_strp_alt:
21751       /* DW_STRING is already allocated on the objfile obstack, point
21752          directly to it.  */
21753       *bytes = (const gdb_byte *) DW_STRING (attr);
21754       break;
21755     case DW_FORM_block1:
21756     case DW_FORM_block2:
21757     case DW_FORM_block4:
21758     case DW_FORM_block:
21759     case DW_FORM_exprloc:
21760     case DW_FORM_data16:
21761       blk = DW_BLOCK (attr);
21762       if (TYPE_LENGTH (type) != blk->size)
21763         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21764                                                       TYPE_LENGTH (type));
21765       *bytes = blk->data;
21766       break;
21767
21768       /* The DW_AT_const_value attributes are supposed to carry the
21769          symbol's value "represented as it would be on the target
21770          architecture."  By the time we get here, it's already been
21771          converted to host endianness, so we just need to sign- or
21772          zero-extend it as appropriate.  */
21773     case DW_FORM_data1:
21774       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21775       break;
21776     case DW_FORM_data2:
21777       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21778       break;
21779     case DW_FORM_data4:
21780       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21781       break;
21782     case DW_FORM_data8:
21783       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21784       break;
21785
21786     case DW_FORM_sdata:
21787     case DW_FORM_implicit_const:
21788       *value = DW_SND (attr);
21789       break;
21790
21791     case DW_FORM_udata:
21792       *value = DW_UNSND (attr);
21793       break;
21794
21795     default:
21796       complaint (_("unsupported const value attribute form: '%s'"),
21797                  dwarf_form_name (attr->form));
21798       *value = 0;
21799       break;
21800     }
21801 }
21802
21803
21804 /* Copy constant value from an attribute to a symbol.  */
21805
21806 static void
21807 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21808                     struct dwarf2_cu *cu)
21809 {
21810   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21811   LONGEST value;
21812   const gdb_byte *bytes;
21813   struct dwarf2_locexpr_baton *baton;
21814
21815   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21816                            SYMBOL_PRINT_NAME (sym),
21817                            &objfile->objfile_obstack, cu,
21818                            &value, &bytes, &baton);
21819
21820   if (baton != NULL)
21821     {
21822       SYMBOL_LOCATION_BATON (sym) = baton;
21823       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21824     }
21825   else if (bytes != NULL)
21826      {
21827       SYMBOL_VALUE_BYTES (sym) = bytes;
21828       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21829     }
21830   else
21831     {
21832       SYMBOL_VALUE (sym) = value;
21833       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21834     }
21835 }
21836
21837 /* Return the type of the die in question using its DW_AT_type attribute.  */
21838
21839 static struct type *
21840 die_type (struct die_info *die, struct dwarf2_cu *cu)
21841 {
21842   struct attribute *type_attr;
21843
21844   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21845   if (!type_attr)
21846     {
21847       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21848       /* A missing DW_AT_type represents a void type.  */
21849       return objfile_type (objfile)->builtin_void;
21850     }
21851
21852   return lookup_die_type (die, type_attr, cu);
21853 }
21854
21855 /* True iff CU's producer generates GNAT Ada auxiliary information
21856    that allows to find parallel types through that information instead
21857    of having to do expensive parallel lookups by type name.  */
21858
21859 static int
21860 need_gnat_info (struct dwarf2_cu *cu)
21861 {
21862   /* Assume that the Ada compiler was GNAT, which always produces
21863      the auxiliary information.  */
21864   return (cu->language == language_ada);
21865 }
21866
21867 /* Return the auxiliary type of the die in question using its
21868    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21869    attribute is not present.  */
21870
21871 static struct type *
21872 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21873 {
21874   struct attribute *type_attr;
21875
21876   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21877   if (!type_attr)
21878     return NULL;
21879
21880   return lookup_die_type (die, type_attr, cu);
21881 }
21882
21883 /* If DIE has a descriptive_type attribute, then set the TYPE's
21884    descriptive type accordingly.  */
21885
21886 static void
21887 set_descriptive_type (struct type *type, struct die_info *die,
21888                       struct dwarf2_cu *cu)
21889 {
21890   struct type *descriptive_type = die_descriptive_type (die, cu);
21891
21892   if (descriptive_type)
21893     {
21894       ALLOCATE_GNAT_AUX_TYPE (type);
21895       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21896     }
21897 }
21898
21899 /* Return the containing type of the die in question using its
21900    DW_AT_containing_type attribute.  */
21901
21902 static struct type *
21903 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21904 {
21905   struct attribute *type_attr;
21906   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21907
21908   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21909   if (!type_attr)
21910     error (_("Dwarf Error: Problem turning containing type into gdb type "
21911              "[in module %s]"), objfile_name (objfile));
21912
21913   return lookup_die_type (die, type_attr, cu);
21914 }
21915
21916 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21917
21918 static struct type *
21919 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21920 {
21921   struct dwarf2_per_objfile *dwarf2_per_objfile
21922     = cu->per_cu->dwarf2_per_objfile;
21923   struct objfile *objfile = dwarf2_per_objfile->objfile;
21924   char *saved;
21925
21926   std::string message
21927     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21928                      objfile_name (objfile),
21929                      sect_offset_str (cu->header.sect_off),
21930                      sect_offset_str (die->sect_off));
21931   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21932                                   message.c_str (), message.length ());
21933
21934   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21935 }
21936
21937 /* Look up the type of DIE in CU using its type attribute ATTR.
21938    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21939    DW_AT_containing_type.
21940    If there is no type substitute an error marker.  */
21941
21942 static struct type *
21943 lookup_die_type (struct die_info *die, const struct attribute *attr,
21944                  struct dwarf2_cu *cu)
21945 {
21946   struct dwarf2_per_objfile *dwarf2_per_objfile
21947     = cu->per_cu->dwarf2_per_objfile;
21948   struct objfile *objfile = dwarf2_per_objfile->objfile;
21949   struct type *this_type;
21950
21951   gdb_assert (attr->name == DW_AT_type
21952               || attr->name == DW_AT_GNAT_descriptive_type
21953               || attr->name == DW_AT_containing_type);
21954
21955   /* First see if we have it cached.  */
21956
21957   if (attr->form == DW_FORM_GNU_ref_alt)
21958     {
21959       struct dwarf2_per_cu_data *per_cu;
21960       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21961
21962       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
21963                                                  dwarf2_per_objfile);
21964       this_type = get_die_type_at_offset (sect_off, per_cu);
21965     }
21966   else if (attr_form_is_ref (attr))
21967     {
21968       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21969
21970       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
21971     }
21972   else if (attr->form == DW_FORM_ref_sig8)
21973     {
21974       ULONGEST signature = DW_SIGNATURE (attr);
21975
21976       return get_signatured_type (die, signature, cu);
21977     }
21978   else
21979     {
21980       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
21981                    " at %s [in module %s]"),
21982                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
21983                  objfile_name (objfile));
21984       return build_error_marker_type (cu, die);
21985     }
21986
21987   /* If not cached we need to read it in.  */
21988
21989   if (this_type == NULL)
21990     {
21991       struct die_info *type_die = NULL;
21992       struct dwarf2_cu *type_cu = cu;
21993
21994       if (attr_form_is_ref (attr))
21995         type_die = follow_die_ref (die, attr, &type_cu);
21996       if (type_die == NULL)
21997         return build_error_marker_type (cu, die);
21998       /* If we find the type now, it's probably because the type came
21999          from an inter-CU reference and the type's CU got expanded before
22000          ours.  */
22001       this_type = read_type_die (type_die, type_cu);
22002     }
22003
22004   /* If we still don't have a type use an error marker.  */
22005
22006   if (this_type == NULL)
22007     return build_error_marker_type (cu, die);
22008
22009   return this_type;
22010 }
22011
22012 /* Return the type in DIE, CU.
22013    Returns NULL for invalid types.
22014
22015    This first does a lookup in die_type_hash,
22016    and only reads the die in if necessary.
22017
22018    NOTE: This can be called when reading in partial or full symbols.  */
22019
22020 static struct type *
22021 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22022 {
22023   struct type *this_type;
22024
22025   this_type = get_die_type (die, cu);
22026   if (this_type)
22027     return this_type;
22028
22029   return read_type_die_1 (die, cu);
22030 }
22031
22032 /* Read the type in DIE, CU.
22033    Returns NULL for invalid types.  */
22034
22035 static struct type *
22036 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22037 {
22038   struct type *this_type = NULL;
22039
22040   switch (die->tag)
22041     {
22042     case DW_TAG_class_type:
22043     case DW_TAG_interface_type:
22044     case DW_TAG_structure_type:
22045     case DW_TAG_union_type:
22046       this_type = read_structure_type (die, cu);
22047       break;
22048     case DW_TAG_enumeration_type:
22049       this_type = read_enumeration_type (die, cu);
22050       break;
22051     case DW_TAG_subprogram:
22052     case DW_TAG_subroutine_type:
22053     case DW_TAG_inlined_subroutine:
22054       this_type = read_subroutine_type (die, cu);
22055       break;
22056     case DW_TAG_array_type:
22057       this_type = read_array_type (die, cu);
22058       break;
22059     case DW_TAG_set_type:
22060       this_type = read_set_type (die, cu);
22061       break;
22062     case DW_TAG_pointer_type:
22063       this_type = read_tag_pointer_type (die, cu);
22064       break;
22065     case DW_TAG_ptr_to_member_type:
22066       this_type = read_tag_ptr_to_member_type (die, cu);
22067       break;
22068     case DW_TAG_reference_type:
22069       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22070       break;
22071     case DW_TAG_rvalue_reference_type:
22072       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22073       break;
22074     case DW_TAG_const_type:
22075       this_type = read_tag_const_type (die, cu);
22076       break;
22077     case DW_TAG_volatile_type:
22078       this_type = read_tag_volatile_type (die, cu);
22079       break;
22080     case DW_TAG_restrict_type:
22081       this_type = read_tag_restrict_type (die, cu);
22082       break;
22083     case DW_TAG_string_type:
22084       this_type = read_tag_string_type (die, cu);
22085       break;
22086     case DW_TAG_typedef:
22087       this_type = read_typedef (die, cu);
22088       break;
22089     case DW_TAG_subrange_type:
22090       this_type = read_subrange_type (die, cu);
22091       break;
22092     case DW_TAG_base_type:
22093       this_type = read_base_type (die, cu);
22094       break;
22095     case DW_TAG_unspecified_type:
22096       this_type = read_unspecified_type (die, cu);
22097       break;
22098     case DW_TAG_namespace:
22099       this_type = read_namespace_type (die, cu);
22100       break;
22101     case DW_TAG_module:
22102       this_type = read_module_type (die, cu);
22103       break;
22104     case DW_TAG_atomic_type:
22105       this_type = read_tag_atomic_type (die, cu);
22106       break;
22107     default:
22108       complaint (_("unexpected tag in read_type_die: '%s'"),
22109                  dwarf_tag_name (die->tag));
22110       break;
22111     }
22112
22113   return this_type;
22114 }
22115
22116 /* See if we can figure out if the class lives in a namespace.  We do
22117    this by looking for a member function; its demangled name will
22118    contain namespace info, if there is any.
22119    Return the computed name or NULL.
22120    Space for the result is allocated on the objfile's obstack.
22121    This is the full-die version of guess_partial_die_structure_name.
22122    In this case we know DIE has no useful parent.  */
22123
22124 static char *
22125 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22126 {
22127   struct die_info *spec_die;
22128   struct dwarf2_cu *spec_cu;
22129   struct die_info *child;
22130   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22131
22132   spec_cu = cu;
22133   spec_die = die_specification (die, &spec_cu);
22134   if (spec_die != NULL)
22135     {
22136       die = spec_die;
22137       cu = spec_cu;
22138     }
22139
22140   for (child = die->child;
22141        child != NULL;
22142        child = child->sibling)
22143     {
22144       if (child->tag == DW_TAG_subprogram)
22145         {
22146           const char *linkage_name = dw2_linkage_name (child, cu);
22147
22148           if (linkage_name != NULL)
22149             {
22150               char *actual_name
22151                 = language_class_name_from_physname (cu->language_defn,
22152                                                      linkage_name);
22153               char *name = NULL;
22154
22155               if (actual_name != NULL)
22156                 {
22157                   const char *die_name = dwarf2_name (die, cu);
22158
22159                   if (die_name != NULL
22160                       && strcmp (die_name, actual_name) != 0)
22161                     {
22162                       /* Strip off the class name from the full name.
22163                          We want the prefix.  */
22164                       int die_name_len = strlen (die_name);
22165                       int actual_name_len = strlen (actual_name);
22166
22167                       /* Test for '::' as a sanity check.  */
22168                       if (actual_name_len > die_name_len + 2
22169                           && actual_name[actual_name_len
22170                                          - die_name_len - 1] == ':')
22171                         name = (char *) obstack_copy0 (
22172                           &objfile->per_bfd->storage_obstack,
22173                           actual_name, actual_name_len - die_name_len - 2);
22174                     }
22175                 }
22176               xfree (actual_name);
22177               return name;
22178             }
22179         }
22180     }
22181
22182   return NULL;
22183 }
22184
22185 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22186    prefix part in such case.  See
22187    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22188
22189 static const char *
22190 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22191 {
22192   struct attribute *attr;
22193   const char *base;
22194
22195   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22196       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22197     return NULL;
22198
22199   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22200     return NULL;
22201
22202   attr = dw2_linkage_name_attr (die, cu);
22203   if (attr == NULL || DW_STRING (attr) == NULL)
22204     return NULL;
22205
22206   /* dwarf2_name had to be already called.  */
22207   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22208
22209   /* Strip the base name, keep any leading namespaces/classes.  */
22210   base = strrchr (DW_STRING (attr), ':');
22211   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22212     return "";
22213
22214   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22215   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22216                                  DW_STRING (attr),
22217                                  &base[-1] - DW_STRING (attr));
22218 }
22219
22220 /* Return the name of the namespace/class that DIE is defined within,
22221    or "" if we can't tell.  The caller should not xfree the result.
22222
22223    For example, if we're within the method foo() in the following
22224    code:
22225
22226    namespace N {
22227      class C {
22228        void foo () {
22229        }
22230      };
22231    }
22232
22233    then determine_prefix on foo's die will return "N::C".  */
22234
22235 static const char *
22236 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22237 {
22238   struct dwarf2_per_objfile *dwarf2_per_objfile
22239     = cu->per_cu->dwarf2_per_objfile;
22240   struct die_info *parent, *spec_die;
22241   struct dwarf2_cu *spec_cu;
22242   struct type *parent_type;
22243   const char *retval;
22244
22245   if (cu->language != language_cplus
22246       && cu->language != language_fortran && cu->language != language_d
22247       && cu->language != language_rust)
22248     return "";
22249
22250   retval = anonymous_struct_prefix (die, cu);
22251   if (retval)
22252     return retval;
22253
22254   /* We have to be careful in the presence of DW_AT_specification.
22255      For example, with GCC 3.4, given the code
22256
22257      namespace N {
22258        void foo() {
22259          // Definition of N::foo.
22260        }
22261      }
22262
22263      then we'll have a tree of DIEs like this:
22264
22265      1: DW_TAG_compile_unit
22266        2: DW_TAG_namespace        // N
22267          3: DW_TAG_subprogram     // declaration of N::foo
22268        4: DW_TAG_subprogram       // definition of N::foo
22269             DW_AT_specification   // refers to die #3
22270
22271      Thus, when processing die #4, we have to pretend that we're in
22272      the context of its DW_AT_specification, namely the contex of die
22273      #3.  */
22274   spec_cu = cu;
22275   spec_die = die_specification (die, &spec_cu);
22276   if (spec_die == NULL)
22277     parent = die->parent;
22278   else
22279     {
22280       parent = spec_die->parent;
22281       cu = spec_cu;
22282     }
22283
22284   if (parent == NULL)
22285     return "";
22286   else if (parent->building_fullname)
22287     {
22288       const char *name;
22289       const char *parent_name;
22290
22291       /* It has been seen on RealView 2.2 built binaries,
22292          DW_TAG_template_type_param types actually _defined_ as
22293          children of the parent class:
22294
22295          enum E {};
22296          template class <class Enum> Class{};
22297          Class<enum E> class_e;
22298
22299          1: DW_TAG_class_type (Class)
22300            2: DW_TAG_enumeration_type (E)
22301              3: DW_TAG_enumerator (enum1:0)
22302              3: DW_TAG_enumerator (enum2:1)
22303              ...
22304            2: DW_TAG_template_type_param
22305               DW_AT_type  DW_FORM_ref_udata (E)
22306
22307          Besides being broken debug info, it can put GDB into an
22308          infinite loop.  Consider:
22309
22310          When we're building the full name for Class<E>, we'll start
22311          at Class, and go look over its template type parameters,
22312          finding E.  We'll then try to build the full name of E, and
22313          reach here.  We're now trying to build the full name of E,
22314          and look over the parent DIE for containing scope.  In the
22315          broken case, if we followed the parent DIE of E, we'd again
22316          find Class, and once again go look at its template type
22317          arguments, etc., etc.  Simply don't consider such parent die
22318          as source-level parent of this die (it can't be, the language
22319          doesn't allow it), and break the loop here.  */
22320       name = dwarf2_name (die, cu);
22321       parent_name = dwarf2_name (parent, cu);
22322       complaint (_("template param type '%s' defined within parent '%s'"),
22323                  name ? name : "<unknown>",
22324                  parent_name ? parent_name : "<unknown>");
22325       return "";
22326     }
22327   else
22328     switch (parent->tag)
22329       {
22330       case DW_TAG_namespace:
22331         parent_type = read_type_die (parent, cu);
22332         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22333            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22334            Work around this problem here.  */
22335         if (cu->language == language_cplus
22336             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22337           return "";
22338         /* We give a name to even anonymous namespaces.  */
22339         return TYPE_NAME (parent_type);
22340       case DW_TAG_class_type:
22341       case DW_TAG_interface_type:
22342       case DW_TAG_structure_type:
22343       case DW_TAG_union_type:
22344       case DW_TAG_module:
22345         parent_type = read_type_die (parent, cu);
22346         if (TYPE_NAME (parent_type) != NULL)
22347           return TYPE_NAME (parent_type);
22348         else
22349           /* An anonymous structure is only allowed non-static data
22350              members; no typedefs, no member functions, et cetera.
22351              So it does not need a prefix.  */
22352           return "";
22353       case DW_TAG_compile_unit:
22354       case DW_TAG_partial_unit:
22355         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22356         if (cu->language == language_cplus
22357             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22358             && die->child != NULL
22359             && (die->tag == DW_TAG_class_type
22360                 || die->tag == DW_TAG_structure_type
22361                 || die->tag == DW_TAG_union_type))
22362           {
22363             char *name = guess_full_die_structure_name (die, cu);
22364             if (name != NULL)
22365               return name;
22366           }
22367         return "";
22368       case DW_TAG_enumeration_type:
22369         parent_type = read_type_die (parent, cu);
22370         if (TYPE_DECLARED_CLASS (parent_type))
22371           {
22372             if (TYPE_NAME (parent_type) != NULL)
22373               return TYPE_NAME (parent_type);
22374             return "";
22375           }
22376         /* Fall through.  */
22377       default:
22378         return determine_prefix (parent, cu);
22379       }
22380 }
22381
22382 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22383    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22384    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22385    an obconcat, otherwise allocate storage for the result.  The CU argument is
22386    used to determine the language and hence, the appropriate separator.  */
22387
22388 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22389
22390 static char *
22391 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22392                  int physname, struct dwarf2_cu *cu)
22393 {
22394   const char *lead = "";
22395   const char *sep;
22396
22397   if (suffix == NULL || suffix[0] == '\0'
22398       || prefix == NULL || prefix[0] == '\0')
22399     sep = "";
22400   else if (cu->language == language_d)
22401     {
22402       /* For D, the 'main' function could be defined in any module, but it
22403          should never be prefixed.  */
22404       if (strcmp (suffix, "D main") == 0)
22405         {
22406           prefix = "";
22407           sep = "";
22408         }
22409       else
22410         sep = ".";
22411     }
22412   else if (cu->language == language_fortran && physname)
22413     {
22414       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22415          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22416
22417       lead = "__";
22418       sep = "_MOD_";
22419     }
22420   else
22421     sep = "::";
22422
22423   if (prefix == NULL)
22424     prefix = "";
22425   if (suffix == NULL)
22426     suffix = "";
22427
22428   if (obs == NULL)
22429     {
22430       char *retval
22431         = ((char *)
22432            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22433
22434       strcpy (retval, lead);
22435       strcat (retval, prefix);
22436       strcat (retval, sep);
22437       strcat (retval, suffix);
22438       return retval;
22439     }
22440   else
22441     {
22442       /* We have an obstack.  */
22443       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22444     }
22445 }
22446
22447 /* Return sibling of die, NULL if no sibling.  */
22448
22449 static struct die_info *
22450 sibling_die (struct die_info *die)
22451 {
22452   return die->sibling;
22453 }
22454
22455 /* Get name of a die, return NULL if not found.  */
22456
22457 static const char *
22458 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22459                           struct obstack *obstack)
22460 {
22461   if (name && cu->language == language_cplus)
22462     {
22463       std::string canon_name = cp_canonicalize_string (name);
22464
22465       if (!canon_name.empty ())
22466         {
22467           if (canon_name != name)
22468             name = (const char *) obstack_copy0 (obstack,
22469                                                  canon_name.c_str (),
22470                                                  canon_name.length ());
22471         }
22472     }
22473
22474   return name;
22475 }
22476
22477 /* Get name of a die, return NULL if not found.
22478    Anonymous namespaces are converted to their magic string.  */
22479
22480 static const char *
22481 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22482 {
22483   struct attribute *attr;
22484   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22485
22486   attr = dwarf2_attr (die, DW_AT_name, cu);
22487   if ((!attr || !DW_STRING (attr))
22488       && die->tag != DW_TAG_namespace
22489       && die->tag != DW_TAG_class_type
22490       && die->tag != DW_TAG_interface_type
22491       && die->tag != DW_TAG_structure_type
22492       && die->tag != DW_TAG_union_type)
22493     return NULL;
22494
22495   switch (die->tag)
22496     {
22497     case DW_TAG_compile_unit:
22498     case DW_TAG_partial_unit:
22499       /* Compilation units have a DW_AT_name that is a filename, not
22500          a source language identifier.  */
22501     case DW_TAG_enumeration_type:
22502     case DW_TAG_enumerator:
22503       /* These tags always have simple identifiers already; no need
22504          to canonicalize them.  */
22505       return DW_STRING (attr);
22506
22507     case DW_TAG_namespace:
22508       if (attr != NULL && DW_STRING (attr) != NULL)
22509         return DW_STRING (attr);
22510       return CP_ANONYMOUS_NAMESPACE_STR;
22511
22512     case DW_TAG_class_type:
22513     case DW_TAG_interface_type:
22514     case DW_TAG_structure_type:
22515     case DW_TAG_union_type:
22516       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22517          structures or unions.  These were of the form "._%d" in GCC 4.1,
22518          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22519          and GCC 4.4.  We work around this problem by ignoring these.  */
22520       if (attr && DW_STRING (attr)
22521           && (startswith (DW_STRING (attr), "._")
22522               || startswith (DW_STRING (attr), "<anonymous")))
22523         return NULL;
22524
22525       /* GCC might emit a nameless typedef that has a linkage name.  See
22526          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22527       if (!attr || DW_STRING (attr) == NULL)
22528         {
22529           char *demangled = NULL;
22530
22531           attr = dw2_linkage_name_attr (die, cu);
22532           if (attr == NULL || DW_STRING (attr) == NULL)
22533             return NULL;
22534
22535           /* Avoid demangling DW_STRING (attr) the second time on a second
22536              call for the same DIE.  */
22537           if (!DW_STRING_IS_CANONICAL (attr))
22538             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22539
22540           if (demangled)
22541             {
22542               const char *base;
22543
22544               /* FIXME: we already did this for the partial symbol... */
22545               DW_STRING (attr)
22546                 = ((const char *)
22547                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22548                                   demangled, strlen (demangled)));
22549               DW_STRING_IS_CANONICAL (attr) = 1;
22550               xfree (demangled);
22551
22552               /* Strip any leading namespaces/classes, keep only the base name.
22553                  DW_AT_name for named DIEs does not contain the prefixes.  */
22554               base = strrchr (DW_STRING (attr), ':');
22555               if (base && base > DW_STRING (attr) && base[-1] == ':')
22556                 return &base[1];
22557               else
22558                 return DW_STRING (attr);
22559             }
22560         }
22561       break;
22562
22563     default:
22564       break;
22565     }
22566
22567   if (!DW_STRING_IS_CANONICAL (attr))
22568     {
22569       DW_STRING (attr)
22570         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22571                                     &objfile->per_bfd->storage_obstack);
22572       DW_STRING_IS_CANONICAL (attr) = 1;
22573     }
22574   return DW_STRING (attr);
22575 }
22576
22577 /* Return the die that this die in an extension of, or NULL if there
22578    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22579    containing the return value on output.  */
22580
22581 static struct die_info *
22582 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22583 {
22584   struct attribute *attr;
22585
22586   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22587   if (attr == NULL)
22588     return NULL;
22589
22590   return follow_die_ref (die, attr, ext_cu);
22591 }
22592
22593 /* Convert a DIE tag into its string name.  */
22594
22595 static const char *
22596 dwarf_tag_name (unsigned tag)
22597 {
22598   const char *name = get_DW_TAG_name (tag);
22599
22600   if (name == NULL)
22601     return "DW_TAG_<unknown>";
22602
22603   return name;
22604 }
22605
22606 /* Convert a DWARF attribute code into its string name.  */
22607
22608 static const char *
22609 dwarf_attr_name (unsigned attr)
22610 {
22611   const char *name;
22612
22613 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22614   if (attr == DW_AT_MIPS_fde)
22615     return "DW_AT_MIPS_fde";
22616 #else
22617   if (attr == DW_AT_HP_block_index)
22618     return "DW_AT_HP_block_index";
22619 #endif
22620
22621   name = get_DW_AT_name (attr);
22622
22623   if (name == NULL)
22624     return "DW_AT_<unknown>";
22625
22626   return name;
22627 }
22628
22629 /* Convert a DWARF value form code into its string name.  */
22630
22631 static const char *
22632 dwarf_form_name (unsigned form)
22633 {
22634   const char *name = get_DW_FORM_name (form);
22635
22636   if (name == NULL)
22637     return "DW_FORM_<unknown>";
22638
22639   return name;
22640 }
22641
22642 static const char *
22643 dwarf_bool_name (unsigned mybool)
22644 {
22645   if (mybool)
22646     return "TRUE";
22647   else
22648     return "FALSE";
22649 }
22650
22651 /* Convert a DWARF type code into its string name.  */
22652
22653 static const char *
22654 dwarf_type_encoding_name (unsigned enc)
22655 {
22656   const char *name = get_DW_ATE_name (enc);
22657
22658   if (name == NULL)
22659     return "DW_ATE_<unknown>";
22660
22661   return name;
22662 }
22663
22664 static void
22665 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22666 {
22667   unsigned int i;
22668
22669   print_spaces (indent, f);
22670   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22671                       dwarf_tag_name (die->tag), die->abbrev,
22672                       sect_offset_str (die->sect_off));
22673
22674   if (die->parent != NULL)
22675     {
22676       print_spaces (indent, f);
22677       fprintf_unfiltered (f, "  parent at offset: %s\n",
22678                           sect_offset_str (die->parent->sect_off));
22679     }
22680
22681   print_spaces (indent, f);
22682   fprintf_unfiltered (f, "  has children: %s\n",
22683            dwarf_bool_name (die->child != NULL));
22684
22685   print_spaces (indent, f);
22686   fprintf_unfiltered (f, "  attributes:\n");
22687
22688   for (i = 0; i < die->num_attrs; ++i)
22689     {
22690       print_spaces (indent, f);
22691       fprintf_unfiltered (f, "    %s (%s) ",
22692                dwarf_attr_name (die->attrs[i].name),
22693                dwarf_form_name (die->attrs[i].form));
22694
22695       switch (die->attrs[i].form)
22696         {
22697         case DW_FORM_addr:
22698         case DW_FORM_GNU_addr_index:
22699           fprintf_unfiltered (f, "address: ");
22700           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22701           break;
22702         case DW_FORM_block2:
22703         case DW_FORM_block4:
22704         case DW_FORM_block:
22705         case DW_FORM_block1:
22706           fprintf_unfiltered (f, "block: size %s",
22707                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22708           break;
22709         case DW_FORM_exprloc:
22710           fprintf_unfiltered (f, "expression: size %s",
22711                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22712           break;
22713         case DW_FORM_data16:
22714           fprintf_unfiltered (f, "constant of 16 bytes");
22715           break;
22716         case DW_FORM_ref_addr:
22717           fprintf_unfiltered (f, "ref address: ");
22718           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22719           break;
22720         case DW_FORM_GNU_ref_alt:
22721           fprintf_unfiltered (f, "alt ref address: ");
22722           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22723           break;
22724         case DW_FORM_ref1:
22725         case DW_FORM_ref2:
22726         case DW_FORM_ref4:
22727         case DW_FORM_ref8:
22728         case DW_FORM_ref_udata:
22729           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22730                               (long) (DW_UNSND (&die->attrs[i])));
22731           break;
22732         case DW_FORM_data1:
22733         case DW_FORM_data2:
22734         case DW_FORM_data4:
22735         case DW_FORM_data8:
22736         case DW_FORM_udata:
22737         case DW_FORM_sdata:
22738           fprintf_unfiltered (f, "constant: %s",
22739                               pulongest (DW_UNSND (&die->attrs[i])));
22740           break;
22741         case DW_FORM_sec_offset:
22742           fprintf_unfiltered (f, "section offset: %s",
22743                               pulongest (DW_UNSND (&die->attrs[i])));
22744           break;
22745         case DW_FORM_ref_sig8:
22746           fprintf_unfiltered (f, "signature: %s",
22747                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22748           break;
22749         case DW_FORM_string:
22750         case DW_FORM_strp:
22751         case DW_FORM_line_strp:
22752         case DW_FORM_GNU_str_index:
22753         case DW_FORM_GNU_strp_alt:
22754           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22755                    DW_STRING (&die->attrs[i])
22756                    ? DW_STRING (&die->attrs[i]) : "",
22757                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22758           break;
22759         case DW_FORM_flag:
22760           if (DW_UNSND (&die->attrs[i]))
22761             fprintf_unfiltered (f, "flag: TRUE");
22762           else
22763             fprintf_unfiltered (f, "flag: FALSE");
22764           break;
22765         case DW_FORM_flag_present:
22766           fprintf_unfiltered (f, "flag: TRUE");
22767           break;
22768         case DW_FORM_indirect:
22769           /* The reader will have reduced the indirect form to
22770              the "base form" so this form should not occur.  */
22771           fprintf_unfiltered (f, 
22772                               "unexpected attribute form: DW_FORM_indirect");
22773           break;
22774         case DW_FORM_implicit_const:
22775           fprintf_unfiltered (f, "constant: %s",
22776                               plongest (DW_SND (&die->attrs[i])));
22777           break;
22778         default:
22779           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22780                    die->attrs[i].form);
22781           break;
22782         }
22783       fprintf_unfiltered (f, "\n");
22784     }
22785 }
22786
22787 static void
22788 dump_die_for_error (struct die_info *die)
22789 {
22790   dump_die_shallow (gdb_stderr, 0, die);
22791 }
22792
22793 static void
22794 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22795 {
22796   int indent = level * 4;
22797
22798   gdb_assert (die != NULL);
22799
22800   if (level >= max_level)
22801     return;
22802
22803   dump_die_shallow (f, indent, die);
22804
22805   if (die->child != NULL)
22806     {
22807       print_spaces (indent, f);
22808       fprintf_unfiltered (f, "  Children:");
22809       if (level + 1 < max_level)
22810         {
22811           fprintf_unfiltered (f, "\n");
22812           dump_die_1 (f, level + 1, max_level, die->child);
22813         }
22814       else
22815         {
22816           fprintf_unfiltered (f,
22817                               " [not printed, max nesting level reached]\n");
22818         }
22819     }
22820
22821   if (die->sibling != NULL && level > 0)
22822     {
22823       dump_die_1 (f, level, max_level, die->sibling);
22824     }
22825 }
22826
22827 /* This is called from the pdie macro in gdbinit.in.
22828    It's not static so gcc will keep a copy callable from gdb.  */
22829
22830 void
22831 dump_die (struct die_info *die, int max_level)
22832 {
22833   dump_die_1 (gdb_stdlog, 0, max_level, die);
22834 }
22835
22836 static void
22837 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22838 {
22839   void **slot;
22840
22841   slot = htab_find_slot_with_hash (cu->die_hash, die,
22842                                    to_underlying (die->sect_off),
22843                                    INSERT);
22844
22845   *slot = die;
22846 }
22847
22848 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22849    required kind.  */
22850
22851 static sect_offset
22852 dwarf2_get_ref_die_offset (const struct attribute *attr)
22853 {
22854   if (attr_form_is_ref (attr))
22855     return (sect_offset) DW_UNSND (attr);
22856
22857   complaint (_("unsupported die ref attribute form: '%s'"),
22858              dwarf_form_name (attr->form));
22859   return {};
22860 }
22861
22862 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22863  * the value held by the attribute is not constant.  */
22864
22865 static LONGEST
22866 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22867 {
22868   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22869     return DW_SND (attr);
22870   else if (attr->form == DW_FORM_udata
22871            || attr->form == DW_FORM_data1
22872            || attr->form == DW_FORM_data2
22873            || attr->form == DW_FORM_data4
22874            || attr->form == DW_FORM_data8)
22875     return DW_UNSND (attr);
22876   else
22877     {
22878       /* For DW_FORM_data16 see attr_form_is_constant.  */
22879       complaint (_("Attribute value is not a constant (%s)"),
22880                  dwarf_form_name (attr->form));
22881       return default_value;
22882     }
22883 }
22884
22885 /* Follow reference or signature attribute ATTR of SRC_DIE.
22886    On entry *REF_CU is the CU of SRC_DIE.
22887    On exit *REF_CU is the CU of the result.  */
22888
22889 static struct die_info *
22890 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22891                        struct dwarf2_cu **ref_cu)
22892 {
22893   struct die_info *die;
22894
22895   if (attr_form_is_ref (attr))
22896     die = follow_die_ref (src_die, attr, ref_cu);
22897   else if (attr->form == DW_FORM_ref_sig8)
22898     die = follow_die_sig (src_die, attr, ref_cu);
22899   else
22900     {
22901       dump_die_for_error (src_die);
22902       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22903              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22904     }
22905
22906   return die;
22907 }
22908
22909 /* Follow reference OFFSET.
22910    On entry *REF_CU is the CU of the source die referencing OFFSET.
22911    On exit *REF_CU is the CU of the result.
22912    Returns NULL if OFFSET is invalid.  */
22913
22914 static struct die_info *
22915 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22916                    struct dwarf2_cu **ref_cu)
22917 {
22918   struct die_info temp_die;
22919   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22920   struct dwarf2_per_objfile *dwarf2_per_objfile
22921     = cu->per_cu->dwarf2_per_objfile;
22922
22923   gdb_assert (cu->per_cu != NULL);
22924
22925   target_cu = cu;
22926
22927   if (cu->per_cu->is_debug_types)
22928     {
22929       /* .debug_types CUs cannot reference anything outside their CU.
22930          If they need to, they have to reference a signatured type via
22931          DW_FORM_ref_sig8.  */
22932       if (!offset_in_cu_p (&cu->header, sect_off))
22933         return NULL;
22934     }
22935   else if (offset_in_dwz != cu->per_cu->is_dwz
22936            || !offset_in_cu_p (&cu->header, sect_off))
22937     {
22938       struct dwarf2_per_cu_data *per_cu;
22939
22940       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22941                                                  dwarf2_per_objfile);
22942
22943       /* If necessary, add it to the queue and load its DIEs.  */
22944       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22945         load_full_comp_unit (per_cu, false, cu->language);
22946
22947       target_cu = per_cu->cu;
22948     }
22949   else if (cu->dies == NULL)
22950     {
22951       /* We're loading full DIEs during partial symbol reading.  */
22952       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22953       load_full_comp_unit (cu->per_cu, false, language_minimal);
22954     }
22955
22956   *ref_cu = target_cu;
22957   temp_die.sect_off = sect_off;
22958   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22959                                                   &temp_die,
22960                                                   to_underlying (sect_off));
22961 }
22962
22963 /* Follow reference attribute ATTR of SRC_DIE.
22964    On entry *REF_CU is the CU of SRC_DIE.
22965    On exit *REF_CU is the CU of the result.  */
22966
22967 static struct die_info *
22968 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
22969                 struct dwarf2_cu **ref_cu)
22970 {
22971   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22972   struct dwarf2_cu *cu = *ref_cu;
22973   struct die_info *die;
22974
22975   die = follow_die_offset (sect_off,
22976                            (attr->form == DW_FORM_GNU_ref_alt
22977                             || cu->per_cu->is_dwz),
22978                            ref_cu);
22979   if (!die)
22980     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
22981            "at %s [in module %s]"),
22982            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
22983            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
22984
22985   return die;
22986 }
22987
22988 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
22989    Returned value is intended for DW_OP_call*.  Returned
22990    dwarf2_locexpr_baton->data has lifetime of
22991    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
22992
22993 struct dwarf2_locexpr_baton
22994 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
22995                                struct dwarf2_per_cu_data *per_cu,
22996                                CORE_ADDR (*get_frame_pc) (void *baton),
22997                                void *baton)
22998 {
22999   struct dwarf2_cu *cu;
23000   struct die_info *die;
23001   struct attribute *attr;
23002   struct dwarf2_locexpr_baton retval;
23003   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23004   struct objfile *objfile = dwarf2_per_objfile->objfile;
23005
23006   if (per_cu->cu == NULL)
23007     load_cu (per_cu, false);
23008   cu = per_cu->cu;
23009   if (cu == NULL)
23010     {
23011       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23012          Instead just throw an error, not much else we can do.  */
23013       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23014              sect_offset_str (sect_off), objfile_name (objfile));
23015     }
23016
23017   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23018   if (!die)
23019     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23020            sect_offset_str (sect_off), objfile_name (objfile));
23021
23022   attr = dwarf2_attr (die, DW_AT_location, cu);
23023   if (!attr)
23024     {
23025       /* DWARF: "If there is no such attribute, then there is no effect.".
23026          DATA is ignored if SIZE is 0.  */
23027
23028       retval.data = NULL;
23029       retval.size = 0;
23030     }
23031   else if (attr_form_is_section_offset (attr))
23032     {
23033       struct dwarf2_loclist_baton loclist_baton;
23034       CORE_ADDR pc = (*get_frame_pc) (baton);
23035       size_t size;
23036
23037       fill_in_loclist_baton (cu, &loclist_baton, attr);
23038
23039       retval.data = dwarf2_find_location_expression (&loclist_baton,
23040                                                      &size, pc);
23041       retval.size = size;
23042     }
23043   else
23044     {
23045       if (!attr_form_is_block (attr))
23046         error (_("Dwarf Error: DIE at %s referenced in module %s "
23047                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23048                sect_offset_str (sect_off), objfile_name (objfile));
23049
23050       retval.data = DW_BLOCK (attr)->data;
23051       retval.size = DW_BLOCK (attr)->size;
23052     }
23053   retval.per_cu = cu->per_cu;
23054
23055   age_cached_comp_units (dwarf2_per_objfile);
23056
23057   return retval;
23058 }
23059
23060 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23061    offset.  */
23062
23063 struct dwarf2_locexpr_baton
23064 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23065                              struct dwarf2_per_cu_data *per_cu,
23066                              CORE_ADDR (*get_frame_pc) (void *baton),
23067                              void *baton)
23068 {
23069   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23070
23071   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23072 }
23073
23074 /* Write a constant of a given type as target-ordered bytes into
23075    OBSTACK.  */
23076
23077 static const gdb_byte *
23078 write_constant_as_bytes (struct obstack *obstack,
23079                          enum bfd_endian byte_order,
23080                          struct type *type,
23081                          ULONGEST value,
23082                          LONGEST *len)
23083 {
23084   gdb_byte *result;
23085
23086   *len = TYPE_LENGTH (type);
23087   result = (gdb_byte *) obstack_alloc (obstack, *len);
23088   store_unsigned_integer (result, *len, byte_order, value);
23089
23090   return result;
23091 }
23092
23093 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23094    pointer to the constant bytes and set LEN to the length of the
23095    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23096    does not have a DW_AT_const_value, return NULL.  */
23097
23098 const gdb_byte *
23099 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23100                              struct dwarf2_per_cu_data *per_cu,
23101                              struct obstack *obstack,
23102                              LONGEST *len)
23103 {
23104   struct dwarf2_cu *cu;
23105   struct die_info *die;
23106   struct attribute *attr;
23107   const gdb_byte *result = NULL;
23108   struct type *type;
23109   LONGEST value;
23110   enum bfd_endian byte_order;
23111   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23112
23113   if (per_cu->cu == NULL)
23114     load_cu (per_cu, false);
23115   cu = per_cu->cu;
23116   if (cu == NULL)
23117     {
23118       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23119          Instead just throw an error, not much else we can do.  */
23120       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23121              sect_offset_str (sect_off), objfile_name (objfile));
23122     }
23123
23124   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23125   if (!die)
23126     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23127            sect_offset_str (sect_off), objfile_name (objfile));
23128
23129   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23130   if (attr == NULL)
23131     return NULL;
23132
23133   byte_order = (bfd_big_endian (objfile->obfd)
23134                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23135
23136   switch (attr->form)
23137     {
23138     case DW_FORM_addr:
23139     case DW_FORM_GNU_addr_index:
23140       {
23141         gdb_byte *tem;
23142
23143         *len = cu->header.addr_size;
23144         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23145         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23146         result = tem;
23147       }
23148       break;
23149     case DW_FORM_string:
23150     case DW_FORM_strp:
23151     case DW_FORM_GNU_str_index:
23152     case DW_FORM_GNU_strp_alt:
23153       /* DW_STRING is already allocated on the objfile obstack, point
23154          directly to it.  */
23155       result = (const gdb_byte *) DW_STRING (attr);
23156       *len = strlen (DW_STRING (attr));
23157       break;
23158     case DW_FORM_block1:
23159     case DW_FORM_block2:
23160     case DW_FORM_block4:
23161     case DW_FORM_block:
23162     case DW_FORM_exprloc:
23163     case DW_FORM_data16:
23164       result = DW_BLOCK (attr)->data;
23165       *len = DW_BLOCK (attr)->size;
23166       break;
23167
23168       /* The DW_AT_const_value attributes are supposed to carry the
23169          symbol's value "represented as it would be on the target
23170          architecture."  By the time we get here, it's already been
23171          converted to host endianness, so we just need to sign- or
23172          zero-extend it as appropriate.  */
23173     case DW_FORM_data1:
23174       type = die_type (die, cu);
23175       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23176       if (result == NULL)
23177         result = write_constant_as_bytes (obstack, byte_order,
23178                                           type, value, len);
23179       break;
23180     case DW_FORM_data2:
23181       type = die_type (die, cu);
23182       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23183       if (result == NULL)
23184         result = write_constant_as_bytes (obstack, byte_order,
23185                                           type, value, len);
23186       break;
23187     case DW_FORM_data4:
23188       type = die_type (die, cu);
23189       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23190       if (result == NULL)
23191         result = write_constant_as_bytes (obstack, byte_order,
23192                                           type, value, len);
23193       break;
23194     case DW_FORM_data8:
23195       type = die_type (die, cu);
23196       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23197       if (result == NULL)
23198         result = write_constant_as_bytes (obstack, byte_order,
23199                                           type, value, len);
23200       break;
23201
23202     case DW_FORM_sdata:
23203     case DW_FORM_implicit_const:
23204       type = die_type (die, cu);
23205       result = write_constant_as_bytes (obstack, byte_order,
23206                                         type, DW_SND (attr), len);
23207       break;
23208
23209     case DW_FORM_udata:
23210       type = die_type (die, cu);
23211       result = write_constant_as_bytes (obstack, byte_order,
23212                                         type, DW_UNSND (attr), len);
23213       break;
23214
23215     default:
23216       complaint (_("unsupported const value attribute form: '%s'"),
23217                  dwarf_form_name (attr->form));
23218       break;
23219     }
23220
23221   return result;
23222 }
23223
23224 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23225    valid type for this die is found.  */
23226
23227 struct type *
23228 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23229                                 struct dwarf2_per_cu_data *per_cu)
23230 {
23231   struct dwarf2_cu *cu;
23232   struct die_info *die;
23233
23234   if (per_cu->cu == NULL)
23235     load_cu (per_cu, false);
23236   cu = per_cu->cu;
23237   if (!cu)
23238     return NULL;
23239
23240   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23241   if (!die)
23242     return NULL;
23243
23244   return die_type (die, cu);
23245 }
23246
23247 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23248    PER_CU.  */
23249
23250 struct type *
23251 dwarf2_get_die_type (cu_offset die_offset,
23252                      struct dwarf2_per_cu_data *per_cu)
23253 {
23254   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23255   return get_die_type_at_offset (die_offset_sect, per_cu);
23256 }
23257
23258 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23259    On entry *REF_CU is the CU of SRC_DIE.
23260    On exit *REF_CU is the CU of the result.
23261    Returns NULL if the referenced DIE isn't found.  */
23262
23263 static struct die_info *
23264 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23265                   struct dwarf2_cu **ref_cu)
23266 {
23267   struct die_info temp_die;
23268   struct dwarf2_cu *sig_cu;
23269   struct die_info *die;
23270
23271   /* While it might be nice to assert sig_type->type == NULL here,
23272      we can get here for DW_AT_imported_declaration where we need
23273      the DIE not the type.  */
23274
23275   /* If necessary, add it to the queue and load its DIEs.  */
23276
23277   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23278     read_signatured_type (sig_type);
23279
23280   sig_cu = sig_type->per_cu.cu;
23281   gdb_assert (sig_cu != NULL);
23282   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23283   temp_die.sect_off = sig_type->type_offset_in_section;
23284   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23285                                                  to_underlying (temp_die.sect_off));
23286   if (die)
23287     {
23288       struct dwarf2_per_objfile *dwarf2_per_objfile
23289         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23290
23291       /* For .gdb_index version 7 keep track of included TUs.
23292          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23293       if (dwarf2_per_objfile->index_table != NULL
23294           && dwarf2_per_objfile->index_table->version <= 7)
23295         {
23296           VEC_safe_push (dwarf2_per_cu_ptr,
23297                          (*ref_cu)->per_cu->imported_symtabs,
23298                          sig_cu->per_cu);
23299         }
23300
23301       *ref_cu = sig_cu;
23302       return die;
23303     }
23304
23305   return NULL;
23306 }
23307
23308 /* Follow signatured type referenced by ATTR in SRC_DIE.
23309    On entry *REF_CU is the CU of SRC_DIE.
23310    On exit *REF_CU is the CU of the result.
23311    The result is the DIE of the type.
23312    If the referenced type cannot be found an error is thrown.  */
23313
23314 static struct die_info *
23315 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23316                 struct dwarf2_cu **ref_cu)
23317 {
23318   ULONGEST signature = DW_SIGNATURE (attr);
23319   struct signatured_type *sig_type;
23320   struct die_info *die;
23321
23322   gdb_assert (attr->form == DW_FORM_ref_sig8);
23323
23324   sig_type = lookup_signatured_type (*ref_cu, signature);
23325   /* sig_type will be NULL if the signatured type is missing from
23326      the debug info.  */
23327   if (sig_type == NULL)
23328     {
23329       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23330                " from DIE at %s [in module %s]"),
23331              hex_string (signature), sect_offset_str (src_die->sect_off),
23332              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23333     }
23334
23335   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23336   if (die == NULL)
23337     {
23338       dump_die_for_error (src_die);
23339       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23340                " from DIE at %s [in module %s]"),
23341              hex_string (signature), sect_offset_str (src_die->sect_off),
23342              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23343     }
23344
23345   return die;
23346 }
23347
23348 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23349    reading in and processing the type unit if necessary.  */
23350
23351 static struct type *
23352 get_signatured_type (struct die_info *die, ULONGEST signature,
23353                      struct dwarf2_cu *cu)
23354 {
23355   struct dwarf2_per_objfile *dwarf2_per_objfile
23356     = cu->per_cu->dwarf2_per_objfile;
23357   struct signatured_type *sig_type;
23358   struct dwarf2_cu *type_cu;
23359   struct die_info *type_die;
23360   struct type *type;
23361
23362   sig_type = lookup_signatured_type (cu, signature);
23363   /* sig_type will be NULL if the signatured type is missing from
23364      the debug info.  */
23365   if (sig_type == NULL)
23366     {
23367       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23368                    " from DIE at %s [in module %s]"),
23369                  hex_string (signature), sect_offset_str (die->sect_off),
23370                  objfile_name (dwarf2_per_objfile->objfile));
23371       return build_error_marker_type (cu, die);
23372     }
23373
23374   /* If we already know the type we're done.  */
23375   if (sig_type->type != NULL)
23376     return sig_type->type;
23377
23378   type_cu = cu;
23379   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23380   if (type_die != NULL)
23381     {
23382       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23383          is created.  This is important, for example, because for c++ classes
23384          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23385       type = read_type_die (type_die, type_cu);
23386       if (type == NULL)
23387         {
23388           complaint (_("Dwarf Error: Cannot build signatured type %s"
23389                        " referenced from DIE at %s [in module %s]"),
23390                      hex_string (signature), sect_offset_str (die->sect_off),
23391                      objfile_name (dwarf2_per_objfile->objfile));
23392           type = build_error_marker_type (cu, die);
23393         }
23394     }
23395   else
23396     {
23397       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23398                    " from DIE at %s [in module %s]"),
23399                  hex_string (signature), sect_offset_str (die->sect_off),
23400                  objfile_name (dwarf2_per_objfile->objfile));
23401       type = build_error_marker_type (cu, die);
23402     }
23403   sig_type->type = type;
23404
23405   return type;
23406 }
23407
23408 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23409    reading in and processing the type unit if necessary.  */
23410
23411 static struct type *
23412 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23413                           struct dwarf2_cu *cu) /* ARI: editCase function */
23414 {
23415   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23416   if (attr_form_is_ref (attr))
23417     {
23418       struct dwarf2_cu *type_cu = cu;
23419       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23420
23421       return read_type_die (type_die, type_cu);
23422     }
23423   else if (attr->form == DW_FORM_ref_sig8)
23424     {
23425       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23426     }
23427   else
23428     {
23429       struct dwarf2_per_objfile *dwarf2_per_objfile
23430         = cu->per_cu->dwarf2_per_objfile;
23431
23432       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23433                    " at %s [in module %s]"),
23434                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23435                  objfile_name (dwarf2_per_objfile->objfile));
23436       return build_error_marker_type (cu, die);
23437     }
23438 }
23439
23440 /* Load the DIEs associated with type unit PER_CU into memory.  */
23441
23442 static void
23443 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23444 {
23445   struct signatured_type *sig_type;
23446
23447   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23448   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23449
23450   /* We have the per_cu, but we need the signatured_type.
23451      Fortunately this is an easy translation.  */
23452   gdb_assert (per_cu->is_debug_types);
23453   sig_type = (struct signatured_type *) per_cu;
23454
23455   gdb_assert (per_cu->cu == NULL);
23456
23457   read_signatured_type (sig_type);
23458
23459   gdb_assert (per_cu->cu != NULL);
23460 }
23461
23462 /* die_reader_func for read_signatured_type.
23463    This is identical to load_full_comp_unit_reader,
23464    but is kept separate for now.  */
23465
23466 static void
23467 read_signatured_type_reader (const struct die_reader_specs *reader,
23468                              const gdb_byte *info_ptr,
23469                              struct die_info *comp_unit_die,
23470                              int has_children,
23471                              void *data)
23472 {
23473   struct dwarf2_cu *cu = reader->cu;
23474
23475   gdb_assert (cu->die_hash == NULL);
23476   cu->die_hash =
23477     htab_create_alloc_ex (cu->header.length / 12,
23478                           die_hash,
23479                           die_eq,
23480                           NULL,
23481                           &cu->comp_unit_obstack,
23482                           hashtab_obstack_allocate,
23483                           dummy_obstack_deallocate);
23484
23485   if (has_children)
23486     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23487                                                   &info_ptr, comp_unit_die);
23488   cu->dies = comp_unit_die;
23489   /* comp_unit_die is not stored in die_hash, no need.  */
23490
23491   /* We try not to read any attributes in this function, because not
23492      all CUs needed for references have been loaded yet, and symbol
23493      table processing isn't initialized.  But we have to set the CU language,
23494      or we won't be able to build types correctly.
23495      Similarly, if we do not read the producer, we can not apply
23496      producer-specific interpretation.  */
23497   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23498 }
23499
23500 /* Read in a signatured type and build its CU and DIEs.
23501    If the type is a stub for the real type in a DWO file,
23502    read in the real type from the DWO file as well.  */
23503
23504 static void
23505 read_signatured_type (struct signatured_type *sig_type)
23506 {
23507   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23508
23509   gdb_assert (per_cu->is_debug_types);
23510   gdb_assert (per_cu->cu == NULL);
23511
23512   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23513                            read_signatured_type_reader, NULL);
23514   sig_type->per_cu.tu_read = 1;
23515 }
23516
23517 /* Decode simple location descriptions.
23518    Given a pointer to a dwarf block that defines a location, compute
23519    the location and return the value.
23520
23521    NOTE drow/2003-11-18: This function is called in two situations
23522    now: for the address of static or global variables (partial symbols
23523    only) and for offsets into structures which are expected to be
23524    (more or less) constant.  The partial symbol case should go away,
23525    and only the constant case should remain.  That will let this
23526    function complain more accurately.  A few special modes are allowed
23527    without complaint for global variables (for instance, global
23528    register values and thread-local values).
23529
23530    A location description containing no operations indicates that the
23531    object is optimized out.  The return value is 0 for that case.
23532    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23533    callers will only want a very basic result and this can become a
23534    complaint.
23535
23536    Note that stack[0] is unused except as a default error return.  */
23537
23538 static CORE_ADDR
23539 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23540 {
23541   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23542   size_t i;
23543   size_t size = blk->size;
23544   const gdb_byte *data = blk->data;
23545   CORE_ADDR stack[64];
23546   int stacki;
23547   unsigned int bytes_read, unsnd;
23548   gdb_byte op;
23549
23550   i = 0;
23551   stacki = 0;
23552   stack[stacki] = 0;
23553   stack[++stacki] = 0;
23554
23555   while (i < size)
23556     {
23557       op = data[i++];
23558       switch (op)
23559         {
23560         case DW_OP_lit0:
23561         case DW_OP_lit1:
23562         case DW_OP_lit2:
23563         case DW_OP_lit3:
23564         case DW_OP_lit4:
23565         case DW_OP_lit5:
23566         case DW_OP_lit6:
23567         case DW_OP_lit7:
23568         case DW_OP_lit8:
23569         case DW_OP_lit9:
23570         case DW_OP_lit10:
23571         case DW_OP_lit11:
23572         case DW_OP_lit12:
23573         case DW_OP_lit13:
23574         case DW_OP_lit14:
23575         case DW_OP_lit15:
23576         case DW_OP_lit16:
23577         case DW_OP_lit17:
23578         case DW_OP_lit18:
23579         case DW_OP_lit19:
23580         case DW_OP_lit20:
23581         case DW_OP_lit21:
23582         case DW_OP_lit22:
23583         case DW_OP_lit23:
23584         case DW_OP_lit24:
23585         case DW_OP_lit25:
23586         case DW_OP_lit26:
23587         case DW_OP_lit27:
23588         case DW_OP_lit28:
23589         case DW_OP_lit29:
23590         case DW_OP_lit30:
23591         case DW_OP_lit31:
23592           stack[++stacki] = op - DW_OP_lit0;
23593           break;
23594
23595         case DW_OP_reg0:
23596         case DW_OP_reg1:
23597         case DW_OP_reg2:
23598         case DW_OP_reg3:
23599         case DW_OP_reg4:
23600         case DW_OP_reg5:
23601         case DW_OP_reg6:
23602         case DW_OP_reg7:
23603         case DW_OP_reg8:
23604         case DW_OP_reg9:
23605         case DW_OP_reg10:
23606         case DW_OP_reg11:
23607         case DW_OP_reg12:
23608         case DW_OP_reg13:
23609         case DW_OP_reg14:
23610         case DW_OP_reg15:
23611         case DW_OP_reg16:
23612         case DW_OP_reg17:
23613         case DW_OP_reg18:
23614         case DW_OP_reg19:
23615         case DW_OP_reg20:
23616         case DW_OP_reg21:
23617         case DW_OP_reg22:
23618         case DW_OP_reg23:
23619         case DW_OP_reg24:
23620         case DW_OP_reg25:
23621         case DW_OP_reg26:
23622         case DW_OP_reg27:
23623         case DW_OP_reg28:
23624         case DW_OP_reg29:
23625         case DW_OP_reg30:
23626         case DW_OP_reg31:
23627           stack[++stacki] = op - DW_OP_reg0;
23628           if (i < size)
23629             dwarf2_complex_location_expr_complaint ();
23630           break;
23631
23632         case DW_OP_regx:
23633           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23634           i += bytes_read;
23635           stack[++stacki] = unsnd;
23636           if (i < size)
23637             dwarf2_complex_location_expr_complaint ();
23638           break;
23639
23640         case DW_OP_addr:
23641           stack[++stacki] = read_address (objfile->obfd, &data[i],
23642                                           cu, &bytes_read);
23643           i += bytes_read;
23644           break;
23645
23646         case DW_OP_const1u:
23647           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23648           i += 1;
23649           break;
23650
23651         case DW_OP_const1s:
23652           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23653           i += 1;
23654           break;
23655
23656         case DW_OP_const2u:
23657           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23658           i += 2;
23659           break;
23660
23661         case DW_OP_const2s:
23662           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23663           i += 2;
23664           break;
23665
23666         case DW_OP_const4u:
23667           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23668           i += 4;
23669           break;
23670
23671         case DW_OP_const4s:
23672           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23673           i += 4;
23674           break;
23675
23676         case DW_OP_const8u:
23677           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23678           i += 8;
23679           break;
23680
23681         case DW_OP_constu:
23682           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23683                                                   &bytes_read);
23684           i += bytes_read;
23685           break;
23686
23687         case DW_OP_consts:
23688           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23689           i += bytes_read;
23690           break;
23691
23692         case DW_OP_dup:
23693           stack[stacki + 1] = stack[stacki];
23694           stacki++;
23695           break;
23696
23697         case DW_OP_plus:
23698           stack[stacki - 1] += stack[stacki];
23699           stacki--;
23700           break;
23701
23702         case DW_OP_plus_uconst:
23703           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23704                                                  &bytes_read);
23705           i += bytes_read;
23706           break;
23707
23708         case DW_OP_minus:
23709           stack[stacki - 1] -= stack[stacki];
23710           stacki--;
23711           break;
23712
23713         case DW_OP_deref:
23714           /* If we're not the last op, then we definitely can't encode
23715              this using GDB's address_class enum.  This is valid for partial
23716              global symbols, although the variable's address will be bogus
23717              in the psymtab.  */
23718           if (i < size)
23719             dwarf2_complex_location_expr_complaint ();
23720           break;
23721
23722         case DW_OP_GNU_push_tls_address:
23723         case DW_OP_form_tls_address:
23724           /* The top of the stack has the offset from the beginning
23725              of the thread control block at which the variable is located.  */
23726           /* Nothing should follow this operator, so the top of stack would
23727              be returned.  */
23728           /* This is valid for partial global symbols, but the variable's
23729              address will be bogus in the psymtab.  Make it always at least
23730              non-zero to not look as a variable garbage collected by linker
23731              which have DW_OP_addr 0.  */
23732           if (i < size)
23733             dwarf2_complex_location_expr_complaint ();
23734           stack[stacki]++;
23735           break;
23736
23737         case DW_OP_GNU_uninit:
23738           break;
23739
23740         case DW_OP_GNU_addr_index:
23741         case DW_OP_GNU_const_index:
23742           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23743                                                          &bytes_read);
23744           i += bytes_read;
23745           break;
23746
23747         default:
23748           {
23749             const char *name = get_DW_OP_name (op);
23750
23751             if (name)
23752               complaint (_("unsupported stack op: '%s'"),
23753                          name);
23754             else
23755               complaint (_("unsupported stack op: '%02x'"),
23756                          op);
23757           }
23758
23759           return (stack[stacki]);
23760         }
23761
23762       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23763          outside of the allocated space.  Also enforce minimum>0.  */
23764       if (stacki >= ARRAY_SIZE (stack) - 1)
23765         {
23766           complaint (_("location description stack overflow"));
23767           return 0;
23768         }
23769
23770       if (stacki <= 0)
23771         {
23772           complaint (_("location description stack underflow"));
23773           return 0;
23774         }
23775     }
23776   return (stack[stacki]);
23777 }
23778
23779 /* memory allocation interface */
23780
23781 static struct dwarf_block *
23782 dwarf_alloc_block (struct dwarf2_cu *cu)
23783 {
23784   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23785 }
23786
23787 static struct die_info *
23788 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23789 {
23790   struct die_info *die;
23791   size_t size = sizeof (struct die_info);
23792
23793   if (num_attrs > 1)
23794     size += (num_attrs - 1) * sizeof (struct attribute);
23795
23796   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23797   memset (die, 0, sizeof (struct die_info));
23798   return (die);
23799 }
23800
23801 \f
23802 /* Macro support.  */
23803
23804 /* Return file name relative to the compilation directory of file number I in
23805    *LH's file name table.  The result is allocated using xmalloc; the caller is
23806    responsible for freeing it.  */
23807
23808 static char *
23809 file_file_name (int file, struct line_header *lh)
23810 {
23811   /* Is the file number a valid index into the line header's file name
23812      table?  Remember that file numbers start with one, not zero.  */
23813   if (1 <= file && file <= lh->file_names.size ())
23814     {
23815       const file_entry &fe = lh->file_names[file - 1];
23816
23817       if (!IS_ABSOLUTE_PATH (fe.name))
23818         {
23819           const char *dir = fe.include_dir (lh);
23820           if (dir != NULL)
23821             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23822         }
23823       return xstrdup (fe.name);
23824     }
23825   else
23826     {
23827       /* The compiler produced a bogus file number.  We can at least
23828          record the macro definitions made in the file, even if we
23829          won't be able to find the file by name.  */
23830       char fake_name[80];
23831
23832       xsnprintf (fake_name, sizeof (fake_name),
23833                  "<bad macro file number %d>", file);
23834
23835       complaint (_("bad file number in macro information (%d)"),
23836                  file);
23837
23838       return xstrdup (fake_name);
23839     }
23840 }
23841
23842 /* Return the full name of file number I in *LH's file name table.
23843    Use COMP_DIR as the name of the current directory of the
23844    compilation.  The result is allocated using xmalloc; the caller is
23845    responsible for freeing it.  */
23846 static char *
23847 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23848 {
23849   /* Is the file number a valid index into the line header's file name
23850      table?  Remember that file numbers start with one, not zero.  */
23851   if (1 <= file && file <= lh->file_names.size ())
23852     {
23853       char *relative = file_file_name (file, lh);
23854
23855       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23856         return relative;
23857       return reconcat (relative, comp_dir, SLASH_STRING,
23858                        relative, (char *) NULL);
23859     }
23860   else
23861     return file_file_name (file, lh);
23862 }
23863
23864
23865 static struct macro_source_file *
23866 macro_start_file (struct dwarf2_cu *cu,
23867                   int file, int line,
23868                   struct macro_source_file *current_file,
23869                   struct line_header *lh)
23870 {
23871   /* File name relative to the compilation directory of this source file.  */
23872   char *file_name = file_file_name (file, lh);
23873
23874   if (! current_file)
23875     {
23876       /* Note: We don't create a macro table for this compilation unit
23877          at all until we actually get a filename.  */
23878       struct macro_table *macro_table = cu->builder->get_macro_table ();
23879
23880       /* If we have no current file, then this must be the start_file
23881          directive for the compilation unit's main source file.  */
23882       current_file = macro_set_main (macro_table, file_name);
23883       macro_define_special (macro_table);
23884     }
23885   else
23886     current_file = macro_include (current_file, line, file_name);
23887
23888   xfree (file_name);
23889
23890   return current_file;
23891 }
23892
23893 static const char *
23894 consume_improper_spaces (const char *p, const char *body)
23895 {
23896   if (*p == ' ')
23897     {
23898       complaint (_("macro definition contains spaces "
23899                    "in formal argument list:\n`%s'"),
23900                  body);
23901
23902       while (*p == ' ')
23903         p++;
23904     }
23905
23906   return p;
23907 }
23908
23909
23910 static void
23911 parse_macro_definition (struct macro_source_file *file, int line,
23912                         const char *body)
23913 {
23914   const char *p;
23915
23916   /* The body string takes one of two forms.  For object-like macro
23917      definitions, it should be:
23918
23919         <macro name> " " <definition>
23920
23921      For function-like macro definitions, it should be:
23922
23923         <macro name> "() " <definition>
23924      or
23925         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23926
23927      Spaces may appear only where explicitly indicated, and in the
23928      <definition>.
23929
23930      The Dwarf 2 spec says that an object-like macro's name is always
23931      followed by a space, but versions of GCC around March 2002 omit
23932      the space when the macro's definition is the empty string.
23933
23934      The Dwarf 2 spec says that there should be no spaces between the
23935      formal arguments in a function-like macro's formal argument list,
23936      but versions of GCC around March 2002 include spaces after the
23937      commas.  */
23938
23939
23940   /* Find the extent of the macro name.  The macro name is terminated
23941      by either a space or null character (for an object-like macro) or
23942      an opening paren (for a function-like macro).  */
23943   for (p = body; *p; p++)
23944     if (*p == ' ' || *p == '(')
23945       break;
23946
23947   if (*p == ' ' || *p == '\0')
23948     {
23949       /* It's an object-like macro.  */
23950       int name_len = p - body;
23951       char *name = savestring (body, name_len);
23952       const char *replacement;
23953
23954       if (*p == ' ')
23955         replacement = body + name_len + 1;
23956       else
23957         {
23958           dwarf2_macro_malformed_definition_complaint (body);
23959           replacement = body + name_len;
23960         }
23961
23962       macro_define_object (file, line, name, replacement);
23963
23964       xfree (name);
23965     }
23966   else if (*p == '(')
23967     {
23968       /* It's a function-like macro.  */
23969       char *name = savestring (body, p - body);
23970       int argc = 0;
23971       int argv_size = 1;
23972       char **argv = XNEWVEC (char *, argv_size);
23973
23974       p++;
23975
23976       p = consume_improper_spaces (p, body);
23977
23978       /* Parse the formal argument list.  */
23979       while (*p && *p != ')')
23980         {
23981           /* Find the extent of the current argument name.  */
23982           const char *arg_start = p;
23983
23984           while (*p && *p != ',' && *p != ')' && *p != ' ')
23985             p++;
23986
23987           if (! *p || p == arg_start)
23988             dwarf2_macro_malformed_definition_complaint (body);
23989           else
23990             {
23991               /* Make sure argv has room for the new argument.  */
23992               if (argc >= argv_size)
23993                 {
23994                   argv_size *= 2;
23995                   argv = XRESIZEVEC (char *, argv, argv_size);
23996                 }
23997
23998               argv[argc++] = savestring (arg_start, p - arg_start);
23999             }
24000
24001           p = consume_improper_spaces (p, body);
24002
24003           /* Consume the comma, if present.  */
24004           if (*p == ',')
24005             {
24006               p++;
24007
24008               p = consume_improper_spaces (p, body);
24009             }
24010         }
24011
24012       if (*p == ')')
24013         {
24014           p++;
24015
24016           if (*p == ' ')
24017             /* Perfectly formed definition, no complaints.  */
24018             macro_define_function (file, line, name,
24019                                    argc, (const char **) argv,
24020                                    p + 1);
24021           else if (*p == '\0')
24022             {
24023               /* Complain, but do define it.  */
24024               dwarf2_macro_malformed_definition_complaint (body);
24025               macro_define_function (file, line, name,
24026                                      argc, (const char **) argv,
24027                                      p);
24028             }
24029           else
24030             /* Just complain.  */
24031             dwarf2_macro_malformed_definition_complaint (body);
24032         }
24033       else
24034         /* Just complain.  */
24035         dwarf2_macro_malformed_definition_complaint (body);
24036
24037       xfree (name);
24038       {
24039         int i;
24040
24041         for (i = 0; i < argc; i++)
24042           xfree (argv[i]);
24043       }
24044       xfree (argv);
24045     }
24046   else
24047     dwarf2_macro_malformed_definition_complaint (body);
24048 }
24049
24050 /* Skip some bytes from BYTES according to the form given in FORM.
24051    Returns the new pointer.  */
24052
24053 static const gdb_byte *
24054 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24055                  enum dwarf_form form,
24056                  unsigned int offset_size,
24057                  struct dwarf2_section_info *section)
24058 {
24059   unsigned int bytes_read;
24060
24061   switch (form)
24062     {
24063     case DW_FORM_data1:
24064     case DW_FORM_flag:
24065       ++bytes;
24066       break;
24067
24068     case DW_FORM_data2:
24069       bytes += 2;
24070       break;
24071
24072     case DW_FORM_data4:
24073       bytes += 4;
24074       break;
24075
24076     case DW_FORM_data8:
24077       bytes += 8;
24078       break;
24079
24080     case DW_FORM_data16:
24081       bytes += 16;
24082       break;
24083
24084     case DW_FORM_string:
24085       read_direct_string (abfd, bytes, &bytes_read);
24086       bytes += bytes_read;
24087       break;
24088
24089     case DW_FORM_sec_offset:
24090     case DW_FORM_strp:
24091     case DW_FORM_GNU_strp_alt:
24092       bytes += offset_size;
24093       break;
24094
24095     case DW_FORM_block:
24096       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24097       bytes += bytes_read;
24098       break;
24099
24100     case DW_FORM_block1:
24101       bytes += 1 + read_1_byte (abfd, bytes);
24102       break;
24103     case DW_FORM_block2:
24104       bytes += 2 + read_2_bytes (abfd, bytes);
24105       break;
24106     case DW_FORM_block4:
24107       bytes += 4 + read_4_bytes (abfd, bytes);
24108       break;
24109
24110     case DW_FORM_sdata:
24111     case DW_FORM_udata:
24112     case DW_FORM_GNU_addr_index:
24113     case DW_FORM_GNU_str_index:
24114       bytes = gdb_skip_leb128 (bytes, buffer_end);
24115       if (bytes == NULL)
24116         {
24117           dwarf2_section_buffer_overflow_complaint (section);
24118           return NULL;
24119         }
24120       break;
24121
24122     case DW_FORM_implicit_const:
24123       break;
24124
24125     default:
24126       {
24127         complaint (_("invalid form 0x%x in `%s'"),
24128                    form, get_section_name (section));
24129         return NULL;
24130       }
24131     }
24132
24133   return bytes;
24134 }
24135
24136 /* A helper for dwarf_decode_macros that handles skipping an unknown
24137    opcode.  Returns an updated pointer to the macro data buffer; or,
24138    on error, issues a complaint and returns NULL.  */
24139
24140 static const gdb_byte *
24141 skip_unknown_opcode (unsigned int opcode,
24142                      const gdb_byte **opcode_definitions,
24143                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24144                      bfd *abfd,
24145                      unsigned int offset_size,
24146                      struct dwarf2_section_info *section)
24147 {
24148   unsigned int bytes_read, i;
24149   unsigned long arg;
24150   const gdb_byte *defn;
24151
24152   if (opcode_definitions[opcode] == NULL)
24153     {
24154       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24155                  opcode);
24156       return NULL;
24157     }
24158
24159   defn = opcode_definitions[opcode];
24160   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24161   defn += bytes_read;
24162
24163   for (i = 0; i < arg; ++i)
24164     {
24165       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24166                                  (enum dwarf_form) defn[i], offset_size,
24167                                  section);
24168       if (mac_ptr == NULL)
24169         {
24170           /* skip_form_bytes already issued the complaint.  */
24171           return NULL;
24172         }
24173     }
24174
24175   return mac_ptr;
24176 }
24177
24178 /* A helper function which parses the header of a macro section.
24179    If the macro section is the extended (for now called "GNU") type,
24180    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24181    the header, or issues a complaint and returns NULL on error.  */
24182
24183 static const gdb_byte *
24184 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24185                           bfd *abfd,
24186                           const gdb_byte *mac_ptr,
24187                           unsigned int *offset_size,
24188                           int section_is_gnu)
24189 {
24190   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24191
24192   if (section_is_gnu)
24193     {
24194       unsigned int version, flags;
24195
24196       version = read_2_bytes (abfd, mac_ptr);
24197       if (version != 4 && version != 5)
24198         {
24199           complaint (_("unrecognized version `%d' in .debug_macro section"),
24200                      version);
24201           return NULL;
24202         }
24203       mac_ptr += 2;
24204
24205       flags = read_1_byte (abfd, mac_ptr);
24206       ++mac_ptr;
24207       *offset_size = (flags & 1) ? 8 : 4;
24208
24209       if ((flags & 2) != 0)
24210         /* We don't need the line table offset.  */
24211         mac_ptr += *offset_size;
24212
24213       /* Vendor opcode descriptions.  */
24214       if ((flags & 4) != 0)
24215         {
24216           unsigned int i, count;
24217
24218           count = read_1_byte (abfd, mac_ptr);
24219           ++mac_ptr;
24220           for (i = 0; i < count; ++i)
24221             {
24222               unsigned int opcode, bytes_read;
24223               unsigned long arg;
24224
24225               opcode = read_1_byte (abfd, mac_ptr);
24226               ++mac_ptr;
24227               opcode_definitions[opcode] = mac_ptr;
24228               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24229               mac_ptr += bytes_read;
24230               mac_ptr += arg;
24231             }
24232         }
24233     }
24234
24235   return mac_ptr;
24236 }
24237
24238 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24239    including DW_MACRO_import.  */
24240
24241 static void
24242 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24243                           bfd *abfd,
24244                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24245                           struct macro_source_file *current_file,
24246                           struct line_header *lh,
24247                           struct dwarf2_section_info *section,
24248                           int section_is_gnu, int section_is_dwz,
24249                           unsigned int offset_size,
24250                           htab_t include_hash)
24251 {
24252   struct dwarf2_per_objfile *dwarf2_per_objfile
24253     = cu->per_cu->dwarf2_per_objfile;
24254   struct objfile *objfile = dwarf2_per_objfile->objfile;
24255   enum dwarf_macro_record_type macinfo_type;
24256   int at_commandline;
24257   const gdb_byte *opcode_definitions[256];
24258
24259   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24260                                       &offset_size, section_is_gnu);
24261   if (mac_ptr == NULL)
24262     {
24263       /* We already issued a complaint.  */
24264       return;
24265     }
24266
24267   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24268      GDB is still reading the definitions from command line.  First
24269      DW_MACINFO_start_file will need to be ignored as it was already executed
24270      to create CURRENT_FILE for the main source holding also the command line
24271      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24272      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24273
24274   at_commandline = 1;
24275
24276   do
24277     {
24278       /* Do we at least have room for a macinfo type byte?  */
24279       if (mac_ptr >= mac_end)
24280         {
24281           dwarf2_section_buffer_overflow_complaint (section);
24282           break;
24283         }
24284
24285       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24286       mac_ptr++;
24287
24288       /* Note that we rely on the fact that the corresponding GNU and
24289          DWARF constants are the same.  */
24290       DIAGNOSTIC_PUSH
24291       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24292       switch (macinfo_type)
24293         {
24294           /* A zero macinfo type indicates the end of the macro
24295              information.  */
24296         case 0:
24297           break;
24298
24299         case DW_MACRO_define:
24300         case DW_MACRO_undef:
24301         case DW_MACRO_define_strp:
24302         case DW_MACRO_undef_strp:
24303         case DW_MACRO_define_sup:
24304         case DW_MACRO_undef_sup:
24305           {
24306             unsigned int bytes_read;
24307             int line;
24308             const char *body;
24309             int is_define;
24310
24311             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24312             mac_ptr += bytes_read;
24313
24314             if (macinfo_type == DW_MACRO_define
24315                 || macinfo_type == DW_MACRO_undef)
24316               {
24317                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24318                 mac_ptr += bytes_read;
24319               }
24320             else
24321               {
24322                 LONGEST str_offset;
24323
24324                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24325                 mac_ptr += offset_size;
24326
24327                 if (macinfo_type == DW_MACRO_define_sup
24328                     || macinfo_type == DW_MACRO_undef_sup
24329                     || section_is_dwz)
24330                   {
24331                     struct dwz_file *dwz
24332                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24333
24334                     body = read_indirect_string_from_dwz (objfile,
24335                                                           dwz, str_offset);
24336                   }
24337                 else
24338                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24339                                                          abfd, str_offset);
24340               }
24341
24342             is_define = (macinfo_type == DW_MACRO_define
24343                          || macinfo_type == DW_MACRO_define_strp
24344                          || macinfo_type == DW_MACRO_define_sup);
24345             if (! current_file)
24346               {
24347                 /* DWARF violation as no main source is present.  */
24348                 complaint (_("debug info with no main source gives macro %s "
24349                              "on line %d: %s"),
24350                            is_define ? _("definition") : _("undefinition"),
24351                            line, body);
24352                 break;
24353               }
24354             if ((line == 0 && !at_commandline)
24355                 || (line != 0 && at_commandline))
24356               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24357                          at_commandline ? _("command-line") : _("in-file"),
24358                          is_define ? _("definition") : _("undefinition"),
24359                          line == 0 ? _("zero") : _("non-zero"), line, body);
24360
24361             if (is_define)
24362               parse_macro_definition (current_file, line, body);
24363             else
24364               {
24365                 gdb_assert (macinfo_type == DW_MACRO_undef
24366                             || macinfo_type == DW_MACRO_undef_strp
24367                             || macinfo_type == DW_MACRO_undef_sup);
24368                 macro_undef (current_file, line, body);
24369               }
24370           }
24371           break;
24372
24373         case DW_MACRO_start_file:
24374           {
24375             unsigned int bytes_read;
24376             int line, file;
24377
24378             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24379             mac_ptr += bytes_read;
24380             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24381             mac_ptr += bytes_read;
24382
24383             if ((line == 0 && !at_commandline)
24384                 || (line != 0 && at_commandline))
24385               complaint (_("debug info gives source %d included "
24386                            "from %s at %s line %d"),
24387                          file, at_commandline ? _("command-line") : _("file"),
24388                          line == 0 ? _("zero") : _("non-zero"), line);
24389
24390             if (at_commandline)
24391               {
24392                 /* This DW_MACRO_start_file was executed in the
24393                    pass one.  */
24394                 at_commandline = 0;
24395               }
24396             else
24397               current_file = macro_start_file (cu, file, line, current_file,
24398                                                lh);
24399           }
24400           break;
24401
24402         case DW_MACRO_end_file:
24403           if (! current_file)
24404             complaint (_("macro debug info has an unmatched "
24405                          "`close_file' directive"));
24406           else
24407             {
24408               current_file = current_file->included_by;
24409               if (! current_file)
24410                 {
24411                   enum dwarf_macro_record_type next_type;
24412
24413                   /* GCC circa March 2002 doesn't produce the zero
24414                      type byte marking the end of the compilation
24415                      unit.  Complain if it's not there, but exit no
24416                      matter what.  */
24417
24418                   /* Do we at least have room for a macinfo type byte?  */
24419                   if (mac_ptr >= mac_end)
24420                     {
24421                       dwarf2_section_buffer_overflow_complaint (section);
24422                       return;
24423                     }
24424
24425                   /* We don't increment mac_ptr here, so this is just
24426                      a look-ahead.  */
24427                   next_type
24428                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24429                                                                   mac_ptr);
24430                   if (next_type != 0)
24431                     complaint (_("no terminating 0-type entry for "
24432                                  "macros in `.debug_macinfo' section"));
24433
24434                   return;
24435                 }
24436             }
24437           break;
24438
24439         case DW_MACRO_import:
24440         case DW_MACRO_import_sup:
24441           {
24442             LONGEST offset;
24443             void **slot;
24444             bfd *include_bfd = abfd;
24445             struct dwarf2_section_info *include_section = section;
24446             const gdb_byte *include_mac_end = mac_end;
24447             int is_dwz = section_is_dwz;
24448             const gdb_byte *new_mac_ptr;
24449
24450             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24451             mac_ptr += offset_size;
24452
24453             if (macinfo_type == DW_MACRO_import_sup)
24454               {
24455                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24456
24457                 dwarf2_read_section (objfile, &dwz->macro);
24458
24459                 include_section = &dwz->macro;
24460                 include_bfd = get_section_bfd_owner (include_section);
24461                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24462                 is_dwz = 1;
24463               }
24464
24465             new_mac_ptr = include_section->buffer + offset;
24466             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24467
24468             if (*slot != NULL)
24469               {
24470                 /* This has actually happened; see
24471                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24472                 complaint (_("recursive DW_MACRO_import in "
24473                              ".debug_macro section"));
24474               }
24475             else
24476               {
24477                 *slot = (void *) new_mac_ptr;
24478
24479                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24480                                           include_mac_end, current_file, lh,
24481                                           section, section_is_gnu, is_dwz,
24482                                           offset_size, include_hash);
24483
24484                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24485               }
24486           }
24487           break;
24488
24489         case DW_MACINFO_vendor_ext:
24490           if (!section_is_gnu)
24491             {
24492               unsigned int bytes_read;
24493
24494               /* This reads the constant, but since we don't recognize
24495                  any vendor extensions, we ignore it.  */
24496               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24497               mac_ptr += bytes_read;
24498               read_direct_string (abfd, mac_ptr, &bytes_read);
24499               mac_ptr += bytes_read;
24500
24501               /* We don't recognize any vendor extensions.  */
24502               break;
24503             }
24504           /* FALLTHROUGH */
24505
24506         default:
24507           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24508                                          mac_ptr, mac_end, abfd, offset_size,
24509                                          section);
24510           if (mac_ptr == NULL)
24511             return;
24512           break;
24513         }
24514       DIAGNOSTIC_POP
24515     } while (macinfo_type != 0);
24516 }
24517
24518 static void
24519 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24520                      int section_is_gnu)
24521 {
24522   struct dwarf2_per_objfile *dwarf2_per_objfile
24523     = cu->per_cu->dwarf2_per_objfile;
24524   struct objfile *objfile = dwarf2_per_objfile->objfile;
24525   struct line_header *lh = cu->line_header;
24526   bfd *abfd;
24527   const gdb_byte *mac_ptr, *mac_end;
24528   struct macro_source_file *current_file = 0;
24529   enum dwarf_macro_record_type macinfo_type;
24530   unsigned int offset_size = cu->header.offset_size;
24531   const gdb_byte *opcode_definitions[256];
24532   void **slot;
24533   struct dwarf2_section_info *section;
24534   const char *section_name;
24535
24536   if (cu->dwo_unit != NULL)
24537     {
24538       if (section_is_gnu)
24539         {
24540           section = &cu->dwo_unit->dwo_file->sections.macro;
24541           section_name = ".debug_macro.dwo";
24542         }
24543       else
24544         {
24545           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24546           section_name = ".debug_macinfo.dwo";
24547         }
24548     }
24549   else
24550     {
24551       if (section_is_gnu)
24552         {
24553           section = &dwarf2_per_objfile->macro;
24554           section_name = ".debug_macro";
24555         }
24556       else
24557         {
24558           section = &dwarf2_per_objfile->macinfo;
24559           section_name = ".debug_macinfo";
24560         }
24561     }
24562
24563   dwarf2_read_section (objfile, section);
24564   if (section->buffer == NULL)
24565     {
24566       complaint (_("missing %s section"), section_name);
24567       return;
24568     }
24569   abfd = get_section_bfd_owner (section);
24570
24571   /* First pass: Find the name of the base filename.
24572      This filename is needed in order to process all macros whose definition
24573      (or undefinition) comes from the command line.  These macros are defined
24574      before the first DW_MACINFO_start_file entry, and yet still need to be
24575      associated to the base file.
24576
24577      To determine the base file name, we scan the macro definitions until we
24578      reach the first DW_MACINFO_start_file entry.  We then initialize
24579      CURRENT_FILE accordingly so that any macro definition found before the
24580      first DW_MACINFO_start_file can still be associated to the base file.  */
24581
24582   mac_ptr = section->buffer + offset;
24583   mac_end = section->buffer + section->size;
24584
24585   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24586                                       &offset_size, section_is_gnu);
24587   if (mac_ptr == NULL)
24588     {
24589       /* We already issued a complaint.  */
24590       return;
24591     }
24592
24593   do
24594     {
24595       /* Do we at least have room for a macinfo type byte?  */
24596       if (mac_ptr >= mac_end)
24597         {
24598           /* Complaint is printed during the second pass as GDB will probably
24599              stop the first pass earlier upon finding
24600              DW_MACINFO_start_file.  */
24601           break;
24602         }
24603
24604       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24605       mac_ptr++;
24606
24607       /* Note that we rely on the fact that the corresponding GNU and
24608          DWARF constants are the same.  */
24609       DIAGNOSTIC_PUSH
24610       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24611       switch (macinfo_type)
24612         {
24613           /* A zero macinfo type indicates the end of the macro
24614              information.  */
24615         case 0:
24616           break;
24617
24618         case DW_MACRO_define:
24619         case DW_MACRO_undef:
24620           /* Only skip the data by MAC_PTR.  */
24621           {
24622             unsigned int bytes_read;
24623
24624             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24625             mac_ptr += bytes_read;
24626             read_direct_string (abfd, mac_ptr, &bytes_read);
24627             mac_ptr += bytes_read;
24628           }
24629           break;
24630
24631         case DW_MACRO_start_file:
24632           {
24633             unsigned int bytes_read;
24634             int line, file;
24635
24636             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24637             mac_ptr += bytes_read;
24638             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24639             mac_ptr += bytes_read;
24640
24641             current_file = macro_start_file (cu, file, line, current_file, lh);
24642           }
24643           break;
24644
24645         case DW_MACRO_end_file:
24646           /* No data to skip by MAC_PTR.  */
24647           break;
24648
24649         case DW_MACRO_define_strp:
24650         case DW_MACRO_undef_strp:
24651         case DW_MACRO_define_sup:
24652         case DW_MACRO_undef_sup:
24653           {
24654             unsigned int bytes_read;
24655
24656             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24657             mac_ptr += bytes_read;
24658             mac_ptr += offset_size;
24659           }
24660           break;
24661
24662         case DW_MACRO_import:
24663         case DW_MACRO_import_sup:
24664           /* Note that, according to the spec, a transparent include
24665              chain cannot call DW_MACRO_start_file.  So, we can just
24666              skip this opcode.  */
24667           mac_ptr += offset_size;
24668           break;
24669
24670         case DW_MACINFO_vendor_ext:
24671           /* Only skip the data by MAC_PTR.  */
24672           if (!section_is_gnu)
24673             {
24674               unsigned int bytes_read;
24675
24676               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24677               mac_ptr += bytes_read;
24678               read_direct_string (abfd, mac_ptr, &bytes_read);
24679               mac_ptr += bytes_read;
24680             }
24681           /* FALLTHROUGH */
24682
24683         default:
24684           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24685                                          mac_ptr, mac_end, abfd, offset_size,
24686                                          section);
24687           if (mac_ptr == NULL)
24688             return;
24689           break;
24690         }
24691       DIAGNOSTIC_POP
24692     } while (macinfo_type != 0 && current_file == NULL);
24693
24694   /* Second pass: Process all entries.
24695
24696      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24697      command-line macro definitions/undefinitions.  This flag is unset when we
24698      reach the first DW_MACINFO_start_file entry.  */
24699
24700   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24701                                            htab_eq_pointer,
24702                                            NULL, xcalloc, xfree));
24703   mac_ptr = section->buffer + offset;
24704   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24705   *slot = (void *) mac_ptr;
24706   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24707                             current_file, lh, section,
24708                             section_is_gnu, 0, offset_size,
24709                             include_hash.get ());
24710 }
24711
24712 /* Check if the attribute's form is a DW_FORM_block*
24713    if so return true else false.  */
24714
24715 static int
24716 attr_form_is_block (const struct attribute *attr)
24717 {
24718   return (attr == NULL ? 0 :
24719       attr->form == DW_FORM_block1
24720       || attr->form == DW_FORM_block2
24721       || attr->form == DW_FORM_block4
24722       || attr->form == DW_FORM_block
24723       || attr->form == DW_FORM_exprloc);
24724 }
24725
24726 /* Return non-zero if ATTR's value is a section offset --- classes
24727    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24728    You may use DW_UNSND (attr) to retrieve such offsets.
24729
24730    Section 7.5.4, "Attribute Encodings", explains that no attribute
24731    may have a value that belongs to more than one of these classes; it
24732    would be ambiguous if we did, because we use the same forms for all
24733    of them.  */
24734
24735 static int
24736 attr_form_is_section_offset (const struct attribute *attr)
24737 {
24738   return (attr->form == DW_FORM_data4
24739           || attr->form == DW_FORM_data8
24740           || attr->form == DW_FORM_sec_offset);
24741 }
24742
24743 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24744    zero otherwise.  When this function returns true, you can apply
24745    dwarf2_get_attr_constant_value to it.
24746
24747    However, note that for some attributes you must check
24748    attr_form_is_section_offset before using this test.  DW_FORM_data4
24749    and DW_FORM_data8 are members of both the constant class, and of
24750    the classes that contain offsets into other debug sections
24751    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24752    that, if an attribute's can be either a constant or one of the
24753    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24754    taken as section offsets, not constants.
24755
24756    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24757    cannot handle that.  */
24758
24759 static int
24760 attr_form_is_constant (const struct attribute *attr)
24761 {
24762   switch (attr->form)
24763     {
24764     case DW_FORM_sdata:
24765     case DW_FORM_udata:
24766     case DW_FORM_data1:
24767     case DW_FORM_data2:
24768     case DW_FORM_data4:
24769     case DW_FORM_data8:
24770     case DW_FORM_implicit_const:
24771       return 1;
24772     default:
24773       return 0;
24774     }
24775 }
24776
24777
24778 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24779    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24780
24781 static int
24782 attr_form_is_ref (const struct attribute *attr)
24783 {
24784   switch (attr->form)
24785     {
24786     case DW_FORM_ref_addr:
24787     case DW_FORM_ref1:
24788     case DW_FORM_ref2:
24789     case DW_FORM_ref4:
24790     case DW_FORM_ref8:
24791     case DW_FORM_ref_udata:
24792     case DW_FORM_GNU_ref_alt:
24793       return 1;
24794     default:
24795       return 0;
24796     }
24797 }
24798
24799 /* Return the .debug_loc section to use for CU.
24800    For DWO files use .debug_loc.dwo.  */
24801
24802 static struct dwarf2_section_info *
24803 cu_debug_loc_section (struct dwarf2_cu *cu)
24804 {
24805   struct dwarf2_per_objfile *dwarf2_per_objfile
24806     = cu->per_cu->dwarf2_per_objfile;
24807
24808   if (cu->dwo_unit)
24809     {
24810       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24811       
24812       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24813     }
24814   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24815                                   : &dwarf2_per_objfile->loc);
24816 }
24817
24818 /* A helper function that fills in a dwarf2_loclist_baton.  */
24819
24820 static void
24821 fill_in_loclist_baton (struct dwarf2_cu *cu,
24822                        struct dwarf2_loclist_baton *baton,
24823                        const struct attribute *attr)
24824 {
24825   struct dwarf2_per_objfile *dwarf2_per_objfile
24826     = cu->per_cu->dwarf2_per_objfile;
24827   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24828
24829   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24830
24831   baton->per_cu = cu->per_cu;
24832   gdb_assert (baton->per_cu);
24833   /* We don't know how long the location list is, but make sure we
24834      don't run off the edge of the section.  */
24835   baton->size = section->size - DW_UNSND (attr);
24836   baton->data = section->buffer + DW_UNSND (attr);
24837   baton->base_address = cu->base_address;
24838   baton->from_dwo = cu->dwo_unit != NULL;
24839 }
24840
24841 static void
24842 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24843                              struct dwarf2_cu *cu, int is_block)
24844 {
24845   struct dwarf2_per_objfile *dwarf2_per_objfile
24846     = cu->per_cu->dwarf2_per_objfile;
24847   struct objfile *objfile = dwarf2_per_objfile->objfile;
24848   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24849
24850   if (attr_form_is_section_offset (attr)
24851       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24852          the section.  If so, fall through to the complaint in the
24853          other branch.  */
24854       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24855     {
24856       struct dwarf2_loclist_baton *baton;
24857
24858       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24859
24860       fill_in_loclist_baton (cu, baton, attr);
24861
24862       if (cu->base_known == 0)
24863         complaint (_("Location list used without "
24864                      "specifying the CU base address."));
24865
24866       SYMBOL_ACLASS_INDEX (sym) = (is_block
24867                                    ? dwarf2_loclist_block_index
24868                                    : dwarf2_loclist_index);
24869       SYMBOL_LOCATION_BATON (sym) = baton;
24870     }
24871   else
24872     {
24873       struct dwarf2_locexpr_baton *baton;
24874
24875       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24876       baton->per_cu = cu->per_cu;
24877       gdb_assert (baton->per_cu);
24878
24879       if (attr_form_is_block (attr))
24880         {
24881           /* Note that we're just copying the block's data pointer
24882              here, not the actual data.  We're still pointing into the
24883              info_buffer for SYM's objfile; right now we never release
24884              that buffer, but when we do clean up properly this may
24885              need to change.  */
24886           baton->size = DW_BLOCK (attr)->size;
24887           baton->data = DW_BLOCK (attr)->data;
24888         }
24889       else
24890         {
24891           dwarf2_invalid_attrib_class_complaint ("location description",
24892                                                  SYMBOL_NATURAL_NAME (sym));
24893           baton->size = 0;
24894         }
24895
24896       SYMBOL_ACLASS_INDEX (sym) = (is_block
24897                                    ? dwarf2_locexpr_block_index
24898                                    : dwarf2_locexpr_index);
24899       SYMBOL_LOCATION_BATON (sym) = baton;
24900     }
24901 }
24902
24903 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24904    came from a separate debuginfo file, then the master objfile is
24905    returned.  */
24906
24907 struct objfile *
24908 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24909 {
24910   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24911
24912   /* Return the master objfile, so that we can report and look up the
24913      correct file containing this variable.  */
24914   if (objfile->separate_debug_objfile_backlink)
24915     objfile = objfile->separate_debug_objfile_backlink;
24916
24917   return objfile;
24918 }
24919
24920 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24921    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24922    CU_HEADERP first.  */
24923
24924 static const struct comp_unit_head *
24925 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24926                        struct dwarf2_per_cu_data *per_cu)
24927 {
24928   const gdb_byte *info_ptr;
24929
24930   if (per_cu->cu)
24931     return &per_cu->cu->header;
24932
24933   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24934
24935   memset (cu_headerp, 0, sizeof (*cu_headerp));
24936   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24937                        rcuh_kind::COMPILE);
24938
24939   return cu_headerp;
24940 }
24941
24942 /* Return the address size given in the compilation unit header for CU.  */
24943
24944 int
24945 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
24946 {
24947   struct comp_unit_head cu_header_local;
24948   const struct comp_unit_head *cu_headerp;
24949
24950   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24951
24952   return cu_headerp->addr_size;
24953 }
24954
24955 /* Return the offset size given in the compilation unit header for CU.  */
24956
24957 int
24958 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
24959 {
24960   struct comp_unit_head cu_header_local;
24961   const struct comp_unit_head *cu_headerp;
24962
24963   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24964
24965   return cu_headerp->offset_size;
24966 }
24967
24968 /* See its dwarf2loc.h declaration.  */
24969
24970 int
24971 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
24972 {
24973   struct comp_unit_head cu_header_local;
24974   const struct comp_unit_head *cu_headerp;
24975
24976   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24977
24978   if (cu_headerp->version == 2)
24979     return cu_headerp->addr_size;
24980   else
24981     return cu_headerp->offset_size;
24982 }
24983
24984 /* Return the text offset of the CU.  The returned offset comes from
24985    this CU's objfile.  If this objfile came from a separate debuginfo
24986    file, then the offset may be different from the corresponding
24987    offset in the parent objfile.  */
24988
24989 CORE_ADDR
24990 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
24991 {
24992   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24993
24994   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
24995 }
24996
24997 /* Return DWARF version number of PER_CU.  */
24998
24999 short
25000 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25001 {
25002   return per_cu->dwarf_version;
25003 }
25004
25005 /* Locate the .debug_info compilation unit from CU's objfile which contains
25006    the DIE at OFFSET.  Raises an error on failure.  */
25007
25008 static struct dwarf2_per_cu_data *
25009 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25010                                   unsigned int offset_in_dwz,
25011                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25012 {
25013   struct dwarf2_per_cu_data *this_cu;
25014   int low, high;
25015   const sect_offset *cu_off;
25016
25017   low = 0;
25018   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25019   while (high > low)
25020     {
25021       struct dwarf2_per_cu_data *mid_cu;
25022       int mid = low + (high - low) / 2;
25023
25024       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25025       cu_off = &mid_cu->sect_off;
25026       if (mid_cu->is_dwz > offset_in_dwz
25027           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25028         high = mid;
25029       else
25030         low = mid + 1;
25031     }
25032   gdb_assert (low == high);
25033   this_cu = dwarf2_per_objfile->all_comp_units[low];
25034   cu_off = &this_cu->sect_off;
25035   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25036     {
25037       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25038         error (_("Dwarf Error: could not find partial DIE containing "
25039                "offset %s [in module %s]"),
25040                sect_offset_str (sect_off),
25041                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25042
25043       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25044                   <= sect_off);
25045       return dwarf2_per_objfile->all_comp_units[low-1];
25046     }
25047   else
25048     {
25049       this_cu = dwarf2_per_objfile->all_comp_units[low];
25050       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25051           && sect_off >= this_cu->sect_off + this_cu->length)
25052         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25053       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25054       return this_cu;
25055     }
25056 }
25057
25058 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25059
25060 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25061   : per_cu (per_cu_),
25062     mark (0),
25063     has_loclist (0),
25064     checked_producer (0),
25065     producer_is_gxx_lt_4_6 (0),
25066     producer_is_gcc_lt_4_3 (0),
25067     producer_is_icc_lt_14 (0),
25068     processing_has_namespace_info (0)
25069 {
25070   per_cu->cu = this;
25071 }
25072
25073 /* Destroy a dwarf2_cu.  */
25074
25075 dwarf2_cu::~dwarf2_cu ()
25076 {
25077   per_cu->cu = NULL;
25078 }
25079
25080 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25081
25082 static void
25083 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25084                        enum language pretend_language)
25085 {
25086   struct attribute *attr;
25087
25088   /* Set the language we're debugging.  */
25089   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25090   if (attr)
25091     set_cu_language (DW_UNSND (attr), cu);
25092   else
25093     {
25094       cu->language = pretend_language;
25095       cu->language_defn = language_def (cu->language);
25096     }
25097
25098   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25099 }
25100
25101 /* Increase the age counter on each cached compilation unit, and free
25102    any that are too old.  */
25103
25104 static void
25105 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25106 {
25107   struct dwarf2_per_cu_data *per_cu, **last_chain;
25108
25109   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25110   per_cu = dwarf2_per_objfile->read_in_chain;
25111   while (per_cu != NULL)
25112     {
25113       per_cu->cu->last_used ++;
25114       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25115         dwarf2_mark (per_cu->cu);
25116       per_cu = per_cu->cu->read_in_chain;
25117     }
25118
25119   per_cu = dwarf2_per_objfile->read_in_chain;
25120   last_chain = &dwarf2_per_objfile->read_in_chain;
25121   while (per_cu != NULL)
25122     {
25123       struct dwarf2_per_cu_data *next_cu;
25124
25125       next_cu = per_cu->cu->read_in_chain;
25126
25127       if (!per_cu->cu->mark)
25128         {
25129           delete per_cu->cu;
25130           *last_chain = next_cu;
25131         }
25132       else
25133         last_chain = &per_cu->cu->read_in_chain;
25134
25135       per_cu = next_cu;
25136     }
25137 }
25138
25139 /* Remove a single compilation unit from the cache.  */
25140
25141 static void
25142 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25143 {
25144   struct dwarf2_per_cu_data *per_cu, **last_chain;
25145   struct dwarf2_per_objfile *dwarf2_per_objfile
25146     = target_per_cu->dwarf2_per_objfile;
25147
25148   per_cu = dwarf2_per_objfile->read_in_chain;
25149   last_chain = &dwarf2_per_objfile->read_in_chain;
25150   while (per_cu != NULL)
25151     {
25152       struct dwarf2_per_cu_data *next_cu;
25153
25154       next_cu = per_cu->cu->read_in_chain;
25155
25156       if (per_cu == target_per_cu)
25157         {
25158           delete per_cu->cu;
25159           per_cu->cu = NULL;
25160           *last_chain = next_cu;
25161           break;
25162         }
25163       else
25164         last_chain = &per_cu->cu->read_in_chain;
25165
25166       per_cu = next_cu;
25167     }
25168 }
25169
25170 /* Cleanup function for the dwarf2_per_objfile data.  */
25171
25172 static void
25173 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25174 {
25175   struct dwarf2_per_objfile *dwarf2_per_objfile
25176     = static_cast<struct dwarf2_per_objfile *> (datum);
25177
25178   delete dwarf2_per_objfile;
25179 }
25180
25181 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25182    We store these in a hash table separate from the DIEs, and preserve them
25183    when the DIEs are flushed out of cache.
25184
25185    The CU "per_cu" pointer is needed because offset alone is not enough to
25186    uniquely identify the type.  A file may have multiple .debug_types sections,
25187    or the type may come from a DWO file.  Furthermore, while it's more logical
25188    to use per_cu->section+offset, with Fission the section with the data is in
25189    the DWO file but we don't know that section at the point we need it.
25190    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25191    because we can enter the lookup routine, get_die_type_at_offset, from
25192    outside this file, and thus won't necessarily have PER_CU->cu.
25193    Fortunately, PER_CU is stable for the life of the objfile.  */
25194
25195 struct dwarf2_per_cu_offset_and_type
25196 {
25197   const struct dwarf2_per_cu_data *per_cu;
25198   sect_offset sect_off;
25199   struct type *type;
25200 };
25201
25202 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25203
25204 static hashval_t
25205 per_cu_offset_and_type_hash (const void *item)
25206 {
25207   const struct dwarf2_per_cu_offset_and_type *ofs
25208     = (const struct dwarf2_per_cu_offset_and_type *) item;
25209
25210   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25211 }
25212
25213 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25214
25215 static int
25216 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25217 {
25218   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25219     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25220   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25221     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25222
25223   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25224           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25225 }
25226
25227 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25228    table if necessary.  For convenience, return TYPE.
25229
25230    The DIEs reading must have careful ordering to:
25231     * Not cause infite loops trying to read in DIEs as a prerequisite for
25232       reading current DIE.
25233     * Not trying to dereference contents of still incompletely read in types
25234       while reading in other DIEs.
25235     * Enable referencing still incompletely read in types just by a pointer to
25236       the type without accessing its fields.
25237
25238    Therefore caller should follow these rules:
25239      * Try to fetch any prerequisite types we may need to build this DIE type
25240        before building the type and calling set_die_type.
25241      * After building type call set_die_type for current DIE as soon as
25242        possible before fetching more types to complete the current type.
25243      * Make the type as complete as possible before fetching more types.  */
25244
25245 static struct type *
25246 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25247 {
25248   struct dwarf2_per_objfile *dwarf2_per_objfile
25249     = cu->per_cu->dwarf2_per_objfile;
25250   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25251   struct objfile *objfile = dwarf2_per_objfile->objfile;
25252   struct attribute *attr;
25253   struct dynamic_prop prop;
25254
25255   /* For Ada types, make sure that the gnat-specific data is always
25256      initialized (if not already set).  There are a few types where
25257      we should not be doing so, because the type-specific area is
25258      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25259      where the type-specific area is used to store the floatformat).
25260      But this is not a problem, because the gnat-specific information
25261      is actually not needed for these types.  */
25262   if (need_gnat_info (cu)
25263       && TYPE_CODE (type) != TYPE_CODE_FUNC
25264       && TYPE_CODE (type) != TYPE_CODE_FLT
25265       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25266       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25267       && TYPE_CODE (type) != TYPE_CODE_METHOD
25268       && !HAVE_GNAT_AUX_INFO (type))
25269     INIT_GNAT_SPECIFIC (type);
25270
25271   /* Read DW_AT_allocated and set in type.  */
25272   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25273   if (attr_form_is_block (attr))
25274     {
25275       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25276         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25277     }
25278   else if (attr != NULL)
25279     {
25280       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25281                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25282                  sect_offset_str (die->sect_off));
25283     }
25284
25285   /* Read DW_AT_associated and set in type.  */
25286   attr = dwarf2_attr (die, DW_AT_associated, cu);
25287   if (attr_form_is_block (attr))
25288     {
25289       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25290         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25291     }
25292   else if (attr != NULL)
25293     {
25294       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25295                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25296                  sect_offset_str (die->sect_off));
25297     }
25298
25299   /* Read DW_AT_data_location and set in type.  */
25300   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25301   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25302     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25303
25304   if (dwarf2_per_objfile->die_type_hash == NULL)
25305     {
25306       dwarf2_per_objfile->die_type_hash =
25307         htab_create_alloc_ex (127,
25308                               per_cu_offset_and_type_hash,
25309                               per_cu_offset_and_type_eq,
25310                               NULL,
25311                               &objfile->objfile_obstack,
25312                               hashtab_obstack_allocate,
25313                               dummy_obstack_deallocate);
25314     }
25315
25316   ofs.per_cu = cu->per_cu;
25317   ofs.sect_off = die->sect_off;
25318   ofs.type = type;
25319   slot = (struct dwarf2_per_cu_offset_and_type **)
25320     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25321   if (*slot)
25322     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25323                sect_offset_str (die->sect_off));
25324   *slot = XOBNEW (&objfile->objfile_obstack,
25325                   struct dwarf2_per_cu_offset_and_type);
25326   **slot = ofs;
25327   return type;
25328 }
25329
25330 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25331    or return NULL if the die does not have a saved type.  */
25332
25333 static struct type *
25334 get_die_type_at_offset (sect_offset sect_off,
25335                         struct dwarf2_per_cu_data *per_cu)
25336 {
25337   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25338   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25339
25340   if (dwarf2_per_objfile->die_type_hash == NULL)
25341     return NULL;
25342
25343   ofs.per_cu = per_cu;
25344   ofs.sect_off = sect_off;
25345   slot = ((struct dwarf2_per_cu_offset_and_type *)
25346           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25347   if (slot)
25348     return slot->type;
25349   else
25350     return NULL;
25351 }
25352
25353 /* Look up the type for DIE in CU in die_type_hash,
25354    or return NULL if DIE does not have a saved type.  */
25355
25356 static struct type *
25357 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25358 {
25359   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25360 }
25361
25362 /* Add a dependence relationship from CU to REF_PER_CU.  */
25363
25364 static void
25365 dwarf2_add_dependence (struct dwarf2_cu *cu,
25366                        struct dwarf2_per_cu_data *ref_per_cu)
25367 {
25368   void **slot;
25369
25370   if (cu->dependencies == NULL)
25371     cu->dependencies
25372       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25373                               NULL, &cu->comp_unit_obstack,
25374                               hashtab_obstack_allocate,
25375                               dummy_obstack_deallocate);
25376
25377   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25378   if (*slot == NULL)
25379     *slot = ref_per_cu;
25380 }
25381
25382 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25383    Set the mark field in every compilation unit in the
25384    cache that we must keep because we are keeping CU.  */
25385
25386 static int
25387 dwarf2_mark_helper (void **slot, void *data)
25388 {
25389   struct dwarf2_per_cu_data *per_cu;
25390
25391   per_cu = (struct dwarf2_per_cu_data *) *slot;
25392
25393   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25394      reading of the chain.  As such dependencies remain valid it is not much
25395      useful to track and undo them during QUIT cleanups.  */
25396   if (per_cu->cu == NULL)
25397     return 1;
25398
25399   if (per_cu->cu->mark)
25400     return 1;
25401   per_cu->cu->mark = 1;
25402
25403   if (per_cu->cu->dependencies != NULL)
25404     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25405
25406   return 1;
25407 }
25408
25409 /* Set the mark field in CU and in every other compilation unit in the
25410    cache that we must keep because we are keeping CU.  */
25411
25412 static void
25413 dwarf2_mark (struct dwarf2_cu *cu)
25414 {
25415   if (cu->mark)
25416     return;
25417   cu->mark = 1;
25418   if (cu->dependencies != NULL)
25419     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25420 }
25421
25422 static void
25423 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25424 {
25425   while (per_cu)
25426     {
25427       per_cu->cu->mark = 0;
25428       per_cu = per_cu->cu->read_in_chain;
25429     }
25430 }
25431
25432 /* Trivial hash function for partial_die_info: the hash value of a DIE
25433    is its offset in .debug_info for this objfile.  */
25434
25435 static hashval_t
25436 partial_die_hash (const void *item)
25437 {
25438   const struct partial_die_info *part_die
25439     = (const struct partial_die_info *) item;
25440
25441   return to_underlying (part_die->sect_off);
25442 }
25443
25444 /* Trivial comparison function for partial_die_info structures: two DIEs
25445    are equal if they have the same offset.  */
25446
25447 static int
25448 partial_die_eq (const void *item_lhs, const void *item_rhs)
25449 {
25450   const struct partial_die_info *part_die_lhs
25451     = (const struct partial_die_info *) item_lhs;
25452   const struct partial_die_info *part_die_rhs
25453     = (const struct partial_die_info *) item_rhs;
25454
25455   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25456 }
25457
25458 struct cmd_list_element *set_dwarf_cmdlist;
25459 struct cmd_list_element *show_dwarf_cmdlist;
25460
25461 static void
25462 set_dwarf_cmd (const char *args, int from_tty)
25463 {
25464   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25465              gdb_stdout);
25466 }
25467
25468 static void
25469 show_dwarf_cmd (const char *args, int from_tty)
25470 {
25471   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25472 }
25473
25474 int dwarf_always_disassemble;
25475
25476 static void
25477 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25478                                struct cmd_list_element *c, const char *value)
25479 {
25480   fprintf_filtered (file,
25481                     _("Whether to always disassemble "
25482                       "DWARF expressions is %s.\n"),
25483                     value);
25484 }
25485
25486 static void
25487 show_check_physname (struct ui_file *file, int from_tty,
25488                      struct cmd_list_element *c, const char *value)
25489 {
25490   fprintf_filtered (file,
25491                     _("Whether to check \"physname\" is %s.\n"),
25492                     value);
25493 }
25494
25495 void
25496 _initialize_dwarf2_read (void)
25497 {
25498   dwarf2_objfile_data_key
25499     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25500
25501   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25502 Set DWARF specific variables.\n\
25503 Configure DWARF variables such as the cache size"),
25504                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25505                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25506
25507   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25508 Show DWARF specific variables\n\
25509 Show DWARF variables such as the cache size"),
25510                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25511                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25512
25513   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25514                             &dwarf_max_cache_age, _("\
25515 Set the upper bound on the age of cached DWARF compilation units."), _("\
25516 Show the upper bound on the age of cached DWARF compilation units."), _("\
25517 A higher limit means that cached compilation units will be stored\n\
25518 in memory longer, and more total memory will be used.  Zero disables\n\
25519 caching, which can slow down startup."),
25520                             NULL,
25521                             show_dwarf_max_cache_age,
25522                             &set_dwarf_cmdlist,
25523                             &show_dwarf_cmdlist);
25524
25525   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25526                            &dwarf_always_disassemble, _("\
25527 Set whether `info address' always disassembles DWARF expressions."), _("\
25528 Show whether `info address' always disassembles DWARF expressions."), _("\
25529 When enabled, DWARF expressions are always printed in an assembly-like\n\
25530 syntax.  When disabled, expressions will be printed in a more\n\
25531 conversational style, when possible."),
25532                            NULL,
25533                            show_dwarf_always_disassemble,
25534                            &set_dwarf_cmdlist,
25535                            &show_dwarf_cmdlist);
25536
25537   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25538 Set debugging of the DWARF reader."), _("\
25539 Show debugging of the DWARF reader."), _("\
25540 When enabled (non-zero), debugging messages are printed during DWARF\n\
25541 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25542 information.  A value greater than 1 provides more verbose information."),
25543                             NULL,
25544                             NULL,
25545                             &setdebuglist, &showdebuglist);
25546
25547   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25548 Set debugging of the DWARF DIE reader."), _("\
25549 Show debugging of the DWARF DIE reader."), _("\
25550 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25551 The value is the maximum depth to print."),
25552                              NULL,
25553                              NULL,
25554                              &setdebuglist, &showdebuglist);
25555
25556   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25557 Set debugging of the dwarf line reader."), _("\
25558 Show debugging of the dwarf line reader."), _("\
25559 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25560 A value of 1 (one) provides basic information.\n\
25561 A value greater than 1 provides more verbose information."),
25562                              NULL,
25563                              NULL,
25564                              &setdebuglist, &showdebuglist);
25565
25566   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25567 Set cross-checking of \"physname\" code against demangler."), _("\
25568 Show cross-checking of \"physname\" code against demangler."), _("\
25569 When enabled, GDB's internal \"physname\" code is checked against\n\
25570 the demangler."),
25571                            NULL, show_check_physname,
25572                            &setdebuglist, &showdebuglist);
25573
25574   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25575                            no_class, &use_deprecated_index_sections, _("\
25576 Set whether to use deprecated gdb_index sections."), _("\
25577 Show whether to use deprecated gdb_index sections."), _("\
25578 When enabled, deprecated .gdb_index sections are used anyway.\n\
25579 Normally they are ignored either because of a missing feature or\n\
25580 performance issue.\n\
25581 Warning: This option must be enabled before gdb reads the file."),
25582                            NULL,
25583                            NULL,
25584                            &setlist, &showlist);
25585
25586   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25587                                                         &dwarf2_locexpr_funcs);
25588   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25589                                                         &dwarf2_loclist_funcs);
25590
25591   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25592                                         &dwarf2_block_frame_base_locexpr_funcs);
25593   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25594                                         &dwarf2_block_frame_base_loclist_funcs);
25595
25596 #if GDB_SELF_TEST
25597   selftests::register_test ("dw2_expand_symtabs_matching",
25598                             selftests::dw2_expand_symtabs_matching::run_test);
25599 #endif
25600 }