Dwarf: Don't add nameless modules to partial symbol table
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2019 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 "dwarf2expr.h"
50 #include "dwarf2loc.h"
51 #include "cp-support.h"
52 #include "hashtab.h"
53 #include "command.h"
54 #include "gdbcmd.h"
55 #include "block.h"
56 #include "addrmap.h"
57 #include "typeprint.h"
58 #include "psympriv.h"
59 #include <sys/stat.h>
60 #include "completer.h"
61 #include "common/vec.h"
62 #include "c-lang.h"
63 #include "go-lang.h"
64 #include "valprint.h"
65 #include "gdbcore.h" /* for gnutarget */
66 #include "gdb/gdb-index.h"
67 #include <ctype.h>
68 #include "gdb_bfd.h"
69 #include "f-lang.h"
70 #include "source.h"
71 #include "common/filestuff.h"
72 #include "build-id.h"
73 #include "namespace.h"
74 #include "common/gdb_unlinker.h"
75 #include "common/function-view.h"
76 #include "common/gdb_optional.h"
77 #include "common/underlying.h"
78 #include "common/byte-vector.h"
79 #include "common/hash_enum.h"
80 #include "filename-seen-cache.h"
81 #include "producer.h"
82 #include <fcntl.h>
83 #include <sys/types.h>
84 #include <algorithm>
85 #include <unordered_set>
86 #include <unordered_map>
87 #include "common/selftest.h"
88 #include <cmath>
89 #include <set>
90 #include <forward_list>
91 #include "rust-lang.h"
92 #include "common/pathstuff.h"
93
94 /* When == 1, print basic high level tracing messages.
95    When > 1, be more verbose.
96    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
97 static unsigned int dwarf_read_debug = 0;
98
99 /* When non-zero, dump DIEs after they are read in.  */
100 static unsigned int dwarf_die_debug = 0;
101
102 /* When non-zero, dump line number entries as they are read in.  */
103 static unsigned int dwarf_line_debug = 0;
104
105 /* When non-zero, cross-check physname against demangler.  */
106 static int check_physname = 0;
107
108 /* When non-zero, do not reject deprecated .gdb_index sections.  */
109 static int use_deprecated_index_sections = 0;
110
111 static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
112
113 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
114
115 static int dwarf2_locexpr_index;
116 static int dwarf2_loclist_index;
117 static int dwarf2_locexpr_block_index;
118 static int dwarf2_loclist_block_index;
119
120 /* An index into a (C++) symbol name component in a symbol name as
121    recorded in the mapped_index's symbol table.  For each C++ symbol
122    in the symbol table, we record one entry for the start of each
123    component in the symbol in a table of name components, and then
124    sort the table, in order to be able to binary search symbol names,
125    ignoring leading namespaces, both completion and regular look up.
126    For example, for symbol "A::B::C", we'll have an entry that points
127    to "A::B::C", another that points to "B::C", and another for "C".
128    Note that function symbols in GDB index have no parameter
129    information, just the function/method names.  You can convert a
130    name_component to a "const char *" using the
131    'mapped_index::symbol_name_at(offset_type)' method.  */
132
133 struct name_component
134 {
135   /* Offset in the symbol name where the component starts.  Stored as
136      a (32-bit) offset instead of a pointer to save memory and improve
137      locality on 64-bit architectures.  */
138   offset_type name_offset;
139
140   /* The symbol's index in the symbol and constant pool tables of a
141      mapped_index.  */
142   offset_type idx;
143 };
144
145 /* Base class containing bits shared by both .gdb_index and
146    .debug_name indexes.  */
147
148 struct mapped_index_base
149 {
150   mapped_index_base () = default;
151   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
152
153   /* The name_component table (a sorted vector).  See name_component's
154      description above.  */
155   std::vector<name_component> name_components;
156
157   /* How NAME_COMPONENTS is sorted.  */
158   enum case_sensitivity name_components_casing;
159
160   /* Return the number of names in the symbol table.  */
161   virtual size_t symbol_name_count () const = 0;
162
163   /* Get the name of the symbol at IDX in the symbol table.  */
164   virtual const char *symbol_name_at (offset_type idx) const = 0;
165
166   /* Return whether the name at IDX in the symbol table should be
167      ignored.  */
168   virtual bool symbol_name_slot_invalid (offset_type idx) const
169   {
170     return false;
171   }
172
173   /* Build the symbol name component sorted vector, if we haven't
174      yet.  */
175   void build_name_components ();
176
177   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
178      possible matches for LN_NO_PARAMS in the name component
179      vector.  */
180   std::pair<std::vector<name_component>::const_iterator,
181             std::vector<name_component>::const_iterator>
182     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
183
184   /* Prevent deleting/destroying via a base class pointer.  */
185 protected:
186   ~mapped_index_base() = default;
187 };
188
189 /* A description of the mapped index.  The file format is described in
190    a comment by the code that writes the index.  */
191 struct mapped_index final : public mapped_index_base
192 {
193   /* A slot/bucket in the symbol table hash.  */
194   struct symbol_table_slot
195   {
196     const offset_type name;
197     const offset_type vec;
198   };
199
200   /* Index data format version.  */
201   int version = 0;
202
203   /* The address table data.  */
204   gdb::array_view<const gdb_byte> address_table;
205
206   /* The symbol table, implemented as a hash table.  */
207   gdb::array_view<symbol_table_slot> symbol_table;
208
209   /* A pointer to the constant pool.  */
210   const char *constant_pool = nullptr;
211
212   bool symbol_name_slot_invalid (offset_type idx) const override
213   {
214     const auto &bucket = this->symbol_table[idx];
215     return bucket.name == 0 && bucket.vec == 0;
216   }
217
218   /* Convenience method to get at the name of the symbol at IDX in the
219      symbol table.  */
220   const char *symbol_name_at (offset_type idx) const override
221   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
222
223   size_t symbol_name_count () const override
224   { return this->symbol_table.size (); }
225 };
226
227 /* A description of the mapped .debug_names.
228    Uninitialized map has CU_COUNT 0.  */
229 struct mapped_debug_names final : public mapped_index_base
230 {
231   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
232   : dwarf2_per_objfile (dwarf2_per_objfile_)
233   {}
234
235   struct dwarf2_per_objfile *dwarf2_per_objfile;
236   bfd_endian dwarf5_byte_order;
237   bool dwarf5_is_dwarf64;
238   bool augmentation_is_gdb;
239   uint8_t offset_size;
240   uint32_t cu_count = 0;
241   uint32_t tu_count, bucket_count, name_count;
242   const gdb_byte *cu_table_reordered, *tu_table_reordered;
243   const uint32_t *bucket_table_reordered, *hash_table_reordered;
244   const gdb_byte *name_table_string_offs_reordered;
245   const gdb_byte *name_table_entry_offs_reordered;
246   const gdb_byte *entry_pool;
247
248   struct index_val
249   {
250     ULONGEST dwarf_tag;
251     struct attr
252     {
253       /* Attribute name DW_IDX_*.  */
254       ULONGEST dw_idx;
255
256       /* Attribute form DW_FORM_*.  */
257       ULONGEST form;
258
259       /* Value if FORM is DW_FORM_implicit_const.  */
260       LONGEST implicit_const;
261     };
262     std::vector<attr> attr_vec;
263   };
264
265   std::unordered_map<ULONGEST, index_val> abbrev_map;
266
267   const char *namei_to_name (uint32_t namei) const;
268
269   /* Implementation of the mapped_index_base virtual interface, for
270      the name_components cache.  */
271
272   const char *symbol_name_at (offset_type idx) const override
273   { return namei_to_name (idx); }
274
275   size_t symbol_name_count () const override
276   { return this->name_count; }
277 };
278
279 /* See dwarf2read.h.  */
280
281 dwarf2_per_objfile *
282 get_dwarf2_per_objfile (struct objfile *objfile)
283 {
284   return dwarf2_objfile_data_key.get (objfile);
285 }
286
287 /* Default names of the debugging sections.  */
288
289 /* Note that if the debugging section has been compressed, it might
290    have a name like .zdebug_info.  */
291
292 static const struct dwarf2_debug_sections dwarf2_elf_names =
293 {
294   { ".debug_info", ".zdebug_info" },
295   { ".debug_abbrev", ".zdebug_abbrev" },
296   { ".debug_line", ".zdebug_line" },
297   { ".debug_loc", ".zdebug_loc" },
298   { ".debug_loclists", ".zdebug_loclists" },
299   { ".debug_macinfo", ".zdebug_macinfo" },
300   { ".debug_macro", ".zdebug_macro" },
301   { ".debug_str", ".zdebug_str" },
302   { ".debug_line_str", ".zdebug_line_str" },
303   { ".debug_ranges", ".zdebug_ranges" },
304   { ".debug_rnglists", ".zdebug_rnglists" },
305   { ".debug_types", ".zdebug_types" },
306   { ".debug_addr", ".zdebug_addr" },
307   { ".debug_frame", ".zdebug_frame" },
308   { ".eh_frame", NULL },
309   { ".gdb_index", ".zgdb_index" },
310   { ".debug_names", ".zdebug_names" },
311   { ".debug_aranges", ".zdebug_aranges" },
312   23
313 };
314
315 /* List of DWO/DWP sections.  */
316
317 static const struct dwop_section_names
318 {
319   struct dwarf2_section_names abbrev_dwo;
320   struct dwarf2_section_names info_dwo;
321   struct dwarf2_section_names line_dwo;
322   struct dwarf2_section_names loc_dwo;
323   struct dwarf2_section_names loclists_dwo;
324   struct dwarf2_section_names macinfo_dwo;
325   struct dwarf2_section_names macro_dwo;
326   struct dwarf2_section_names str_dwo;
327   struct dwarf2_section_names str_offsets_dwo;
328   struct dwarf2_section_names types_dwo;
329   struct dwarf2_section_names cu_index;
330   struct dwarf2_section_names tu_index;
331 }
332 dwop_section_names =
333 {
334   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
335   { ".debug_info.dwo", ".zdebug_info.dwo" },
336   { ".debug_line.dwo", ".zdebug_line.dwo" },
337   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
338   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
339   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
340   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
341   { ".debug_str.dwo", ".zdebug_str.dwo" },
342   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
343   { ".debug_types.dwo", ".zdebug_types.dwo" },
344   { ".debug_cu_index", ".zdebug_cu_index" },
345   { ".debug_tu_index", ".zdebug_tu_index" },
346 };
347
348 /* local data types */
349
350 /* The data in a compilation unit header, after target2host
351    translation, looks like this.  */
352 struct comp_unit_head
353 {
354   unsigned int length;
355   short version;
356   unsigned char addr_size;
357   unsigned char signed_addr_p;
358   sect_offset abbrev_sect_off;
359
360   /* Size of file offsets; either 4 or 8.  */
361   unsigned int offset_size;
362
363   /* Size of the length field; either 4 or 12.  */
364   unsigned int initial_length_size;
365
366   enum dwarf_unit_type unit_type;
367
368   /* Offset to the first byte of this compilation unit header in the
369      .debug_info section, for resolving relative reference dies.  */
370   sect_offset sect_off;
371
372   /* Offset to first die in this cu from the start of the cu.
373      This will be the first byte following the compilation unit header.  */
374   cu_offset first_die_cu_offset;
375
376   /* 64-bit signature of this type unit - it is valid only for
377      UNIT_TYPE DW_UT_type.  */
378   ULONGEST signature;
379
380   /* For types, offset in the type's DIE of the type defined by this TU.  */
381   cu_offset type_cu_offset_in_tu;
382 };
383
384 /* Type used for delaying computation of method physnames.
385    See comments for compute_delayed_physnames.  */
386 struct delayed_method_info
387 {
388   /* The type to which the method is attached, i.e., its parent class.  */
389   struct type *type;
390
391   /* The index of the method in the type's function fieldlists.  */
392   int fnfield_index;
393
394   /* The index of the method in the fieldlist.  */
395   int index;
396
397   /* The name of the DIE.  */
398   const char *name;
399
400   /*  The DIE associated with this method.  */
401   struct die_info *die;
402 };
403
404 /* Internal state when decoding a particular compilation unit.  */
405 struct dwarf2_cu
406 {
407   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
408   ~dwarf2_cu ();
409
410   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
411
412   /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
413      Create the set of symtabs used by this TU, or if this TU is sharing
414      symtabs with another TU and the symtabs have already been created
415      then restore those symtabs in the line header.
416      We don't need the pc/line-number mapping for type units.  */
417   void setup_type_unit_groups (struct die_info *die);
418
419   /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
420      buildsym_compunit constructor.  */
421   struct compunit_symtab *start_symtab (const char *name,
422                                         const char *comp_dir,
423                                         CORE_ADDR low_pc);
424
425   /* Reset the builder.  */
426   void reset_builder () { m_builder.reset (); }
427
428   /* The header of the compilation unit.  */
429   struct comp_unit_head header {};
430
431   /* Base address of this compilation unit.  */
432   CORE_ADDR base_address = 0;
433
434   /* Non-zero if base_address has been set.  */
435   int base_known = 0;
436
437   /* The language we are debugging.  */
438   enum language language = language_unknown;
439   const struct language_defn *language_defn = nullptr;
440
441   const char *producer = nullptr;
442
443 private:
444   /* The symtab builder for this CU.  This is only non-NULL when full
445      symbols are being read.  */
446   std::unique_ptr<buildsym_compunit> m_builder;
447
448 public:
449   /* The generic symbol table building routines have separate lists for
450      file scope symbols and all all other scopes (local scopes).  So
451      we need to select the right one to pass to add_symbol_to_list().
452      We do it by keeping a pointer to the correct list in list_in_scope.
453
454      FIXME: The original dwarf code just treated the file scope as the
455      first local scope, and all other local scopes as nested local
456      scopes, and worked fine.  Check to see if we really need to
457      distinguish these in buildsym.c.  */
458   struct pending **list_in_scope = nullptr;
459
460   /* Hash table holding all the loaded partial DIEs
461      with partial_die->offset.SECT_OFF as hash.  */
462   htab_t partial_dies = nullptr;
463
464   /* Storage for things with the same lifetime as this read-in compilation
465      unit, including partial DIEs.  */
466   auto_obstack comp_unit_obstack;
467
468   /* When multiple dwarf2_cu structures are living in memory, this field
469      chains them all together, so that they can be released efficiently.
470      We will probably also want a generation counter so that most-recently-used
471      compilation units are cached...  */
472   struct dwarf2_per_cu_data *read_in_chain = nullptr;
473
474   /* Backlink to our per_cu entry.  */
475   struct dwarf2_per_cu_data *per_cu;
476
477   /* How many compilation units ago was this CU last referenced?  */
478   int last_used = 0;
479
480   /* A hash table of DIE cu_offset for following references with
481      die_info->offset.sect_off as hash.  */
482   htab_t die_hash = nullptr;
483
484   /* Full DIEs if read in.  */
485   struct die_info *dies = nullptr;
486
487   /* A set of pointers to dwarf2_per_cu_data objects for compilation
488      units referenced by this one.  Only set during full symbol processing;
489      partial symbol tables do not have dependencies.  */
490   htab_t dependencies = nullptr;
491
492   /* Header data from the line table, during full symbol processing.  */
493   struct line_header *line_header = nullptr;
494   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
495      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
496      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
497      to the line header as long as this DIE is being processed.  See
498      process_die_scope.  */
499   die_info *line_header_die_owner = nullptr;
500
501   /* A list of methods which need to have physnames computed
502      after all type information has been read.  */
503   std::vector<delayed_method_info> method_list;
504
505   /* To be copied to symtab->call_site_htab.  */
506   htab_t call_site_htab = nullptr;
507
508   /* Non-NULL if this CU came from a DWO file.
509      There is an invariant here that is important to remember:
510      Except for attributes copied from the top level DIE in the "main"
511      (or "stub") file in preparation for reading the DWO file
512      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
513      Either there isn't a DWO file (in which case this is NULL and the point
514      is moot), or there is and either we're not going to read it (in which
515      case this is NULL) or there is and we are reading it (in which case this
516      is non-NULL).  */
517   struct dwo_unit *dwo_unit = nullptr;
518
519   /* The DW_AT_addr_base attribute if present, zero otherwise
520      (zero is a valid value though).
521      Note this value comes from the Fission stub CU/TU's DIE.  */
522   ULONGEST addr_base = 0;
523
524   /* The DW_AT_ranges_base attribute if present, zero otherwise
525      (zero is a valid value though).
526      Note this value comes from the Fission stub CU/TU's DIE.
527      Also note that the value is zero in the non-DWO case so this value can
528      be used without needing to know whether DWO files are in use or not.
529      N.B. This does not apply to DW_AT_ranges appearing in
530      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
531      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
532      DW_AT_ranges_base *would* have to be applied, and we'd have to care
533      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
534   ULONGEST ranges_base = 0;
535
536   /* When reading debug info generated by older versions of rustc, we
537      have to rewrite some union types to be struct types with a
538      variant part.  This rewriting must be done after the CU is fully
539      read in, because otherwise at the point of rewriting some struct
540      type might not have been fully processed.  So, we keep a list of
541      all such types here and process them after expansion.  */
542   std::vector<struct type *> rust_unions;
543
544   /* Mark used when releasing cached dies.  */
545   bool mark : 1;
546
547   /* This CU references .debug_loc.  See the symtab->locations_valid field.
548      This test is imperfect as there may exist optimized debug code not using
549      any location list and still facing inlining issues if handled as
550      unoptimized code.  For a future better test see GCC PR other/32998.  */
551   bool has_loclist : 1;
552
553   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is true
554      if all the producer_is_* fields are valid.  This information is cached
555      because profiling CU expansion showed excessive time spent in
556      producer_is_gxx_lt_4_6.  */
557   bool checked_producer : 1;
558   bool producer_is_gxx_lt_4_6 : 1;
559   bool producer_is_gcc_lt_4_3 : 1;
560   bool producer_is_icc : 1;
561   bool producer_is_icc_lt_14 : 1;
562   bool producer_is_codewarrior : 1;
563
564   /* When true, the file that we're processing is known to have
565      debugging info for C++ namespaces.  GCC 3.3.x did not produce
566      this information, but later versions do.  */
567
568   bool processing_has_namespace_info : 1;
569
570   struct partial_die_info *find_partial_die (sect_offset sect_off);
571
572   /* If this CU was inherited by another CU (via specification,
573      abstract_origin, etc), this is the ancestor CU.  */
574   dwarf2_cu *ancestor;
575
576   /* Get the buildsym_compunit for this CU.  */
577   buildsym_compunit *get_builder ()
578   {
579     /* If this CU has a builder associated with it, use that.  */
580     if (m_builder != nullptr)
581       return m_builder.get ();
582
583     /* Otherwise, search ancestors for a valid builder.  */
584     if (ancestor != nullptr)
585       return ancestor->get_builder ();
586
587     return nullptr;
588   }
589 };
590
591 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
592    This includes type_unit_group and quick_file_names.  */
593
594 struct stmt_list_hash
595 {
596   /* The DWO unit this table is from or NULL if there is none.  */
597   struct dwo_unit *dwo_unit;
598
599   /* Offset in .debug_line or .debug_line.dwo.  */
600   sect_offset line_sect_off;
601 };
602
603 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
604    an object of this type.  */
605
606 struct type_unit_group
607 {
608   /* dwarf2read.c's main "handle" on a TU symtab.
609      To simplify things we create an artificial CU that "includes" all the
610      type units using this stmt_list so that the rest of the code still has
611      a "per_cu" handle on the symtab.
612      This PER_CU is recognized by having no section.  */
613 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
614   struct dwarf2_per_cu_data per_cu;
615
616   /* The TUs that share this DW_AT_stmt_list entry.
617      This is added to while parsing type units to build partial symtabs,
618      and is deleted afterwards and not used again.  */
619   VEC (sig_type_ptr) *tus;
620
621   /* The compunit symtab.
622      Type units in a group needn't all be defined in the same source file,
623      so we create an essentially anonymous symtab as the compunit symtab.  */
624   struct compunit_symtab *compunit_symtab;
625
626   /* The data used to construct the hash key.  */
627   struct stmt_list_hash hash;
628
629   /* The number of symtabs from the line header.
630      The value here must match line_header.num_file_names.  */
631   unsigned int num_symtabs;
632
633   /* The symbol tables for this TU (obtained from the files listed in
634      DW_AT_stmt_list).
635      WARNING: The order of entries here must match the order of entries
636      in the line header.  After the first TU using this type_unit_group, the
637      line header for the subsequent TUs is recreated from this.  This is done
638      because we need to use the same symtabs for each TU using the same
639      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
640      there's no guarantee the line header doesn't have duplicate entries.  */
641   struct symtab **symtabs;
642 };
643
644 /* These sections are what may appear in a (real or virtual) DWO file.  */
645
646 struct dwo_sections
647 {
648   struct dwarf2_section_info abbrev;
649   struct dwarf2_section_info line;
650   struct dwarf2_section_info loc;
651   struct dwarf2_section_info loclists;
652   struct dwarf2_section_info macinfo;
653   struct dwarf2_section_info macro;
654   struct dwarf2_section_info str;
655   struct dwarf2_section_info str_offsets;
656   /* In the case of a virtual DWO file, these two are unused.  */
657   struct dwarf2_section_info info;
658   VEC (dwarf2_section_info_def) *types;
659 };
660
661 /* CUs/TUs in DWP/DWO files.  */
662
663 struct dwo_unit
664 {
665   /* Backlink to the containing struct dwo_file.  */
666   struct dwo_file *dwo_file;
667
668   /* The "id" that distinguishes this CU/TU.
669      .debug_info calls this "dwo_id", .debug_types calls this "signature".
670      Since signatures came first, we stick with it for consistency.  */
671   ULONGEST signature;
672
673   /* The section this CU/TU lives in, in the DWO file.  */
674   struct dwarf2_section_info *section;
675
676   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
677   sect_offset sect_off;
678   unsigned int length;
679
680   /* For types, offset in the type's DIE of the type defined by this TU.  */
681   cu_offset type_offset_in_tu;
682 };
683
684 /* include/dwarf2.h defines the DWP section codes.
685    It defines a max value but it doesn't define a min value, which we
686    use for error checking, so provide one.  */
687
688 enum dwp_v2_section_ids
689 {
690   DW_SECT_MIN = 1
691 };
692
693 /* Data for one DWO file.
694
695    This includes virtual DWO files (a virtual DWO file is a DWO file as it
696    appears in a DWP file).  DWP files don't really have DWO files per se -
697    comdat folding of types "loses" the DWO file they came from, and from
698    a high level view DWP files appear to contain a mass of random types.
699    However, to maintain consistency with the non-DWP case we pretend DWP
700    files contain virtual DWO files, and we assign each TU with one virtual
701    DWO file (generally based on the line and abbrev section offsets -
702    a heuristic that seems to work in practice).  */
703
704 struct dwo_file
705 {
706   /* The DW_AT_GNU_dwo_name attribute.
707      For virtual DWO files the name is constructed from the section offsets
708      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
709      from related CU+TUs.  */
710   const char *dwo_name;
711
712   /* The DW_AT_comp_dir attribute.  */
713   const char *comp_dir;
714
715   /* The bfd, when the file is open.  Otherwise this is NULL.
716      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
717   bfd *dbfd;
718
719   /* The sections that make up this DWO file.
720      Remember that for virtual DWO files in DWP V2, these are virtual
721      sections (for lack of a better name).  */
722   struct dwo_sections sections;
723
724   /* The CUs in the file.
725      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
726      an extension to handle LLVM's Link Time Optimization output (where
727      multiple source files may be compiled into a single object/dwo pair). */
728   htab_t cus;
729
730   /* Table of TUs in the file.
731      Each element is a struct dwo_unit.  */
732   htab_t tus;
733 };
734
735 /* These sections are what may appear in a DWP file.  */
736
737 struct dwp_sections
738 {
739   /* These are used by both DWP version 1 and 2.  */
740   struct dwarf2_section_info str;
741   struct dwarf2_section_info cu_index;
742   struct dwarf2_section_info tu_index;
743
744   /* These are only used by DWP version 2 files.
745      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
746      sections are referenced by section number, and are not recorded here.
747      In DWP version 2 there is at most one copy of all these sections, each
748      section being (effectively) comprised of the concatenation of all of the
749      individual sections that exist in the version 1 format.
750      To keep the code simple we treat each of these concatenated pieces as a
751      section itself (a virtual section?).  */
752   struct dwarf2_section_info abbrev;
753   struct dwarf2_section_info info;
754   struct dwarf2_section_info line;
755   struct dwarf2_section_info loc;
756   struct dwarf2_section_info macinfo;
757   struct dwarf2_section_info macro;
758   struct dwarf2_section_info str_offsets;
759   struct dwarf2_section_info types;
760 };
761
762 /* These sections are what may appear in a virtual DWO file in DWP version 1.
763    A virtual DWO file is a DWO file as it appears in a DWP file.  */
764
765 struct virtual_v1_dwo_sections
766 {
767   struct dwarf2_section_info abbrev;
768   struct dwarf2_section_info line;
769   struct dwarf2_section_info loc;
770   struct dwarf2_section_info macinfo;
771   struct dwarf2_section_info macro;
772   struct dwarf2_section_info str_offsets;
773   /* Each DWP hash table entry records one CU or one TU.
774      That is recorded here, and copied to dwo_unit.section.  */
775   struct dwarf2_section_info info_or_types;
776 };
777
778 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
779    In version 2, the sections of the DWO files are concatenated together
780    and stored in one section of that name.  Thus each ELF section contains
781    several "virtual" sections.  */
782
783 struct virtual_v2_dwo_sections
784 {
785   bfd_size_type abbrev_offset;
786   bfd_size_type abbrev_size;
787
788   bfd_size_type line_offset;
789   bfd_size_type line_size;
790
791   bfd_size_type loc_offset;
792   bfd_size_type loc_size;
793
794   bfd_size_type macinfo_offset;
795   bfd_size_type macinfo_size;
796
797   bfd_size_type macro_offset;
798   bfd_size_type macro_size;
799
800   bfd_size_type str_offsets_offset;
801   bfd_size_type str_offsets_size;
802
803   /* Each DWP hash table entry records one CU or one TU.
804      That is recorded here, and copied to dwo_unit.section.  */
805   bfd_size_type info_or_types_offset;
806   bfd_size_type info_or_types_size;
807 };
808
809 /* Contents of DWP hash tables.  */
810
811 struct dwp_hash_table
812 {
813   uint32_t version, nr_columns;
814   uint32_t nr_units, nr_slots;
815   const gdb_byte *hash_table, *unit_table;
816   union
817   {
818     struct
819     {
820       const gdb_byte *indices;
821     } v1;
822     struct
823     {
824       /* This is indexed by column number and gives the id of the section
825          in that column.  */
826 #define MAX_NR_V2_DWO_SECTIONS \
827   (1 /* .debug_info or .debug_types */ \
828    + 1 /* .debug_abbrev */ \
829    + 1 /* .debug_line */ \
830    + 1 /* .debug_loc */ \
831    + 1 /* .debug_str_offsets */ \
832    + 1 /* .debug_macro or .debug_macinfo */)
833       int section_ids[MAX_NR_V2_DWO_SECTIONS];
834       const gdb_byte *offsets;
835       const gdb_byte *sizes;
836     } v2;
837   } section_pool;
838 };
839
840 /* Data for one DWP file.  */
841
842 struct dwp_file
843 {
844   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
845     : name (name_),
846       dbfd (std::move (abfd))
847   {
848   }
849
850   /* Name of the file.  */
851   const char *name;
852
853   /* File format version.  */
854   int version = 0;
855
856   /* The bfd.  */
857   gdb_bfd_ref_ptr dbfd;
858
859   /* Section info for this file.  */
860   struct dwp_sections sections {};
861
862   /* Table of CUs in the file.  */
863   const struct dwp_hash_table *cus = nullptr;
864
865   /* Table of TUs in the file.  */
866   const struct dwp_hash_table *tus = nullptr;
867
868   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
869   htab_t loaded_cus {};
870   htab_t loaded_tus {};
871
872   /* Table to map ELF section numbers to their sections.
873      This is only needed for the DWP V1 file format.  */
874   unsigned int num_sections = 0;
875   asection **elf_sections = nullptr;
876 };
877
878 /* This represents a '.dwz' file.  */
879
880 struct dwz_file
881 {
882   dwz_file (gdb_bfd_ref_ptr &&bfd)
883     : dwz_bfd (std::move (bfd))
884   {
885   }
886
887   /* A dwz file can only contain a few sections.  */
888   struct dwarf2_section_info abbrev {};
889   struct dwarf2_section_info info {};
890   struct dwarf2_section_info str {};
891   struct dwarf2_section_info line {};
892   struct dwarf2_section_info macro {};
893   struct dwarf2_section_info gdb_index {};
894   struct dwarf2_section_info debug_names {};
895
896   /* The dwz's BFD.  */
897   gdb_bfd_ref_ptr dwz_bfd;
898
899   /* If we loaded the index from an external file, this contains the
900      resources associated to the open file, memory mapping, etc.  */
901   std::unique_ptr<index_cache_resource> index_cache_res;
902 };
903
904 /* Struct used to pass misc. parameters to read_die_and_children, et
905    al.  which are used for both .debug_info and .debug_types dies.
906    All parameters here are unchanging for the life of the call.  This
907    struct exists to abstract away the constant parameters of die reading.  */
908
909 struct die_reader_specs
910 {
911   /* The bfd of die_section.  */
912   bfd* abfd;
913
914   /* The CU of the DIE we are parsing.  */
915   struct dwarf2_cu *cu;
916
917   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
918   struct dwo_file *dwo_file;
919
920   /* The section the die comes from.
921      This is either .debug_info or .debug_types, or the .dwo variants.  */
922   struct dwarf2_section_info *die_section;
923
924   /* die_section->buffer.  */
925   const gdb_byte *buffer;
926
927   /* The end of the buffer.  */
928   const gdb_byte *buffer_end;
929
930   /* The value of the DW_AT_comp_dir attribute.  */
931   const char *comp_dir;
932
933   /* The abbreviation table to use when reading the DIEs.  */
934   struct abbrev_table *abbrev_table;
935 };
936
937 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
938 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
939                                       const gdb_byte *info_ptr,
940                                       struct die_info *comp_unit_die,
941                                       int has_children,
942                                       void *data);
943
944 /* A 1-based directory index.  This is a strong typedef to prevent
945    accidentally using a directory index as a 0-based index into an
946    array/vector.  */
947 enum class dir_index : unsigned int {};
948
949 /* Likewise, a 1-based file name index.  */
950 enum class file_name_index : unsigned int {};
951
952 struct file_entry
953 {
954   file_entry () = default;
955
956   file_entry (const char *name_, dir_index d_index_,
957               unsigned int mod_time_, unsigned int length_)
958     : name (name_),
959       d_index (d_index_),
960       mod_time (mod_time_),
961       length (length_)
962   {}
963
964   /* Return the include directory at D_INDEX stored in LH.  Returns
965      NULL if D_INDEX is out of bounds.  */
966   const char *include_dir (const line_header *lh) const;
967
968   /* The file name.  Note this is an observing pointer.  The memory is
969      owned by debug_line_buffer.  */
970   const char *name {};
971
972   /* The directory index (1-based).  */
973   dir_index d_index {};
974
975   unsigned int mod_time {};
976
977   unsigned int length {};
978
979   /* True if referenced by the Line Number Program.  */
980   bool included_p {};
981
982   /* The associated symbol table, if any.  */
983   struct symtab *symtab {};
984 };
985
986 /* The line number information for a compilation unit (found in the
987    .debug_line section) begins with a "statement program header",
988    which contains the following information.  */
989 struct line_header
990 {
991   line_header ()
992     : offset_in_dwz {}
993   {}
994
995   /* Add an entry to the include directory table.  */
996   void add_include_dir (const char *include_dir);
997
998   /* Add an entry to the file name table.  */
999   void add_file_name (const char *name, dir_index d_index,
1000                       unsigned int mod_time, unsigned int length);
1001
1002   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
1003      is out of bounds.  */
1004   const char *include_dir_at (dir_index index) const
1005   {
1006     /* Convert directory index number (1-based) to vector index
1007        (0-based).  */
1008     size_t vec_index = to_underlying (index) - 1;
1009
1010     if (vec_index >= include_dirs.size ())
1011       return NULL;
1012     return include_dirs[vec_index];
1013   }
1014
1015   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
1016      is out of bounds.  */
1017   file_entry *file_name_at (file_name_index index)
1018   {
1019     /* Convert file name index number (1-based) to vector index
1020        (0-based).  */
1021     size_t vec_index = to_underlying (index) - 1;
1022
1023     if (vec_index >= file_names.size ())
1024       return NULL;
1025     return &file_names[vec_index];
1026   }
1027
1028   /* Offset of line number information in .debug_line section.  */
1029   sect_offset sect_off {};
1030
1031   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1032   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1033
1034   unsigned int total_length {};
1035   unsigned short version {};
1036   unsigned int header_length {};
1037   unsigned char minimum_instruction_length {};
1038   unsigned char maximum_ops_per_instruction {};
1039   unsigned char default_is_stmt {};
1040   int line_base {};
1041   unsigned char line_range {};
1042   unsigned char opcode_base {};
1043
1044   /* standard_opcode_lengths[i] is the number of operands for the
1045      standard opcode whose value is i.  This means that
1046      standard_opcode_lengths[0] is unused, and the last meaningful
1047      element is standard_opcode_lengths[opcode_base - 1].  */
1048   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1049
1050   /* The include_directories table.  Note these are observing
1051      pointers.  The memory is owned by debug_line_buffer.  */
1052   std::vector<const char *> include_dirs;
1053
1054   /* The file_names table.  */
1055   std::vector<file_entry> file_names;
1056
1057   /* The start and end of the statement program following this
1058      header.  These point into dwarf2_per_objfile->line_buffer.  */
1059   const gdb_byte *statement_program_start {}, *statement_program_end {};
1060 };
1061
1062 typedef std::unique_ptr<line_header> line_header_up;
1063
1064 const char *
1065 file_entry::include_dir (const line_header *lh) const
1066 {
1067   return lh->include_dir_at (d_index);
1068 }
1069
1070 /* When we construct a partial symbol table entry we only
1071    need this much information.  */
1072 struct partial_die_info : public allocate_on_obstack
1073   {
1074     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1075
1076     /* Disable assign but still keep copy ctor, which is needed
1077        load_partial_dies.   */
1078     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1079
1080     /* Adjust the partial die before generating a symbol for it.  This
1081        function may set the is_external flag or change the DIE's
1082        name.  */
1083     void fixup (struct dwarf2_cu *cu);
1084
1085     /* Read a minimal amount of information into the minimal die
1086        structure.  */
1087     const gdb_byte *read (const struct die_reader_specs *reader,
1088                           const struct abbrev_info &abbrev,
1089                           const gdb_byte *info_ptr);
1090
1091     /* Offset of this DIE.  */
1092     const sect_offset sect_off;
1093
1094     /* DWARF-2 tag for this DIE.  */
1095     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1096
1097     /* Assorted flags describing the data found in this DIE.  */
1098     const unsigned int has_children : 1;
1099
1100     unsigned int is_external : 1;
1101     unsigned int is_declaration : 1;
1102     unsigned int has_type : 1;
1103     unsigned int has_specification : 1;
1104     unsigned int has_pc_info : 1;
1105     unsigned int may_be_inlined : 1;
1106
1107     /* This DIE has been marked DW_AT_main_subprogram.  */
1108     unsigned int main_subprogram : 1;
1109
1110     /* Flag set if the SCOPE field of this structure has been
1111        computed.  */
1112     unsigned int scope_set : 1;
1113
1114     /* Flag set if the DIE has a byte_size attribute.  */
1115     unsigned int has_byte_size : 1;
1116
1117     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1118     unsigned int has_const_value : 1;
1119
1120     /* Flag set if any of the DIE's children are template arguments.  */
1121     unsigned int has_template_arguments : 1;
1122
1123     /* Flag set if fixup has been called on this die.  */
1124     unsigned int fixup_called : 1;
1125
1126     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1127     unsigned int is_dwz : 1;
1128
1129     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1130     unsigned int spec_is_dwz : 1;
1131
1132     /* The name of this DIE.  Normally the value of DW_AT_name, but
1133        sometimes a default name for unnamed DIEs.  */
1134     const char *name = nullptr;
1135
1136     /* The linkage name, if present.  */
1137     const char *linkage_name = nullptr;
1138
1139     /* The scope to prepend to our children.  This is generally
1140        allocated on the comp_unit_obstack, so will disappear
1141        when this compilation unit leaves the cache.  */
1142     const char *scope = nullptr;
1143
1144     /* Some data associated with the partial DIE.  The tag determines
1145        which field is live.  */
1146     union
1147     {
1148       /* The location description associated with this DIE, if any.  */
1149       struct dwarf_block *locdesc;
1150       /* The offset of an import, for DW_TAG_imported_unit.  */
1151       sect_offset sect_off;
1152     } d {};
1153
1154     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1155     CORE_ADDR lowpc = 0;
1156     CORE_ADDR highpc = 0;
1157
1158     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1159        DW_AT_sibling, if any.  */
1160     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1161        could return DW_AT_sibling values to its caller load_partial_dies.  */
1162     const gdb_byte *sibling = nullptr;
1163
1164     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1165        DW_AT_specification (or DW_AT_abstract_origin or
1166        DW_AT_extension).  */
1167     sect_offset spec_offset {};
1168
1169     /* Pointers to this DIE's parent, first child, and next sibling,
1170        if any.  */
1171     struct partial_die_info *die_parent = nullptr;
1172     struct partial_die_info *die_child = nullptr;
1173     struct partial_die_info *die_sibling = nullptr;
1174
1175     friend struct partial_die_info *
1176     dwarf2_cu::find_partial_die (sect_offset sect_off);
1177
1178   private:
1179     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1180     partial_die_info (sect_offset sect_off)
1181       : partial_die_info (sect_off, DW_TAG_padding, 0)
1182     {
1183     }
1184
1185     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1186                       int has_children_)
1187       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1188     {
1189       is_external = 0;
1190       is_declaration = 0;
1191       has_type = 0;
1192       has_specification = 0;
1193       has_pc_info = 0;
1194       may_be_inlined = 0;
1195       main_subprogram = 0;
1196       scope_set = 0;
1197       has_byte_size = 0;
1198       has_const_value = 0;
1199       has_template_arguments = 0;
1200       fixup_called = 0;
1201       is_dwz = 0;
1202       spec_is_dwz = 0;
1203     }
1204   };
1205
1206 /* This data structure holds the information of an abbrev.  */
1207 struct abbrev_info
1208   {
1209     unsigned int number;        /* number identifying abbrev */
1210     enum dwarf_tag tag;         /* dwarf tag */
1211     unsigned short has_children;                /* boolean */
1212     unsigned short num_attrs;   /* number of attributes */
1213     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1214     struct abbrev_info *next;   /* next in chain */
1215   };
1216
1217 struct attr_abbrev
1218   {
1219     ENUM_BITFIELD(dwarf_attribute) name : 16;
1220     ENUM_BITFIELD(dwarf_form) form : 16;
1221
1222     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1223     LONGEST implicit_const;
1224   };
1225
1226 /* Size of abbrev_table.abbrev_hash_table.  */
1227 #define ABBREV_HASH_SIZE 121
1228
1229 /* Top level data structure to contain an abbreviation table.  */
1230
1231 struct abbrev_table
1232 {
1233   explicit abbrev_table (sect_offset off)
1234     : sect_off (off)
1235   {
1236     m_abbrevs =
1237       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1238     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1239   }
1240
1241   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1242
1243   /* Allocate space for a struct abbrev_info object in
1244      ABBREV_TABLE.  */
1245   struct abbrev_info *alloc_abbrev ();
1246
1247   /* Add an abbreviation to the table.  */
1248   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1249
1250   /* Look up an abbrev in the table.
1251      Returns NULL if the abbrev is not found.  */
1252
1253   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1254
1255
1256   /* Where the abbrev table came from.
1257      This is used as a sanity check when the table is used.  */
1258   const sect_offset sect_off;
1259
1260   /* Storage for the abbrev table.  */
1261   auto_obstack abbrev_obstack;
1262
1263 private:
1264
1265   /* Hash table of abbrevs.
1266      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1267      It could be statically allocated, but the previous code didn't so we
1268      don't either.  */
1269   struct abbrev_info **m_abbrevs;
1270 };
1271
1272 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1273
1274 /* Attributes have a name and a value.  */
1275 struct attribute
1276   {
1277     ENUM_BITFIELD(dwarf_attribute) name : 16;
1278     ENUM_BITFIELD(dwarf_form) form : 15;
1279
1280     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1281        field should be in u.str (existing only for DW_STRING) but it is kept
1282        here for better struct attribute alignment.  */
1283     unsigned int string_is_canonical : 1;
1284
1285     union
1286       {
1287         const char *str;
1288         struct dwarf_block *blk;
1289         ULONGEST unsnd;
1290         LONGEST snd;
1291         CORE_ADDR addr;
1292         ULONGEST signature;
1293       }
1294     u;
1295   };
1296
1297 /* This data structure holds a complete die structure.  */
1298 struct die_info
1299   {
1300     /* DWARF-2 tag for this DIE.  */
1301     ENUM_BITFIELD(dwarf_tag) tag : 16;
1302
1303     /* Number of attributes */
1304     unsigned char num_attrs;
1305
1306     /* True if we're presently building the full type name for the
1307        type derived from this DIE.  */
1308     unsigned char building_fullname : 1;
1309
1310     /* True if this die is in process.  PR 16581.  */
1311     unsigned char in_process : 1;
1312
1313     /* Abbrev number */
1314     unsigned int abbrev;
1315
1316     /* Offset in .debug_info or .debug_types section.  */
1317     sect_offset sect_off;
1318
1319     /* The dies in a compilation unit form an n-ary tree.  PARENT
1320        points to this die's parent; CHILD points to the first child of
1321        this node; and all the children of a given node are chained
1322        together via their SIBLING fields.  */
1323     struct die_info *child;     /* Its first child, if any.  */
1324     struct die_info *sibling;   /* Its next sibling, if any.  */
1325     struct die_info *parent;    /* Its parent, if any.  */
1326
1327     /* An array of attributes, with NUM_ATTRS elements.  There may be
1328        zero, but it's not common and zero-sized arrays are not
1329        sufficiently portable C.  */
1330     struct attribute attrs[1];
1331   };
1332
1333 /* Get at parts of an attribute structure.  */
1334
1335 #define DW_STRING(attr)    ((attr)->u.str)
1336 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1337 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1338 #define DW_BLOCK(attr)     ((attr)->u.blk)
1339 #define DW_SND(attr)       ((attr)->u.snd)
1340 #define DW_ADDR(attr)      ((attr)->u.addr)
1341 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1342
1343 /* Blocks are a bunch of untyped bytes.  */
1344 struct dwarf_block
1345   {
1346     size_t size;
1347
1348     /* Valid only if SIZE is not zero.  */
1349     const gdb_byte *data;
1350   };
1351
1352 #ifndef ATTR_ALLOC_CHUNK
1353 #define ATTR_ALLOC_CHUNK 4
1354 #endif
1355
1356 /* Allocate fields for structs, unions and enums in this size.  */
1357 #ifndef DW_FIELD_ALLOC_CHUNK
1358 #define DW_FIELD_ALLOC_CHUNK 4
1359 #endif
1360
1361 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1362    but this would require a corresponding change in unpack_field_as_long
1363    and friends.  */
1364 static int bits_per_byte = 8;
1365
1366 /* When reading a variant or variant part, we track a bit more
1367    information about the field, and store it in an object of this
1368    type.  */
1369
1370 struct variant_field
1371 {
1372   /* If we see a DW_TAG_variant, then this will be the discriminant
1373      value.  */
1374   ULONGEST discriminant_value;
1375   /* If we see a DW_TAG_variant, then this will be set if this is the
1376      default branch.  */
1377   bool default_branch;
1378   /* While reading a DW_TAG_variant_part, this will be set if this
1379      field is the discriminant.  */
1380   bool is_discriminant;
1381 };
1382
1383 struct nextfield
1384 {
1385   int accessibility = 0;
1386   int virtuality = 0;
1387   /* Extra information to describe a variant or variant part.  */
1388   struct variant_field variant {};
1389   struct field field {};
1390 };
1391
1392 struct fnfieldlist
1393 {
1394   const char *name = nullptr;
1395   std::vector<struct fn_field> fnfields;
1396 };
1397
1398 /* The routines that read and process dies for a C struct or C++ class
1399    pass lists of data member fields and lists of member function fields
1400    in an instance of a field_info structure, as defined below.  */
1401 struct field_info
1402   {
1403     /* List of data member and baseclasses fields.  */
1404     std::vector<struct nextfield> fields;
1405     std::vector<struct nextfield> baseclasses;
1406
1407     /* Number of fields (including baseclasses).  */
1408     int nfields = 0;
1409
1410     /* Set if the accesibility of one of the fields is not public.  */
1411     int non_public_fields = 0;
1412
1413     /* Member function fieldlist array, contains name of possibly overloaded
1414        member function, number of overloaded member functions and a pointer
1415        to the head of the member function field chain.  */
1416     std::vector<struct fnfieldlist> fnfieldlists;
1417
1418     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1419        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1420     std::vector<struct decl_field> typedef_field_list;
1421
1422     /* Nested types defined by this class and the number of elements in this
1423        list.  */
1424     std::vector<struct decl_field> nested_types_list;
1425   };
1426
1427 /* One item on the queue of compilation units to read in full symbols
1428    for.  */
1429 struct dwarf2_queue_item
1430 {
1431   struct dwarf2_per_cu_data *per_cu;
1432   enum language pretend_language;
1433   struct dwarf2_queue_item *next;
1434 };
1435
1436 /* The current queue.  */
1437 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1438
1439 /* Loaded secondary compilation units are kept in memory until they
1440    have not been referenced for the processing of this many
1441    compilation units.  Set this to zero to disable caching.  Cache
1442    sizes of up to at least twenty will improve startup time for
1443    typical inter-CU-reference binaries, at an obvious memory cost.  */
1444 static int dwarf_max_cache_age = 5;
1445 static void
1446 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1447                           struct cmd_list_element *c, const char *value)
1448 {
1449   fprintf_filtered (file, _("The upper bound on the age of cached "
1450                             "DWARF compilation units is %s.\n"),
1451                     value);
1452 }
1453 \f
1454 /* local function prototypes */
1455
1456 static const char *get_section_name (const struct dwarf2_section_info *);
1457
1458 static const char *get_section_file_name (const struct dwarf2_section_info *);
1459
1460 static void dwarf2_find_base_address (struct die_info *die,
1461                                       struct dwarf2_cu *cu);
1462
1463 static struct partial_symtab *create_partial_symtab
1464   (struct dwarf2_per_cu_data *per_cu, const char *name);
1465
1466 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1467                                         const gdb_byte *info_ptr,
1468                                         struct die_info *type_unit_die,
1469                                         int has_children, void *data);
1470
1471 static void dwarf2_build_psymtabs_hard
1472   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1473
1474 static void scan_partial_symbols (struct partial_die_info *,
1475                                   CORE_ADDR *, CORE_ADDR *,
1476                                   int, struct dwarf2_cu *);
1477
1478 static void add_partial_symbol (struct partial_die_info *,
1479                                 struct dwarf2_cu *);
1480
1481 static void add_partial_namespace (struct partial_die_info *pdi,
1482                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1483                                    int set_addrmap, struct dwarf2_cu *cu);
1484
1485 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1486                                 CORE_ADDR *highpc, int set_addrmap,
1487                                 struct dwarf2_cu *cu);
1488
1489 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1490                                      struct dwarf2_cu *cu);
1491
1492 static void add_partial_subprogram (struct partial_die_info *pdi,
1493                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1494                                     int need_pc, struct dwarf2_cu *cu);
1495
1496 static void dwarf2_read_symtab (struct partial_symtab *,
1497                                 struct objfile *);
1498
1499 static void psymtab_to_symtab_1 (struct partial_symtab *);
1500
1501 static abbrev_table_up abbrev_table_read_table
1502   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1503    sect_offset);
1504
1505 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1506
1507 static struct partial_die_info *load_partial_dies
1508   (const struct die_reader_specs *, const gdb_byte *, int);
1509
1510 /* A pair of partial_die_info and compilation unit.  */
1511 struct cu_partial_die_info
1512 {
1513   /* The compilation unit of the partial_die_info.  */
1514   struct dwarf2_cu *cu;
1515   /* A partial_die_info.  */
1516   struct partial_die_info *pdi;
1517
1518   cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
1519     : cu (cu),
1520       pdi (pdi)
1521   { /* Nothhing.  */ }
1522
1523 private:
1524   cu_partial_die_info () = delete;
1525 };
1526
1527 static const struct cu_partial_die_info find_partial_die (sect_offset, int,
1528                                                           struct dwarf2_cu *);
1529
1530 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1531                                        struct attribute *, struct attr_abbrev *,
1532                                        const gdb_byte *);
1533
1534 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1535
1536 static int read_1_signed_byte (bfd *, const gdb_byte *);
1537
1538 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1539
1540 /* Read the next three bytes (little-endian order) as an unsigned integer.  */
1541 static unsigned int read_3_bytes (bfd *, const gdb_byte *);
1542
1543 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1544
1545 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1546
1547 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1548                                unsigned int *);
1549
1550 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1551
1552 static LONGEST read_checked_initial_length_and_offset
1553   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1554    unsigned int *, unsigned int *);
1555
1556 static LONGEST read_offset (bfd *, const gdb_byte *,
1557                             const struct comp_unit_head *,
1558                             unsigned int *);
1559
1560 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1561
1562 static sect_offset read_abbrev_offset
1563   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1564    struct dwarf2_section_info *, sect_offset);
1565
1566 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1567
1568 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1569
1570 static const char *read_indirect_string
1571   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1572    const struct comp_unit_head *, unsigned int *);
1573
1574 static const char *read_indirect_line_string
1575   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1576    const struct comp_unit_head *, unsigned int *);
1577
1578 static const char *read_indirect_string_at_offset
1579   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1580    LONGEST str_offset);
1581
1582 static const char *read_indirect_string_from_dwz
1583   (struct objfile *objfile, struct dwz_file *, LONGEST);
1584
1585 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1586
1587 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1588                                               const gdb_byte *,
1589                                               unsigned int *);
1590
1591 static const char *read_str_index (const struct die_reader_specs *reader,
1592                                    ULONGEST str_index);
1593
1594 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1595
1596 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1597                                       struct dwarf2_cu *);
1598
1599 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1600                                                 unsigned int);
1601
1602 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1603                                        struct dwarf2_cu *cu);
1604
1605 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1606                                struct dwarf2_cu *cu);
1607
1608 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1609
1610 static struct die_info *die_specification (struct die_info *die,
1611                                            struct dwarf2_cu **);
1612
1613 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1614                                                 struct dwarf2_cu *cu);
1615
1616 static void dwarf_decode_lines (struct line_header *, const char *,
1617                                 struct dwarf2_cu *, struct partial_symtab *,
1618                                 CORE_ADDR, int decode_mapping);
1619
1620 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1621                                   const char *);
1622
1623 static struct symbol *new_symbol (struct die_info *, struct type *,
1624                                   struct dwarf2_cu *, struct symbol * = NULL);
1625
1626 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1627                                 struct dwarf2_cu *);
1628
1629 static void dwarf2_const_value_attr (const struct attribute *attr,
1630                                      struct type *type,
1631                                      const char *name,
1632                                      struct obstack *obstack,
1633                                      struct dwarf2_cu *cu, LONGEST *value,
1634                                      const gdb_byte **bytes,
1635                                      struct dwarf2_locexpr_baton **baton);
1636
1637 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1638
1639 static int need_gnat_info (struct dwarf2_cu *);
1640
1641 static struct type *die_descriptive_type (struct die_info *,
1642                                           struct dwarf2_cu *);
1643
1644 static void set_descriptive_type (struct type *, struct die_info *,
1645                                   struct dwarf2_cu *);
1646
1647 static struct type *die_containing_type (struct die_info *,
1648                                          struct dwarf2_cu *);
1649
1650 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1651                                      struct dwarf2_cu *);
1652
1653 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1654
1655 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1656
1657 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1658
1659 static char *typename_concat (struct obstack *obs, const char *prefix,
1660                               const char *suffix, int physname,
1661                               struct dwarf2_cu *cu);
1662
1663 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1664
1665 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1666
1667 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1668
1669 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1670
1671 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1672
1673 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1674
1675 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1676                                struct dwarf2_cu *, struct partial_symtab *);
1677
1678 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1679    values.  Keep the items ordered with increasing constraints compliance.  */
1680 enum pc_bounds_kind
1681 {
1682   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1683   PC_BOUNDS_NOT_PRESENT,
1684
1685   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1686      were present but they do not form a valid range of PC addresses.  */
1687   PC_BOUNDS_INVALID,
1688
1689   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1690   PC_BOUNDS_RANGES,
1691
1692   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1693   PC_BOUNDS_HIGH_LOW,
1694 };
1695
1696 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1697                                                  CORE_ADDR *, CORE_ADDR *,
1698                                                  struct dwarf2_cu *,
1699                                                  struct partial_symtab *);
1700
1701 static void get_scope_pc_bounds (struct die_info *,
1702                                  CORE_ADDR *, CORE_ADDR *,
1703                                  struct dwarf2_cu *);
1704
1705 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1706                                         CORE_ADDR, struct dwarf2_cu *);
1707
1708 static void dwarf2_add_field (struct field_info *, struct die_info *,
1709                               struct dwarf2_cu *);
1710
1711 static void dwarf2_attach_fields_to_type (struct field_info *,
1712                                           struct type *, struct dwarf2_cu *);
1713
1714 static void dwarf2_add_member_fn (struct field_info *,
1715                                   struct die_info *, struct type *,
1716                                   struct dwarf2_cu *);
1717
1718 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1719                                              struct type *,
1720                                              struct dwarf2_cu *);
1721
1722 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1723
1724 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1725
1726 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1727
1728 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1729
1730 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1731
1732 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1733
1734 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1735
1736 static struct type *read_module_type (struct die_info *die,
1737                                       struct dwarf2_cu *cu);
1738
1739 static const char *namespace_name (struct die_info *die,
1740                                    int *is_anonymous, struct dwarf2_cu *);
1741
1742 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1743
1744 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1745
1746 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1747                                                        struct dwarf2_cu *);
1748
1749 static struct die_info *read_die_and_siblings_1
1750   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1751    struct die_info *);
1752
1753 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1754                                                const gdb_byte *info_ptr,
1755                                                const gdb_byte **new_info_ptr,
1756                                                struct die_info *parent);
1757
1758 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1759                                         struct die_info **, const gdb_byte *,
1760                                         int *, int);
1761
1762 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1763                                       struct die_info **, const gdb_byte *,
1764                                       int *);
1765
1766 static void process_die (struct die_info *, struct dwarf2_cu *);
1767
1768 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1769                                              struct obstack *);
1770
1771 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1772
1773 static const char *dwarf2_full_name (const char *name,
1774                                      struct die_info *die,
1775                                      struct dwarf2_cu *cu);
1776
1777 static const char *dwarf2_physname (const char *name, struct die_info *die,
1778                                     struct dwarf2_cu *cu);
1779
1780 static struct die_info *dwarf2_extension (struct die_info *die,
1781                                           struct dwarf2_cu **);
1782
1783 static const char *dwarf_tag_name (unsigned int);
1784
1785 static const char *dwarf_attr_name (unsigned int);
1786
1787 static const char *dwarf_form_name (unsigned int);
1788
1789 static const char *dwarf_bool_name (unsigned int);
1790
1791 static const char *dwarf_type_encoding_name (unsigned int);
1792
1793 static struct die_info *sibling_die (struct die_info *);
1794
1795 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1796
1797 static void dump_die_for_error (struct die_info *);
1798
1799 static void dump_die_1 (struct ui_file *, int level, int max_level,
1800                         struct die_info *);
1801
1802 /*static*/ void dump_die (struct die_info *, int max_level);
1803
1804 static void store_in_ref_table (struct die_info *,
1805                                 struct dwarf2_cu *);
1806
1807 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1808
1809 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1810
1811 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1812                                                const struct attribute *,
1813                                                struct dwarf2_cu **);
1814
1815 static struct die_info *follow_die_ref (struct die_info *,
1816                                         const struct attribute *,
1817                                         struct dwarf2_cu **);
1818
1819 static struct die_info *follow_die_sig (struct die_info *,
1820                                         const struct attribute *,
1821                                         struct dwarf2_cu **);
1822
1823 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1824                                          struct dwarf2_cu *);
1825
1826 static struct type *get_DW_AT_signature_type (struct die_info *,
1827                                               const struct attribute *,
1828                                               struct dwarf2_cu *);
1829
1830 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1831
1832 static void read_signatured_type (struct signatured_type *);
1833
1834 static int attr_to_dynamic_prop (const struct attribute *attr,
1835                                  struct die_info *die, struct dwarf2_cu *cu,
1836                                  struct dynamic_prop *prop);
1837
1838 /* memory allocation interface */
1839
1840 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1841
1842 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1843
1844 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1845
1846 static int attr_form_is_block (const struct attribute *);
1847
1848 static int attr_form_is_section_offset (const struct attribute *);
1849
1850 static int attr_form_is_constant (const struct attribute *);
1851
1852 static int attr_form_is_ref (const struct attribute *);
1853
1854 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1855                                    struct dwarf2_loclist_baton *baton,
1856                                    const struct attribute *attr);
1857
1858 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1859                                          struct symbol *sym,
1860                                          struct dwarf2_cu *cu,
1861                                          int is_block);
1862
1863 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1864                                      const gdb_byte *info_ptr,
1865                                      struct abbrev_info *abbrev);
1866
1867 static hashval_t partial_die_hash (const void *item);
1868
1869 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1870
1871 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1872   (sect_offset sect_off, unsigned int offset_in_dwz,
1873    struct dwarf2_per_objfile *dwarf2_per_objfile);
1874
1875 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1876                                    struct die_info *comp_unit_die,
1877                                    enum language pretend_language);
1878
1879 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1880
1881 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1882
1883 static struct type *set_die_type (struct die_info *, struct type *,
1884                                   struct dwarf2_cu *);
1885
1886 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1887
1888 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1889
1890 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1891                                  enum language);
1892
1893 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1894                                     enum language);
1895
1896 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1897                                     enum language);
1898
1899 static void dwarf2_add_dependence (struct dwarf2_cu *,
1900                                    struct dwarf2_per_cu_data *);
1901
1902 static void dwarf2_mark (struct dwarf2_cu *);
1903
1904 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1905
1906 static struct type *get_die_type_at_offset (sect_offset,
1907                                             struct dwarf2_per_cu_data *);
1908
1909 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1910
1911 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1912                              enum language pretend_language);
1913
1914 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1915
1916 /* Class, the destructor of which frees all allocated queue entries.  This
1917    will only have work to do if an error was thrown while processing the
1918    dwarf.  If no error was thrown then the queue entries should have all
1919    been processed, and freed, as we went along.  */
1920
1921 class dwarf2_queue_guard
1922 {
1923 public:
1924   dwarf2_queue_guard () = default;
1925
1926   /* Free any entries remaining on the queue.  There should only be
1927      entries left if we hit an error while processing the dwarf.  */
1928   ~dwarf2_queue_guard ()
1929   {
1930     struct dwarf2_queue_item *item, *last;
1931
1932     item = dwarf2_queue;
1933     while (item)
1934       {
1935         /* Anything still marked queued is likely to be in an
1936            inconsistent state, so discard it.  */
1937         if (item->per_cu->queued)
1938           {
1939             if (item->per_cu->cu != NULL)
1940               free_one_cached_comp_unit (item->per_cu);
1941             item->per_cu->queued = 0;
1942           }
1943
1944         last = item;
1945         item = item->next;
1946         xfree (last);
1947       }
1948
1949     dwarf2_queue = dwarf2_queue_tail = NULL;
1950   }
1951 };
1952
1953 /* The return type of find_file_and_directory.  Note, the enclosed
1954    string pointers are only valid while this object is valid.  */
1955
1956 struct file_and_directory
1957 {
1958   /* The filename.  This is never NULL.  */
1959   const char *name;
1960
1961   /* The compilation directory.  NULL if not known.  If we needed to
1962      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1963      points directly to the DW_AT_comp_dir string attribute owned by
1964      the obstack that owns the DIE.  */
1965   const char *comp_dir;
1966
1967   /* If we needed to build a new string for comp_dir, this is what
1968      owns the storage.  */
1969   std::string comp_dir_storage;
1970 };
1971
1972 static file_and_directory find_file_and_directory (struct die_info *die,
1973                                                    struct dwarf2_cu *cu);
1974
1975 static char *file_full_name (int file, struct line_header *lh,
1976                              const char *comp_dir);
1977
1978 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1979 enum class rcuh_kind { COMPILE, TYPE };
1980
1981 static const gdb_byte *read_and_check_comp_unit_head
1982   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1983    struct comp_unit_head *header,
1984    struct dwarf2_section_info *section,
1985    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1986    rcuh_kind section_kind);
1987
1988 static void init_cutu_and_read_dies
1989   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1990    int use_existing_cu, int keep, bool skip_partial,
1991    die_reader_func_ftype *die_reader_func, void *data);
1992
1993 static void init_cutu_and_read_dies_simple
1994   (struct dwarf2_per_cu_data *this_cu,
1995    die_reader_func_ftype *die_reader_func, void *data);
1996
1997 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1998
1999 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
2000
2001 static struct dwo_unit *lookup_dwo_unit_in_dwp
2002   (struct dwarf2_per_objfile *dwarf2_per_objfile,
2003    struct dwp_file *dwp_file, const char *comp_dir,
2004    ULONGEST signature, int is_debug_types);
2005
2006 static struct dwp_file *get_dwp_file
2007   (struct dwarf2_per_objfile *dwarf2_per_objfile);
2008
2009 static struct dwo_unit *lookup_dwo_comp_unit
2010   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
2011
2012 static struct dwo_unit *lookup_dwo_type_unit
2013   (struct signatured_type *, const char *, const char *);
2014
2015 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
2016
2017 static void free_dwo_file (struct dwo_file *);
2018
2019 /* A unique_ptr helper to free a dwo_file.  */
2020
2021 struct dwo_file_deleter
2022 {
2023   void operator() (struct dwo_file *df) const
2024   {
2025     free_dwo_file (df);
2026   }
2027 };
2028
2029 /* A unique pointer to a dwo_file.  */
2030
2031 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
2032
2033 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2034
2035 static void check_producer (struct dwarf2_cu *cu);
2036
2037 static void free_line_header_voidp (void *arg);
2038 \f
2039 /* Various complaints about symbol reading that don't abort the process.  */
2040
2041 static void
2042 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2043 {
2044   complaint (_("statement list doesn't fit in .debug_line section"));
2045 }
2046
2047 static void
2048 dwarf2_debug_line_missing_file_complaint (void)
2049 {
2050   complaint (_(".debug_line section has line data without a file"));
2051 }
2052
2053 static void
2054 dwarf2_debug_line_missing_end_sequence_complaint (void)
2055 {
2056   complaint (_(".debug_line section has line "
2057                "program sequence without an end"));
2058 }
2059
2060 static void
2061 dwarf2_complex_location_expr_complaint (void)
2062 {
2063   complaint (_("location expression too complex"));
2064 }
2065
2066 static void
2067 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2068                                               int arg3)
2069 {
2070   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2071              arg1, arg2, arg3);
2072 }
2073
2074 static void
2075 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2076 {
2077   complaint (_("debug info runs off end of %s section"
2078                " [in module %s]"),
2079              get_section_name (section),
2080              get_section_file_name (section));
2081 }
2082
2083 static void
2084 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2085 {
2086   complaint (_("macro debug info contains a "
2087                "malformed macro definition:\n`%s'"),
2088              arg1);
2089 }
2090
2091 static void
2092 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2093 {
2094   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2095              arg1, arg2);
2096 }
2097
2098 /* Hash function for line_header_hash.  */
2099
2100 static hashval_t
2101 line_header_hash (const struct line_header *ofs)
2102 {
2103   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2104 }
2105
2106 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2107
2108 static hashval_t
2109 line_header_hash_voidp (const void *item)
2110 {
2111   const struct line_header *ofs = (const struct line_header *) item;
2112
2113   return line_header_hash (ofs);
2114 }
2115
2116 /* Equality function for line_header_hash.  */
2117
2118 static int
2119 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2120 {
2121   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2122   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2123
2124   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2125           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2126 }
2127
2128 \f
2129
2130 /* Read the given attribute value as an address, taking the attribute's
2131    form into account.  */
2132
2133 static CORE_ADDR
2134 attr_value_as_address (struct attribute *attr)
2135 {
2136   CORE_ADDR addr;
2137
2138   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_addrx
2139       && attr->form != DW_FORM_GNU_addr_index)
2140     {
2141       /* Aside from a few clearly defined exceptions, attributes that
2142          contain an address must always be in DW_FORM_addr form.
2143          Unfortunately, some compilers happen to be violating this
2144          requirement by encoding addresses using other forms, such
2145          as DW_FORM_data4 for example.  For those broken compilers,
2146          we try to do our best, without any guarantee of success,
2147          to interpret the address correctly.  It would also be nice
2148          to generate a complaint, but that would require us to maintain
2149          a list of legitimate cases where a non-address form is allowed,
2150          as well as update callers to pass in at least the CU's DWARF
2151          version.  This is more overhead than what we're willing to
2152          expand for a pretty rare case.  */
2153       addr = DW_UNSND (attr);
2154     }
2155   else
2156     addr = DW_ADDR (attr);
2157
2158   return addr;
2159 }
2160
2161 /* See declaration.  */
2162
2163 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2164                                         const dwarf2_debug_sections *names)
2165   : objfile (objfile_)
2166 {
2167   if (names == NULL)
2168     names = &dwarf2_elf_names;
2169
2170   bfd *obfd = objfile->obfd;
2171
2172   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2173     locate_sections (obfd, sec, *names);
2174 }
2175
2176 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2177
2178 dwarf2_per_objfile::~dwarf2_per_objfile ()
2179 {
2180   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2181   free_cached_comp_units ();
2182
2183   if (quick_file_names_table)
2184     htab_delete (quick_file_names_table);
2185
2186   if (line_header_hash)
2187     htab_delete (line_header_hash);
2188
2189   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2190     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2191
2192   for (signatured_type *sig_type : all_type_units)
2193     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2194
2195   VEC_free (dwarf2_section_info_def, types);
2196
2197   if (dwo_files != NULL)
2198     free_dwo_files (dwo_files, objfile);
2199
2200   /* Everything else should be on the objfile obstack.  */
2201 }
2202
2203 /* See declaration.  */
2204
2205 void
2206 dwarf2_per_objfile::free_cached_comp_units ()
2207 {
2208   dwarf2_per_cu_data *per_cu = read_in_chain;
2209   dwarf2_per_cu_data **last_chain = &read_in_chain;
2210   while (per_cu != NULL)
2211     {
2212       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2213
2214       delete per_cu->cu;
2215       *last_chain = next_cu;
2216       per_cu = next_cu;
2217     }
2218 }
2219
2220 /* A helper class that calls free_cached_comp_units on
2221    destruction.  */
2222
2223 class free_cached_comp_units
2224 {
2225 public:
2226
2227   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2228     : m_per_objfile (per_objfile)
2229   {
2230   }
2231
2232   ~free_cached_comp_units ()
2233   {
2234     m_per_objfile->free_cached_comp_units ();
2235   }
2236
2237   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2238
2239 private:
2240
2241   dwarf2_per_objfile *m_per_objfile;
2242 };
2243
2244 /* Try to locate the sections we need for DWARF 2 debugging
2245    information and return true if we have enough to do something.
2246    NAMES points to the dwarf2 section names, or is NULL if the standard
2247    ELF names are used.  */
2248
2249 int
2250 dwarf2_has_info (struct objfile *objfile,
2251                  const struct dwarf2_debug_sections *names)
2252 {
2253   if (objfile->flags & OBJF_READNEVER)
2254     return 0;
2255
2256   struct dwarf2_per_objfile *dwarf2_per_objfile
2257     = get_dwarf2_per_objfile (objfile);
2258
2259   if (dwarf2_per_objfile == NULL)
2260     dwarf2_per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile,
2261                                                           names);
2262
2263   return (!dwarf2_per_objfile->info.is_virtual
2264           && dwarf2_per_objfile->info.s.section != NULL
2265           && !dwarf2_per_objfile->abbrev.is_virtual
2266           && dwarf2_per_objfile->abbrev.s.section != NULL);
2267 }
2268
2269 /* Return the containing section of virtual section SECTION.  */
2270
2271 static struct dwarf2_section_info *
2272 get_containing_section (const struct dwarf2_section_info *section)
2273 {
2274   gdb_assert (section->is_virtual);
2275   return section->s.containing_section;
2276 }
2277
2278 /* Return the bfd owner of SECTION.  */
2279
2280 static struct bfd *
2281 get_section_bfd_owner (const struct dwarf2_section_info *section)
2282 {
2283   if (section->is_virtual)
2284     {
2285       section = get_containing_section (section);
2286       gdb_assert (!section->is_virtual);
2287     }
2288   return section->s.section->owner;
2289 }
2290
2291 /* Return the bfd section of SECTION.
2292    Returns NULL if the section is not present.  */
2293
2294 static asection *
2295 get_section_bfd_section (const struct dwarf2_section_info *section)
2296 {
2297   if (section->is_virtual)
2298     {
2299       section = get_containing_section (section);
2300       gdb_assert (!section->is_virtual);
2301     }
2302   return section->s.section;
2303 }
2304
2305 /* Return the name of SECTION.  */
2306
2307 static const char *
2308 get_section_name (const struct dwarf2_section_info *section)
2309 {
2310   asection *sectp = get_section_bfd_section (section);
2311
2312   gdb_assert (sectp != NULL);
2313   return bfd_section_name (get_section_bfd_owner (section), sectp);
2314 }
2315
2316 /* Return the name of the file SECTION is in.  */
2317
2318 static const char *
2319 get_section_file_name (const struct dwarf2_section_info *section)
2320 {
2321   bfd *abfd = get_section_bfd_owner (section);
2322
2323   return bfd_get_filename (abfd);
2324 }
2325
2326 /* Return the id of SECTION.
2327    Returns 0 if SECTION doesn't exist.  */
2328
2329 static int
2330 get_section_id (const struct dwarf2_section_info *section)
2331 {
2332   asection *sectp = get_section_bfd_section (section);
2333
2334   if (sectp == NULL)
2335     return 0;
2336   return sectp->id;
2337 }
2338
2339 /* Return the flags of SECTION.
2340    SECTION (or containing section if this is a virtual section) must exist.  */
2341
2342 static int
2343 get_section_flags (const struct dwarf2_section_info *section)
2344 {
2345   asection *sectp = get_section_bfd_section (section);
2346
2347   gdb_assert (sectp != NULL);
2348   return bfd_get_section_flags (sectp->owner, sectp);
2349 }
2350
2351 /* When loading sections, we look either for uncompressed section or for
2352    compressed section names.  */
2353
2354 static int
2355 section_is_p (const char *section_name,
2356               const struct dwarf2_section_names *names)
2357 {
2358   if (names->normal != NULL
2359       && strcmp (section_name, names->normal) == 0)
2360     return 1;
2361   if (names->compressed != NULL
2362       && strcmp (section_name, names->compressed) == 0)
2363     return 1;
2364   return 0;
2365 }
2366
2367 /* See declaration.  */
2368
2369 void
2370 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2371                                      const dwarf2_debug_sections &names)
2372 {
2373   flagword aflag = bfd_get_section_flags (abfd, sectp);
2374
2375   if ((aflag & SEC_HAS_CONTENTS) == 0)
2376     {
2377     }
2378   else if (section_is_p (sectp->name, &names.info))
2379     {
2380       this->info.s.section = sectp;
2381       this->info.size = bfd_get_section_size (sectp);
2382     }
2383   else if (section_is_p (sectp->name, &names.abbrev))
2384     {
2385       this->abbrev.s.section = sectp;
2386       this->abbrev.size = bfd_get_section_size (sectp);
2387     }
2388   else if (section_is_p (sectp->name, &names.line))
2389     {
2390       this->line.s.section = sectp;
2391       this->line.size = bfd_get_section_size (sectp);
2392     }
2393   else if (section_is_p (sectp->name, &names.loc))
2394     {
2395       this->loc.s.section = sectp;
2396       this->loc.size = bfd_get_section_size (sectp);
2397     }
2398   else if (section_is_p (sectp->name, &names.loclists))
2399     {
2400       this->loclists.s.section = sectp;
2401       this->loclists.size = bfd_get_section_size (sectp);
2402     }
2403   else if (section_is_p (sectp->name, &names.macinfo))
2404     {
2405       this->macinfo.s.section = sectp;
2406       this->macinfo.size = bfd_get_section_size (sectp);
2407     }
2408   else if (section_is_p (sectp->name, &names.macro))
2409     {
2410       this->macro.s.section = sectp;
2411       this->macro.size = bfd_get_section_size (sectp);
2412     }
2413   else if (section_is_p (sectp->name, &names.str))
2414     {
2415       this->str.s.section = sectp;
2416       this->str.size = bfd_get_section_size (sectp);
2417     }
2418   else if (section_is_p (sectp->name, &names.line_str))
2419     {
2420       this->line_str.s.section = sectp;
2421       this->line_str.size = bfd_get_section_size (sectp);
2422     }
2423   else if (section_is_p (sectp->name, &names.addr))
2424     {
2425       this->addr.s.section = sectp;
2426       this->addr.size = bfd_get_section_size (sectp);
2427     }
2428   else if (section_is_p (sectp->name, &names.frame))
2429     {
2430       this->frame.s.section = sectp;
2431       this->frame.size = bfd_get_section_size (sectp);
2432     }
2433   else if (section_is_p (sectp->name, &names.eh_frame))
2434     {
2435       this->eh_frame.s.section = sectp;
2436       this->eh_frame.size = bfd_get_section_size (sectp);
2437     }
2438   else if (section_is_p (sectp->name, &names.ranges))
2439     {
2440       this->ranges.s.section = sectp;
2441       this->ranges.size = bfd_get_section_size (sectp);
2442     }
2443   else if (section_is_p (sectp->name, &names.rnglists))
2444     {
2445       this->rnglists.s.section = sectp;
2446       this->rnglists.size = bfd_get_section_size (sectp);
2447     }
2448   else if (section_is_p (sectp->name, &names.types))
2449     {
2450       struct dwarf2_section_info type_section;
2451
2452       memset (&type_section, 0, sizeof (type_section));
2453       type_section.s.section = sectp;
2454       type_section.size = bfd_get_section_size (sectp);
2455
2456       VEC_safe_push (dwarf2_section_info_def, this->types,
2457                      &type_section);
2458     }
2459   else if (section_is_p (sectp->name, &names.gdb_index))
2460     {
2461       this->gdb_index.s.section = sectp;
2462       this->gdb_index.size = bfd_get_section_size (sectp);
2463     }
2464   else if (section_is_p (sectp->name, &names.debug_names))
2465     {
2466       this->debug_names.s.section = sectp;
2467       this->debug_names.size = bfd_get_section_size (sectp);
2468     }
2469   else if (section_is_p (sectp->name, &names.debug_aranges))
2470     {
2471       this->debug_aranges.s.section = sectp;
2472       this->debug_aranges.size = bfd_get_section_size (sectp);
2473     }
2474
2475   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2476       && bfd_section_vma (abfd, sectp) == 0)
2477     this->has_section_at_zero = true;
2478 }
2479
2480 /* A helper function that decides whether a section is empty,
2481    or not present.  */
2482
2483 static int
2484 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2485 {
2486   if (section->is_virtual)
2487     return section->size == 0;
2488   return section->s.section == NULL || section->size == 0;
2489 }
2490
2491 /* See dwarf2read.h.  */
2492
2493 void
2494 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2495 {
2496   asection *sectp;
2497   bfd *abfd;
2498   gdb_byte *buf, *retbuf;
2499
2500   if (info->readin)
2501     return;
2502   info->buffer = NULL;
2503   info->readin = 1;
2504
2505   if (dwarf2_section_empty_p (info))
2506     return;
2507
2508   sectp = get_section_bfd_section (info);
2509
2510   /* If this is a virtual section we need to read in the real one first.  */
2511   if (info->is_virtual)
2512     {
2513       struct dwarf2_section_info *containing_section =
2514         get_containing_section (info);
2515
2516       gdb_assert (sectp != NULL);
2517       if ((sectp->flags & SEC_RELOC) != 0)
2518         {
2519           error (_("Dwarf Error: DWP format V2 with relocations is not"
2520                    " supported in section %s [in module %s]"),
2521                  get_section_name (info), get_section_file_name (info));
2522         }
2523       dwarf2_read_section (objfile, containing_section);
2524       /* Other code should have already caught virtual sections that don't
2525          fit.  */
2526       gdb_assert (info->virtual_offset + info->size
2527                   <= containing_section->size);
2528       /* If the real section is empty or there was a problem reading the
2529          section we shouldn't get here.  */
2530       gdb_assert (containing_section->buffer != NULL);
2531       info->buffer = containing_section->buffer + info->virtual_offset;
2532       return;
2533     }
2534
2535   /* If the section has relocations, we must read it ourselves.
2536      Otherwise we attach it to the BFD.  */
2537   if ((sectp->flags & SEC_RELOC) == 0)
2538     {
2539       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2540       return;
2541     }
2542
2543   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2544   info->buffer = buf;
2545
2546   /* When debugging .o files, we may need to apply relocations; see
2547      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2548      We never compress sections in .o files, so we only need to
2549      try this when the section is not compressed.  */
2550   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2551   if (retbuf != NULL)
2552     {
2553       info->buffer = retbuf;
2554       return;
2555     }
2556
2557   abfd = get_section_bfd_owner (info);
2558   gdb_assert (abfd != NULL);
2559
2560   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2561       || bfd_bread (buf, info->size, abfd) != info->size)
2562     {
2563       error (_("Dwarf Error: Can't read DWARF data"
2564                " in section %s [in module %s]"),
2565              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2566     }
2567 }
2568
2569 /* A helper function that returns the size of a section in a safe way.
2570    If you are positive that the section has been read before using the
2571    size, then it is safe to refer to the dwarf2_section_info object's
2572    "size" field directly.  In other cases, you must call this
2573    function, because for compressed sections the size field is not set
2574    correctly until the section has been read.  */
2575
2576 static bfd_size_type
2577 dwarf2_section_size (struct objfile *objfile,
2578                      struct dwarf2_section_info *info)
2579 {
2580   if (!info->readin)
2581     dwarf2_read_section (objfile, info);
2582   return info->size;
2583 }
2584
2585 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2586    SECTION_NAME.  */
2587
2588 void
2589 dwarf2_get_section_info (struct objfile *objfile,
2590                          enum dwarf2_section_enum sect,
2591                          asection **sectp, const gdb_byte **bufp,
2592                          bfd_size_type *sizep)
2593 {
2594   struct dwarf2_per_objfile *data = dwarf2_objfile_data_key.get (objfile);
2595   struct dwarf2_section_info *info;
2596
2597   /* We may see an objfile without any DWARF, in which case we just
2598      return nothing.  */
2599   if (data == NULL)
2600     {
2601       *sectp = NULL;
2602       *bufp = NULL;
2603       *sizep = 0;
2604       return;
2605     }
2606   switch (sect)
2607     {
2608     case DWARF2_DEBUG_FRAME:
2609       info = &data->frame;
2610       break;
2611     case DWARF2_EH_FRAME:
2612       info = &data->eh_frame;
2613       break;
2614     default:
2615       gdb_assert_not_reached ("unexpected section");
2616     }
2617
2618   dwarf2_read_section (objfile, info);
2619
2620   *sectp = get_section_bfd_section (info);
2621   *bufp = info->buffer;
2622   *sizep = info->size;
2623 }
2624
2625 /* A helper function to find the sections for a .dwz file.  */
2626
2627 static void
2628 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2629 {
2630   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2631
2632   /* Note that we only support the standard ELF names, because .dwz
2633      is ELF-only (at the time of writing).  */
2634   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2635     {
2636       dwz_file->abbrev.s.section = sectp;
2637       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2638     }
2639   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2640     {
2641       dwz_file->info.s.section = sectp;
2642       dwz_file->info.size = bfd_get_section_size (sectp);
2643     }
2644   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2645     {
2646       dwz_file->str.s.section = sectp;
2647       dwz_file->str.size = bfd_get_section_size (sectp);
2648     }
2649   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2650     {
2651       dwz_file->line.s.section = sectp;
2652       dwz_file->line.size = bfd_get_section_size (sectp);
2653     }
2654   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2655     {
2656       dwz_file->macro.s.section = sectp;
2657       dwz_file->macro.size = bfd_get_section_size (sectp);
2658     }
2659   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2660     {
2661       dwz_file->gdb_index.s.section = sectp;
2662       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2663     }
2664   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2665     {
2666       dwz_file->debug_names.s.section = sectp;
2667       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2668     }
2669 }
2670
2671 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2672    there is no .gnu_debugaltlink section in the file.  Error if there
2673    is such a section but the file cannot be found.  */
2674
2675 static struct dwz_file *
2676 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2677 {
2678   const char *filename;
2679   bfd_size_type buildid_len_arg;
2680   size_t buildid_len;
2681   bfd_byte *buildid;
2682
2683   if (dwarf2_per_objfile->dwz_file != NULL)
2684     return dwarf2_per_objfile->dwz_file.get ();
2685
2686   bfd_set_error (bfd_error_no_error);
2687   gdb::unique_xmalloc_ptr<char> data
2688     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2689                                   &buildid_len_arg, &buildid));
2690   if (data == NULL)
2691     {
2692       if (bfd_get_error () == bfd_error_no_error)
2693         return NULL;
2694       error (_("could not read '.gnu_debugaltlink' section: %s"),
2695              bfd_errmsg (bfd_get_error ()));
2696     }
2697
2698   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2699
2700   buildid_len = (size_t) buildid_len_arg;
2701
2702   filename = data.get ();
2703
2704   std::string abs_storage;
2705   if (!IS_ABSOLUTE_PATH (filename))
2706     {
2707       gdb::unique_xmalloc_ptr<char> abs
2708         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2709
2710       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2711       filename = abs_storage.c_str ();
2712     }
2713
2714   /* First try the file name given in the section.  If that doesn't
2715      work, try to use the build-id instead.  */
2716   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2717   if (dwz_bfd != NULL)
2718     {
2719       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2720         dwz_bfd.reset (nullptr);
2721     }
2722
2723   if (dwz_bfd == NULL)
2724     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2725
2726   if (dwz_bfd == NULL)
2727     error (_("could not find '.gnu_debugaltlink' file for %s"),
2728            objfile_name (dwarf2_per_objfile->objfile));
2729
2730   std::unique_ptr<struct dwz_file> result
2731     (new struct dwz_file (std::move (dwz_bfd)));
2732
2733   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2734                          result.get ());
2735
2736   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2737                             result->dwz_bfd.get ());
2738   dwarf2_per_objfile->dwz_file = std::move (result);
2739   return dwarf2_per_objfile->dwz_file.get ();
2740 }
2741 \f
2742 /* DWARF quick_symbols_functions support.  */
2743
2744 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2745    unique line tables, so we maintain a separate table of all .debug_line
2746    derived entries to support the sharing.
2747    All the quick functions need is the list of file names.  We discard the
2748    line_header when we're done and don't need to record it here.  */
2749 struct quick_file_names
2750 {
2751   /* The data used to construct the hash key.  */
2752   struct stmt_list_hash hash;
2753
2754   /* The number of entries in file_names, real_names.  */
2755   unsigned int num_file_names;
2756
2757   /* The file names from the line table, after being run through
2758      file_full_name.  */
2759   const char **file_names;
2760
2761   /* The file names from the line table after being run through
2762      gdb_realpath.  These are computed lazily.  */
2763   const char **real_names;
2764 };
2765
2766 /* When using the index (and thus not using psymtabs), each CU has an
2767    object of this type.  This is used to hold information needed by
2768    the various "quick" methods.  */
2769 struct dwarf2_per_cu_quick_data
2770 {
2771   /* The file table.  This can be NULL if there was no file table
2772      or it's currently not read in.
2773      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2774   struct quick_file_names *file_names;
2775
2776   /* The corresponding symbol table.  This is NULL if symbols for this
2777      CU have not yet been read.  */
2778   struct compunit_symtab *compunit_symtab;
2779
2780   /* A temporary mark bit used when iterating over all CUs in
2781      expand_symtabs_matching.  */
2782   unsigned int mark : 1;
2783
2784   /* True if we've tried to read the file table and found there isn't one.
2785      There will be no point in trying to read it again next time.  */
2786   unsigned int no_file_data : 1;
2787 };
2788
2789 /* Utility hash function for a stmt_list_hash.  */
2790
2791 static hashval_t
2792 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2793 {
2794   hashval_t v = 0;
2795
2796   if (stmt_list_hash->dwo_unit != NULL)
2797     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2798   v += to_underlying (stmt_list_hash->line_sect_off);
2799   return v;
2800 }
2801
2802 /* Utility equality function for a stmt_list_hash.  */
2803
2804 static int
2805 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2806                     const struct stmt_list_hash *rhs)
2807 {
2808   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2809     return 0;
2810   if (lhs->dwo_unit != NULL
2811       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2812     return 0;
2813
2814   return lhs->line_sect_off == rhs->line_sect_off;
2815 }
2816
2817 /* Hash function for a quick_file_names.  */
2818
2819 static hashval_t
2820 hash_file_name_entry (const void *e)
2821 {
2822   const struct quick_file_names *file_data
2823     = (const struct quick_file_names *) e;
2824
2825   return hash_stmt_list_entry (&file_data->hash);
2826 }
2827
2828 /* Equality function for a quick_file_names.  */
2829
2830 static int
2831 eq_file_name_entry (const void *a, const void *b)
2832 {
2833   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2834   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2835
2836   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2837 }
2838
2839 /* Delete function for a quick_file_names.  */
2840
2841 static void
2842 delete_file_name_entry (void *e)
2843 {
2844   struct quick_file_names *file_data = (struct quick_file_names *) e;
2845   int i;
2846
2847   for (i = 0; i < file_data->num_file_names; ++i)
2848     {
2849       xfree ((void*) file_data->file_names[i]);
2850       if (file_data->real_names)
2851         xfree ((void*) file_data->real_names[i]);
2852     }
2853
2854   /* The space for the struct itself lives on objfile_obstack,
2855      so we don't free it here.  */
2856 }
2857
2858 /* Create a quick_file_names hash table.  */
2859
2860 static htab_t
2861 create_quick_file_names_table (unsigned int nr_initial_entries)
2862 {
2863   return htab_create_alloc (nr_initial_entries,
2864                             hash_file_name_entry, eq_file_name_entry,
2865                             delete_file_name_entry, xcalloc, xfree);
2866 }
2867
2868 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2869    have to be created afterwards.  You should call age_cached_comp_units after
2870    processing PER_CU->CU.  dw2_setup must have been already called.  */
2871
2872 static void
2873 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2874 {
2875   if (per_cu->is_debug_types)
2876     load_full_type_unit (per_cu);
2877   else
2878     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2879
2880   if (per_cu->cu == NULL)
2881     return;  /* Dummy CU.  */
2882
2883   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2884 }
2885
2886 /* Read in the symbols for PER_CU.  */
2887
2888 static void
2889 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2890 {
2891   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2892
2893   /* Skip type_unit_groups, reading the type units they contain
2894      is handled elsewhere.  */
2895   if (IS_TYPE_UNIT_GROUP (per_cu))
2896     return;
2897
2898   /* The destructor of dwarf2_queue_guard frees any entries left on
2899      the queue.  After this point we're guaranteed to leave this function
2900      with the dwarf queue empty.  */
2901   dwarf2_queue_guard q_guard;
2902
2903   if (dwarf2_per_objfile->using_index
2904       ? per_cu->v.quick->compunit_symtab == NULL
2905       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2906     {
2907       queue_comp_unit (per_cu, language_minimal);
2908       load_cu (per_cu, skip_partial);
2909
2910       /* If we just loaded a CU from a DWO, and we're working with an index
2911          that may badly handle TUs, load all the TUs in that DWO as well.
2912          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2913       if (!per_cu->is_debug_types
2914           && per_cu->cu != NULL
2915           && per_cu->cu->dwo_unit != NULL
2916           && dwarf2_per_objfile->index_table != NULL
2917           && dwarf2_per_objfile->index_table->version <= 7
2918           /* DWP files aren't supported yet.  */
2919           && get_dwp_file (dwarf2_per_objfile) == NULL)
2920         queue_and_load_all_dwo_tus (per_cu);
2921     }
2922
2923   process_queue (dwarf2_per_objfile);
2924
2925   /* Age the cache, releasing compilation units that have not
2926      been used recently.  */
2927   age_cached_comp_units (dwarf2_per_objfile);
2928 }
2929
2930 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2931    the objfile from which this CU came.  Returns the resulting symbol
2932    table.  */
2933
2934 static struct compunit_symtab *
2935 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2936 {
2937   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2938
2939   gdb_assert (dwarf2_per_objfile->using_index);
2940   if (!per_cu->v.quick->compunit_symtab)
2941     {
2942       free_cached_comp_units freer (dwarf2_per_objfile);
2943       scoped_restore decrementer = increment_reading_symtab ();
2944       dw2_do_instantiate_symtab (per_cu, skip_partial);
2945       process_cu_includes (dwarf2_per_objfile);
2946     }
2947
2948   return per_cu->v.quick->compunit_symtab;
2949 }
2950
2951 /* See declaration.  */
2952
2953 dwarf2_per_cu_data *
2954 dwarf2_per_objfile::get_cutu (int index)
2955 {
2956   if (index >= this->all_comp_units.size ())
2957     {
2958       index -= this->all_comp_units.size ();
2959       gdb_assert (index < this->all_type_units.size ());
2960       return &this->all_type_units[index]->per_cu;
2961     }
2962
2963   return this->all_comp_units[index];
2964 }
2965
2966 /* See declaration.  */
2967
2968 dwarf2_per_cu_data *
2969 dwarf2_per_objfile::get_cu (int index)
2970 {
2971   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2972
2973   return this->all_comp_units[index];
2974 }
2975
2976 /* See declaration.  */
2977
2978 signatured_type *
2979 dwarf2_per_objfile::get_tu (int index)
2980 {
2981   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2982
2983   return this->all_type_units[index];
2984 }
2985
2986 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2987    objfile_obstack, and constructed with the specified field
2988    values.  */
2989
2990 static dwarf2_per_cu_data *
2991 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2992                           struct dwarf2_section_info *section,
2993                           int is_dwz,
2994                           sect_offset sect_off, ULONGEST length)
2995 {
2996   struct objfile *objfile = dwarf2_per_objfile->objfile;
2997   dwarf2_per_cu_data *the_cu
2998     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2999                      struct dwarf2_per_cu_data);
3000   the_cu->sect_off = sect_off;
3001   the_cu->length = length;
3002   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
3003   the_cu->section = section;
3004   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3005                                    struct dwarf2_per_cu_quick_data);
3006   the_cu->is_dwz = is_dwz;
3007   return the_cu;
3008 }
3009
3010 /* A helper for create_cus_from_index that handles a given list of
3011    CUs.  */
3012
3013 static void
3014 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
3015                             const gdb_byte *cu_list, offset_type n_elements,
3016                             struct dwarf2_section_info *section,
3017                             int is_dwz)
3018 {
3019   for (offset_type i = 0; i < n_elements; i += 2)
3020     {
3021       gdb_static_assert (sizeof (ULONGEST) >= 8);
3022
3023       sect_offset sect_off
3024         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
3025       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
3026       cu_list += 2 * 8;
3027
3028       dwarf2_per_cu_data *per_cu
3029         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3030                                      sect_off, length);
3031       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3032     }
3033 }
3034
3035 /* Read the CU list from the mapped index, and use it to create all
3036    the CU objects for this objfile.  */
3037
3038 static void
3039 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3040                        const gdb_byte *cu_list, offset_type cu_list_elements,
3041                        const gdb_byte *dwz_list, offset_type dwz_elements)
3042 {
3043   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3044   dwarf2_per_objfile->all_comp_units.reserve
3045     ((cu_list_elements + dwz_elements) / 2);
3046
3047   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3048                               &dwarf2_per_objfile->info, 0);
3049
3050   if (dwz_elements == 0)
3051     return;
3052
3053   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3054   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3055                               &dwz->info, 1);
3056 }
3057
3058 /* Create the signatured type hash table from the index.  */
3059
3060 static void
3061 create_signatured_type_table_from_index
3062   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3063    struct dwarf2_section_info *section,
3064    const gdb_byte *bytes,
3065    offset_type elements)
3066 {
3067   struct objfile *objfile = dwarf2_per_objfile->objfile;
3068
3069   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3070   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3071
3072   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3073
3074   for (offset_type i = 0; i < elements; i += 3)
3075     {
3076       struct signatured_type *sig_type;
3077       ULONGEST signature;
3078       void **slot;
3079       cu_offset type_offset_in_tu;
3080
3081       gdb_static_assert (sizeof (ULONGEST) >= 8);
3082       sect_offset sect_off
3083         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3084       type_offset_in_tu
3085         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3086                                                 BFD_ENDIAN_LITTLE);
3087       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3088       bytes += 3 * 8;
3089
3090       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3091                                  struct signatured_type);
3092       sig_type->signature = signature;
3093       sig_type->type_offset_in_tu = type_offset_in_tu;
3094       sig_type->per_cu.is_debug_types = 1;
3095       sig_type->per_cu.section = section;
3096       sig_type->per_cu.sect_off = sect_off;
3097       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3098       sig_type->per_cu.v.quick
3099         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3100                           struct dwarf2_per_cu_quick_data);
3101
3102       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3103       *slot = sig_type;
3104
3105       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3106     }
3107
3108   dwarf2_per_objfile->signatured_types = sig_types_hash;
3109 }
3110
3111 /* Create the signatured type hash table from .debug_names.  */
3112
3113 static void
3114 create_signatured_type_table_from_debug_names
3115   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3116    const mapped_debug_names &map,
3117    struct dwarf2_section_info *section,
3118    struct dwarf2_section_info *abbrev_section)
3119 {
3120   struct objfile *objfile = dwarf2_per_objfile->objfile;
3121
3122   dwarf2_read_section (objfile, section);
3123   dwarf2_read_section (objfile, abbrev_section);
3124
3125   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3126   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3127
3128   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3129
3130   for (uint32_t i = 0; i < map.tu_count; ++i)
3131     {
3132       struct signatured_type *sig_type;
3133       void **slot;
3134
3135       sect_offset sect_off
3136         = (sect_offset) (extract_unsigned_integer
3137                          (map.tu_table_reordered + i * map.offset_size,
3138                           map.offset_size,
3139                           map.dwarf5_byte_order));
3140
3141       comp_unit_head cu_header;
3142       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3143                                      abbrev_section,
3144                                      section->buffer + to_underlying (sect_off),
3145                                      rcuh_kind::TYPE);
3146
3147       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3148                                  struct signatured_type);
3149       sig_type->signature = cu_header.signature;
3150       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3151       sig_type->per_cu.is_debug_types = 1;
3152       sig_type->per_cu.section = section;
3153       sig_type->per_cu.sect_off = sect_off;
3154       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3155       sig_type->per_cu.v.quick
3156         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3157                           struct dwarf2_per_cu_quick_data);
3158
3159       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3160       *slot = sig_type;
3161
3162       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3163     }
3164
3165   dwarf2_per_objfile->signatured_types = sig_types_hash;
3166 }
3167
3168 /* Read the address map data from the mapped index, and use it to
3169    populate the objfile's psymtabs_addrmap.  */
3170
3171 static void
3172 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3173                            struct mapped_index *index)
3174 {
3175   struct objfile *objfile = dwarf2_per_objfile->objfile;
3176   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3177   const gdb_byte *iter, *end;
3178   struct addrmap *mutable_map;
3179   CORE_ADDR baseaddr;
3180
3181   auto_obstack temp_obstack;
3182
3183   mutable_map = addrmap_create_mutable (&temp_obstack);
3184
3185   iter = index->address_table.data ();
3186   end = iter + index->address_table.size ();
3187
3188   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3189
3190   while (iter < end)
3191     {
3192       ULONGEST hi, lo, cu_index;
3193       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3194       iter += 8;
3195       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3196       iter += 8;
3197       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3198       iter += 4;
3199
3200       if (lo > hi)
3201         {
3202           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3203                      hex_string (lo), hex_string (hi));
3204           continue;
3205         }
3206
3207       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3208         {
3209           complaint (_(".gdb_index address table has invalid CU number %u"),
3210                      (unsigned) cu_index);
3211           continue;
3212         }
3213
3214       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3215       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3216       addrmap_set_empty (mutable_map, lo, hi - 1,
3217                          dwarf2_per_objfile->get_cu (cu_index));
3218     }
3219
3220   objfile->partial_symtabs->psymtabs_addrmap
3221     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3222 }
3223
3224 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3225    populate the objfile's psymtabs_addrmap.  */
3226
3227 static void
3228 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3229                              struct dwarf2_section_info *section)
3230 {
3231   struct objfile *objfile = dwarf2_per_objfile->objfile;
3232   bfd *abfd = objfile->obfd;
3233   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3234   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3235                                        SECT_OFF_TEXT (objfile));
3236
3237   auto_obstack temp_obstack;
3238   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3239
3240   std::unordered_map<sect_offset,
3241                      dwarf2_per_cu_data *,
3242                      gdb::hash_enum<sect_offset>>
3243     debug_info_offset_to_per_cu;
3244   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3245     {
3246       const auto insertpair
3247         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3248       if (!insertpair.second)
3249         {
3250           warning (_("Section .debug_aranges in %s has duplicate "
3251                      "debug_info_offset %s, ignoring .debug_aranges."),
3252                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3253           return;
3254         }
3255     }
3256
3257   dwarf2_read_section (objfile, section);
3258
3259   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3260
3261   const gdb_byte *addr = section->buffer;
3262
3263   while (addr < section->buffer + section->size)
3264     {
3265       const gdb_byte *const entry_addr = addr;
3266       unsigned int bytes_read;
3267
3268       const LONGEST entry_length = read_initial_length (abfd, addr,
3269                                                         &bytes_read);
3270       addr += bytes_read;
3271
3272       const gdb_byte *const entry_end = addr + entry_length;
3273       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3274       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3275       if (addr + entry_length > section->buffer + section->size)
3276         {
3277           warning (_("Section .debug_aranges in %s entry at offset %zu "
3278                      "length %s exceeds section length %s, "
3279                      "ignoring .debug_aranges."),
3280                    objfile_name (objfile), entry_addr - section->buffer,
3281                    plongest (bytes_read + entry_length),
3282                    pulongest (section->size));
3283           return;
3284         }
3285
3286       /* The version number.  */
3287       const uint16_t version = read_2_bytes (abfd, addr);
3288       addr += 2;
3289       if (version != 2)
3290         {
3291           warning (_("Section .debug_aranges in %s entry at offset %zu "
3292                      "has unsupported version %d, ignoring .debug_aranges."),
3293                    objfile_name (objfile), entry_addr - section->buffer,
3294                    version);
3295           return;
3296         }
3297
3298       const uint64_t debug_info_offset
3299         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3300       addr += offset_size;
3301       const auto per_cu_it
3302         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3303       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3304         {
3305           warning (_("Section .debug_aranges in %s entry at offset %zu "
3306                      "debug_info_offset %s does not exists, "
3307                      "ignoring .debug_aranges."),
3308                    objfile_name (objfile), entry_addr - section->buffer,
3309                    pulongest (debug_info_offset));
3310           return;
3311         }
3312       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3313
3314       const uint8_t address_size = *addr++;
3315       if (address_size < 1 || address_size > 8)
3316         {
3317           warning (_("Section .debug_aranges in %s entry at offset %zu "
3318                      "address_size %u is invalid, ignoring .debug_aranges."),
3319                    objfile_name (objfile), entry_addr - section->buffer,
3320                    address_size);
3321           return;
3322         }
3323
3324       const uint8_t segment_selector_size = *addr++;
3325       if (segment_selector_size != 0)
3326         {
3327           warning (_("Section .debug_aranges in %s entry at offset %zu "
3328                      "segment_selector_size %u is not supported, "
3329                      "ignoring .debug_aranges."),
3330                    objfile_name (objfile), entry_addr - section->buffer,
3331                    segment_selector_size);
3332           return;
3333         }
3334
3335       /* Must pad to an alignment boundary that is twice the address
3336          size.  It is undocumented by the DWARF standard but GCC does
3337          use it.  */
3338       for (size_t padding = ((-(addr - section->buffer))
3339                              & (2 * address_size - 1));
3340            padding > 0; padding--)
3341         if (*addr++ != 0)
3342           {
3343             warning (_("Section .debug_aranges in %s entry at offset %zu "
3344                        "padding is not zero, ignoring .debug_aranges."),
3345                      objfile_name (objfile), entry_addr - section->buffer);
3346             return;
3347           }
3348
3349       for (;;)
3350         {
3351           if (addr + 2 * address_size > entry_end)
3352             {
3353               warning (_("Section .debug_aranges in %s entry at offset %zu "
3354                          "address list is not properly terminated, "
3355                          "ignoring .debug_aranges."),
3356                        objfile_name (objfile), entry_addr - section->buffer);
3357               return;
3358             }
3359           ULONGEST start = extract_unsigned_integer (addr, address_size,
3360                                                      dwarf5_byte_order);
3361           addr += address_size;
3362           ULONGEST length = extract_unsigned_integer (addr, address_size,
3363                                                       dwarf5_byte_order);
3364           addr += address_size;
3365           if (start == 0 && length == 0)
3366             break;
3367           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3368             {
3369               /* Symbol was eliminated due to a COMDAT group.  */
3370               continue;
3371             }
3372           ULONGEST end = start + length;
3373           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3374                    - baseaddr);
3375           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3376                  - baseaddr);
3377           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3378         }
3379     }
3380
3381   objfile->partial_symtabs->psymtabs_addrmap
3382     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3383 }
3384
3385 /* Find a slot in the mapped index INDEX for the object named NAME.
3386    If NAME is found, set *VEC_OUT to point to the CU vector in the
3387    constant pool and return true.  If NAME cannot be found, return
3388    false.  */
3389
3390 static bool
3391 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3392                           offset_type **vec_out)
3393 {
3394   offset_type hash;
3395   offset_type slot, step;
3396   int (*cmp) (const char *, const char *);
3397
3398   gdb::unique_xmalloc_ptr<char> without_params;
3399   if (current_language->la_language == language_cplus
3400       || current_language->la_language == language_fortran
3401       || current_language->la_language == language_d)
3402     {
3403       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3404          not contain any.  */
3405
3406       if (strchr (name, '(') != NULL)
3407         {
3408           without_params = cp_remove_params (name);
3409
3410           if (without_params != NULL)
3411             name = without_params.get ();
3412         }
3413     }
3414
3415   /* Index version 4 did not support case insensitive searches.  But the
3416      indices for case insensitive languages are built in lowercase, therefore
3417      simulate our NAME being searched is also lowercased.  */
3418   hash = mapped_index_string_hash ((index->version == 4
3419                                     && case_sensitivity == case_sensitive_off
3420                                     ? 5 : index->version),
3421                                    name);
3422
3423   slot = hash & (index->symbol_table.size () - 1);
3424   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3425   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3426
3427   for (;;)
3428     {
3429       const char *str;
3430
3431       const auto &bucket = index->symbol_table[slot];
3432       if (bucket.name == 0 && bucket.vec == 0)
3433         return false;
3434
3435       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3436       if (!cmp (name, str))
3437         {
3438           *vec_out = (offset_type *) (index->constant_pool
3439                                       + MAYBE_SWAP (bucket.vec));
3440           return true;
3441         }
3442
3443       slot = (slot + step) & (index->symbol_table.size () - 1);
3444     }
3445 }
3446
3447 /* A helper function that reads the .gdb_index from BUFFER and fills
3448    in MAP.  FILENAME is the name of the file containing the data;
3449    it is used for error reporting.  DEPRECATED_OK is true if it is
3450    ok to use deprecated sections.
3451
3452    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3453    out parameters that are filled in with information about the CU and
3454    TU lists in the section.
3455
3456    Returns true if all went well, false otherwise.  */
3457
3458 static bool
3459 read_gdb_index_from_buffer (struct objfile *objfile,
3460                             const char *filename,
3461                             bool deprecated_ok,
3462                             gdb::array_view<const gdb_byte> buffer,
3463                             struct mapped_index *map,
3464                             const gdb_byte **cu_list,
3465                             offset_type *cu_list_elements,
3466                             const gdb_byte **types_list,
3467                             offset_type *types_list_elements)
3468 {
3469   const gdb_byte *addr = &buffer[0];
3470
3471   /* Version check.  */
3472   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3473   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3474      causes the index to behave very poorly for certain requests.  Version 3
3475      contained incomplete addrmap.  So, it seems better to just ignore such
3476      indices.  */
3477   if (version < 4)
3478     {
3479       static int warning_printed = 0;
3480       if (!warning_printed)
3481         {
3482           warning (_("Skipping obsolete .gdb_index section in %s."),
3483                    filename);
3484           warning_printed = 1;
3485         }
3486       return 0;
3487     }
3488   /* Index version 4 uses a different hash function than index version
3489      5 and later.
3490
3491      Versions earlier than 6 did not emit psymbols for inlined
3492      functions.  Using these files will cause GDB not to be able to
3493      set breakpoints on inlined functions by name, so we ignore these
3494      indices unless the user has done
3495      "set use-deprecated-index-sections on".  */
3496   if (version < 6 && !deprecated_ok)
3497     {
3498       static int warning_printed = 0;
3499       if (!warning_printed)
3500         {
3501           warning (_("\
3502 Skipping deprecated .gdb_index section in %s.\n\
3503 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3504 to use the section anyway."),
3505                    filename);
3506           warning_printed = 1;
3507         }
3508       return 0;
3509     }
3510   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3511      of the TU (for symbols coming from TUs),
3512      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3513      Plus gold-generated indices can have duplicate entries for global symbols,
3514      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3515      These are just performance bugs, and we can't distinguish gdb-generated
3516      indices from gold-generated ones, so issue no warning here.  */
3517
3518   /* Indexes with higher version than the one supported by GDB may be no
3519      longer backward compatible.  */
3520   if (version > 8)
3521     return 0;
3522
3523   map->version = version;
3524
3525   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3526
3527   int i = 0;
3528   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3529   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3530                        / 8);
3531   ++i;
3532
3533   *types_list = addr + MAYBE_SWAP (metadata[i]);
3534   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3535                            - MAYBE_SWAP (metadata[i]))
3536                           / 8);
3537   ++i;
3538
3539   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3540   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3541   map->address_table
3542     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3543   ++i;
3544
3545   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3546   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3547   map->symbol_table
3548     = gdb::array_view<mapped_index::symbol_table_slot>
3549        ((mapped_index::symbol_table_slot *) symbol_table,
3550         (mapped_index::symbol_table_slot *) symbol_table_end);
3551
3552   ++i;
3553   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3554
3555   return 1;
3556 }
3557
3558 /* Callback types for dwarf2_read_gdb_index.  */
3559
3560 typedef gdb::function_view
3561     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3562     get_gdb_index_contents_ftype;
3563 typedef gdb::function_view
3564     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3565     get_gdb_index_contents_dwz_ftype;
3566
3567 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3568    elements of all the CUs and return 1.  Otherwise, return 0.  */
3569
3570 static int
3571 dwarf2_read_gdb_index
3572   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3573    get_gdb_index_contents_ftype get_gdb_index_contents,
3574    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3575 {
3576   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3577   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3578   struct dwz_file *dwz;
3579   struct objfile *objfile = dwarf2_per_objfile->objfile;
3580
3581   gdb::array_view<const gdb_byte> main_index_contents
3582     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3583
3584   if (main_index_contents.empty ())
3585     return 0;
3586
3587   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3588   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3589                                    use_deprecated_index_sections,
3590                                    main_index_contents, map.get (), &cu_list,
3591                                    &cu_list_elements, &types_list,
3592                                    &types_list_elements))
3593     return 0;
3594
3595   /* Don't use the index if it's empty.  */
3596   if (map->symbol_table.empty ())
3597     return 0;
3598
3599   /* If there is a .dwz file, read it so we can get its CU list as
3600      well.  */
3601   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3602   if (dwz != NULL)
3603     {
3604       struct mapped_index dwz_map;
3605       const gdb_byte *dwz_types_ignore;
3606       offset_type dwz_types_elements_ignore;
3607
3608       gdb::array_view<const gdb_byte> dwz_index_content
3609         = get_gdb_index_contents_dwz (objfile, dwz);
3610
3611       if (dwz_index_content.empty ())
3612         return 0;
3613
3614       if (!read_gdb_index_from_buffer (objfile,
3615                                        bfd_get_filename (dwz->dwz_bfd), 1,
3616                                        dwz_index_content, &dwz_map,
3617                                        &dwz_list, &dwz_list_elements,
3618                                        &dwz_types_ignore,
3619                                        &dwz_types_elements_ignore))
3620         {
3621           warning (_("could not read '.gdb_index' section from %s; skipping"),
3622                    bfd_get_filename (dwz->dwz_bfd));
3623           return 0;
3624         }
3625     }
3626
3627   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3628                          dwz_list, dwz_list_elements);
3629
3630   if (types_list_elements)
3631     {
3632       struct dwarf2_section_info *section;
3633
3634       /* We can only handle a single .debug_types when we have an
3635          index.  */
3636       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3637         return 0;
3638
3639       section = VEC_index (dwarf2_section_info_def,
3640                            dwarf2_per_objfile->types, 0);
3641
3642       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3643                                                types_list, types_list_elements);
3644     }
3645
3646   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3647
3648   dwarf2_per_objfile->index_table = std::move (map);
3649   dwarf2_per_objfile->using_index = 1;
3650   dwarf2_per_objfile->quick_file_names_table =
3651     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3652
3653   return 1;
3654 }
3655
3656 /* die_reader_func for dw2_get_file_names.  */
3657
3658 static void
3659 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3660                            const gdb_byte *info_ptr,
3661                            struct die_info *comp_unit_die,
3662                            int has_children,
3663                            void *data)
3664 {
3665   struct dwarf2_cu *cu = reader->cu;
3666   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3667   struct dwarf2_per_objfile *dwarf2_per_objfile
3668     = cu->per_cu->dwarf2_per_objfile;
3669   struct objfile *objfile = dwarf2_per_objfile->objfile;
3670   struct dwarf2_per_cu_data *lh_cu;
3671   struct attribute *attr;
3672   int i;
3673   void **slot;
3674   struct quick_file_names *qfn;
3675
3676   gdb_assert (! this_cu->is_debug_types);
3677
3678   /* Our callers never want to match partial units -- instead they
3679      will match the enclosing full CU.  */
3680   if (comp_unit_die->tag == DW_TAG_partial_unit)
3681     {
3682       this_cu->v.quick->no_file_data = 1;
3683       return;
3684     }
3685
3686   lh_cu = this_cu;
3687   slot = NULL;
3688
3689   line_header_up lh;
3690   sect_offset line_offset {};
3691
3692   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3693   if (attr)
3694     {
3695       struct quick_file_names find_entry;
3696
3697       line_offset = (sect_offset) DW_UNSND (attr);
3698
3699       /* We may have already read in this line header (TU line header sharing).
3700          If we have we're done.  */
3701       find_entry.hash.dwo_unit = cu->dwo_unit;
3702       find_entry.hash.line_sect_off = line_offset;
3703       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3704                              &find_entry, INSERT);
3705       if (*slot != NULL)
3706         {
3707           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3708           return;
3709         }
3710
3711       lh = dwarf_decode_line_header (line_offset, cu);
3712     }
3713   if (lh == NULL)
3714     {
3715       lh_cu->v.quick->no_file_data = 1;
3716       return;
3717     }
3718
3719   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3720   qfn->hash.dwo_unit = cu->dwo_unit;
3721   qfn->hash.line_sect_off = line_offset;
3722   gdb_assert (slot != NULL);
3723   *slot = qfn;
3724
3725   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3726
3727   qfn->num_file_names = lh->file_names.size ();
3728   qfn->file_names =
3729     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3730   for (i = 0; i < lh->file_names.size (); ++i)
3731     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3732   qfn->real_names = NULL;
3733
3734   lh_cu->v.quick->file_names = qfn;
3735 }
3736
3737 /* A helper for the "quick" functions which attempts to read the line
3738    table for THIS_CU.  */
3739
3740 static struct quick_file_names *
3741 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3742 {
3743   /* This should never be called for TUs.  */
3744   gdb_assert (! this_cu->is_debug_types);
3745   /* Nor type unit groups.  */
3746   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3747
3748   if (this_cu->v.quick->file_names != NULL)
3749     return this_cu->v.quick->file_names;
3750   /* If we know there is no line data, no point in looking again.  */
3751   if (this_cu->v.quick->no_file_data)
3752     return NULL;
3753
3754   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3755
3756   if (this_cu->v.quick->no_file_data)
3757     return NULL;
3758   return this_cu->v.quick->file_names;
3759 }
3760
3761 /* A helper for the "quick" functions which computes and caches the
3762    real path for a given file name from the line table.  */
3763
3764 static const char *
3765 dw2_get_real_path (struct objfile *objfile,
3766                    struct quick_file_names *qfn, int index)
3767 {
3768   if (qfn->real_names == NULL)
3769     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3770                                       qfn->num_file_names, const char *);
3771
3772   if (qfn->real_names[index] == NULL)
3773     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3774
3775   return qfn->real_names[index];
3776 }
3777
3778 static struct symtab *
3779 dw2_find_last_source_symtab (struct objfile *objfile)
3780 {
3781   struct dwarf2_per_objfile *dwarf2_per_objfile
3782     = get_dwarf2_per_objfile (objfile);
3783   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3784   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3785
3786   if (cust == NULL)
3787     return NULL;
3788
3789   return compunit_primary_filetab (cust);
3790 }
3791
3792 /* Traversal function for dw2_forget_cached_source_info.  */
3793
3794 static int
3795 dw2_free_cached_file_names (void **slot, void *info)
3796 {
3797   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3798
3799   if (file_data->real_names)
3800     {
3801       int i;
3802
3803       for (i = 0; i < file_data->num_file_names; ++i)
3804         {
3805           xfree ((void*) file_data->real_names[i]);
3806           file_data->real_names[i] = NULL;
3807         }
3808     }
3809
3810   return 1;
3811 }
3812
3813 static void
3814 dw2_forget_cached_source_info (struct objfile *objfile)
3815 {
3816   struct dwarf2_per_objfile *dwarf2_per_objfile
3817     = get_dwarf2_per_objfile (objfile);
3818
3819   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3820                           dw2_free_cached_file_names, NULL);
3821 }
3822
3823 /* Helper function for dw2_map_symtabs_matching_filename that expands
3824    the symtabs and calls the iterator.  */
3825
3826 static int
3827 dw2_map_expand_apply (struct objfile *objfile,
3828                       struct dwarf2_per_cu_data *per_cu,
3829                       const char *name, const char *real_path,
3830                       gdb::function_view<bool (symtab *)> callback)
3831 {
3832   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3833
3834   /* Don't visit already-expanded CUs.  */
3835   if (per_cu->v.quick->compunit_symtab)
3836     return 0;
3837
3838   /* This may expand more than one symtab, and we want to iterate over
3839      all of them.  */
3840   dw2_instantiate_symtab (per_cu, false);
3841
3842   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3843                                     last_made, callback);
3844 }
3845
3846 /* Implementation of the map_symtabs_matching_filename method.  */
3847
3848 static bool
3849 dw2_map_symtabs_matching_filename
3850   (struct objfile *objfile, const char *name, const char *real_path,
3851    gdb::function_view<bool (symtab *)> callback)
3852 {
3853   const char *name_basename = lbasename (name);
3854   struct dwarf2_per_objfile *dwarf2_per_objfile
3855     = get_dwarf2_per_objfile (objfile);
3856
3857   /* The rule is CUs specify all the files, including those used by
3858      any TU, so there's no need to scan TUs here.  */
3859
3860   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3861     {
3862       /* We only need to look at symtabs not already expanded.  */
3863       if (per_cu->v.quick->compunit_symtab)
3864         continue;
3865
3866       quick_file_names *file_data = dw2_get_file_names (per_cu);
3867       if (file_data == NULL)
3868         continue;
3869
3870       for (int j = 0; j < file_data->num_file_names; ++j)
3871         {
3872           const char *this_name = file_data->file_names[j];
3873           const char *this_real_name;
3874
3875           if (compare_filenames_for_search (this_name, name))
3876             {
3877               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3878                                         callback))
3879                 return true;
3880               continue;
3881             }
3882
3883           /* Before we invoke realpath, which can get expensive when many
3884              files are involved, do a quick comparison of the basenames.  */
3885           if (! basenames_may_differ
3886               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3887             continue;
3888
3889           this_real_name = dw2_get_real_path (objfile, file_data, j);
3890           if (compare_filenames_for_search (this_real_name, name))
3891             {
3892               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3893                                         callback))
3894                 return true;
3895               continue;
3896             }
3897
3898           if (real_path != NULL)
3899             {
3900               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3901               gdb_assert (IS_ABSOLUTE_PATH (name));
3902               if (this_real_name != NULL
3903                   && FILENAME_CMP (real_path, this_real_name) == 0)
3904                 {
3905                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3906                                             callback))
3907                     return true;
3908                   continue;
3909                 }
3910             }
3911         }
3912     }
3913
3914   return false;
3915 }
3916
3917 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3918
3919 struct dw2_symtab_iterator
3920 {
3921   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3922   struct dwarf2_per_objfile *dwarf2_per_objfile;
3923   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3924   int want_specific_block;
3925   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3926      Unused if !WANT_SPECIFIC_BLOCK.  */
3927   int block_index;
3928   /* The kind of symbol we're looking for.  */
3929   domain_enum domain;
3930   /* The list of CUs from the index entry of the symbol,
3931      or NULL if not found.  */
3932   offset_type *vec;
3933   /* The next element in VEC to look at.  */
3934   int next;
3935   /* The number of elements in VEC, or zero if there is no match.  */
3936   int length;
3937   /* Have we seen a global version of the symbol?
3938      If so we can ignore all further global instances.
3939      This is to work around gold/15646, inefficient gold-generated
3940      indices.  */
3941   int global_seen;
3942 };
3943
3944 /* Initialize the index symtab iterator ITER.
3945    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3946    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3947
3948 static void
3949 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3950                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3951                       int want_specific_block,
3952                       int block_index,
3953                       domain_enum domain,
3954                       const char *name)
3955 {
3956   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3957   iter->want_specific_block = want_specific_block;
3958   iter->block_index = block_index;
3959   iter->domain = domain;
3960   iter->next = 0;
3961   iter->global_seen = 0;
3962
3963   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3964
3965   /* index is NULL if OBJF_READNOW.  */
3966   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3967     iter->length = MAYBE_SWAP (*iter->vec);
3968   else
3969     {
3970       iter->vec = NULL;
3971       iter->length = 0;
3972     }
3973 }
3974
3975 /* Return the next matching CU or NULL if there are no more.  */
3976
3977 static struct dwarf2_per_cu_data *
3978 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3979 {
3980   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3981
3982   for ( ; iter->next < iter->length; ++iter->next)
3983     {
3984       offset_type cu_index_and_attrs =
3985         MAYBE_SWAP (iter->vec[iter->next + 1]);
3986       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3987       int want_static = iter->block_index != GLOBAL_BLOCK;
3988       /* This value is only valid for index versions >= 7.  */
3989       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3990       gdb_index_symbol_kind symbol_kind =
3991         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3992       /* Only check the symbol attributes if they're present.
3993          Indices prior to version 7 don't record them,
3994          and indices >= 7 may elide them for certain symbols
3995          (gold does this).  */
3996       int attrs_valid =
3997         (dwarf2_per_objfile->index_table->version >= 7
3998          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3999
4000       /* Don't crash on bad data.  */
4001       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
4002                        + dwarf2_per_objfile->all_type_units.size ()))
4003         {
4004           complaint (_(".gdb_index entry has bad CU index"
4005                        " [in module %s]"),
4006                      objfile_name (dwarf2_per_objfile->objfile));
4007           continue;
4008         }
4009
4010       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
4011
4012       /* Skip if already read in.  */
4013       if (per_cu->v.quick->compunit_symtab)
4014         continue;
4015
4016       /* Check static vs global.  */
4017       if (attrs_valid)
4018         {
4019           if (iter->want_specific_block
4020               && want_static != is_static)
4021             continue;
4022           /* Work around gold/15646.  */
4023           if (!is_static && iter->global_seen)
4024             continue;
4025           if (!is_static)
4026             iter->global_seen = 1;
4027         }
4028
4029       /* Only check the symbol's kind if it has one.  */
4030       if (attrs_valid)
4031         {
4032           switch (iter->domain)
4033             {
4034             case VAR_DOMAIN:
4035               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4036                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4037                   /* Some types are also in VAR_DOMAIN.  */
4038                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4039                 continue;
4040               break;
4041             case STRUCT_DOMAIN:
4042               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4043                 continue;
4044               break;
4045             case LABEL_DOMAIN:
4046               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4047                 continue;
4048               break;
4049             default:
4050               break;
4051             }
4052         }
4053
4054       ++iter->next;
4055       return per_cu;
4056     }
4057
4058   return NULL;
4059 }
4060
4061 static struct compunit_symtab *
4062 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4063                    const char *name, domain_enum domain)
4064 {
4065   struct compunit_symtab *stab_best = NULL;
4066   struct dwarf2_per_objfile *dwarf2_per_objfile
4067     = get_dwarf2_per_objfile (objfile);
4068
4069   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4070
4071   struct dw2_symtab_iterator iter;
4072   struct dwarf2_per_cu_data *per_cu;
4073
4074   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4075
4076   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4077     {
4078       struct symbol *sym, *with_opaque = NULL;
4079       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4080       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4081       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4082
4083       sym = block_find_symbol (block, name, domain,
4084                                block_find_non_opaque_type_preferred,
4085                                &with_opaque);
4086
4087       /* Some caution must be observed with overloaded functions
4088          and methods, since the index will not contain any overload
4089          information (but NAME might contain it).  */
4090
4091       if (sym != NULL
4092           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4093         return stab;
4094       if (with_opaque != NULL
4095           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4096         stab_best = stab;
4097
4098       /* Keep looking through other CUs.  */
4099     }
4100
4101   return stab_best;
4102 }
4103
4104 static void
4105 dw2_print_stats (struct objfile *objfile)
4106 {
4107   struct dwarf2_per_objfile *dwarf2_per_objfile
4108     = get_dwarf2_per_objfile (objfile);
4109   int total = (dwarf2_per_objfile->all_comp_units.size ()
4110                + dwarf2_per_objfile->all_type_units.size ());
4111   int count = 0;
4112
4113   for (int i = 0; i < total; ++i)
4114     {
4115       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4116
4117       if (!per_cu->v.quick->compunit_symtab)
4118         ++count;
4119     }
4120   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4121   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4122 }
4123
4124 /* This dumps minimal information about the index.
4125    It is called via "mt print objfiles".
4126    One use is to verify .gdb_index has been loaded by the
4127    gdb.dwarf2/gdb-index.exp testcase.  */
4128
4129 static void
4130 dw2_dump (struct objfile *objfile)
4131 {
4132   struct dwarf2_per_objfile *dwarf2_per_objfile
4133     = get_dwarf2_per_objfile (objfile);
4134
4135   gdb_assert (dwarf2_per_objfile->using_index);
4136   printf_filtered (".gdb_index:");
4137   if (dwarf2_per_objfile->index_table != NULL)
4138     {
4139       printf_filtered (" version %d\n",
4140                        dwarf2_per_objfile->index_table->version);
4141     }
4142   else
4143     printf_filtered (" faked for \"readnow\"\n");
4144   printf_filtered ("\n");
4145 }
4146
4147 static void
4148 dw2_expand_symtabs_for_function (struct objfile *objfile,
4149                                  const char *func_name)
4150 {
4151   struct dwarf2_per_objfile *dwarf2_per_objfile
4152     = get_dwarf2_per_objfile (objfile);
4153
4154   struct dw2_symtab_iterator iter;
4155   struct dwarf2_per_cu_data *per_cu;
4156
4157   /* Note: It doesn't matter what we pass for block_index here.  */
4158   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4159                         func_name);
4160
4161   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4162     dw2_instantiate_symtab (per_cu, false);
4163
4164 }
4165
4166 static void
4167 dw2_expand_all_symtabs (struct objfile *objfile)
4168 {
4169   struct dwarf2_per_objfile *dwarf2_per_objfile
4170     = get_dwarf2_per_objfile (objfile);
4171   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4172                      + dwarf2_per_objfile->all_type_units.size ());
4173
4174   for (int i = 0; i < total_units; ++i)
4175     {
4176       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4177
4178       /* We don't want to directly expand a partial CU, because if we
4179          read it with the wrong language, then assertion failures can
4180          be triggered later on.  See PR symtab/23010.  So, tell
4181          dw2_instantiate_symtab to skip partial CUs -- any important
4182          partial CU will be read via DW_TAG_imported_unit anyway.  */
4183       dw2_instantiate_symtab (per_cu, true);
4184     }
4185 }
4186
4187 static void
4188 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4189                                   const char *fullname)
4190 {
4191   struct dwarf2_per_objfile *dwarf2_per_objfile
4192     = get_dwarf2_per_objfile (objfile);
4193
4194   /* We don't need to consider type units here.
4195      This is only called for examining code, e.g. expand_line_sal.
4196      There can be an order of magnitude (or more) more type units
4197      than comp units, and we avoid them if we can.  */
4198
4199   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4200     {
4201       /* We only need to look at symtabs not already expanded.  */
4202       if (per_cu->v.quick->compunit_symtab)
4203         continue;
4204
4205       quick_file_names *file_data = dw2_get_file_names (per_cu);
4206       if (file_data == NULL)
4207         continue;
4208
4209       for (int j = 0; j < file_data->num_file_names; ++j)
4210         {
4211           const char *this_fullname = file_data->file_names[j];
4212
4213           if (filename_cmp (this_fullname, fullname) == 0)
4214             {
4215               dw2_instantiate_symtab (per_cu, false);
4216               break;
4217             }
4218         }
4219     }
4220 }
4221
4222 static void
4223 dw2_map_matching_symbols (struct objfile *objfile,
4224                           const char * name, domain_enum domain,
4225                           int global,
4226                           int (*callback) (const struct block *,
4227                                            struct symbol *, void *),
4228                           void *data, symbol_name_match_type match,
4229                           symbol_compare_ftype *ordered_compare)
4230 {
4231   /* Currently unimplemented; used for Ada.  The function can be called if the
4232      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4233      does not look for non-Ada symbols this function should just return.  */
4234 }
4235
4236 /* Symbol name matcher for .gdb_index names.
4237
4238    Symbol names in .gdb_index have a few particularities:
4239
4240    - There's no indication of which is the language of each symbol.
4241
4242      Since each language has its own symbol name matching algorithm,
4243      and we don't know which language is the right one, we must match
4244      each symbol against all languages.  This would be a potential
4245      performance problem if it were not mitigated by the
4246      mapped_index::name_components lookup table, which significantly
4247      reduces the number of times we need to call into this matcher,
4248      making it a non-issue.
4249
4250    - Symbol names in the index have no overload (parameter)
4251      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4252      appear as "foo" in the index, for example.
4253
4254      This means that the lookup names passed to the symbol name
4255      matcher functions must have no parameter information either
4256      because (e.g.) symbol search name "foo" does not match
4257      lookup-name "foo(int)" [while swapping search name for lookup
4258      name would match].
4259 */
4260 class gdb_index_symbol_name_matcher
4261 {
4262 public:
4263   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4264   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4265
4266   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4267      Returns true if any matcher matches.  */
4268   bool matches (const char *symbol_name);
4269
4270 private:
4271   /* A reference to the lookup name we're matching against.  */
4272   const lookup_name_info &m_lookup_name;
4273
4274   /* A vector holding all the different symbol name matchers, for all
4275      languages.  */
4276   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4277 };
4278
4279 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4280   (const lookup_name_info &lookup_name)
4281     : m_lookup_name (lookup_name)
4282 {
4283   /* Prepare the vector of comparison functions upfront, to avoid
4284      doing the same work for each symbol.  Care is taken to avoid
4285      matching with the same matcher more than once if/when multiple
4286      languages use the same matcher function.  */
4287   auto &matchers = m_symbol_name_matcher_funcs;
4288   matchers.reserve (nr_languages);
4289
4290   matchers.push_back (default_symbol_name_matcher);
4291
4292   for (int i = 0; i < nr_languages; i++)
4293     {
4294       const language_defn *lang = language_def ((enum language) i);
4295       symbol_name_matcher_ftype *name_matcher
4296         = get_symbol_name_matcher (lang, m_lookup_name);
4297
4298       /* Don't insert the same comparison routine more than once.
4299          Note that we do this linear walk instead of a seemingly
4300          cheaper sorted insert, or use a std::set or something like
4301          that, because relative order of function addresses is not
4302          stable.  This is not a problem in practice because the number
4303          of supported languages is low, and the cost here is tiny
4304          compared to the number of searches we'll do afterwards using
4305          this object.  */
4306       if (name_matcher != default_symbol_name_matcher
4307           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4308               == matchers.end ()))
4309         matchers.push_back (name_matcher);
4310     }
4311 }
4312
4313 bool
4314 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4315 {
4316   for (auto matches_name : m_symbol_name_matcher_funcs)
4317     if (matches_name (symbol_name, m_lookup_name, NULL))
4318       return true;
4319
4320   return false;
4321 }
4322
4323 /* Starting from a search name, return the string that finds the upper
4324    bound of all strings that start with SEARCH_NAME in a sorted name
4325    list.  Returns the empty string to indicate that the upper bound is
4326    the end of the list.  */
4327
4328 static std::string
4329 make_sort_after_prefix_name (const char *search_name)
4330 {
4331   /* When looking to complete "func", we find the upper bound of all
4332      symbols that start with "func" by looking for where we'd insert
4333      the closest string that would follow "func" in lexicographical
4334      order.  Usually, that's "func"-with-last-character-incremented,
4335      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4336      will be UTF-8 multi-byte sequences, but we can't be certain.
4337      Especially mind the 0xff character, which is a valid character in
4338      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4339      rule out compilers allowing it in identifiers.  Note that
4340      conveniently, strcmp/strcasecmp are specified to compare
4341      characters interpreted as unsigned char.  So what we do is treat
4342      the whole string as a base 256 number composed of a sequence of
4343      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4344      to 0, and carries 1 to the following more-significant position.
4345      If the very first character in SEARCH_NAME ends up incremented
4346      and carries/overflows, then the upper bound is the end of the
4347      list.  The string after the empty string is also the empty
4348      string.
4349
4350      Some examples of this operation:
4351
4352        SEARCH_NAME  => "+1" RESULT
4353
4354        "abc"              => "abd"
4355        "ab\xff"           => "ac"
4356        "\xff" "a" "\xff"  => "\xff" "b"
4357        "\xff"             => ""
4358        "\xff\xff"         => ""
4359        ""                 => ""
4360
4361      Then, with these symbols for example:
4362
4363       func
4364       func1
4365       fund
4366
4367      completing "func" looks for symbols between "func" and
4368      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4369      which finds "func" and "func1", but not "fund".
4370
4371      And with:
4372
4373       funcÿ     (Latin1 'ÿ' [0xff])
4374       funcÿ1
4375       fund
4376
4377      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4378      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4379
4380      And with:
4381
4382       ÿÿ        (Latin1 'ÿ' [0xff])
4383       ÿÿ1
4384
4385      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4386      the end of the list.
4387   */
4388   std::string after = search_name;
4389   while (!after.empty () && (unsigned char) after.back () == 0xff)
4390     after.pop_back ();
4391   if (!after.empty ())
4392     after.back () = (unsigned char) after.back () + 1;
4393   return after;
4394 }
4395
4396 /* See declaration.  */
4397
4398 std::pair<std::vector<name_component>::const_iterator,
4399           std::vector<name_component>::const_iterator>
4400 mapped_index_base::find_name_components_bounds
4401   (const lookup_name_info &lookup_name_without_params) const
4402 {
4403   auto *name_cmp
4404     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4405
4406   const char *cplus
4407     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4408
4409   /* Comparison function object for lower_bound that matches against a
4410      given symbol name.  */
4411   auto lookup_compare_lower = [&] (const name_component &elem,
4412                                    const char *name)
4413     {
4414       const char *elem_qualified = this->symbol_name_at (elem.idx);
4415       const char *elem_name = elem_qualified + elem.name_offset;
4416       return name_cmp (elem_name, name) < 0;
4417     };
4418
4419   /* Comparison function object for upper_bound that matches against a
4420      given symbol name.  */
4421   auto lookup_compare_upper = [&] (const char *name,
4422                                    const name_component &elem)
4423     {
4424       const char *elem_qualified = this->symbol_name_at (elem.idx);
4425       const char *elem_name = elem_qualified + elem.name_offset;
4426       return name_cmp (name, elem_name) < 0;
4427     };
4428
4429   auto begin = this->name_components.begin ();
4430   auto end = this->name_components.end ();
4431
4432   /* Find the lower bound.  */
4433   auto lower = [&] ()
4434     {
4435       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4436         return begin;
4437       else
4438         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4439     } ();
4440
4441   /* Find the upper bound.  */
4442   auto upper = [&] ()
4443     {
4444       if (lookup_name_without_params.completion_mode ())
4445         {
4446           /* In completion mode, we want UPPER to point past all
4447              symbols names that have the same prefix.  I.e., with
4448              these symbols, and completing "func":
4449
4450               function        << lower bound
4451               function1
4452               other_function  << upper bound
4453
4454              We find the upper bound by looking for the insertion
4455              point of "func"-with-last-character-incremented,
4456              i.e. "fund".  */
4457           std::string after = make_sort_after_prefix_name (cplus);
4458           if (after.empty ())
4459             return end;
4460           return std::lower_bound (lower, end, after.c_str (),
4461                                    lookup_compare_lower);
4462         }
4463       else
4464         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4465     } ();
4466
4467   return {lower, upper};
4468 }
4469
4470 /* See declaration.  */
4471
4472 void
4473 mapped_index_base::build_name_components ()
4474 {
4475   if (!this->name_components.empty ())
4476     return;
4477
4478   this->name_components_casing = case_sensitivity;
4479   auto *name_cmp
4480     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4481
4482   /* The code below only knows how to break apart components of C++
4483      symbol names (and other languages that use '::' as
4484      namespace/module separator).  If we add support for wild matching
4485      to some language that uses some other operator (E.g., Ada, Go and
4486      D use '.'), then we'll need to try splitting the symbol name
4487      according to that language too.  Note that Ada does support wild
4488      matching, but doesn't currently support .gdb_index.  */
4489   auto count = this->symbol_name_count ();
4490   for (offset_type idx = 0; idx < count; idx++)
4491     {
4492       if (this->symbol_name_slot_invalid (idx))
4493         continue;
4494
4495       const char *name = this->symbol_name_at (idx);
4496
4497       /* Add each name component to the name component table.  */
4498       unsigned int previous_len = 0;
4499       for (unsigned int current_len = cp_find_first_component (name);
4500            name[current_len] != '\0';
4501            current_len += cp_find_first_component (name + current_len))
4502         {
4503           gdb_assert (name[current_len] == ':');
4504           this->name_components.push_back ({previous_len, idx});
4505           /* Skip the '::'.  */
4506           current_len += 2;
4507           previous_len = current_len;
4508         }
4509       this->name_components.push_back ({previous_len, idx});
4510     }
4511
4512   /* Sort name_components elements by name.  */
4513   auto name_comp_compare = [&] (const name_component &left,
4514                                 const name_component &right)
4515     {
4516       const char *left_qualified = this->symbol_name_at (left.idx);
4517       const char *right_qualified = this->symbol_name_at (right.idx);
4518
4519       const char *left_name = left_qualified + left.name_offset;
4520       const char *right_name = right_qualified + right.name_offset;
4521
4522       return name_cmp (left_name, right_name) < 0;
4523     };
4524
4525   std::sort (this->name_components.begin (),
4526              this->name_components.end (),
4527              name_comp_compare);
4528 }
4529
4530 /* Helper for dw2_expand_symtabs_matching that works with a
4531    mapped_index_base instead of the containing objfile.  This is split
4532    to a separate function in order to be able to unit test the
4533    name_components matching using a mock mapped_index_base.  For each
4534    symbol name that matches, calls MATCH_CALLBACK, passing it the
4535    symbol's index in the mapped_index_base symbol table.  */
4536
4537 static void
4538 dw2_expand_symtabs_matching_symbol
4539   (mapped_index_base &index,
4540    const lookup_name_info &lookup_name_in,
4541    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4542    enum search_domain kind,
4543    gdb::function_view<void (offset_type)> match_callback)
4544 {
4545   lookup_name_info lookup_name_without_params
4546     = lookup_name_in.make_ignore_params ();
4547   gdb_index_symbol_name_matcher lookup_name_matcher
4548     (lookup_name_without_params);
4549
4550   /* Build the symbol name component sorted vector, if we haven't
4551      yet.  */
4552   index.build_name_components ();
4553
4554   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4555
4556   /* Now for each symbol name in range, check to see if we have a name
4557      match, and if so, call the MATCH_CALLBACK callback.  */
4558
4559   /* The same symbol may appear more than once in the range though.
4560      E.g., if we're looking for symbols that complete "w", and we have
4561      a symbol named "w1::w2", we'll find the two name components for
4562      that same symbol in the range.  To be sure we only call the
4563      callback once per symbol, we first collect the symbol name
4564      indexes that matched in a temporary vector and ignore
4565      duplicates.  */
4566   std::vector<offset_type> matches;
4567   matches.reserve (std::distance (bounds.first, bounds.second));
4568
4569   for (; bounds.first != bounds.second; ++bounds.first)
4570     {
4571       const char *qualified = index.symbol_name_at (bounds.first->idx);
4572
4573       if (!lookup_name_matcher.matches (qualified)
4574           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4575         continue;
4576
4577       matches.push_back (bounds.first->idx);
4578     }
4579
4580   std::sort (matches.begin (), matches.end ());
4581
4582   /* Finally call the callback, once per match.  */
4583   ULONGEST prev = -1;
4584   for (offset_type idx : matches)
4585     {
4586       if (prev != idx)
4587         {
4588           match_callback (idx);
4589           prev = idx;
4590         }
4591     }
4592
4593   /* Above we use a type wider than idx's for 'prev', since 0 and
4594      (offset_type)-1 are both possible values.  */
4595   static_assert (sizeof (prev) > sizeof (offset_type), "");
4596 }
4597
4598 #if GDB_SELF_TEST
4599
4600 namespace selftests { namespace dw2_expand_symtabs_matching {
4601
4602 /* A mock .gdb_index/.debug_names-like name index table, enough to
4603    exercise dw2_expand_symtabs_matching_symbol, which works with the
4604    mapped_index_base interface.  Builds an index from the symbol list
4605    passed as parameter to the constructor.  */
4606 class mock_mapped_index : public mapped_index_base
4607 {
4608 public:
4609   mock_mapped_index (gdb::array_view<const char *> symbols)
4610     : m_symbol_table (symbols)
4611   {}
4612
4613   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4614
4615   /* Return the number of names in the symbol table.  */
4616   size_t symbol_name_count () const override
4617   {
4618     return m_symbol_table.size ();
4619   }
4620
4621   /* Get the name of the symbol at IDX in the symbol table.  */
4622   const char *symbol_name_at (offset_type idx) const override
4623   {
4624     return m_symbol_table[idx];
4625   }
4626
4627 private:
4628   gdb::array_view<const char *> m_symbol_table;
4629 };
4630
4631 /* Convenience function that converts a NULL pointer to a "<null>"
4632    string, to pass to print routines.  */
4633
4634 static const char *
4635 string_or_null (const char *str)
4636 {
4637   return str != NULL ? str : "<null>";
4638 }
4639
4640 /* Check if a lookup_name_info built from
4641    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4642    index.  EXPECTED_LIST is the list of expected matches, in expected
4643    matching order.  If no match expected, then an empty list is
4644    specified.  Returns true on success.  On failure prints a warning
4645    indicating the file:line that failed, and returns false.  */
4646
4647 static bool
4648 check_match (const char *file, int line,
4649              mock_mapped_index &mock_index,
4650              const char *name, symbol_name_match_type match_type,
4651              bool completion_mode,
4652              std::initializer_list<const char *> expected_list)
4653 {
4654   lookup_name_info lookup_name (name, match_type, completion_mode);
4655
4656   bool matched = true;
4657
4658   auto mismatch = [&] (const char *expected_str,
4659                        const char *got)
4660   {
4661     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4662                "expected=\"%s\", got=\"%s\"\n"),
4663              file, line,
4664              (match_type == symbol_name_match_type::FULL
4665               ? "FULL" : "WILD"),
4666              name, string_or_null (expected_str), string_or_null (got));
4667     matched = false;
4668   };
4669
4670   auto expected_it = expected_list.begin ();
4671   auto expected_end = expected_list.end ();
4672
4673   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4674                                       NULL, ALL_DOMAIN,
4675                                       [&] (offset_type idx)
4676   {
4677     const char *matched_name = mock_index.symbol_name_at (idx);
4678     const char *expected_str
4679       = expected_it == expected_end ? NULL : *expected_it++;
4680
4681     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4682       mismatch (expected_str, matched_name);
4683   });
4684
4685   const char *expected_str
4686   = expected_it == expected_end ? NULL : *expected_it++;
4687   if (expected_str != NULL)
4688     mismatch (expected_str, NULL);
4689
4690   return matched;
4691 }
4692
4693 /* The symbols added to the mock mapped_index for testing (in
4694    canonical form).  */
4695 static const char *test_symbols[] = {
4696   "function",
4697   "std::bar",
4698   "std::zfunction",
4699   "std::zfunction2",
4700   "w1::w2",
4701   "ns::foo<char*>",
4702   "ns::foo<int>",
4703   "ns::foo<long>",
4704   "ns2::tmpl<int>::foo2",
4705   "(anonymous namespace)::A::B::C",
4706
4707   /* These are used to check that the increment-last-char in the
4708      matching algorithm for completion doesn't match "t1_fund" when
4709      completing "t1_func".  */
4710   "t1_func",
4711   "t1_func1",
4712   "t1_fund",
4713   "t1_fund1",
4714
4715   /* A UTF-8 name with multi-byte sequences to make sure that
4716      cp-name-parser understands this as a single identifier ("função"
4717      is "function" in PT).  */
4718   u8"u8função",
4719
4720   /* \377 (0xff) is Latin1 'ÿ'.  */
4721   "yfunc\377",
4722
4723   /* \377 (0xff) is Latin1 'ÿ'.  */
4724   "\377",
4725   "\377\377123",
4726
4727   /* A name with all sorts of complications.  Starts with "z" to make
4728      it easier for the completion tests below.  */
4729 #define Z_SYM_NAME \
4730   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4731     "::tuple<(anonymous namespace)::ui*, " \
4732     "std::default_delete<(anonymous namespace)::ui>, void>"
4733
4734   Z_SYM_NAME
4735 };
4736
4737 /* Returns true if the mapped_index_base::find_name_component_bounds
4738    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4739    in completion mode.  */
4740
4741 static bool
4742 check_find_bounds_finds (mapped_index_base &index,
4743                          const char *search_name,
4744                          gdb::array_view<const char *> expected_syms)
4745 {
4746   lookup_name_info lookup_name (search_name,
4747                                 symbol_name_match_type::FULL, true);
4748
4749   auto bounds = index.find_name_components_bounds (lookup_name);
4750
4751   size_t distance = std::distance (bounds.first, bounds.second);
4752   if (distance != expected_syms.size ())
4753     return false;
4754
4755   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4756     {
4757       auto nc_elem = bounds.first + exp_elem;
4758       const char *qualified = index.symbol_name_at (nc_elem->idx);
4759       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4760         return false;
4761     }
4762
4763   return true;
4764 }
4765
4766 /* Test the lower-level mapped_index::find_name_component_bounds
4767    method.  */
4768
4769 static void
4770 test_mapped_index_find_name_component_bounds ()
4771 {
4772   mock_mapped_index mock_index (test_symbols);
4773
4774   mock_index.build_name_components ();
4775
4776   /* Test the lower-level mapped_index::find_name_component_bounds
4777      method in completion mode.  */
4778   {
4779     static const char *expected_syms[] = {
4780       "t1_func",
4781       "t1_func1",
4782     };
4783
4784     SELF_CHECK (check_find_bounds_finds (mock_index,
4785                                          "t1_func", expected_syms));
4786   }
4787
4788   /* Check that the increment-last-char in the name matching algorithm
4789      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4790   {
4791     static const char *expected_syms1[] = {
4792       "\377",
4793       "\377\377123",
4794     };
4795     SELF_CHECK (check_find_bounds_finds (mock_index,
4796                                          "\377", expected_syms1));
4797
4798     static const char *expected_syms2[] = {
4799       "\377\377123",
4800     };
4801     SELF_CHECK (check_find_bounds_finds (mock_index,
4802                                          "\377\377", expected_syms2));
4803   }
4804 }
4805
4806 /* Test dw2_expand_symtabs_matching_symbol.  */
4807
4808 static void
4809 test_dw2_expand_symtabs_matching_symbol ()
4810 {
4811   mock_mapped_index mock_index (test_symbols);
4812
4813   /* We let all tests run until the end even if some fails, for debug
4814      convenience.  */
4815   bool any_mismatch = false;
4816
4817   /* Create the expected symbols list (an initializer_list).  Needed
4818      because lists have commas, and we need to pass them to CHECK,
4819      which is a macro.  */
4820 #define EXPECT(...) { __VA_ARGS__ }
4821
4822   /* Wrapper for check_match that passes down the current
4823      __FILE__/__LINE__.  */
4824 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4825   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4826                                 mock_index,                             \
4827                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4828                                 EXPECTED_LIST)
4829
4830   /* Identity checks.  */
4831   for (const char *sym : test_symbols)
4832     {
4833       /* Should be able to match all existing symbols.  */
4834       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4835                    EXPECT (sym));
4836
4837       /* Should be able to match all existing symbols with
4838          parameters.  */
4839       std::string with_params = std::string (sym) + "(int)";
4840       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4841                    EXPECT (sym));
4842
4843       /* Should be able to match all existing symbols with
4844          parameters and qualifiers.  */
4845       with_params = std::string (sym) + " ( int ) const";
4846       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4847                    EXPECT (sym));
4848
4849       /* This should really find sym, but cp-name-parser.y doesn't
4850          know about lvalue/rvalue qualifiers yet.  */
4851       with_params = std::string (sym) + " ( int ) &&";
4852       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4853                    {});
4854     }
4855
4856   /* Check that the name matching algorithm for completion doesn't get
4857      confused with Latin1 'ÿ' / 0xff.  */
4858   {
4859     static const char str[] = "\377";
4860     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4861                  EXPECT ("\377", "\377\377123"));
4862   }
4863
4864   /* Check that the increment-last-char in the matching algorithm for
4865      completion doesn't match "t1_fund" when completing "t1_func".  */
4866   {
4867     static const char str[] = "t1_func";
4868     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4869                  EXPECT ("t1_func", "t1_func1"));
4870   }
4871
4872   /* Check that completion mode works at each prefix of the expected
4873      symbol name.  */
4874   {
4875     static const char str[] = "function(int)";
4876     size_t len = strlen (str);
4877     std::string lookup;
4878
4879     for (size_t i = 1; i < len; i++)
4880       {
4881         lookup.assign (str, i);
4882         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4883                      EXPECT ("function"));
4884       }
4885   }
4886
4887   /* While "w" is a prefix of both components, the match function
4888      should still only be called once.  */
4889   {
4890     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4891                  EXPECT ("w1::w2"));
4892     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4893                  EXPECT ("w1::w2"));
4894   }
4895
4896   /* Same, with a "complicated" symbol.  */
4897   {
4898     static const char str[] = Z_SYM_NAME;
4899     size_t len = strlen (str);
4900     std::string lookup;
4901
4902     for (size_t i = 1; i < len; i++)
4903       {
4904         lookup.assign (str, i);
4905         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4906                      EXPECT (Z_SYM_NAME));
4907       }
4908   }
4909
4910   /* In FULL mode, an incomplete symbol doesn't match.  */
4911   {
4912     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4913                  {});
4914   }
4915
4916   /* A complete symbol with parameters matches any overload, since the
4917      index has no overload info.  */
4918   {
4919     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4920                  EXPECT ("std::zfunction", "std::zfunction2"));
4921     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4922                  EXPECT ("std::zfunction", "std::zfunction2"));
4923     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4924                  EXPECT ("std::zfunction", "std::zfunction2"));
4925   }
4926
4927   /* Check that whitespace is ignored appropriately.  A symbol with a
4928      template argument list. */
4929   {
4930     static const char expected[] = "ns::foo<int>";
4931     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4932                  EXPECT (expected));
4933     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4934                  EXPECT (expected));
4935   }
4936
4937   /* Check that whitespace is ignored appropriately.  A symbol with a
4938      template argument list that includes a pointer.  */
4939   {
4940     static const char expected[] = "ns::foo<char*>";
4941     /* Try both completion and non-completion modes.  */
4942     static const bool completion_mode[2] = {false, true};
4943     for (size_t i = 0; i < 2; i++)
4944       {
4945         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4946                      completion_mode[i], EXPECT (expected));
4947         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4948                      completion_mode[i], EXPECT (expected));
4949
4950         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4951                      completion_mode[i], EXPECT (expected));
4952         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4953                      completion_mode[i], EXPECT (expected));
4954       }
4955   }
4956
4957   {
4958     /* Check method qualifiers are ignored.  */
4959     static const char expected[] = "ns::foo<char*>";
4960     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4961                  symbol_name_match_type::FULL, true, EXPECT (expected));
4962     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4963                  symbol_name_match_type::FULL, true, EXPECT (expected));
4964     CHECK_MATCH ("foo < char * >  ( int ) const",
4965                  symbol_name_match_type::WILD, true, EXPECT (expected));
4966     CHECK_MATCH ("foo < char * >  ( int ) &&",
4967                  symbol_name_match_type::WILD, true, EXPECT (expected));
4968   }
4969
4970   /* Test lookup names that don't match anything.  */
4971   {
4972     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4973                  {});
4974
4975     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4976                  {});
4977   }
4978
4979   /* Some wild matching tests, exercising "(anonymous namespace)",
4980      which should not be confused with a parameter list.  */
4981   {
4982     static const char *syms[] = {
4983       "A::B::C",
4984       "B::C",
4985       "C",
4986       "A :: B :: C ( int )",
4987       "B :: C ( int )",
4988       "C ( int )",
4989     };
4990
4991     for (const char *s : syms)
4992       {
4993         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4994                      EXPECT ("(anonymous namespace)::A::B::C"));
4995       }
4996   }
4997
4998   {
4999     static const char expected[] = "ns2::tmpl<int>::foo2";
5000     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
5001                  EXPECT (expected));
5002     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
5003                  EXPECT (expected));
5004   }
5005
5006   SELF_CHECK (!any_mismatch);
5007
5008 #undef EXPECT
5009 #undef CHECK_MATCH
5010 }
5011
5012 static void
5013 run_test ()
5014 {
5015   test_mapped_index_find_name_component_bounds ();
5016   test_dw2_expand_symtabs_matching_symbol ();
5017 }
5018
5019 }} // namespace selftests::dw2_expand_symtabs_matching
5020
5021 #endif /* GDB_SELF_TEST */
5022
5023 /* If FILE_MATCHER is NULL or if PER_CU has
5024    dwarf2_per_cu_quick_data::MARK set (see
5025    dw_expand_symtabs_matching_file_matcher), expand the CU and call
5026    EXPANSION_NOTIFY on it.  */
5027
5028 static void
5029 dw2_expand_symtabs_matching_one
5030   (struct dwarf2_per_cu_data *per_cu,
5031    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5032    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5033 {
5034   if (file_matcher == NULL || per_cu->v.quick->mark)
5035     {
5036       bool symtab_was_null
5037         = (per_cu->v.quick->compunit_symtab == NULL);
5038
5039       dw2_instantiate_symtab (per_cu, false);
5040
5041       if (expansion_notify != NULL
5042           && symtab_was_null
5043           && per_cu->v.quick->compunit_symtab != NULL)
5044         expansion_notify (per_cu->v.quick->compunit_symtab);
5045     }
5046 }
5047
5048 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5049    matched, to expand corresponding CUs that were marked.  IDX is the
5050    index of the symbol name that matched.  */
5051
5052 static void
5053 dw2_expand_marked_cus
5054   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5055    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5056    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5057    search_domain kind)
5058 {
5059   offset_type *vec, vec_len, vec_idx;
5060   bool global_seen = false;
5061   mapped_index &index = *dwarf2_per_objfile->index_table;
5062
5063   vec = (offset_type *) (index.constant_pool
5064                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5065   vec_len = MAYBE_SWAP (vec[0]);
5066   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5067     {
5068       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5069       /* This value is only valid for index versions >= 7.  */
5070       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5071       gdb_index_symbol_kind symbol_kind =
5072         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5073       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5074       /* Only check the symbol attributes if they're present.
5075          Indices prior to version 7 don't record them,
5076          and indices >= 7 may elide them for certain symbols
5077          (gold does this).  */
5078       int attrs_valid =
5079         (index.version >= 7
5080          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5081
5082       /* Work around gold/15646.  */
5083       if (attrs_valid)
5084         {
5085           if (!is_static && global_seen)
5086             continue;
5087           if (!is_static)
5088             global_seen = true;
5089         }
5090
5091       /* Only check the symbol's kind if it has one.  */
5092       if (attrs_valid)
5093         {
5094           switch (kind)
5095             {
5096             case VARIABLES_DOMAIN:
5097               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5098                 continue;
5099               break;
5100             case FUNCTIONS_DOMAIN:
5101               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5102                 continue;
5103               break;
5104             case TYPES_DOMAIN:
5105               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5106                 continue;
5107               break;
5108             default:
5109               break;
5110             }
5111         }
5112
5113       /* Don't crash on bad data.  */
5114       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5115                        + dwarf2_per_objfile->all_type_units.size ()))
5116         {
5117           complaint (_(".gdb_index entry has bad CU index"
5118                        " [in module %s]"),
5119                        objfile_name (dwarf2_per_objfile->objfile));
5120           continue;
5121         }
5122
5123       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5124       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5125                                        expansion_notify);
5126     }
5127 }
5128
5129 /* If FILE_MATCHER is non-NULL, set all the
5130    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5131    that match FILE_MATCHER.  */
5132
5133 static void
5134 dw_expand_symtabs_matching_file_matcher
5135   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5136    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5137 {
5138   if (file_matcher == NULL)
5139     return;
5140
5141   objfile *const objfile = dwarf2_per_objfile->objfile;
5142
5143   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5144                                             htab_eq_pointer,
5145                                             NULL, xcalloc, xfree));
5146   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5147                                                 htab_eq_pointer,
5148                                                 NULL, xcalloc, xfree));
5149
5150   /* The rule is CUs specify all the files, including those used by
5151      any TU, so there's no need to scan TUs here.  */
5152
5153   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5154     {
5155       QUIT;
5156
5157       per_cu->v.quick->mark = 0;
5158
5159       /* We only need to look at symtabs not already expanded.  */
5160       if (per_cu->v.quick->compunit_symtab)
5161         continue;
5162
5163       quick_file_names *file_data = dw2_get_file_names (per_cu);
5164       if (file_data == NULL)
5165         continue;
5166
5167       if (htab_find (visited_not_found.get (), file_data) != NULL)
5168         continue;
5169       else if (htab_find (visited_found.get (), file_data) != NULL)
5170         {
5171           per_cu->v.quick->mark = 1;
5172           continue;
5173         }
5174
5175       for (int j = 0; j < file_data->num_file_names; ++j)
5176         {
5177           const char *this_real_name;
5178
5179           if (file_matcher (file_data->file_names[j], false))
5180             {
5181               per_cu->v.quick->mark = 1;
5182               break;
5183             }
5184
5185           /* Before we invoke realpath, which can get expensive when many
5186              files are involved, do a quick comparison of the basenames.  */
5187           if (!basenames_may_differ
5188               && !file_matcher (lbasename (file_data->file_names[j]),
5189                                 true))
5190             continue;
5191
5192           this_real_name = dw2_get_real_path (objfile, file_data, j);
5193           if (file_matcher (this_real_name, false))
5194             {
5195               per_cu->v.quick->mark = 1;
5196               break;
5197             }
5198         }
5199
5200       void **slot = htab_find_slot (per_cu->v.quick->mark
5201                                     ? visited_found.get ()
5202                                     : visited_not_found.get (),
5203                                     file_data, INSERT);
5204       *slot = file_data;
5205     }
5206 }
5207
5208 static void
5209 dw2_expand_symtabs_matching
5210   (struct objfile *objfile,
5211    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5212    const lookup_name_info &lookup_name,
5213    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5214    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5215    enum search_domain kind)
5216 {
5217   struct dwarf2_per_objfile *dwarf2_per_objfile
5218     = get_dwarf2_per_objfile (objfile);
5219
5220   /* index_table is NULL if OBJF_READNOW.  */
5221   if (!dwarf2_per_objfile->index_table)
5222     return;
5223
5224   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5225
5226   mapped_index &index = *dwarf2_per_objfile->index_table;
5227
5228   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5229                                       symbol_matcher,
5230                                       kind, [&] (offset_type idx)
5231     {
5232       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5233                              expansion_notify, kind);
5234     });
5235 }
5236
5237 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5238    symtab.  */
5239
5240 static struct compunit_symtab *
5241 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5242                                           CORE_ADDR pc)
5243 {
5244   int i;
5245
5246   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5247       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5248     return cust;
5249
5250   if (cust->includes == NULL)
5251     return NULL;
5252
5253   for (i = 0; cust->includes[i]; ++i)
5254     {
5255       struct compunit_symtab *s = cust->includes[i];
5256
5257       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5258       if (s != NULL)
5259         return s;
5260     }
5261
5262   return NULL;
5263 }
5264
5265 static struct compunit_symtab *
5266 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5267                                   struct bound_minimal_symbol msymbol,
5268                                   CORE_ADDR pc,
5269                                   struct obj_section *section,
5270                                   int warn_if_readin)
5271 {
5272   struct dwarf2_per_cu_data *data;
5273   struct compunit_symtab *result;
5274
5275   if (!objfile->partial_symtabs->psymtabs_addrmap)
5276     return NULL;
5277
5278   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5279                                  SECT_OFF_TEXT (objfile));
5280   data = (struct dwarf2_per_cu_data *) addrmap_find
5281     (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
5282   if (!data)
5283     return NULL;
5284
5285   if (warn_if_readin && data->v.quick->compunit_symtab)
5286     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5287              paddress (get_objfile_arch (objfile), pc));
5288
5289   result
5290     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5291                                                                         false),
5292                                                 pc);
5293   gdb_assert (result != NULL);
5294   return result;
5295 }
5296
5297 static void
5298 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5299                           void *data, int need_fullname)
5300 {
5301   struct dwarf2_per_objfile *dwarf2_per_objfile
5302     = get_dwarf2_per_objfile (objfile);
5303
5304   if (!dwarf2_per_objfile->filenames_cache)
5305     {
5306       dwarf2_per_objfile->filenames_cache.emplace ();
5307
5308       htab_up visited (htab_create_alloc (10,
5309                                           htab_hash_pointer, htab_eq_pointer,
5310                                           NULL, xcalloc, xfree));
5311
5312       /* The rule is CUs specify all the files, including those used
5313          by any TU, so there's no need to scan TUs here.  We can
5314          ignore file names coming from already-expanded CUs.  */
5315
5316       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5317         {
5318           if (per_cu->v.quick->compunit_symtab)
5319             {
5320               void **slot = htab_find_slot (visited.get (),
5321                                             per_cu->v.quick->file_names,
5322                                             INSERT);
5323
5324               *slot = per_cu->v.quick->file_names;
5325             }
5326         }
5327
5328       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5329         {
5330           /* We only need to look at symtabs not already expanded.  */
5331           if (per_cu->v.quick->compunit_symtab)
5332             continue;
5333
5334           quick_file_names *file_data = dw2_get_file_names (per_cu);
5335           if (file_data == NULL)
5336             continue;
5337
5338           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5339           if (*slot)
5340             {
5341               /* Already visited.  */
5342               continue;
5343             }
5344           *slot = file_data;
5345
5346           for (int j = 0; j < file_data->num_file_names; ++j)
5347             {
5348               const char *filename = file_data->file_names[j];
5349               dwarf2_per_objfile->filenames_cache->seen (filename);
5350             }
5351         }
5352     }
5353
5354   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5355     {
5356       gdb::unique_xmalloc_ptr<char> this_real_name;
5357
5358       if (need_fullname)
5359         this_real_name = gdb_realpath (filename);
5360       (*fun) (filename, this_real_name.get (), data);
5361     });
5362 }
5363
5364 static int
5365 dw2_has_symbols (struct objfile *objfile)
5366 {
5367   return 1;
5368 }
5369
5370 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5371 {
5372   dw2_has_symbols,
5373   dw2_find_last_source_symtab,
5374   dw2_forget_cached_source_info,
5375   dw2_map_symtabs_matching_filename,
5376   dw2_lookup_symbol,
5377   dw2_print_stats,
5378   dw2_dump,
5379   dw2_expand_symtabs_for_function,
5380   dw2_expand_all_symtabs,
5381   dw2_expand_symtabs_with_fullname,
5382   dw2_map_matching_symbols,
5383   dw2_expand_symtabs_matching,
5384   dw2_find_pc_sect_compunit_symtab,
5385   NULL,
5386   dw2_map_symbol_filenames
5387 };
5388
5389 /* DWARF-5 debug_names reader.  */
5390
5391 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5392 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5393
5394 /* A helper function that reads the .debug_names section in SECTION
5395    and fills in MAP.  FILENAME is the name of the file containing the
5396    section; it is used for error reporting.
5397
5398    Returns true if all went well, false otherwise.  */
5399
5400 static bool
5401 read_debug_names_from_section (struct objfile *objfile,
5402                                const char *filename,
5403                                struct dwarf2_section_info *section,
5404                                mapped_debug_names &map)
5405 {
5406   if (dwarf2_section_empty_p (section))
5407     return false;
5408
5409   /* Older elfutils strip versions could keep the section in the main
5410      executable while splitting it for the separate debug info file.  */
5411   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5412     return false;
5413
5414   dwarf2_read_section (objfile, section);
5415
5416   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5417
5418   const gdb_byte *addr = section->buffer;
5419
5420   bfd *const abfd = get_section_bfd_owner (section);
5421
5422   unsigned int bytes_read;
5423   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5424   addr += bytes_read;
5425
5426   map.dwarf5_is_dwarf64 = bytes_read != 4;
5427   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5428   if (bytes_read + length != section->size)
5429     {
5430       /* There may be multiple per-CU indices.  */
5431       warning (_("Section .debug_names in %s length %s does not match "
5432                  "section length %s, ignoring .debug_names."),
5433                filename, plongest (bytes_read + length),
5434                pulongest (section->size));
5435       return false;
5436     }
5437
5438   /* The version number.  */
5439   uint16_t version = read_2_bytes (abfd, addr);
5440   addr += 2;
5441   if (version != 5)
5442     {
5443       warning (_("Section .debug_names in %s has unsupported version %d, "
5444                  "ignoring .debug_names."),
5445                filename, version);
5446       return false;
5447     }
5448
5449   /* Padding.  */
5450   uint16_t padding = read_2_bytes (abfd, addr);
5451   addr += 2;
5452   if (padding != 0)
5453     {
5454       warning (_("Section .debug_names in %s has unsupported padding %d, "
5455                  "ignoring .debug_names."),
5456                filename, padding);
5457       return false;
5458     }
5459
5460   /* comp_unit_count - The number of CUs in the CU list.  */
5461   map.cu_count = read_4_bytes (abfd, addr);
5462   addr += 4;
5463
5464   /* local_type_unit_count - The number of TUs in the local TU
5465      list.  */
5466   map.tu_count = read_4_bytes (abfd, addr);
5467   addr += 4;
5468
5469   /* foreign_type_unit_count - The number of TUs in the foreign TU
5470      list.  */
5471   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5472   addr += 4;
5473   if (foreign_tu_count != 0)
5474     {
5475       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5476                  "ignoring .debug_names."),
5477                filename, static_cast<unsigned long> (foreign_tu_count));
5478       return false;
5479     }
5480
5481   /* bucket_count - The number of hash buckets in the hash lookup
5482      table.  */
5483   map.bucket_count = read_4_bytes (abfd, addr);
5484   addr += 4;
5485
5486   /* name_count - The number of unique names in the index.  */
5487   map.name_count = read_4_bytes (abfd, addr);
5488   addr += 4;
5489
5490   /* abbrev_table_size - The size in bytes of the abbreviations
5491      table.  */
5492   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5493   addr += 4;
5494
5495   /* augmentation_string_size - The size in bytes of the augmentation
5496      string.  This value is rounded up to a multiple of 4.  */
5497   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5498   addr += 4;
5499   map.augmentation_is_gdb = ((augmentation_string_size
5500                               == sizeof (dwarf5_augmentation))
5501                              && memcmp (addr, dwarf5_augmentation,
5502                                         sizeof (dwarf5_augmentation)) == 0);
5503   augmentation_string_size += (-augmentation_string_size) & 3;
5504   addr += augmentation_string_size;
5505
5506   /* List of CUs */
5507   map.cu_table_reordered = addr;
5508   addr += map.cu_count * map.offset_size;
5509
5510   /* List of Local TUs */
5511   map.tu_table_reordered = addr;
5512   addr += map.tu_count * map.offset_size;
5513
5514   /* Hash Lookup Table */
5515   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5516   addr += map.bucket_count * 4;
5517   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5518   addr += map.name_count * 4;
5519
5520   /* Name Table */
5521   map.name_table_string_offs_reordered = addr;
5522   addr += map.name_count * map.offset_size;
5523   map.name_table_entry_offs_reordered = addr;
5524   addr += map.name_count * map.offset_size;
5525
5526   const gdb_byte *abbrev_table_start = addr;
5527   for (;;)
5528     {
5529       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5530       addr += bytes_read;
5531       if (index_num == 0)
5532         break;
5533
5534       const auto insertpair
5535         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5536       if (!insertpair.second)
5537         {
5538           warning (_("Section .debug_names in %s has duplicate index %s, "
5539                      "ignoring .debug_names."),
5540                    filename, pulongest (index_num));
5541           return false;
5542         }
5543       mapped_debug_names::index_val &indexval = insertpair.first->second;
5544       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5545       addr += bytes_read;
5546
5547       for (;;)
5548         {
5549           mapped_debug_names::index_val::attr attr;
5550           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5551           addr += bytes_read;
5552           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5553           addr += bytes_read;
5554           if (attr.form == DW_FORM_implicit_const)
5555             {
5556               attr.implicit_const = read_signed_leb128 (abfd, addr,
5557                                                         &bytes_read);
5558               addr += bytes_read;
5559             }
5560           if (attr.dw_idx == 0 && attr.form == 0)
5561             break;
5562           indexval.attr_vec.push_back (std::move (attr));
5563         }
5564     }
5565   if (addr != abbrev_table_start + abbrev_table_size)
5566     {
5567       warning (_("Section .debug_names in %s has abbreviation_table "
5568                  "of size %zu vs. written as %u, ignoring .debug_names."),
5569                filename, addr - abbrev_table_start, abbrev_table_size);
5570       return false;
5571     }
5572   map.entry_pool = addr;
5573
5574   return true;
5575 }
5576
5577 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5578    list.  */
5579
5580 static void
5581 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5582                                   const mapped_debug_names &map,
5583                                   dwarf2_section_info &section,
5584                                   bool is_dwz)
5585 {
5586   sect_offset sect_off_prev;
5587   for (uint32_t i = 0; i <= map.cu_count; ++i)
5588     {
5589       sect_offset sect_off_next;
5590       if (i < map.cu_count)
5591         {
5592           sect_off_next
5593             = (sect_offset) (extract_unsigned_integer
5594                              (map.cu_table_reordered + i * map.offset_size,
5595                               map.offset_size,
5596                               map.dwarf5_byte_order));
5597         }
5598       else
5599         sect_off_next = (sect_offset) section.size;
5600       if (i >= 1)
5601         {
5602           const ULONGEST length = sect_off_next - sect_off_prev;
5603           dwarf2_per_cu_data *per_cu
5604             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5605                                          sect_off_prev, length);
5606           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5607         }
5608       sect_off_prev = sect_off_next;
5609     }
5610 }
5611
5612 /* Read the CU list from the mapped index, and use it to create all
5613    the CU objects for this dwarf2_per_objfile.  */
5614
5615 static void
5616 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5617                              const mapped_debug_names &map,
5618                              const mapped_debug_names &dwz_map)
5619 {
5620   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5621   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5622
5623   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5624                                     dwarf2_per_objfile->info,
5625                                     false /* is_dwz */);
5626
5627   if (dwz_map.cu_count == 0)
5628     return;
5629
5630   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5631   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5632                                     true /* is_dwz */);
5633 }
5634
5635 /* Read .debug_names.  If everything went ok, initialize the "quick"
5636    elements of all the CUs and return true.  Otherwise, return false.  */
5637
5638 static bool
5639 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5640 {
5641   std::unique_ptr<mapped_debug_names> map
5642     (new mapped_debug_names (dwarf2_per_objfile));
5643   mapped_debug_names dwz_map (dwarf2_per_objfile);
5644   struct objfile *objfile = dwarf2_per_objfile->objfile;
5645
5646   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5647                                       &dwarf2_per_objfile->debug_names,
5648                                       *map))
5649     return false;
5650
5651   /* Don't use the index if it's empty.  */
5652   if (map->name_count == 0)
5653     return false;
5654
5655   /* If there is a .dwz file, read it so we can get its CU list as
5656      well.  */
5657   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5658   if (dwz != NULL)
5659     {
5660       if (!read_debug_names_from_section (objfile,
5661                                           bfd_get_filename (dwz->dwz_bfd),
5662                                           &dwz->debug_names, dwz_map))
5663         {
5664           warning (_("could not read '.debug_names' section from %s; skipping"),
5665                    bfd_get_filename (dwz->dwz_bfd));
5666           return false;
5667         }
5668     }
5669
5670   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5671
5672   if (map->tu_count != 0)
5673     {
5674       /* We can only handle a single .debug_types when we have an
5675          index.  */
5676       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5677         return false;
5678
5679       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5680                                                 dwarf2_per_objfile->types, 0);
5681
5682       create_signatured_type_table_from_debug_names
5683         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5684     }
5685
5686   create_addrmap_from_aranges (dwarf2_per_objfile,
5687                                &dwarf2_per_objfile->debug_aranges);
5688
5689   dwarf2_per_objfile->debug_names_table = std::move (map);
5690   dwarf2_per_objfile->using_index = 1;
5691   dwarf2_per_objfile->quick_file_names_table =
5692     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5693
5694   return true;
5695 }
5696
5697 /* Type used to manage iterating over all CUs looking for a symbol for
5698    .debug_names.  */
5699
5700 class dw2_debug_names_iterator
5701 {
5702 public:
5703   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5704      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5705   dw2_debug_names_iterator (const mapped_debug_names &map,
5706                             bool want_specific_block,
5707                             block_enum block_index, domain_enum domain,
5708                             const char *name)
5709     : m_map (map), m_want_specific_block (want_specific_block),
5710       m_block_index (block_index), m_domain (domain),
5711       m_addr (find_vec_in_debug_names (map, name))
5712   {}
5713
5714   dw2_debug_names_iterator (const mapped_debug_names &map,
5715                             search_domain search, uint32_t namei)
5716     : m_map (map),
5717       m_search (search),
5718       m_addr (find_vec_in_debug_names (map, namei))
5719   {}
5720
5721   /* Return the next matching CU or NULL if there are no more.  */
5722   dwarf2_per_cu_data *next ();
5723
5724 private:
5725   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5726                                                   const char *name);
5727   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5728                                                   uint32_t namei);
5729
5730   /* The internalized form of .debug_names.  */
5731   const mapped_debug_names &m_map;
5732
5733   /* If true, only look for symbols that match BLOCK_INDEX.  */
5734   const bool m_want_specific_block = false;
5735
5736   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5737      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5738      value.  */
5739   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5740
5741   /* The kind of symbol we're looking for.  */
5742   const domain_enum m_domain = UNDEF_DOMAIN;
5743   const search_domain m_search = ALL_DOMAIN;
5744
5745   /* The list of CUs from the index entry of the symbol, or NULL if
5746      not found.  */
5747   const gdb_byte *m_addr;
5748 };
5749
5750 const char *
5751 mapped_debug_names::namei_to_name (uint32_t namei) const
5752 {
5753   const ULONGEST namei_string_offs
5754     = extract_unsigned_integer ((name_table_string_offs_reordered
5755                                  + namei * offset_size),
5756                                 offset_size,
5757                                 dwarf5_byte_order);
5758   return read_indirect_string_at_offset
5759     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5760 }
5761
5762 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5763    found, return pointer to its pool data.  If NAME cannot be found,
5764    return NULL.  */
5765
5766 const gdb_byte *
5767 dw2_debug_names_iterator::find_vec_in_debug_names
5768   (const mapped_debug_names &map, const char *name)
5769 {
5770   int (*cmp) (const char *, const char *);
5771
5772   if (current_language->la_language == language_cplus
5773       || current_language->la_language == language_fortran
5774       || current_language->la_language == language_d)
5775     {
5776       /* NAME is already canonical.  Drop any qualifiers as
5777          .debug_names does not contain any.  */
5778
5779       if (strchr (name, '(') != NULL)
5780         {
5781           gdb::unique_xmalloc_ptr<char> without_params
5782             = cp_remove_params (name);
5783
5784           if (without_params != NULL)
5785             {
5786               name = without_params.get();
5787             }
5788         }
5789     }
5790
5791   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5792
5793   const uint32_t full_hash = dwarf5_djb_hash (name);
5794   uint32_t namei
5795     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5796                                 (map.bucket_table_reordered
5797                                  + (full_hash % map.bucket_count)), 4,
5798                                 map.dwarf5_byte_order);
5799   if (namei == 0)
5800     return NULL;
5801   --namei;
5802   if (namei >= map.name_count)
5803     {
5804       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5805                    "[in module %s]"),
5806                  namei, map.name_count,
5807                  objfile_name (map.dwarf2_per_objfile->objfile));
5808       return NULL;
5809     }
5810
5811   for (;;)
5812     {
5813       const uint32_t namei_full_hash
5814         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5815                                     (map.hash_table_reordered + namei), 4,
5816                                     map.dwarf5_byte_order);
5817       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5818         return NULL;
5819
5820       if (full_hash == namei_full_hash)
5821         {
5822           const char *const namei_string = map.namei_to_name (namei);
5823
5824 #if 0 /* An expensive sanity check.  */
5825           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5826             {
5827               complaint (_("Wrong .debug_names hash for string at index %u "
5828                            "[in module %s]"),
5829                          namei, objfile_name (dwarf2_per_objfile->objfile));
5830               return NULL;
5831             }
5832 #endif
5833
5834           if (cmp (namei_string, name) == 0)
5835             {
5836               const ULONGEST namei_entry_offs
5837                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5838                                              + namei * map.offset_size),
5839                                             map.offset_size, map.dwarf5_byte_order);
5840               return map.entry_pool + namei_entry_offs;
5841             }
5842         }
5843
5844       ++namei;
5845       if (namei >= map.name_count)
5846         return NULL;
5847     }
5848 }
5849
5850 const gdb_byte *
5851 dw2_debug_names_iterator::find_vec_in_debug_names
5852   (const mapped_debug_names &map, uint32_t namei)
5853 {
5854   if (namei >= map.name_count)
5855     {
5856       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5857                    "[in module %s]"),
5858                  namei, map.name_count,
5859                  objfile_name (map.dwarf2_per_objfile->objfile));
5860       return NULL;
5861     }
5862
5863   const ULONGEST namei_entry_offs
5864     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5865                                  + namei * map.offset_size),
5866                                 map.offset_size, map.dwarf5_byte_order);
5867   return map.entry_pool + namei_entry_offs;
5868 }
5869
5870 /* See dw2_debug_names_iterator.  */
5871
5872 dwarf2_per_cu_data *
5873 dw2_debug_names_iterator::next ()
5874 {
5875   if (m_addr == NULL)
5876     return NULL;
5877
5878   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5879   struct objfile *objfile = dwarf2_per_objfile->objfile;
5880   bfd *const abfd = objfile->obfd;
5881
5882  again:
5883
5884   unsigned int bytes_read;
5885   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5886   m_addr += bytes_read;
5887   if (abbrev == 0)
5888     return NULL;
5889
5890   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5891   if (indexval_it == m_map.abbrev_map.cend ())
5892     {
5893       complaint (_("Wrong .debug_names undefined abbrev code %s "
5894                    "[in module %s]"),
5895                  pulongest (abbrev), objfile_name (objfile));
5896       return NULL;
5897     }
5898   const mapped_debug_names::index_val &indexval = indexval_it->second;
5899   bool have_is_static = false;
5900   bool is_static;
5901   dwarf2_per_cu_data *per_cu = NULL;
5902   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5903     {
5904       ULONGEST ull;
5905       switch (attr.form)
5906         {
5907         case DW_FORM_implicit_const:
5908           ull = attr.implicit_const;
5909           break;
5910         case DW_FORM_flag_present:
5911           ull = 1;
5912           break;
5913         case DW_FORM_udata:
5914           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5915           m_addr += bytes_read;
5916           break;
5917         default:
5918           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5919                      dwarf_form_name (attr.form),
5920                      objfile_name (objfile));
5921           return NULL;
5922         }
5923       switch (attr.dw_idx)
5924         {
5925         case DW_IDX_compile_unit:
5926           /* Don't crash on bad data.  */
5927           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5928             {
5929               complaint (_(".debug_names entry has bad CU index %s"
5930                            " [in module %s]"),
5931                          pulongest (ull),
5932                          objfile_name (dwarf2_per_objfile->objfile));
5933               continue;
5934             }
5935           per_cu = dwarf2_per_objfile->get_cutu (ull);
5936           break;
5937         case DW_IDX_type_unit:
5938           /* Don't crash on bad data.  */
5939           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5940             {
5941               complaint (_(".debug_names entry has bad TU index %s"
5942                            " [in module %s]"),
5943                          pulongest (ull),
5944                          objfile_name (dwarf2_per_objfile->objfile));
5945               continue;
5946             }
5947           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5948           break;
5949         case DW_IDX_GNU_internal:
5950           if (!m_map.augmentation_is_gdb)
5951             break;
5952           have_is_static = true;
5953           is_static = true;
5954           break;
5955         case DW_IDX_GNU_external:
5956           if (!m_map.augmentation_is_gdb)
5957             break;
5958           have_is_static = true;
5959           is_static = false;
5960           break;
5961         }
5962     }
5963
5964   /* Skip if already read in.  */
5965   if (per_cu->v.quick->compunit_symtab)
5966     goto again;
5967
5968   /* Check static vs global.  */
5969   if (have_is_static)
5970     {
5971       const bool want_static = m_block_index != GLOBAL_BLOCK;
5972       if (m_want_specific_block && want_static != is_static)
5973         goto again;
5974     }
5975
5976   /* Match dw2_symtab_iter_next, symbol_kind
5977      and debug_names::psymbol_tag.  */
5978   switch (m_domain)
5979     {
5980     case VAR_DOMAIN:
5981       switch (indexval.dwarf_tag)
5982         {
5983         case DW_TAG_variable:
5984         case DW_TAG_subprogram:
5985         /* Some types are also in VAR_DOMAIN.  */
5986         case DW_TAG_typedef:
5987         case DW_TAG_structure_type:
5988           break;
5989         default:
5990           goto again;
5991         }
5992       break;
5993     case STRUCT_DOMAIN:
5994       switch (indexval.dwarf_tag)
5995         {
5996         case DW_TAG_typedef:
5997         case DW_TAG_structure_type:
5998           break;
5999         default:
6000           goto again;
6001         }
6002       break;
6003     case LABEL_DOMAIN:
6004       switch (indexval.dwarf_tag)
6005         {
6006         case 0:
6007         case DW_TAG_variable:
6008           break;
6009         default:
6010           goto again;
6011         }
6012       break;
6013     default:
6014       break;
6015     }
6016
6017   /* Match dw2_expand_symtabs_matching, symbol_kind and
6018      debug_names::psymbol_tag.  */
6019   switch (m_search)
6020     {
6021     case VARIABLES_DOMAIN:
6022       switch (indexval.dwarf_tag)
6023         {
6024         case DW_TAG_variable:
6025           break;
6026         default:
6027           goto again;
6028         }
6029       break;
6030     case FUNCTIONS_DOMAIN:
6031       switch (indexval.dwarf_tag)
6032         {
6033         case DW_TAG_subprogram:
6034           break;
6035         default:
6036           goto again;
6037         }
6038       break;
6039     case TYPES_DOMAIN:
6040       switch (indexval.dwarf_tag)
6041         {
6042         case DW_TAG_typedef:
6043         case DW_TAG_structure_type:
6044           break;
6045         default:
6046           goto again;
6047         }
6048       break;
6049     default:
6050       break;
6051     }
6052
6053   return per_cu;
6054 }
6055
6056 static struct compunit_symtab *
6057 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6058                                const char *name, domain_enum domain)
6059 {
6060   const block_enum block_index = static_cast<block_enum> (block_index_int);
6061   struct dwarf2_per_objfile *dwarf2_per_objfile
6062     = get_dwarf2_per_objfile (objfile);
6063
6064   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6065   if (!mapp)
6066     {
6067       /* index is NULL if OBJF_READNOW.  */
6068       return NULL;
6069     }
6070   const auto &map = *mapp;
6071
6072   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6073                                  block_index, domain, name);
6074
6075   struct compunit_symtab *stab_best = NULL;
6076   struct dwarf2_per_cu_data *per_cu;
6077   while ((per_cu = iter.next ()) != NULL)
6078     {
6079       struct symbol *sym, *with_opaque = NULL;
6080       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6081       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6082       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6083
6084       sym = block_find_symbol (block, name, domain,
6085                                block_find_non_opaque_type_preferred,
6086                                &with_opaque);
6087
6088       /* Some caution must be observed with overloaded functions and
6089          methods, since the index will not contain any overload
6090          information (but NAME might contain it).  */
6091
6092       if (sym != NULL
6093           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6094         return stab;
6095       if (with_opaque != NULL
6096           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6097         stab_best = stab;
6098
6099       /* Keep looking through other CUs.  */
6100     }
6101
6102   return stab_best;
6103 }
6104
6105 /* This dumps minimal information about .debug_names.  It is called
6106    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6107    uses this to verify that .debug_names has been loaded.  */
6108
6109 static void
6110 dw2_debug_names_dump (struct objfile *objfile)
6111 {
6112   struct dwarf2_per_objfile *dwarf2_per_objfile
6113     = get_dwarf2_per_objfile (objfile);
6114
6115   gdb_assert (dwarf2_per_objfile->using_index);
6116   printf_filtered (".debug_names:");
6117   if (dwarf2_per_objfile->debug_names_table)
6118     printf_filtered (" exists\n");
6119   else
6120     printf_filtered (" faked for \"readnow\"\n");
6121   printf_filtered ("\n");
6122 }
6123
6124 static void
6125 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6126                                              const char *func_name)
6127 {
6128   struct dwarf2_per_objfile *dwarf2_per_objfile
6129     = get_dwarf2_per_objfile (objfile);
6130
6131   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6132   if (dwarf2_per_objfile->debug_names_table)
6133     {
6134       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6135
6136       /* Note: It doesn't matter what we pass for block_index here.  */
6137       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6138                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6139
6140       struct dwarf2_per_cu_data *per_cu;
6141       while ((per_cu = iter.next ()) != NULL)
6142         dw2_instantiate_symtab (per_cu, false);
6143     }
6144 }
6145
6146 static void
6147 dw2_debug_names_expand_symtabs_matching
6148   (struct objfile *objfile,
6149    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6150    const lookup_name_info &lookup_name,
6151    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6152    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6153    enum search_domain kind)
6154 {
6155   struct dwarf2_per_objfile *dwarf2_per_objfile
6156     = get_dwarf2_per_objfile (objfile);
6157
6158   /* debug_names_table is NULL if OBJF_READNOW.  */
6159   if (!dwarf2_per_objfile->debug_names_table)
6160     return;
6161
6162   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6163
6164   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6165
6166   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6167                                       symbol_matcher,
6168                                       kind, [&] (offset_type namei)
6169     {
6170       /* The name was matched, now expand corresponding CUs that were
6171          marked.  */
6172       dw2_debug_names_iterator iter (map, kind, namei);
6173
6174       struct dwarf2_per_cu_data *per_cu;
6175       while ((per_cu = iter.next ()) != NULL)
6176         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6177                                          expansion_notify);
6178     });
6179 }
6180
6181 const struct quick_symbol_functions dwarf2_debug_names_functions =
6182 {
6183   dw2_has_symbols,
6184   dw2_find_last_source_symtab,
6185   dw2_forget_cached_source_info,
6186   dw2_map_symtabs_matching_filename,
6187   dw2_debug_names_lookup_symbol,
6188   dw2_print_stats,
6189   dw2_debug_names_dump,
6190   dw2_debug_names_expand_symtabs_for_function,
6191   dw2_expand_all_symtabs,
6192   dw2_expand_symtabs_with_fullname,
6193   dw2_map_matching_symbols,
6194   dw2_debug_names_expand_symtabs_matching,
6195   dw2_find_pc_sect_compunit_symtab,
6196   NULL,
6197   dw2_map_symbol_filenames
6198 };
6199
6200 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6201    to either a dwarf2_per_objfile or dwz_file object.  */
6202
6203 template <typename T>
6204 static gdb::array_view<const gdb_byte>
6205 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6206 {
6207   dwarf2_section_info *section = &section_owner->gdb_index;
6208
6209   if (dwarf2_section_empty_p (section))
6210     return {};
6211
6212   /* Older elfutils strip versions could keep the section in the main
6213      executable while splitting it for the separate debug info file.  */
6214   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6215     return {};
6216
6217   dwarf2_read_section (obj, section);
6218
6219   /* dwarf2_section_info::size is a bfd_size_type, while
6220      gdb::array_view works with size_t.  On 32-bit hosts, with
6221      --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
6222      is 32-bit.  So we need an explicit narrowing conversion here.
6223      This is fine, because it's impossible to allocate or mmap an
6224      array/buffer larger than what size_t can represent.  */
6225   return gdb::make_array_view (section->buffer, section->size);
6226 }
6227
6228 /* Lookup the index cache for the contents of the index associated to
6229    DWARF2_OBJ.  */
6230
6231 static gdb::array_view<const gdb_byte>
6232 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6233 {
6234   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6235   if (build_id == nullptr)
6236     return {};
6237
6238   return global_index_cache.lookup_gdb_index (build_id,
6239                                               &dwarf2_obj->index_cache_res);
6240 }
6241
6242 /* Same as the above, but for DWZ.  */
6243
6244 static gdb::array_view<const gdb_byte>
6245 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6246 {
6247   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6248   if (build_id == nullptr)
6249     return {};
6250
6251   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6252 }
6253
6254 /* See symfile.h.  */
6255
6256 bool
6257 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6258 {
6259   struct dwarf2_per_objfile *dwarf2_per_objfile
6260     = get_dwarf2_per_objfile (objfile);
6261
6262   /* If we're about to read full symbols, don't bother with the
6263      indices.  In this case we also don't care if some other debug
6264      format is making psymtabs, because they are all about to be
6265      expanded anyway.  */
6266   if ((objfile->flags & OBJF_READNOW))
6267     {
6268       dwarf2_per_objfile->using_index = 1;
6269       create_all_comp_units (dwarf2_per_objfile);
6270       create_all_type_units (dwarf2_per_objfile);
6271       dwarf2_per_objfile->quick_file_names_table
6272         = create_quick_file_names_table
6273             (dwarf2_per_objfile->all_comp_units.size ());
6274
6275       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6276                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6277         {
6278           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6279
6280           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6281                                             struct dwarf2_per_cu_quick_data);
6282         }
6283
6284       /* Return 1 so that gdb sees the "quick" functions.  However,
6285          these functions will be no-ops because we will have expanded
6286          all symtabs.  */
6287       *index_kind = dw_index_kind::GDB_INDEX;
6288       return true;
6289     }
6290
6291   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6292     {
6293       *index_kind = dw_index_kind::DEBUG_NAMES;
6294       return true;
6295     }
6296
6297   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6298                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6299                              get_gdb_index_contents_from_section<dwz_file>))
6300     {
6301       *index_kind = dw_index_kind::GDB_INDEX;
6302       return true;
6303     }
6304
6305   /* ... otherwise, try to find the index in the index cache.  */
6306   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6307                              get_gdb_index_contents_from_cache,
6308                              get_gdb_index_contents_from_cache_dwz))
6309     {
6310       global_index_cache.hit ();
6311       *index_kind = dw_index_kind::GDB_INDEX;
6312       return true;
6313     }
6314
6315   global_index_cache.miss ();
6316   return false;
6317 }
6318
6319 \f
6320
6321 /* Build a partial symbol table.  */
6322
6323 void
6324 dwarf2_build_psymtabs (struct objfile *objfile)
6325 {
6326   struct dwarf2_per_objfile *dwarf2_per_objfile
6327     = get_dwarf2_per_objfile (objfile);
6328
6329   init_psymbol_list (objfile, 1024);
6330
6331   try
6332     {
6333       /* This isn't really ideal: all the data we allocate on the
6334          objfile's obstack is still uselessly kept around.  However,
6335          freeing it seems unsafe.  */
6336       psymtab_discarder psymtabs (objfile);
6337       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6338       psymtabs.keep ();
6339
6340       /* (maybe) store an index in the cache.  */
6341       global_index_cache.store (dwarf2_per_objfile);
6342     }
6343   catch (const gdb_exception_error &except)
6344     {
6345       exception_print (gdb_stderr, except);
6346     }
6347 }
6348
6349 /* Return the total length of the CU described by HEADER.  */
6350
6351 static unsigned int
6352 get_cu_length (const struct comp_unit_head *header)
6353 {
6354   return header->initial_length_size + header->length;
6355 }
6356
6357 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6358
6359 static inline bool
6360 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6361 {
6362   sect_offset bottom = cu_header->sect_off;
6363   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6364
6365   return sect_off >= bottom && sect_off < top;
6366 }
6367
6368 /* Find the base address of the compilation unit for range lists and
6369    location lists.  It will normally be specified by DW_AT_low_pc.
6370    In DWARF-3 draft 4, the base address could be overridden by
6371    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6372    compilation units with discontinuous ranges.  */
6373
6374 static void
6375 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6376 {
6377   struct attribute *attr;
6378
6379   cu->base_known = 0;
6380   cu->base_address = 0;
6381
6382   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6383   if (attr)
6384     {
6385       cu->base_address = attr_value_as_address (attr);
6386       cu->base_known = 1;
6387     }
6388   else
6389     {
6390       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6391       if (attr)
6392         {
6393           cu->base_address = attr_value_as_address (attr);
6394           cu->base_known = 1;
6395         }
6396     }
6397 }
6398
6399 /* Read in the comp unit header information from the debug_info at info_ptr.
6400    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6401    NOTE: This leaves members offset, first_die_offset to be filled in
6402    by the caller.  */
6403
6404 static const gdb_byte *
6405 read_comp_unit_head (struct comp_unit_head *cu_header,
6406                      const gdb_byte *info_ptr,
6407                      struct dwarf2_section_info *section,
6408                      rcuh_kind section_kind)
6409 {
6410   int signed_addr;
6411   unsigned int bytes_read;
6412   const char *filename = get_section_file_name (section);
6413   bfd *abfd = get_section_bfd_owner (section);
6414
6415   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6416   cu_header->initial_length_size = bytes_read;
6417   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6418   info_ptr += bytes_read;
6419   cu_header->version = read_2_bytes (abfd, info_ptr);
6420   if (cu_header->version < 2 || cu_header->version > 5)
6421     error (_("Dwarf Error: wrong version in compilation unit header "
6422            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6423            cu_header->version, filename);
6424   info_ptr += 2;
6425   if (cu_header->version < 5)
6426     switch (section_kind)
6427       {
6428       case rcuh_kind::COMPILE:
6429         cu_header->unit_type = DW_UT_compile;
6430         break;
6431       case rcuh_kind::TYPE:
6432         cu_header->unit_type = DW_UT_type;
6433         break;
6434       default:
6435         internal_error (__FILE__, __LINE__,
6436                         _("read_comp_unit_head: invalid section_kind"));
6437       }
6438   else
6439     {
6440       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6441                                                  (read_1_byte (abfd, info_ptr));
6442       info_ptr += 1;
6443       switch (cu_header->unit_type)
6444         {
6445         case DW_UT_compile:
6446           if (section_kind != rcuh_kind::COMPILE)
6447             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6448                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6449                    filename);
6450           break;
6451         case DW_UT_type:
6452           section_kind = rcuh_kind::TYPE;
6453           break;
6454         default:
6455           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6456                  "(is %d, should be %d or %d) [in module %s]"),
6457                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6458         }
6459
6460       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6461       info_ptr += 1;
6462     }
6463   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6464                                                           cu_header,
6465                                                           &bytes_read);
6466   info_ptr += bytes_read;
6467   if (cu_header->version < 5)
6468     {
6469       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6470       info_ptr += 1;
6471     }
6472   signed_addr = bfd_get_sign_extend_vma (abfd);
6473   if (signed_addr < 0)
6474     internal_error (__FILE__, __LINE__,
6475                     _("read_comp_unit_head: dwarf from non elf file"));
6476   cu_header->signed_addr_p = signed_addr;
6477
6478   if (section_kind == rcuh_kind::TYPE)
6479     {
6480       LONGEST type_offset;
6481
6482       cu_header->signature = read_8_bytes (abfd, info_ptr);
6483       info_ptr += 8;
6484
6485       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6486       info_ptr += bytes_read;
6487       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6488       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6489         error (_("Dwarf Error: Too big type_offset in compilation unit "
6490                "header (is %s) [in module %s]"), plongest (type_offset),
6491                filename);
6492     }
6493
6494   return info_ptr;
6495 }
6496
6497 /* Helper function that returns the proper abbrev section for
6498    THIS_CU.  */
6499
6500 static struct dwarf2_section_info *
6501 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6502 {
6503   struct dwarf2_section_info *abbrev;
6504   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6505
6506   if (this_cu->is_dwz)
6507     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6508   else
6509     abbrev = &dwarf2_per_objfile->abbrev;
6510
6511   return abbrev;
6512 }
6513
6514 /* Subroutine of read_and_check_comp_unit_head and
6515    read_and_check_type_unit_head to simplify them.
6516    Perform various error checking on the header.  */
6517
6518 static void
6519 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6520                             struct comp_unit_head *header,
6521                             struct dwarf2_section_info *section,
6522                             struct dwarf2_section_info *abbrev_section)
6523 {
6524   const char *filename = get_section_file_name (section);
6525
6526   if (to_underlying (header->abbrev_sect_off)
6527       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6528     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6529            "(offset %s + 6) [in module %s]"),
6530            sect_offset_str (header->abbrev_sect_off),
6531            sect_offset_str (header->sect_off),
6532            filename);
6533
6534   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6535      avoid potential 32-bit overflow.  */
6536   if (((ULONGEST) header->sect_off + get_cu_length (header))
6537       > section->size)
6538     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6539            "(offset %s + 0) [in module %s]"),
6540            header->length, sect_offset_str (header->sect_off),
6541            filename);
6542 }
6543
6544 /* Read in a CU/TU header and perform some basic error checking.
6545    The contents of the header are stored in HEADER.
6546    The result is a pointer to the start of the first DIE.  */
6547
6548 static const gdb_byte *
6549 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6550                                struct comp_unit_head *header,
6551                                struct dwarf2_section_info *section,
6552                                struct dwarf2_section_info *abbrev_section,
6553                                const gdb_byte *info_ptr,
6554                                rcuh_kind section_kind)
6555 {
6556   const gdb_byte *beg_of_comp_unit = info_ptr;
6557
6558   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6559
6560   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6561
6562   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6563
6564   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6565                               abbrev_section);
6566
6567   return info_ptr;
6568 }
6569
6570 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6571
6572 static sect_offset
6573 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6574                     struct dwarf2_section_info *section,
6575                     sect_offset sect_off)
6576 {
6577   bfd *abfd = get_section_bfd_owner (section);
6578   const gdb_byte *info_ptr;
6579   unsigned int initial_length_size, offset_size;
6580   uint16_t version;
6581
6582   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6583   info_ptr = section->buffer + to_underlying (sect_off);
6584   read_initial_length (abfd, info_ptr, &initial_length_size);
6585   offset_size = initial_length_size == 4 ? 4 : 8;
6586   info_ptr += initial_length_size;
6587
6588   version = read_2_bytes (abfd, info_ptr);
6589   info_ptr += 2;
6590   if (version >= 5)
6591     {
6592       /* Skip unit type and address size.  */
6593       info_ptr += 2;
6594     }
6595
6596   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6597 }
6598
6599 /* Allocate a new partial symtab for file named NAME and mark this new
6600    partial symtab as being an include of PST.  */
6601
6602 static void
6603 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6604                                struct objfile *objfile)
6605 {
6606   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6607
6608   if (!IS_ABSOLUTE_PATH (subpst->filename))
6609     {
6610       /* It shares objfile->objfile_obstack.  */
6611       subpst->dirname = pst->dirname;
6612     }
6613
6614   subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
6615   subpst->dependencies[0] = pst;
6616   subpst->number_of_dependencies = 1;
6617
6618   subpst->read_symtab = pst->read_symtab;
6619
6620   /* No private part is necessary for include psymtabs.  This property
6621      can be used to differentiate between such include psymtabs and
6622      the regular ones.  */
6623   subpst->read_symtab_private = NULL;
6624 }
6625
6626 /* Read the Line Number Program data and extract the list of files
6627    included by the source file represented by PST.  Build an include
6628    partial symtab for each of these included files.  */
6629
6630 static void
6631 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6632                                struct die_info *die,
6633                                struct partial_symtab *pst)
6634 {
6635   line_header_up lh;
6636   struct attribute *attr;
6637
6638   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6639   if (attr)
6640     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6641   if (lh == NULL)
6642     return;  /* No linetable, so no includes.  */
6643
6644   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6645      that we pass in the raw text_low here; that is ok because we're
6646      only decoding the line table to make include partial symtabs, and
6647      so the addresses aren't really used.  */
6648   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6649                       pst->raw_text_low (), 1);
6650 }
6651
6652 static hashval_t
6653 hash_signatured_type (const void *item)
6654 {
6655   const struct signatured_type *sig_type
6656     = (const struct signatured_type *) item;
6657
6658   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6659   return sig_type->signature;
6660 }
6661
6662 static int
6663 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6664 {
6665   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6666   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6667
6668   return lhs->signature == rhs->signature;
6669 }
6670
6671 /* Allocate a hash table for signatured types.  */
6672
6673 static htab_t
6674 allocate_signatured_type_table (struct objfile *objfile)
6675 {
6676   return htab_create_alloc_ex (41,
6677                                hash_signatured_type,
6678                                eq_signatured_type,
6679                                NULL,
6680                                &objfile->objfile_obstack,
6681                                hashtab_obstack_allocate,
6682                                dummy_obstack_deallocate);
6683 }
6684
6685 /* A helper function to add a signatured type CU to a table.  */
6686
6687 static int
6688 add_signatured_type_cu_to_table (void **slot, void *datum)
6689 {
6690   struct signatured_type *sigt = (struct signatured_type *) *slot;
6691   std::vector<signatured_type *> *all_type_units
6692     = (std::vector<signatured_type *> *) datum;
6693
6694   all_type_units->push_back (sigt);
6695
6696   return 1;
6697 }
6698
6699 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6700    and fill them into TYPES_HTAB.  It will process only type units,
6701    therefore DW_UT_type.  */
6702
6703 static void
6704 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6705                               struct dwo_file *dwo_file,
6706                               dwarf2_section_info *section, htab_t &types_htab,
6707                               rcuh_kind section_kind)
6708 {
6709   struct objfile *objfile = dwarf2_per_objfile->objfile;
6710   struct dwarf2_section_info *abbrev_section;
6711   bfd *abfd;
6712   const gdb_byte *info_ptr, *end_ptr;
6713
6714   abbrev_section = (dwo_file != NULL
6715                     ? &dwo_file->sections.abbrev
6716                     : &dwarf2_per_objfile->abbrev);
6717
6718   if (dwarf_read_debug)
6719     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6720                         get_section_name (section),
6721                         get_section_file_name (abbrev_section));
6722
6723   dwarf2_read_section (objfile, section);
6724   info_ptr = section->buffer;
6725
6726   if (info_ptr == NULL)
6727     return;
6728
6729   /* We can't set abfd until now because the section may be empty or
6730      not present, in which case the bfd is unknown.  */
6731   abfd = get_section_bfd_owner (section);
6732
6733   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6734      because we don't need to read any dies: the signature is in the
6735      header.  */
6736
6737   end_ptr = info_ptr + section->size;
6738   while (info_ptr < end_ptr)
6739     {
6740       struct signatured_type *sig_type;
6741       struct dwo_unit *dwo_tu;
6742       void **slot;
6743       const gdb_byte *ptr = info_ptr;
6744       struct comp_unit_head header;
6745       unsigned int length;
6746
6747       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6748
6749       /* Initialize it due to a false compiler warning.  */
6750       header.signature = -1;
6751       header.type_cu_offset_in_tu = (cu_offset) -1;
6752
6753       /* We need to read the type's signature in order to build the hash
6754          table, but we don't need anything else just yet.  */
6755
6756       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6757                                            abbrev_section, ptr, section_kind);
6758
6759       length = get_cu_length (&header);
6760
6761       /* Skip dummy type units.  */
6762       if (ptr >= info_ptr + length
6763           || peek_abbrev_code (abfd, ptr) == 0
6764           || header.unit_type != DW_UT_type)
6765         {
6766           info_ptr += length;
6767           continue;
6768         }
6769
6770       if (types_htab == NULL)
6771         {
6772           if (dwo_file)
6773             types_htab = allocate_dwo_unit_table (objfile);
6774           else
6775             types_htab = allocate_signatured_type_table (objfile);
6776         }
6777
6778       if (dwo_file)
6779         {
6780           sig_type = NULL;
6781           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6782                                    struct dwo_unit);
6783           dwo_tu->dwo_file = dwo_file;
6784           dwo_tu->signature = header.signature;
6785           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6786           dwo_tu->section = section;
6787           dwo_tu->sect_off = sect_off;
6788           dwo_tu->length = length;
6789         }
6790       else
6791         {
6792           /* N.B.: type_offset is not usable if this type uses a DWO file.
6793              The real type_offset is in the DWO file.  */
6794           dwo_tu = NULL;
6795           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6796                                      struct signatured_type);
6797           sig_type->signature = header.signature;
6798           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6799           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6800           sig_type->per_cu.is_debug_types = 1;
6801           sig_type->per_cu.section = section;
6802           sig_type->per_cu.sect_off = sect_off;
6803           sig_type->per_cu.length = length;
6804         }
6805
6806       slot = htab_find_slot (types_htab,
6807                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6808                              INSERT);
6809       gdb_assert (slot != NULL);
6810       if (*slot != NULL)
6811         {
6812           sect_offset dup_sect_off;
6813
6814           if (dwo_file)
6815             {
6816               const struct dwo_unit *dup_tu
6817                 = (const struct dwo_unit *) *slot;
6818
6819               dup_sect_off = dup_tu->sect_off;
6820             }
6821           else
6822             {
6823               const struct signatured_type *dup_tu
6824                 = (const struct signatured_type *) *slot;
6825
6826               dup_sect_off = dup_tu->per_cu.sect_off;
6827             }
6828
6829           complaint (_("debug type entry at offset %s is duplicate to"
6830                        " the entry at offset %s, signature %s"),
6831                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6832                      hex_string (header.signature));
6833         }
6834       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6835
6836       if (dwarf_read_debug > 1)
6837         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6838                             sect_offset_str (sect_off),
6839                             hex_string (header.signature));
6840
6841       info_ptr += length;
6842     }
6843 }
6844
6845 /* Create the hash table of all entries in the .debug_types
6846    (or .debug_types.dwo) section(s).
6847    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6848    otherwise it is NULL.
6849
6850    The result is a pointer to the hash table or NULL if there are no types.
6851
6852    Note: This function processes DWO files only, not DWP files.  */
6853
6854 static void
6855 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6856                                struct dwo_file *dwo_file,
6857                                VEC (dwarf2_section_info_def) *types,
6858                                htab_t &types_htab)
6859 {
6860   int ix;
6861   struct dwarf2_section_info *section;
6862
6863   if (VEC_empty (dwarf2_section_info_def, types))
6864     return;
6865
6866   for (ix = 0;
6867        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6868        ++ix)
6869     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6870                                   types_htab, rcuh_kind::TYPE);
6871 }
6872
6873 /* Create the hash table of all entries in the .debug_types section,
6874    and initialize all_type_units.
6875    The result is zero if there is an error (e.g. missing .debug_types section),
6876    otherwise non-zero.  */
6877
6878 static int
6879 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6880 {
6881   htab_t types_htab = NULL;
6882
6883   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6884                                 &dwarf2_per_objfile->info, types_htab,
6885                                 rcuh_kind::COMPILE);
6886   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6887                                  dwarf2_per_objfile->types, types_htab);
6888   if (types_htab == NULL)
6889     {
6890       dwarf2_per_objfile->signatured_types = NULL;
6891       return 0;
6892     }
6893
6894   dwarf2_per_objfile->signatured_types = types_htab;
6895
6896   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6897   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6898
6899   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6900                           &dwarf2_per_objfile->all_type_units);
6901
6902   return 1;
6903 }
6904
6905 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6906    If SLOT is non-NULL, it is the entry to use in the hash table.
6907    Otherwise we find one.  */
6908
6909 static struct signatured_type *
6910 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6911                void **slot)
6912 {
6913   struct objfile *objfile = dwarf2_per_objfile->objfile;
6914
6915   if (dwarf2_per_objfile->all_type_units.size ()
6916       == dwarf2_per_objfile->all_type_units.capacity ())
6917     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6918
6919   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6920                                               struct signatured_type);
6921
6922   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6923   sig_type->signature = sig;
6924   sig_type->per_cu.is_debug_types = 1;
6925   if (dwarf2_per_objfile->using_index)
6926     {
6927       sig_type->per_cu.v.quick =
6928         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6929                         struct dwarf2_per_cu_quick_data);
6930     }
6931
6932   if (slot == NULL)
6933     {
6934       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6935                              sig_type, INSERT);
6936     }
6937   gdb_assert (*slot == NULL);
6938   *slot = sig_type;
6939   /* The rest of sig_type must be filled in by the caller.  */
6940   return sig_type;
6941 }
6942
6943 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6944    Fill in SIG_ENTRY with DWO_ENTRY.  */
6945
6946 static void
6947 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6948                                   struct signatured_type *sig_entry,
6949                                   struct dwo_unit *dwo_entry)
6950 {
6951   /* Make sure we're not clobbering something we don't expect to.  */
6952   gdb_assert (! sig_entry->per_cu.queued);
6953   gdb_assert (sig_entry->per_cu.cu == NULL);
6954   if (dwarf2_per_objfile->using_index)
6955     {
6956       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6957       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6958     }
6959   else
6960       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6961   gdb_assert (sig_entry->signature == dwo_entry->signature);
6962   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6963   gdb_assert (sig_entry->type_unit_group == NULL);
6964   gdb_assert (sig_entry->dwo_unit == NULL);
6965
6966   sig_entry->per_cu.section = dwo_entry->section;
6967   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6968   sig_entry->per_cu.length = dwo_entry->length;
6969   sig_entry->per_cu.reading_dwo_directly = 1;
6970   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6971   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6972   sig_entry->dwo_unit = dwo_entry;
6973 }
6974
6975 /* Subroutine of lookup_signatured_type.
6976    If we haven't read the TU yet, create the signatured_type data structure
6977    for a TU to be read in directly from a DWO file, bypassing the stub.
6978    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6979    using .gdb_index, then when reading a CU we want to stay in the DWO file
6980    containing that CU.  Otherwise we could end up reading several other DWO
6981    files (due to comdat folding) to process the transitive closure of all the
6982    mentioned TUs, and that can be slow.  The current DWO file will have every
6983    type signature that it needs.
6984    We only do this for .gdb_index because in the psymtab case we already have
6985    to read all the DWOs to build the type unit groups.  */
6986
6987 static struct signatured_type *
6988 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6989 {
6990   struct dwarf2_per_objfile *dwarf2_per_objfile
6991     = cu->per_cu->dwarf2_per_objfile;
6992   struct objfile *objfile = dwarf2_per_objfile->objfile;
6993   struct dwo_file *dwo_file;
6994   struct dwo_unit find_dwo_entry, *dwo_entry;
6995   struct signatured_type find_sig_entry, *sig_entry;
6996   void **slot;
6997
6998   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6999
7000   /* If TU skeletons have been removed then we may not have read in any
7001      TUs yet.  */
7002   if (dwarf2_per_objfile->signatured_types == NULL)
7003     {
7004       dwarf2_per_objfile->signatured_types
7005         = allocate_signatured_type_table (objfile);
7006     }
7007
7008   /* We only ever need to read in one copy of a signatured type.
7009      Use the global signatured_types array to do our own comdat-folding
7010      of types.  If this is the first time we're reading this TU, and
7011      the TU has an entry in .gdb_index, replace the recorded data from
7012      .gdb_index with this TU.  */
7013
7014   find_sig_entry.signature = sig;
7015   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7016                          &find_sig_entry, INSERT);
7017   sig_entry = (struct signatured_type *) *slot;
7018
7019   /* We can get here with the TU already read, *or* in the process of being
7020      read.  Don't reassign the global entry to point to this DWO if that's
7021      the case.  Also note that if the TU is already being read, it may not
7022      have come from a DWO, the program may be a mix of Fission-compiled
7023      code and non-Fission-compiled code.  */
7024
7025   /* Have we already tried to read this TU?
7026      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7027      needn't exist in the global table yet).  */
7028   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7029     return sig_entry;
7030
7031   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7032      dwo_unit of the TU itself.  */
7033   dwo_file = cu->dwo_unit->dwo_file;
7034
7035   /* Ok, this is the first time we're reading this TU.  */
7036   if (dwo_file->tus == NULL)
7037     return NULL;
7038   find_dwo_entry.signature = sig;
7039   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7040   if (dwo_entry == NULL)
7041     return NULL;
7042
7043   /* If the global table doesn't have an entry for this TU, add one.  */
7044   if (sig_entry == NULL)
7045     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7046
7047   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7048   sig_entry->per_cu.tu_read = 1;
7049   return sig_entry;
7050 }
7051
7052 /* Subroutine of lookup_signatured_type.
7053    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7054    then try the DWP file.  If the TU stub (skeleton) has been removed then
7055    it won't be in .gdb_index.  */
7056
7057 static struct signatured_type *
7058 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7059 {
7060   struct dwarf2_per_objfile *dwarf2_per_objfile
7061     = cu->per_cu->dwarf2_per_objfile;
7062   struct objfile *objfile = dwarf2_per_objfile->objfile;
7063   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7064   struct dwo_unit *dwo_entry;
7065   struct signatured_type find_sig_entry, *sig_entry;
7066   void **slot;
7067
7068   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7069   gdb_assert (dwp_file != NULL);
7070
7071   /* If TU skeletons have been removed then we may not have read in any
7072      TUs yet.  */
7073   if (dwarf2_per_objfile->signatured_types == NULL)
7074     {
7075       dwarf2_per_objfile->signatured_types
7076         = allocate_signatured_type_table (objfile);
7077     }
7078
7079   find_sig_entry.signature = sig;
7080   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7081                          &find_sig_entry, INSERT);
7082   sig_entry = (struct signatured_type *) *slot;
7083
7084   /* Have we already tried to read this TU?
7085      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7086      needn't exist in the global table yet).  */
7087   if (sig_entry != NULL)
7088     return sig_entry;
7089
7090   if (dwp_file->tus == NULL)
7091     return NULL;
7092   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7093                                       sig, 1 /* is_debug_types */);
7094   if (dwo_entry == NULL)
7095     return NULL;
7096
7097   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7098   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7099
7100   return sig_entry;
7101 }
7102
7103 /* Lookup a signature based type for DW_FORM_ref_sig8.
7104    Returns NULL if signature SIG is not present in the table.
7105    It is up to the caller to complain about this.  */
7106
7107 static struct signatured_type *
7108 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7109 {
7110   struct dwarf2_per_objfile *dwarf2_per_objfile
7111     = cu->per_cu->dwarf2_per_objfile;
7112
7113   if (cu->dwo_unit
7114       && dwarf2_per_objfile->using_index)
7115     {
7116       /* We're in a DWO/DWP file, and we're using .gdb_index.
7117          These cases require special processing.  */
7118       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7119         return lookup_dwo_signatured_type (cu, sig);
7120       else
7121         return lookup_dwp_signatured_type (cu, sig);
7122     }
7123   else
7124     {
7125       struct signatured_type find_entry, *entry;
7126
7127       if (dwarf2_per_objfile->signatured_types == NULL)
7128         return NULL;
7129       find_entry.signature = sig;
7130       entry = ((struct signatured_type *)
7131                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7132       return entry;
7133     }
7134 }
7135 \f
7136 /* Low level DIE reading support.  */
7137
7138 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7139
7140 static void
7141 init_cu_die_reader (struct die_reader_specs *reader,
7142                     struct dwarf2_cu *cu,
7143                     struct dwarf2_section_info *section,
7144                     struct dwo_file *dwo_file,
7145                     struct abbrev_table *abbrev_table)
7146 {
7147   gdb_assert (section->readin && section->buffer != NULL);
7148   reader->abfd = get_section_bfd_owner (section);
7149   reader->cu = cu;
7150   reader->dwo_file = dwo_file;
7151   reader->die_section = section;
7152   reader->buffer = section->buffer;
7153   reader->buffer_end = section->buffer + section->size;
7154   reader->comp_dir = NULL;
7155   reader->abbrev_table = abbrev_table;
7156 }
7157
7158 /* Subroutine of init_cutu_and_read_dies to simplify it.
7159    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7160    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7161    already.
7162
7163    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7164    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7165    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7166    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7167    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7168    STUB_COMP_DIR may be non-NULL.
7169    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7170    are filled in with the info of the DIE from the DWO file.
7171    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7172    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7173    kept around for at least as long as *RESULT_READER.
7174
7175    The result is non-zero if a valid (non-dummy) DIE was found.  */
7176
7177 static int
7178 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7179                         struct dwo_unit *dwo_unit,
7180                         struct die_info *stub_comp_unit_die,
7181                         const char *stub_comp_dir,
7182                         struct die_reader_specs *result_reader,
7183                         const gdb_byte **result_info_ptr,
7184                         struct die_info **result_comp_unit_die,
7185                         int *result_has_children,
7186                         abbrev_table_up *result_dwo_abbrev_table)
7187 {
7188   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7189   struct objfile *objfile = dwarf2_per_objfile->objfile;
7190   struct dwarf2_cu *cu = this_cu->cu;
7191   bfd *abfd;
7192   const gdb_byte *begin_info_ptr, *info_ptr;
7193   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7194   int i,num_extra_attrs;
7195   struct dwarf2_section_info *dwo_abbrev_section;
7196   struct attribute *attr;
7197   struct die_info *comp_unit_die;
7198
7199   /* At most one of these may be provided.  */
7200   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7201
7202   /* These attributes aren't processed until later:
7203      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7204      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7205      referenced later.  However, these attributes are found in the stub
7206      which we won't have later.  In order to not impose this complication
7207      on the rest of the code, we read them here and copy them to the
7208      DWO CU/TU die.  */
7209
7210   stmt_list = NULL;
7211   low_pc = NULL;
7212   high_pc = NULL;
7213   ranges = NULL;
7214   comp_dir = NULL;
7215
7216   if (stub_comp_unit_die != NULL)
7217     {
7218       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7219          DWO file.  */
7220       if (! this_cu->is_debug_types)
7221         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7222       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7223       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7224       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7225       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7226
7227       /* There should be a DW_AT_addr_base attribute here (if needed).
7228          We need the value before we can process DW_FORM_GNU_addr_index
7229          or DW_FORM_addrx.  */
7230       cu->addr_base = 0;
7231       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7232       if (attr)
7233         cu->addr_base = DW_UNSND (attr);
7234
7235       /* There should be a DW_AT_ranges_base attribute here (if needed).
7236          We need the value before we can process DW_AT_ranges.  */
7237       cu->ranges_base = 0;
7238       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7239       if (attr)
7240         cu->ranges_base = DW_UNSND (attr);
7241     }
7242   else if (stub_comp_dir != NULL)
7243     {
7244       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7245       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7246       comp_dir->name = DW_AT_comp_dir;
7247       comp_dir->form = DW_FORM_string;
7248       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7249       DW_STRING (comp_dir) = stub_comp_dir;
7250     }
7251
7252   /* Set up for reading the DWO CU/TU.  */
7253   cu->dwo_unit = dwo_unit;
7254   dwarf2_section_info *section = dwo_unit->section;
7255   dwarf2_read_section (objfile, section);
7256   abfd = get_section_bfd_owner (section);
7257   begin_info_ptr = info_ptr = (section->buffer
7258                                + to_underlying (dwo_unit->sect_off));
7259   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7260
7261   if (this_cu->is_debug_types)
7262     {
7263       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7264
7265       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7266                                                 &cu->header, section,
7267                                                 dwo_abbrev_section,
7268                                                 info_ptr, rcuh_kind::TYPE);
7269       /* This is not an assert because it can be caused by bad debug info.  */
7270       if (sig_type->signature != cu->header.signature)
7271         {
7272           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7273                    " TU at offset %s [in module %s]"),
7274                  hex_string (sig_type->signature),
7275                  hex_string (cu->header.signature),
7276                  sect_offset_str (dwo_unit->sect_off),
7277                  bfd_get_filename (abfd));
7278         }
7279       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7280       /* For DWOs coming from DWP files, we don't know the CU length
7281          nor the type's offset in the TU until now.  */
7282       dwo_unit->length = get_cu_length (&cu->header);
7283       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7284
7285       /* Establish the type offset that can be used to lookup the type.
7286          For DWO files, we don't know it until now.  */
7287       sig_type->type_offset_in_section
7288         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7289     }
7290   else
7291     {
7292       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7293                                                 &cu->header, section,
7294                                                 dwo_abbrev_section,
7295                                                 info_ptr, rcuh_kind::COMPILE);
7296       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7297       /* For DWOs coming from DWP files, we don't know the CU length
7298          until now.  */
7299       dwo_unit->length = get_cu_length (&cu->header);
7300     }
7301
7302   *result_dwo_abbrev_table
7303     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7304                                cu->header.abbrev_sect_off);
7305   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7306                       result_dwo_abbrev_table->get ());
7307
7308   /* Read in the die, but leave space to copy over the attributes
7309      from the stub.  This has the benefit of simplifying the rest of
7310      the code - all the work to maintain the illusion of a single
7311      DW_TAG_{compile,type}_unit DIE is done here.  */
7312   num_extra_attrs = ((stmt_list != NULL)
7313                      + (low_pc != NULL)
7314                      + (high_pc != NULL)
7315                      + (ranges != NULL)
7316                      + (comp_dir != NULL));
7317   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7318                               result_has_children, num_extra_attrs);
7319
7320   /* Copy over the attributes from the stub to the DIE we just read in.  */
7321   comp_unit_die = *result_comp_unit_die;
7322   i = comp_unit_die->num_attrs;
7323   if (stmt_list != NULL)
7324     comp_unit_die->attrs[i++] = *stmt_list;
7325   if (low_pc != NULL)
7326     comp_unit_die->attrs[i++] = *low_pc;
7327   if (high_pc != NULL)
7328     comp_unit_die->attrs[i++] = *high_pc;
7329   if (ranges != NULL)
7330     comp_unit_die->attrs[i++] = *ranges;
7331   if (comp_dir != NULL)
7332     comp_unit_die->attrs[i++] = *comp_dir;
7333   comp_unit_die->num_attrs += num_extra_attrs;
7334
7335   if (dwarf_die_debug)
7336     {
7337       fprintf_unfiltered (gdb_stdlog,
7338                           "Read die from %s@0x%x of %s:\n",
7339                           get_section_name (section),
7340                           (unsigned) (begin_info_ptr - section->buffer),
7341                           bfd_get_filename (abfd));
7342       dump_die (comp_unit_die, dwarf_die_debug);
7343     }
7344
7345   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7346      TUs by skipping the stub and going directly to the entry in the DWO file.
7347      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7348      to get it via circuitous means.  Blech.  */
7349   if (comp_dir != NULL)
7350     result_reader->comp_dir = DW_STRING (comp_dir);
7351
7352   /* Skip dummy compilation units.  */
7353   if (info_ptr >= begin_info_ptr + dwo_unit->length
7354       || peek_abbrev_code (abfd, info_ptr) == 0)
7355     return 0;
7356
7357   *result_info_ptr = info_ptr;
7358   return 1;
7359 }
7360
7361 /* Subroutine of init_cutu_and_read_dies to simplify it.
7362    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7363    Returns NULL if the specified DWO unit cannot be found.  */
7364
7365 static struct dwo_unit *
7366 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7367                  struct die_info *comp_unit_die)
7368 {
7369   struct dwarf2_cu *cu = this_cu->cu;
7370   ULONGEST signature;
7371   struct dwo_unit *dwo_unit;
7372   const char *comp_dir, *dwo_name;
7373
7374   gdb_assert (cu != NULL);
7375
7376   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7377   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7378   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7379
7380   if (this_cu->is_debug_types)
7381     {
7382       struct signatured_type *sig_type;
7383
7384       /* Since this_cu is the first member of struct signatured_type,
7385          we can go from a pointer to one to a pointer to the other.  */
7386       sig_type = (struct signatured_type *) this_cu;
7387       signature = sig_type->signature;
7388       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7389     }
7390   else
7391     {
7392       struct attribute *attr;
7393
7394       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7395       if (! attr)
7396         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7397                  " [in module %s]"),
7398                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7399       signature = DW_UNSND (attr);
7400       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7401                                        signature);
7402     }
7403
7404   return dwo_unit;
7405 }
7406
7407 /* Subroutine of init_cutu_and_read_dies to simplify it.
7408    See it for a description of the parameters.
7409    Read a TU directly from a DWO file, bypassing the stub.  */
7410
7411 static void
7412 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7413                            int use_existing_cu, int keep,
7414                            die_reader_func_ftype *die_reader_func,
7415                            void *data)
7416 {
7417   std::unique_ptr<dwarf2_cu> new_cu;
7418   struct signatured_type *sig_type;
7419   struct die_reader_specs reader;
7420   const gdb_byte *info_ptr;
7421   struct die_info *comp_unit_die;
7422   int has_children;
7423   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7424
7425   /* Verify we can do the following downcast, and that we have the
7426      data we need.  */
7427   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7428   sig_type = (struct signatured_type *) this_cu;
7429   gdb_assert (sig_type->dwo_unit != NULL);
7430
7431   if (use_existing_cu && this_cu->cu != NULL)
7432     {
7433       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7434       /* There's no need to do the rereading_dwo_cu handling that
7435          init_cutu_and_read_dies does since we don't read the stub.  */
7436     }
7437   else
7438     {
7439       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7440       gdb_assert (this_cu->cu == NULL);
7441       new_cu.reset (new dwarf2_cu (this_cu));
7442     }
7443
7444   /* A future optimization, if needed, would be to use an existing
7445      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7446      could share abbrev tables.  */
7447
7448   /* The abbreviation table used by READER, this must live at least as long as
7449      READER.  */
7450   abbrev_table_up dwo_abbrev_table;
7451
7452   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7453                               NULL /* stub_comp_unit_die */,
7454                               sig_type->dwo_unit->dwo_file->comp_dir,
7455                               &reader, &info_ptr,
7456                               &comp_unit_die, &has_children,
7457                               &dwo_abbrev_table) == 0)
7458     {
7459       /* Dummy die.  */
7460       return;
7461     }
7462
7463   /* All the "real" work is done here.  */
7464   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7465
7466   /* This duplicates the code in init_cutu_and_read_dies,
7467      but the alternative is making the latter more complex.
7468      This function is only for the special case of using DWO files directly:
7469      no point in overly complicating the general case just to handle this.  */
7470   if (new_cu != NULL && keep)
7471     {
7472       /* Link this CU into read_in_chain.  */
7473       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7474       dwarf2_per_objfile->read_in_chain = this_cu;
7475       /* The chain owns it now.  */
7476       new_cu.release ();
7477     }
7478 }
7479
7480 /* Initialize a CU (or TU) and read its DIEs.
7481    If the CU defers to a DWO file, read the DWO file as well.
7482
7483    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7484    Otherwise the table specified in the comp unit header is read in and used.
7485    This is an optimization for when we already have the abbrev table.
7486
7487    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7488    Otherwise, a new CU is allocated with xmalloc.
7489
7490    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7491    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7492
7493    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7494    linker) then DIE_READER_FUNC will not get called.  */
7495
7496 static void
7497 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7498                          struct abbrev_table *abbrev_table,
7499                          int use_existing_cu, int keep,
7500                          bool skip_partial,
7501                          die_reader_func_ftype *die_reader_func,
7502                          void *data)
7503 {
7504   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7505   struct objfile *objfile = dwarf2_per_objfile->objfile;
7506   struct dwarf2_section_info *section = this_cu->section;
7507   bfd *abfd = get_section_bfd_owner (section);
7508   struct dwarf2_cu *cu;
7509   const gdb_byte *begin_info_ptr, *info_ptr;
7510   struct die_reader_specs reader;
7511   struct die_info *comp_unit_die;
7512   int has_children;
7513   struct attribute *attr;
7514   struct signatured_type *sig_type = NULL;
7515   struct dwarf2_section_info *abbrev_section;
7516   /* Non-zero if CU currently points to a DWO file and we need to
7517      reread it.  When this happens we need to reread the skeleton die
7518      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7519   int rereading_dwo_cu = 0;
7520
7521   if (dwarf_die_debug)
7522     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7523                         this_cu->is_debug_types ? "type" : "comp",
7524                         sect_offset_str (this_cu->sect_off));
7525
7526   if (use_existing_cu)
7527     gdb_assert (keep);
7528
7529   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7530      file (instead of going through the stub), short-circuit all of this.  */
7531   if (this_cu->reading_dwo_directly)
7532     {
7533       /* Narrow down the scope of possibilities to have to understand.  */
7534       gdb_assert (this_cu->is_debug_types);
7535       gdb_assert (abbrev_table == NULL);
7536       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7537                                  die_reader_func, data);
7538       return;
7539     }
7540
7541   /* This is cheap if the section is already read in.  */
7542   dwarf2_read_section (objfile, section);
7543
7544   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7545
7546   abbrev_section = get_abbrev_section_for_cu (this_cu);
7547
7548   std::unique_ptr<dwarf2_cu> new_cu;
7549   if (use_existing_cu && this_cu->cu != NULL)
7550     {
7551       cu = this_cu->cu;
7552       /* If this CU is from a DWO file we need to start over, we need to
7553          refetch the attributes from the skeleton CU.
7554          This could be optimized by retrieving those attributes from when we
7555          were here the first time: the previous comp_unit_die was stored in
7556          comp_unit_obstack.  But there's no data yet that we need this
7557          optimization.  */
7558       if (cu->dwo_unit != NULL)
7559         rereading_dwo_cu = 1;
7560     }
7561   else
7562     {
7563       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7564       gdb_assert (this_cu->cu == NULL);
7565       new_cu.reset (new dwarf2_cu (this_cu));
7566       cu = new_cu.get ();
7567     }
7568
7569   /* Get the header.  */
7570   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7571     {
7572       /* We already have the header, there's no need to read it in again.  */
7573       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7574     }
7575   else
7576     {
7577       if (this_cu->is_debug_types)
7578         {
7579           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7580                                                     &cu->header, section,
7581                                                     abbrev_section, info_ptr,
7582                                                     rcuh_kind::TYPE);
7583
7584           /* Since per_cu is the first member of struct signatured_type,
7585              we can go from a pointer to one to a pointer to the other.  */
7586           sig_type = (struct signatured_type *) this_cu;
7587           gdb_assert (sig_type->signature == cu->header.signature);
7588           gdb_assert (sig_type->type_offset_in_tu
7589                       == cu->header.type_cu_offset_in_tu);
7590           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7591
7592           /* LENGTH has not been set yet for type units if we're
7593              using .gdb_index.  */
7594           this_cu->length = get_cu_length (&cu->header);
7595
7596           /* Establish the type offset that can be used to lookup the type.  */
7597           sig_type->type_offset_in_section =
7598             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7599
7600           this_cu->dwarf_version = cu->header.version;
7601         }
7602       else
7603         {
7604           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7605                                                     &cu->header, section,
7606                                                     abbrev_section,
7607                                                     info_ptr,
7608                                                     rcuh_kind::COMPILE);
7609
7610           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7611           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7612           this_cu->dwarf_version = cu->header.version;
7613         }
7614     }
7615
7616   /* Skip dummy compilation units.  */
7617   if (info_ptr >= begin_info_ptr + this_cu->length
7618       || peek_abbrev_code (abfd, info_ptr) == 0)
7619     return;
7620
7621   /* If we don't have them yet, read the abbrevs for this compilation unit.
7622      And if we need to read them now, make sure they're freed when we're
7623      done (own the table through ABBREV_TABLE_HOLDER).  */
7624   abbrev_table_up abbrev_table_holder;
7625   if (abbrev_table != NULL)
7626     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7627   else
7628     {
7629       abbrev_table_holder
7630         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7631                                    cu->header.abbrev_sect_off);
7632       abbrev_table = abbrev_table_holder.get ();
7633     }
7634
7635   /* Read the top level CU/TU die.  */
7636   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7637   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7638
7639   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7640     return;
7641
7642   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7643      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7644      table from the DWO file and pass the ownership over to us.  It will be
7645      referenced from READER, so we must make sure to free it after we're done
7646      with READER.
7647
7648      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7649      DWO CU, that this test will fail (the attribute will not be present).  */
7650   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7651   abbrev_table_up dwo_abbrev_table;
7652   if (attr)
7653     {
7654       struct dwo_unit *dwo_unit;
7655       struct die_info *dwo_comp_unit_die;
7656
7657       if (has_children)
7658         {
7659           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7660                        " has children (offset %s) [in module %s]"),
7661                      sect_offset_str (this_cu->sect_off),
7662                      bfd_get_filename (abfd));
7663         }
7664       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7665       if (dwo_unit != NULL)
7666         {
7667           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7668                                       comp_unit_die, NULL,
7669                                       &reader, &info_ptr,
7670                                       &dwo_comp_unit_die, &has_children,
7671                                       &dwo_abbrev_table) == 0)
7672             {
7673               /* Dummy die.  */
7674               return;
7675             }
7676           comp_unit_die = dwo_comp_unit_die;
7677         }
7678       else
7679         {
7680           /* Yikes, we couldn't find the rest of the DIE, we only have
7681              the stub.  A complaint has already been logged.  There's
7682              not much more we can do except pass on the stub DIE to
7683              die_reader_func.  We don't want to throw an error on bad
7684              debug info.  */
7685         }
7686     }
7687
7688   /* All of the above is setup for this call.  Yikes.  */
7689   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7690
7691   /* Done, clean up.  */
7692   if (new_cu != NULL && keep)
7693     {
7694       /* Link this CU into read_in_chain.  */
7695       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7696       dwarf2_per_objfile->read_in_chain = this_cu;
7697       /* The chain owns it now.  */
7698       new_cu.release ();
7699     }
7700 }
7701
7702 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7703    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7704    to have already done the lookup to find the DWO file).
7705
7706    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7707    THIS_CU->is_debug_types, but nothing else.
7708
7709    We fill in THIS_CU->length.
7710
7711    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7712    linker) then DIE_READER_FUNC will not get called.
7713
7714    THIS_CU->cu is always freed when done.
7715    This is done in order to not leave THIS_CU->cu in a state where we have
7716    to care whether it refers to the "main" CU or the DWO CU.  */
7717
7718 static void
7719 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7720                                    struct dwo_file *dwo_file,
7721                                    die_reader_func_ftype *die_reader_func,
7722                                    void *data)
7723 {
7724   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7725   struct objfile *objfile = dwarf2_per_objfile->objfile;
7726   struct dwarf2_section_info *section = this_cu->section;
7727   bfd *abfd = get_section_bfd_owner (section);
7728   struct dwarf2_section_info *abbrev_section;
7729   const gdb_byte *begin_info_ptr, *info_ptr;
7730   struct die_reader_specs reader;
7731   struct die_info *comp_unit_die;
7732   int has_children;
7733
7734   if (dwarf_die_debug)
7735     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7736                         this_cu->is_debug_types ? "type" : "comp",
7737                         sect_offset_str (this_cu->sect_off));
7738
7739   gdb_assert (this_cu->cu == NULL);
7740
7741   abbrev_section = (dwo_file != NULL
7742                     ? &dwo_file->sections.abbrev
7743                     : get_abbrev_section_for_cu (this_cu));
7744
7745   /* This is cheap if the section is already read in.  */
7746   dwarf2_read_section (objfile, section);
7747
7748   struct dwarf2_cu cu (this_cu);
7749
7750   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7751   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7752                                             &cu.header, section,
7753                                             abbrev_section, info_ptr,
7754                                             (this_cu->is_debug_types
7755                                              ? rcuh_kind::TYPE
7756                                              : rcuh_kind::COMPILE));
7757
7758   this_cu->length = get_cu_length (&cu.header);
7759
7760   /* Skip dummy compilation units.  */
7761   if (info_ptr >= begin_info_ptr + this_cu->length
7762       || peek_abbrev_code (abfd, info_ptr) == 0)
7763     return;
7764
7765   abbrev_table_up abbrev_table
7766     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7767                                cu.header.abbrev_sect_off);
7768
7769   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7770   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7771
7772   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7773 }
7774
7775 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7776    does not lookup the specified DWO file.
7777    This cannot be used to read DWO files.
7778
7779    THIS_CU->cu is always freed when done.
7780    This is done in order to not leave THIS_CU->cu in a state where we have
7781    to care whether it refers to the "main" CU or the DWO CU.
7782    We can revisit this if the data shows there's a performance issue.  */
7783
7784 static void
7785 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7786                                 die_reader_func_ftype *die_reader_func,
7787                                 void *data)
7788 {
7789   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7790 }
7791 \f
7792 /* Type Unit Groups.
7793
7794    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7795    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7796    so that all types coming from the same compilation (.o file) are grouped
7797    together.  A future step could be to put the types in the same symtab as
7798    the CU the types ultimately came from.  */
7799
7800 static hashval_t
7801 hash_type_unit_group (const void *item)
7802 {
7803   const struct type_unit_group *tu_group
7804     = (const struct type_unit_group *) item;
7805
7806   return hash_stmt_list_entry (&tu_group->hash);
7807 }
7808
7809 static int
7810 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7811 {
7812   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7813   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7814
7815   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7816 }
7817
7818 /* Allocate a hash table for type unit groups.  */
7819
7820 static htab_t
7821 allocate_type_unit_groups_table (struct objfile *objfile)
7822 {
7823   return htab_create_alloc_ex (3,
7824                                hash_type_unit_group,
7825                                eq_type_unit_group,
7826                                NULL,
7827                                &objfile->objfile_obstack,
7828                                hashtab_obstack_allocate,
7829                                dummy_obstack_deallocate);
7830 }
7831
7832 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7833    partial symtabs.  We combine several TUs per psymtab to not let the size
7834    of any one psymtab grow too big.  */
7835 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7836 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7837
7838 /* Helper routine for get_type_unit_group.
7839    Create the type_unit_group object used to hold one or more TUs.  */
7840
7841 static struct type_unit_group *
7842 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7843 {
7844   struct dwarf2_per_objfile *dwarf2_per_objfile
7845     = cu->per_cu->dwarf2_per_objfile;
7846   struct objfile *objfile = dwarf2_per_objfile->objfile;
7847   struct dwarf2_per_cu_data *per_cu;
7848   struct type_unit_group *tu_group;
7849
7850   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7851                              struct type_unit_group);
7852   per_cu = &tu_group->per_cu;
7853   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7854
7855   if (dwarf2_per_objfile->using_index)
7856     {
7857       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7858                                         struct dwarf2_per_cu_quick_data);
7859     }
7860   else
7861     {
7862       unsigned int line_offset = to_underlying (line_offset_struct);
7863       struct partial_symtab *pst;
7864       std::string name;
7865
7866       /* Give the symtab a useful name for debug purposes.  */
7867       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7868         name = string_printf ("<type_units_%d>",
7869                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7870       else
7871         name = string_printf ("<type_units_at_0x%x>", line_offset);
7872
7873       pst = create_partial_symtab (per_cu, name.c_str ());
7874       pst->anonymous = 1;
7875     }
7876
7877   tu_group->hash.dwo_unit = cu->dwo_unit;
7878   tu_group->hash.line_sect_off = line_offset_struct;
7879
7880   return tu_group;
7881 }
7882
7883 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7884    STMT_LIST is a DW_AT_stmt_list attribute.  */
7885
7886 static struct type_unit_group *
7887 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7888 {
7889   struct dwarf2_per_objfile *dwarf2_per_objfile
7890     = cu->per_cu->dwarf2_per_objfile;
7891   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7892   struct type_unit_group *tu_group;
7893   void **slot;
7894   unsigned int line_offset;
7895   struct type_unit_group type_unit_group_for_lookup;
7896
7897   if (dwarf2_per_objfile->type_unit_groups == NULL)
7898     {
7899       dwarf2_per_objfile->type_unit_groups =
7900         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7901     }
7902
7903   /* Do we need to create a new group, or can we use an existing one?  */
7904
7905   if (stmt_list)
7906     {
7907       line_offset = DW_UNSND (stmt_list);
7908       ++tu_stats->nr_symtab_sharers;
7909     }
7910   else
7911     {
7912       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7913          We can do various things here like create one group per TU or
7914          spread them over multiple groups to split up the expansion work.
7915          To avoid worst case scenarios (too many groups or too large groups)
7916          we, umm, group them in bunches.  */
7917       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7918                      | (tu_stats->nr_stmt_less_type_units
7919                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7920       ++tu_stats->nr_stmt_less_type_units;
7921     }
7922
7923   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7924   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7925   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7926                          &type_unit_group_for_lookup, INSERT);
7927   if (*slot != NULL)
7928     {
7929       tu_group = (struct type_unit_group *) *slot;
7930       gdb_assert (tu_group != NULL);
7931     }
7932   else
7933     {
7934       sect_offset line_offset_struct = (sect_offset) line_offset;
7935       tu_group = create_type_unit_group (cu, line_offset_struct);
7936       *slot = tu_group;
7937       ++tu_stats->nr_symtabs;
7938     }
7939
7940   return tu_group;
7941 }
7942 \f
7943 /* Partial symbol tables.  */
7944
7945 /* Create a psymtab named NAME and assign it to PER_CU.
7946
7947    The caller must fill in the following details:
7948    dirname, textlow, texthigh.  */
7949
7950 static struct partial_symtab *
7951 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7952 {
7953   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7954   struct partial_symtab *pst;
7955
7956   pst = start_psymtab_common (objfile, name, 0);
7957
7958   pst->psymtabs_addrmap_supported = 1;
7959
7960   /* This is the glue that links PST into GDB's symbol API.  */
7961   pst->read_symtab_private = per_cu;
7962   pst->read_symtab = dwarf2_read_symtab;
7963   per_cu->v.psymtab = pst;
7964
7965   return pst;
7966 }
7967
7968 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7969    type.  */
7970
7971 struct process_psymtab_comp_unit_data
7972 {
7973   /* True if we are reading a DW_TAG_partial_unit.  */
7974
7975   int want_partial_unit;
7976
7977   /* The "pretend" language that is used if the CU doesn't declare a
7978      language.  */
7979
7980   enum language pretend_language;
7981 };
7982
7983 /* die_reader_func for process_psymtab_comp_unit.  */
7984
7985 static void
7986 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7987                                   const gdb_byte *info_ptr,
7988                                   struct die_info *comp_unit_die,
7989                                   int has_children,
7990                                   void *data)
7991 {
7992   struct dwarf2_cu *cu = reader->cu;
7993   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7994   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7995   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7996   CORE_ADDR baseaddr;
7997   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7998   struct partial_symtab *pst;
7999   enum pc_bounds_kind cu_bounds_kind;
8000   const char *filename;
8001   struct process_psymtab_comp_unit_data *info
8002     = (struct process_psymtab_comp_unit_data *) data;
8003
8004   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
8005     return;
8006
8007   gdb_assert (! per_cu->is_debug_types);
8008
8009   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
8010
8011   /* Allocate a new partial symbol table structure.  */
8012   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
8013   if (filename == NULL)
8014     filename = "";
8015
8016   pst = create_partial_symtab (per_cu, filename);
8017
8018   /* This must be done before calling dwarf2_build_include_psymtabs.  */
8019   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
8020
8021   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8022
8023   dwarf2_find_base_address (comp_unit_die, cu);
8024
8025   /* Possibly set the default values of LOWPC and HIGHPC from
8026      `DW_AT_ranges'.  */
8027   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8028                                          &best_highpc, cu, pst);
8029   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8030     {
8031       CORE_ADDR low
8032         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8033            - baseaddr);
8034       CORE_ADDR high
8035         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8036            - baseaddr - 1);
8037       /* Store the contiguous range if it is not empty; it can be
8038          empty for CUs with no code.  */
8039       addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
8040                          low, high, pst);
8041     }
8042
8043   /* Check if comp unit has_children.
8044      If so, read the rest of the partial symbols from this comp unit.
8045      If not, there's no more debug_info for this comp unit.  */
8046   if (has_children)
8047     {
8048       struct partial_die_info *first_die;
8049       CORE_ADDR lowpc, highpc;
8050
8051       lowpc = ((CORE_ADDR) -1);
8052       highpc = ((CORE_ADDR) 0);
8053
8054       first_die = load_partial_dies (reader, info_ptr, 1);
8055
8056       scan_partial_symbols (first_die, &lowpc, &highpc,
8057                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8058
8059       /* If we didn't find a lowpc, set it to highpc to avoid
8060          complaints from `maint check'.  */
8061       if (lowpc == ((CORE_ADDR) -1))
8062         lowpc = highpc;
8063
8064       /* If the compilation unit didn't have an explicit address range,
8065          then use the information extracted from its child dies.  */
8066       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8067         {
8068           best_lowpc = lowpc;
8069           best_highpc = highpc;
8070         }
8071     }
8072   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8073                                                  best_lowpc + baseaddr)
8074                      - baseaddr);
8075   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8076                                                   best_highpc + baseaddr)
8077                       - baseaddr);
8078
8079   end_psymtab_common (objfile, pst);
8080
8081   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8082     {
8083       int i;
8084       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8085       struct dwarf2_per_cu_data *iter;
8086
8087       /* Fill in 'dependencies' here; we fill in 'users' in a
8088          post-pass.  */
8089       pst->number_of_dependencies = len;
8090       pst->dependencies
8091         = objfile->partial_symtabs->allocate_dependencies (len);
8092       for (i = 0;
8093            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8094                         i, iter);
8095            ++i)
8096         pst->dependencies[i] = iter->v.psymtab;
8097
8098       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8099     }
8100
8101   /* Get the list of files included in the current compilation unit,
8102      and build a psymtab for each of them.  */
8103   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8104
8105   if (dwarf_read_debug)
8106     fprintf_unfiltered (gdb_stdlog,
8107                         "Psymtab for %s unit @%s: %s - %s"
8108                         ", %d global, %d static syms\n",
8109                         per_cu->is_debug_types ? "type" : "comp",
8110                         sect_offset_str (per_cu->sect_off),
8111                         paddress (gdbarch, pst->text_low (objfile)),
8112                         paddress (gdbarch, pst->text_high (objfile)),
8113                         pst->n_global_syms, pst->n_static_syms);
8114 }
8115
8116 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8117    Process compilation unit THIS_CU for a psymtab.  */
8118
8119 static void
8120 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8121                            int want_partial_unit,
8122                            enum language pretend_language)
8123 {
8124   /* If this compilation unit was already read in, free the
8125      cached copy in order to read it in again.  This is
8126      necessary because we skipped some symbols when we first
8127      read in the compilation unit (see load_partial_dies).
8128      This problem could be avoided, but the benefit is unclear.  */
8129   if (this_cu->cu != NULL)
8130     free_one_cached_comp_unit (this_cu);
8131
8132   if (this_cu->is_debug_types)
8133     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8134                              build_type_psymtabs_reader, NULL);
8135   else
8136     {
8137       process_psymtab_comp_unit_data info;
8138       info.want_partial_unit = want_partial_unit;
8139       info.pretend_language = pretend_language;
8140       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8141                                process_psymtab_comp_unit_reader, &info);
8142     }
8143
8144   /* Age out any secondary CUs.  */
8145   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8146 }
8147
8148 /* Reader function for build_type_psymtabs.  */
8149
8150 static void
8151 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8152                             const gdb_byte *info_ptr,
8153                             struct die_info *type_unit_die,
8154                             int has_children,
8155                             void *data)
8156 {
8157   struct dwarf2_per_objfile *dwarf2_per_objfile
8158     = reader->cu->per_cu->dwarf2_per_objfile;
8159   struct objfile *objfile = dwarf2_per_objfile->objfile;
8160   struct dwarf2_cu *cu = reader->cu;
8161   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8162   struct signatured_type *sig_type;
8163   struct type_unit_group *tu_group;
8164   struct attribute *attr;
8165   struct partial_die_info *first_die;
8166   CORE_ADDR lowpc, highpc;
8167   struct partial_symtab *pst;
8168
8169   gdb_assert (data == NULL);
8170   gdb_assert (per_cu->is_debug_types);
8171   sig_type = (struct signatured_type *) per_cu;
8172
8173   if (! has_children)
8174     return;
8175
8176   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8177   tu_group = get_type_unit_group (cu, attr);
8178
8179   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8180
8181   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8182   pst = create_partial_symtab (per_cu, "");
8183   pst->anonymous = 1;
8184
8185   first_die = load_partial_dies (reader, info_ptr, 1);
8186
8187   lowpc = (CORE_ADDR) -1;
8188   highpc = (CORE_ADDR) 0;
8189   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8190
8191   end_psymtab_common (objfile, pst);
8192 }
8193
8194 /* Struct used to sort TUs by their abbreviation table offset.  */
8195
8196 struct tu_abbrev_offset
8197 {
8198   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8199   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8200   {}
8201
8202   signatured_type *sig_type;
8203   sect_offset abbrev_offset;
8204 };
8205
8206 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8207
8208 static bool
8209 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8210                           const struct tu_abbrev_offset &b)
8211 {
8212   return a.abbrev_offset < b.abbrev_offset;
8213 }
8214
8215 /* Efficiently read all the type units.
8216    This does the bulk of the work for build_type_psymtabs.
8217
8218    The efficiency is because we sort TUs by the abbrev table they use and
8219    only read each abbrev table once.  In one program there are 200K TUs
8220    sharing 8K abbrev tables.
8221
8222    The main purpose of this function is to support building the
8223    dwarf2_per_objfile->type_unit_groups table.
8224    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8225    can collapse the search space by grouping them by stmt_list.
8226    The savings can be significant, in the same program from above the 200K TUs
8227    share 8K stmt_list tables.
8228
8229    FUNC is expected to call get_type_unit_group, which will create the
8230    struct type_unit_group if necessary and add it to
8231    dwarf2_per_objfile->type_unit_groups.  */
8232
8233 static void
8234 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8235 {
8236   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8237   abbrev_table_up abbrev_table;
8238   sect_offset abbrev_offset;
8239
8240   /* It's up to the caller to not call us multiple times.  */
8241   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8242
8243   if (dwarf2_per_objfile->all_type_units.empty ())
8244     return;
8245
8246   /* TUs typically share abbrev tables, and there can be way more TUs than
8247      abbrev tables.  Sort by abbrev table to reduce the number of times we
8248      read each abbrev table in.
8249      Alternatives are to punt or to maintain a cache of abbrev tables.
8250      This is simpler and efficient enough for now.
8251
8252      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8253      symtab to use).  Typically TUs with the same abbrev offset have the same
8254      stmt_list value too so in practice this should work well.
8255
8256      The basic algorithm here is:
8257
8258       sort TUs by abbrev table
8259       for each TU with same abbrev table:
8260         read abbrev table if first user
8261         read TU top level DIE
8262           [IWBN if DWO skeletons had DW_AT_stmt_list]
8263         call FUNC  */
8264
8265   if (dwarf_read_debug)
8266     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8267
8268   /* Sort in a separate table to maintain the order of all_type_units
8269      for .gdb_index: TU indices directly index all_type_units.  */
8270   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8271   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8272
8273   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8274     sorted_by_abbrev.emplace_back
8275       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8276                                      sig_type->per_cu.section,
8277                                      sig_type->per_cu.sect_off));
8278
8279   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8280              sort_tu_by_abbrev_offset);
8281
8282   abbrev_offset = (sect_offset) ~(unsigned) 0;
8283
8284   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8285     {
8286       /* Switch to the next abbrev table if necessary.  */
8287       if (abbrev_table == NULL
8288           || tu.abbrev_offset != abbrev_offset)
8289         {
8290           abbrev_offset = tu.abbrev_offset;
8291           abbrev_table =
8292             abbrev_table_read_table (dwarf2_per_objfile,
8293                                      &dwarf2_per_objfile->abbrev,
8294                                      abbrev_offset);
8295           ++tu_stats->nr_uniq_abbrev_tables;
8296         }
8297
8298       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8299                                0, 0, false, build_type_psymtabs_reader, NULL);
8300     }
8301 }
8302
8303 /* Print collected type unit statistics.  */
8304
8305 static void
8306 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8307 {
8308   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8309
8310   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8311   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8312                       dwarf2_per_objfile->all_type_units.size ());
8313   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8314                       tu_stats->nr_uniq_abbrev_tables);
8315   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8316                       tu_stats->nr_symtabs);
8317   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8318                       tu_stats->nr_symtab_sharers);
8319   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8320                       tu_stats->nr_stmt_less_type_units);
8321   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8322                       tu_stats->nr_all_type_units_reallocs);
8323 }
8324
8325 /* Traversal function for build_type_psymtabs.  */
8326
8327 static int
8328 build_type_psymtab_dependencies (void **slot, void *info)
8329 {
8330   struct dwarf2_per_objfile *dwarf2_per_objfile
8331     = (struct dwarf2_per_objfile *) info;
8332   struct objfile *objfile = dwarf2_per_objfile->objfile;
8333   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8334   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8335   struct partial_symtab *pst = per_cu->v.psymtab;
8336   int len = VEC_length (sig_type_ptr, tu_group->tus);
8337   struct signatured_type *iter;
8338   int i;
8339
8340   gdb_assert (len > 0);
8341   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8342
8343   pst->number_of_dependencies = len;
8344   pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
8345   for (i = 0;
8346        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8347        ++i)
8348     {
8349       gdb_assert (iter->per_cu.is_debug_types);
8350       pst->dependencies[i] = iter->per_cu.v.psymtab;
8351       iter->type_unit_group = tu_group;
8352     }
8353
8354   VEC_free (sig_type_ptr, tu_group->tus);
8355
8356   return 1;
8357 }
8358
8359 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8360    Build partial symbol tables for the .debug_types comp-units.  */
8361
8362 static void
8363 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8364 {
8365   if (! create_all_type_units (dwarf2_per_objfile))
8366     return;
8367
8368   build_type_psymtabs_1 (dwarf2_per_objfile);
8369 }
8370
8371 /* Traversal function for process_skeletonless_type_unit.
8372    Read a TU in a DWO file and build partial symbols for it.  */
8373
8374 static int
8375 process_skeletonless_type_unit (void **slot, void *info)
8376 {
8377   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8378   struct dwarf2_per_objfile *dwarf2_per_objfile
8379     = (struct dwarf2_per_objfile *) info;
8380   struct signatured_type find_entry, *entry;
8381
8382   /* If this TU doesn't exist in the global table, add it and read it in.  */
8383
8384   if (dwarf2_per_objfile->signatured_types == NULL)
8385     {
8386       dwarf2_per_objfile->signatured_types
8387         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8388     }
8389
8390   find_entry.signature = dwo_unit->signature;
8391   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8392                          INSERT);
8393   /* If we've already seen this type there's nothing to do.  What's happening
8394      is we're doing our own version of comdat-folding here.  */
8395   if (*slot != NULL)
8396     return 1;
8397
8398   /* This does the job that create_all_type_units would have done for
8399      this TU.  */
8400   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8401   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8402   *slot = entry;
8403
8404   /* This does the job that build_type_psymtabs_1 would have done.  */
8405   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8406                            build_type_psymtabs_reader, NULL);
8407
8408   return 1;
8409 }
8410
8411 /* Traversal function for process_skeletonless_type_units.  */
8412
8413 static int
8414 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8415 {
8416   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8417
8418   if (dwo_file->tus != NULL)
8419     {
8420       htab_traverse_noresize (dwo_file->tus,
8421                               process_skeletonless_type_unit, info);
8422     }
8423
8424   return 1;
8425 }
8426
8427 /* Scan all TUs of DWO files, verifying we've processed them.
8428    This is needed in case a TU was emitted without its skeleton.
8429    Note: This can't be done until we know what all the DWO files are.  */
8430
8431 static void
8432 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8433 {
8434   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8435   if (get_dwp_file (dwarf2_per_objfile) == NULL
8436       && dwarf2_per_objfile->dwo_files != NULL)
8437     {
8438       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8439                               process_dwo_file_for_skeletonless_type_units,
8440                               dwarf2_per_objfile);
8441     }
8442 }
8443
8444 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8445
8446 static void
8447 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8448 {
8449   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8450     {
8451       struct partial_symtab *pst = per_cu->v.psymtab;
8452
8453       if (pst == NULL)
8454         continue;
8455
8456       for (int j = 0; j < pst->number_of_dependencies; ++j)
8457         {
8458           /* Set the 'user' field only if it is not already set.  */
8459           if (pst->dependencies[j]->user == NULL)
8460             pst->dependencies[j]->user = pst;
8461         }
8462     }
8463 }
8464
8465 /* Build the partial symbol table by doing a quick pass through the
8466    .debug_info and .debug_abbrev sections.  */
8467
8468 static void
8469 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8470 {
8471   struct objfile *objfile = dwarf2_per_objfile->objfile;
8472
8473   if (dwarf_read_debug)
8474     {
8475       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8476                           objfile_name (objfile));
8477     }
8478
8479   dwarf2_per_objfile->reading_partial_symbols = 1;
8480
8481   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8482
8483   /* Any cached compilation units will be linked by the per-objfile
8484      read_in_chain.  Make sure to free them when we're done.  */
8485   free_cached_comp_units freer (dwarf2_per_objfile);
8486
8487   build_type_psymtabs (dwarf2_per_objfile);
8488
8489   create_all_comp_units (dwarf2_per_objfile);
8490
8491   /* Create a temporary address map on a temporary obstack.  We later
8492      copy this to the final obstack.  */
8493   auto_obstack temp_obstack;
8494
8495   scoped_restore save_psymtabs_addrmap
8496     = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
8497                            addrmap_create_mutable (&temp_obstack));
8498
8499   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8500     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8501
8502   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8503   process_skeletonless_type_units (dwarf2_per_objfile);
8504
8505   /* Now that all TUs have been processed we can fill in the dependencies.  */
8506   if (dwarf2_per_objfile->type_unit_groups != NULL)
8507     {
8508       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8509                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8510     }
8511
8512   if (dwarf_read_debug)
8513     print_tu_stats (dwarf2_per_objfile);
8514
8515   set_partial_user (dwarf2_per_objfile);
8516
8517   objfile->partial_symtabs->psymtabs_addrmap
8518     = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
8519                             objfile->partial_symtabs->obstack ());
8520   /* At this point we want to keep the address map.  */
8521   save_psymtabs_addrmap.release ();
8522
8523   if (dwarf_read_debug)
8524     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8525                         objfile_name (objfile));
8526 }
8527
8528 /* die_reader_func for load_partial_comp_unit.  */
8529
8530 static void
8531 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8532                                const gdb_byte *info_ptr,
8533                                struct die_info *comp_unit_die,
8534                                int has_children,
8535                                void *data)
8536 {
8537   struct dwarf2_cu *cu = reader->cu;
8538
8539   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8540
8541   /* Check if comp unit has_children.
8542      If so, read the rest of the partial symbols from this comp unit.
8543      If not, there's no more debug_info for this comp unit.  */
8544   if (has_children)
8545     load_partial_dies (reader, info_ptr, 0);
8546 }
8547
8548 /* Load the partial DIEs for a secondary CU into memory.
8549    This is also used when rereading a primary CU with load_all_dies.  */
8550
8551 static void
8552 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8553 {
8554   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8555                            load_partial_comp_unit_reader, NULL);
8556 }
8557
8558 static void
8559 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8560                               struct dwarf2_section_info *section,
8561                               struct dwarf2_section_info *abbrev_section,
8562                               unsigned int is_dwz)
8563 {
8564   const gdb_byte *info_ptr;
8565   struct objfile *objfile = dwarf2_per_objfile->objfile;
8566
8567   if (dwarf_read_debug)
8568     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8569                         get_section_name (section),
8570                         get_section_file_name (section));
8571
8572   dwarf2_read_section (objfile, section);
8573
8574   info_ptr = section->buffer;
8575
8576   while (info_ptr < section->buffer + section->size)
8577     {
8578       struct dwarf2_per_cu_data *this_cu;
8579
8580       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8581
8582       comp_unit_head cu_header;
8583       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8584                                      abbrev_section, info_ptr,
8585                                      rcuh_kind::COMPILE);
8586
8587       /* Save the compilation unit for later lookup.  */
8588       if (cu_header.unit_type != DW_UT_type)
8589         {
8590           this_cu = XOBNEW (&objfile->objfile_obstack,
8591                             struct dwarf2_per_cu_data);
8592           memset (this_cu, 0, sizeof (*this_cu));
8593         }
8594       else
8595         {
8596           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8597                                   struct signatured_type);
8598           memset (sig_type, 0, sizeof (*sig_type));
8599           sig_type->signature = cu_header.signature;
8600           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8601           this_cu = &sig_type->per_cu;
8602         }
8603       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8604       this_cu->sect_off = sect_off;
8605       this_cu->length = cu_header.length + cu_header.initial_length_size;
8606       this_cu->is_dwz = is_dwz;
8607       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8608       this_cu->section = section;
8609
8610       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8611
8612       info_ptr = info_ptr + this_cu->length;
8613     }
8614 }
8615
8616 /* Create a list of all compilation units in OBJFILE.
8617    This is only done for -readnow and building partial symtabs.  */
8618
8619 static void
8620 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8621 {
8622   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8623   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8624                                 &dwarf2_per_objfile->abbrev, 0);
8625
8626   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8627   if (dwz != NULL)
8628     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8629                                   1);
8630 }
8631
8632 /* Process all loaded DIEs for compilation unit CU, starting at
8633    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8634    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8635    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8636    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8637
8638 static void
8639 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8640                       CORE_ADDR *highpc, int set_addrmap,
8641                       struct dwarf2_cu *cu)
8642 {
8643   struct partial_die_info *pdi;
8644
8645   /* Now, march along the PDI's, descending into ones which have
8646      interesting children but skipping the children of the other ones,
8647      until we reach the end of the compilation unit.  */
8648
8649   pdi = first_die;
8650
8651   while (pdi != NULL)
8652     {
8653       pdi->fixup (cu);
8654
8655       /* Anonymous namespaces or modules have no name but have interesting
8656          children, so we need to look at them.  Ditto for anonymous
8657          enums.  */
8658
8659       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8660           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8661           || pdi->tag == DW_TAG_imported_unit
8662           || pdi->tag == DW_TAG_inlined_subroutine)
8663         {
8664           switch (pdi->tag)
8665             {
8666             case DW_TAG_subprogram:
8667             case DW_TAG_inlined_subroutine:
8668               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8669               break;
8670             case DW_TAG_constant:
8671             case DW_TAG_variable:
8672             case DW_TAG_typedef:
8673             case DW_TAG_union_type:
8674               if (!pdi->is_declaration)
8675                 {
8676                   add_partial_symbol (pdi, cu);
8677                 }
8678               break;
8679             case DW_TAG_class_type:
8680             case DW_TAG_interface_type:
8681             case DW_TAG_structure_type:
8682               if (!pdi->is_declaration)
8683                 {
8684                   add_partial_symbol (pdi, cu);
8685                 }
8686               if ((cu->language == language_rust
8687                    || cu->language == language_cplus) && pdi->has_children)
8688                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8689                                       set_addrmap, cu);
8690               break;
8691             case DW_TAG_enumeration_type:
8692               if (!pdi->is_declaration)
8693                 add_partial_enumeration (pdi, cu);
8694               break;
8695             case DW_TAG_base_type:
8696             case DW_TAG_subrange_type:
8697               /* File scope base type definitions are added to the partial
8698                  symbol table.  */
8699               add_partial_symbol (pdi, cu);
8700               break;
8701             case DW_TAG_namespace:
8702               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8703               break;
8704             case DW_TAG_module:
8705               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8706               break;
8707             case DW_TAG_imported_unit:
8708               {
8709                 struct dwarf2_per_cu_data *per_cu;
8710
8711                 /* For now we don't handle imported units in type units.  */
8712                 if (cu->per_cu->is_debug_types)
8713                   {
8714                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8715                              " supported in type units [in module %s]"),
8716                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8717                   }
8718
8719                 per_cu = dwarf2_find_containing_comp_unit
8720                            (pdi->d.sect_off, pdi->is_dwz,
8721                             cu->per_cu->dwarf2_per_objfile);
8722
8723                 /* Go read the partial unit, if needed.  */
8724                 if (per_cu->v.psymtab == NULL)
8725                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8726
8727                 VEC_safe_push (dwarf2_per_cu_ptr,
8728                                cu->per_cu->imported_symtabs, per_cu);
8729               }
8730               break;
8731             case DW_TAG_imported_declaration:
8732               add_partial_symbol (pdi, cu);
8733               break;
8734             default:
8735               break;
8736             }
8737         }
8738
8739       /* If the die has a sibling, skip to the sibling.  */
8740
8741       pdi = pdi->die_sibling;
8742     }
8743 }
8744
8745 /* Functions used to compute the fully scoped name of a partial DIE.
8746
8747    Normally, this is simple.  For C++, the parent DIE's fully scoped
8748    name is concatenated with "::" and the partial DIE's name.
8749    Enumerators are an exception; they use the scope of their parent
8750    enumeration type, i.e. the name of the enumeration type is not
8751    prepended to the enumerator.
8752
8753    There are two complexities.  One is DW_AT_specification; in this
8754    case "parent" means the parent of the target of the specification,
8755    instead of the direct parent of the DIE.  The other is compilers
8756    which do not emit DW_TAG_namespace; in this case we try to guess
8757    the fully qualified name of structure types from their members'
8758    linkage names.  This must be done using the DIE's children rather
8759    than the children of any DW_AT_specification target.  We only need
8760    to do this for structures at the top level, i.e. if the target of
8761    any DW_AT_specification (if any; otherwise the DIE itself) does not
8762    have a parent.  */
8763
8764 /* Compute the scope prefix associated with PDI's parent, in
8765    compilation unit CU.  The result will be allocated on CU's
8766    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8767    field.  NULL is returned if no prefix is necessary.  */
8768 static const char *
8769 partial_die_parent_scope (struct partial_die_info *pdi,
8770                           struct dwarf2_cu *cu)
8771 {
8772   const char *grandparent_scope;
8773   struct partial_die_info *parent, *real_pdi;
8774
8775   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8776      then this means the parent of the specification DIE.  */
8777
8778   real_pdi = pdi;
8779   while (real_pdi->has_specification)
8780     {
8781       auto res = find_partial_die (real_pdi->spec_offset,
8782                                    real_pdi->spec_is_dwz, cu);
8783       real_pdi = res.pdi;
8784       cu = res.cu;
8785     }
8786
8787   parent = real_pdi->die_parent;
8788   if (parent == NULL)
8789     return NULL;
8790
8791   if (parent->scope_set)
8792     return parent->scope;
8793
8794   parent->fixup (cu);
8795
8796   grandparent_scope = partial_die_parent_scope (parent, cu);
8797
8798   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8799      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8800      Work around this problem here.  */
8801   if (cu->language == language_cplus
8802       && parent->tag == DW_TAG_namespace
8803       && strcmp (parent->name, "::") == 0
8804       && grandparent_scope == NULL)
8805     {
8806       parent->scope = NULL;
8807       parent->scope_set = 1;
8808       return NULL;
8809     }
8810
8811   if (pdi->tag == DW_TAG_enumerator)
8812     /* Enumerators should not get the name of the enumeration as a prefix.  */
8813     parent->scope = grandparent_scope;
8814   else if (parent->tag == DW_TAG_namespace
8815       || parent->tag == DW_TAG_module
8816       || parent->tag == DW_TAG_structure_type
8817       || parent->tag == DW_TAG_class_type
8818       || parent->tag == DW_TAG_interface_type
8819       || parent->tag == DW_TAG_union_type
8820       || parent->tag == DW_TAG_enumeration_type)
8821     {
8822       if (grandparent_scope == NULL)
8823         parent->scope = parent->name;
8824       else
8825         parent->scope = typename_concat (&cu->comp_unit_obstack,
8826                                          grandparent_scope,
8827                                          parent->name, 0, cu);
8828     }
8829   else
8830     {
8831       /* FIXME drow/2004-04-01: What should we be doing with
8832          function-local names?  For partial symbols, we should probably be
8833          ignoring them.  */
8834       complaint (_("unhandled containing DIE tag %s for DIE at %s"),
8835                  dwarf_tag_name (parent->tag),
8836                  sect_offset_str (pdi->sect_off));
8837       parent->scope = grandparent_scope;
8838     }
8839
8840   parent->scope_set = 1;
8841   return parent->scope;
8842 }
8843
8844 /* Return the fully scoped name associated with PDI, from compilation unit
8845    CU.  The result will be allocated with malloc.  */
8846
8847 static char *
8848 partial_die_full_name (struct partial_die_info *pdi,
8849                        struct dwarf2_cu *cu)
8850 {
8851   const char *parent_scope;
8852
8853   /* If this is a template instantiation, we can not work out the
8854      template arguments from partial DIEs.  So, unfortunately, we have
8855      to go through the full DIEs.  At least any work we do building
8856      types here will be reused if full symbols are loaded later.  */
8857   if (pdi->has_template_arguments)
8858     {
8859       pdi->fixup (cu);
8860
8861       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8862         {
8863           struct die_info *die;
8864           struct attribute attr;
8865           struct dwarf2_cu *ref_cu = cu;
8866
8867           /* DW_FORM_ref_addr is using section offset.  */
8868           attr.name = (enum dwarf_attribute) 0;
8869           attr.form = DW_FORM_ref_addr;
8870           attr.u.unsnd = to_underlying (pdi->sect_off);
8871           die = follow_die_ref (NULL, &attr, &ref_cu);
8872
8873           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8874         }
8875     }
8876
8877   parent_scope = partial_die_parent_scope (pdi, cu);
8878   if (parent_scope == NULL)
8879     return NULL;
8880   else
8881     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8882 }
8883
8884 static void
8885 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8886 {
8887   struct dwarf2_per_objfile *dwarf2_per_objfile
8888     = cu->per_cu->dwarf2_per_objfile;
8889   struct objfile *objfile = dwarf2_per_objfile->objfile;
8890   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8891   CORE_ADDR addr = 0;
8892   const char *actual_name = NULL;
8893   CORE_ADDR baseaddr;
8894   char *built_actual_name;
8895
8896   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8897
8898   built_actual_name = partial_die_full_name (pdi, cu);
8899   if (built_actual_name != NULL)
8900     actual_name = built_actual_name;
8901
8902   if (actual_name == NULL)
8903     actual_name = pdi->name;
8904
8905   switch (pdi->tag)
8906     {
8907     case DW_TAG_inlined_subroutine:
8908     case DW_TAG_subprogram:
8909       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8910               - baseaddr);
8911       if (pdi->is_external || cu->language == language_ada)
8912         {
8913           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8914              of the global scope.  But in Ada, we want to be able to access
8915              nested procedures globally.  So all Ada subprograms are stored
8916              in the global scope.  */
8917           add_psymbol_to_list (actual_name, strlen (actual_name),
8918                                built_actual_name != NULL,
8919                                VAR_DOMAIN, LOC_BLOCK,
8920                                SECT_OFF_TEXT (objfile),
8921                                psymbol_placement::GLOBAL,
8922                                addr,
8923                                cu->language, objfile);
8924         }
8925       else
8926         {
8927           add_psymbol_to_list (actual_name, strlen (actual_name),
8928                                built_actual_name != NULL,
8929                                VAR_DOMAIN, LOC_BLOCK,
8930                                SECT_OFF_TEXT (objfile),
8931                                psymbol_placement::STATIC,
8932                                addr, cu->language, objfile);
8933         }
8934
8935       if (pdi->main_subprogram && actual_name != NULL)
8936         set_objfile_main_name (objfile, actual_name, cu->language);
8937       break;
8938     case DW_TAG_constant:
8939       add_psymbol_to_list (actual_name, strlen (actual_name),
8940                            built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8941                            -1, (pdi->is_external
8942                                 ? psymbol_placement::GLOBAL
8943                                 : psymbol_placement::STATIC),
8944                            0, cu->language, objfile);
8945       break;
8946     case DW_TAG_variable:
8947       if (pdi->d.locdesc)
8948         addr = decode_locdesc (pdi->d.locdesc, cu);
8949
8950       if (pdi->d.locdesc
8951           && addr == 0
8952           && !dwarf2_per_objfile->has_section_at_zero)
8953         {
8954           /* A global or static variable may also have been stripped
8955              out by the linker if unused, in which case its address
8956              will be nullified; do not add such variables into partial
8957              symbol table then.  */
8958         }
8959       else if (pdi->is_external)
8960         {
8961           /* Global Variable.
8962              Don't enter into the minimal symbol tables as there is
8963              a minimal symbol table entry from the ELF symbols already.
8964              Enter into partial symbol table if it has a location
8965              descriptor or a type.
8966              If the location descriptor is missing, new_symbol will create
8967              a LOC_UNRESOLVED symbol, the address of the variable will then
8968              be determined from the minimal symbol table whenever the variable
8969              is referenced.
8970              The address for the partial symbol table entry is not
8971              used by GDB, but it comes in handy for debugging partial symbol
8972              table building.  */
8973
8974           if (pdi->d.locdesc || pdi->has_type)
8975             add_psymbol_to_list (actual_name, strlen (actual_name),
8976                                  built_actual_name != NULL,
8977                                  VAR_DOMAIN, LOC_STATIC,
8978                                  SECT_OFF_TEXT (objfile),
8979                                  psymbol_placement::GLOBAL,
8980                                  addr, cu->language, objfile);
8981         }
8982       else
8983         {
8984           int has_loc = pdi->d.locdesc != NULL;
8985
8986           /* Static Variable.  Skip symbols whose value we cannot know (those
8987              without location descriptors or constant values).  */
8988           if (!has_loc && !pdi->has_const_value)
8989             {
8990               xfree (built_actual_name);
8991               return;
8992             }
8993
8994           add_psymbol_to_list (actual_name, strlen (actual_name),
8995                                built_actual_name != NULL,
8996                                VAR_DOMAIN, LOC_STATIC,
8997                                SECT_OFF_TEXT (objfile),
8998                                psymbol_placement::STATIC,
8999                                has_loc ? addr : 0,
9000                                cu->language, objfile);
9001         }
9002       break;
9003     case DW_TAG_typedef:
9004     case DW_TAG_base_type:
9005     case DW_TAG_subrange_type:
9006       add_psymbol_to_list (actual_name, strlen (actual_name),
9007                            built_actual_name != NULL,
9008                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9009                            psymbol_placement::STATIC,
9010                            0, cu->language, objfile);
9011       break;
9012     case DW_TAG_imported_declaration:
9013     case DW_TAG_namespace:
9014       add_psymbol_to_list (actual_name, strlen (actual_name),
9015                            built_actual_name != NULL,
9016                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9017                            psymbol_placement::GLOBAL,
9018                            0, cu->language, objfile);
9019       break;
9020     case DW_TAG_module:
9021       /* With Fortran 77 there might be a "BLOCK DATA" module
9022          available without any name.  If so, we skip the module as it
9023          doesn't bring any value.  */
9024       if (actual_name != nullptr)
9025         add_psymbol_to_list (actual_name, strlen (actual_name),
9026                              built_actual_name != NULL,
9027                              MODULE_DOMAIN, LOC_TYPEDEF, -1,
9028                              psymbol_placement::GLOBAL,
9029                              0, cu->language, objfile);
9030       break;
9031     case DW_TAG_class_type:
9032     case DW_TAG_interface_type:
9033     case DW_TAG_structure_type:
9034     case DW_TAG_union_type:
9035     case DW_TAG_enumeration_type:
9036       /* Skip external references.  The DWARF standard says in the section
9037          about "Structure, Union, and Class Type Entries": "An incomplete
9038          structure, union or class type is represented by a structure,
9039          union or class entry that does not have a byte size attribute
9040          and that has a DW_AT_declaration attribute."  */
9041       if (!pdi->has_byte_size && pdi->is_declaration)
9042         {
9043           xfree (built_actual_name);
9044           return;
9045         }
9046
9047       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9048          static vs. global.  */
9049       add_psymbol_to_list (actual_name, strlen (actual_name),
9050                            built_actual_name != NULL,
9051                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9052                            cu->language == language_cplus
9053                            ? psymbol_placement::GLOBAL
9054                            : psymbol_placement::STATIC,
9055                            0, cu->language, objfile);
9056
9057       break;
9058     case DW_TAG_enumerator:
9059       add_psymbol_to_list (actual_name, strlen (actual_name),
9060                            built_actual_name != NULL,
9061                            VAR_DOMAIN, LOC_CONST, -1,
9062                            cu->language == language_cplus
9063                            ? psymbol_placement::GLOBAL
9064                            : psymbol_placement::STATIC,
9065                            0, cu->language, objfile);
9066       break;
9067     default:
9068       break;
9069     }
9070
9071   xfree (built_actual_name);
9072 }
9073
9074 /* Read a partial die corresponding to a namespace; also, add a symbol
9075    corresponding to that namespace to the symbol table.  NAMESPACE is
9076    the name of the enclosing namespace.  */
9077
9078 static void
9079 add_partial_namespace (struct partial_die_info *pdi,
9080                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9081                        int set_addrmap, struct dwarf2_cu *cu)
9082 {
9083   /* Add a symbol for the namespace.  */
9084
9085   add_partial_symbol (pdi, cu);
9086
9087   /* Now scan partial symbols in that namespace.  */
9088
9089   if (pdi->has_children)
9090     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9091 }
9092
9093 /* Read a partial die corresponding to a Fortran module.  */
9094
9095 static void
9096 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9097                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9098 {
9099   /* Add a symbol for the namespace.  */
9100
9101   add_partial_symbol (pdi, cu);
9102
9103   /* Now scan partial symbols in that module.  */
9104
9105   if (pdi->has_children)
9106     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9107 }
9108
9109 /* Read a partial die corresponding to a subprogram or an inlined
9110    subprogram and create a partial symbol for that subprogram.
9111    When the CU language allows it, this routine also defines a partial
9112    symbol for each nested subprogram that this subprogram contains.
9113    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9114    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9115
9116    PDI may also be a lexical block, in which case we simply search
9117    recursively for subprograms defined inside that lexical block.
9118    Again, this is only performed when the CU language allows this
9119    type of definitions.  */
9120
9121 static void
9122 add_partial_subprogram (struct partial_die_info *pdi,
9123                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9124                         int set_addrmap, struct dwarf2_cu *cu)
9125 {
9126   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9127     {
9128       if (pdi->has_pc_info)
9129         {
9130           if (pdi->lowpc < *lowpc)
9131             *lowpc = pdi->lowpc;
9132           if (pdi->highpc > *highpc)
9133             *highpc = pdi->highpc;
9134           if (set_addrmap)
9135             {
9136               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9137               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9138               CORE_ADDR baseaddr;
9139               CORE_ADDR this_highpc;
9140               CORE_ADDR this_lowpc;
9141
9142               baseaddr = ANOFFSET (objfile->section_offsets,
9143                                    SECT_OFF_TEXT (objfile));
9144               this_lowpc
9145                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9146                                                pdi->lowpc + baseaddr)
9147                    - baseaddr);
9148               this_highpc
9149                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9150                                                pdi->highpc + baseaddr)
9151                    - baseaddr);
9152               addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
9153                                  this_lowpc, this_highpc - 1,
9154                                  cu->per_cu->v.psymtab);
9155             }
9156         }
9157
9158       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9159         {
9160           if (!pdi->is_declaration)
9161             /* Ignore subprogram DIEs that do not have a name, they are
9162                illegal.  Do not emit a complaint at this point, we will
9163                do so when we convert this psymtab into a symtab.  */
9164             if (pdi->name)
9165               add_partial_symbol (pdi, cu);
9166         }
9167     }
9168
9169   if (! pdi->has_children)
9170     return;
9171
9172   if (cu->language == language_ada)
9173     {
9174       pdi = pdi->die_child;
9175       while (pdi != NULL)
9176         {
9177           pdi->fixup (cu);
9178           if (pdi->tag == DW_TAG_subprogram
9179               || pdi->tag == DW_TAG_inlined_subroutine
9180               || pdi->tag == DW_TAG_lexical_block)
9181             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9182           pdi = pdi->die_sibling;
9183         }
9184     }
9185 }
9186
9187 /* Read a partial die corresponding to an enumeration type.  */
9188
9189 static void
9190 add_partial_enumeration (struct partial_die_info *enum_pdi,
9191                          struct dwarf2_cu *cu)
9192 {
9193   struct partial_die_info *pdi;
9194
9195   if (enum_pdi->name != NULL)
9196     add_partial_symbol (enum_pdi, cu);
9197
9198   pdi = enum_pdi->die_child;
9199   while (pdi)
9200     {
9201       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9202         complaint (_("malformed enumerator DIE ignored"));
9203       else
9204         add_partial_symbol (pdi, cu);
9205       pdi = pdi->die_sibling;
9206     }
9207 }
9208
9209 /* Return the initial uleb128 in the die at INFO_PTR.  */
9210
9211 static unsigned int
9212 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9213 {
9214   unsigned int bytes_read;
9215
9216   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9217 }
9218
9219 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9220    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9221
9222    Return the corresponding abbrev, or NULL if the number is zero (indicating
9223    an empty DIE).  In either case *BYTES_READ will be set to the length of
9224    the initial number.  */
9225
9226 static struct abbrev_info *
9227 peek_die_abbrev (const die_reader_specs &reader,
9228                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9229 {
9230   dwarf2_cu *cu = reader.cu;
9231   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9232   unsigned int abbrev_number
9233     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9234
9235   if (abbrev_number == 0)
9236     return NULL;
9237
9238   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9239   if (!abbrev)
9240     {
9241       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9242                " at offset %s [in module %s]"),
9243              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9244              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9245     }
9246
9247   return abbrev;
9248 }
9249
9250 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9251    Returns a pointer to the end of a series of DIEs, terminated by an empty
9252    DIE.  Any children of the skipped DIEs will also be skipped.  */
9253
9254 static const gdb_byte *
9255 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9256 {
9257   while (1)
9258     {
9259       unsigned int bytes_read;
9260       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9261
9262       if (abbrev == NULL)
9263         return info_ptr + bytes_read;
9264       else
9265         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9266     }
9267 }
9268
9269 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9270    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9271    abbrev corresponding to that skipped uleb128 should be passed in
9272    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9273    children.  */
9274
9275 static const gdb_byte *
9276 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9277               struct abbrev_info *abbrev)
9278 {
9279   unsigned int bytes_read;
9280   struct attribute attr;
9281   bfd *abfd = reader->abfd;
9282   struct dwarf2_cu *cu = reader->cu;
9283   const gdb_byte *buffer = reader->buffer;
9284   const gdb_byte *buffer_end = reader->buffer_end;
9285   unsigned int form, i;
9286
9287   for (i = 0; i < abbrev->num_attrs; i++)
9288     {
9289       /* The only abbrev we care about is DW_AT_sibling.  */
9290       if (abbrev->attrs[i].name == DW_AT_sibling)
9291         {
9292           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9293           if (attr.form == DW_FORM_ref_addr)
9294             complaint (_("ignoring absolute DW_AT_sibling"));
9295           else
9296             {
9297               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9298               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9299
9300               if (sibling_ptr < info_ptr)
9301                 complaint (_("DW_AT_sibling points backwards"));
9302               else if (sibling_ptr > reader->buffer_end)
9303                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9304               else
9305                 return sibling_ptr;
9306             }
9307         }
9308
9309       /* If it isn't DW_AT_sibling, skip this attribute.  */
9310       form = abbrev->attrs[i].form;
9311     skip_attribute:
9312       switch (form)
9313         {
9314         case DW_FORM_ref_addr:
9315           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9316              and later it is offset sized.  */
9317           if (cu->header.version == 2)
9318             info_ptr += cu->header.addr_size;
9319           else
9320             info_ptr += cu->header.offset_size;
9321           break;
9322         case DW_FORM_GNU_ref_alt:
9323           info_ptr += cu->header.offset_size;
9324           break;
9325         case DW_FORM_addr:
9326           info_ptr += cu->header.addr_size;
9327           break;
9328         case DW_FORM_data1:
9329         case DW_FORM_ref1:
9330         case DW_FORM_flag:
9331           info_ptr += 1;
9332           break;
9333         case DW_FORM_flag_present:
9334         case DW_FORM_implicit_const:
9335           break;
9336         case DW_FORM_data2:
9337         case DW_FORM_ref2:
9338           info_ptr += 2;
9339           break;
9340         case DW_FORM_data4:
9341         case DW_FORM_ref4:
9342           info_ptr += 4;
9343           break;
9344         case DW_FORM_data8:
9345         case DW_FORM_ref8:
9346         case DW_FORM_ref_sig8:
9347           info_ptr += 8;
9348           break;
9349         case DW_FORM_data16:
9350           info_ptr += 16;
9351           break;
9352         case DW_FORM_string:
9353           read_direct_string (abfd, info_ptr, &bytes_read);
9354           info_ptr += bytes_read;
9355           break;
9356         case DW_FORM_sec_offset:
9357         case DW_FORM_strp:
9358         case DW_FORM_GNU_strp_alt:
9359           info_ptr += cu->header.offset_size;
9360           break;
9361         case DW_FORM_exprloc:
9362         case DW_FORM_block:
9363           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9364           info_ptr += bytes_read;
9365           break;
9366         case DW_FORM_block1:
9367           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9368           break;
9369         case DW_FORM_block2:
9370           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9371           break;
9372         case DW_FORM_block4:
9373           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9374           break;
9375         case DW_FORM_addrx:
9376         case DW_FORM_strx:
9377         case DW_FORM_sdata:
9378         case DW_FORM_udata:
9379         case DW_FORM_ref_udata:
9380         case DW_FORM_GNU_addr_index:
9381         case DW_FORM_GNU_str_index:
9382           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9383           break;
9384         case DW_FORM_indirect:
9385           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9386           info_ptr += bytes_read;
9387           /* We need to continue parsing from here, so just go back to
9388              the top.  */
9389           goto skip_attribute;
9390
9391         default:
9392           error (_("Dwarf Error: Cannot handle %s "
9393                    "in DWARF reader [in module %s]"),
9394                  dwarf_form_name (form),
9395                  bfd_get_filename (abfd));
9396         }
9397     }
9398
9399   if (abbrev->has_children)
9400     return skip_children (reader, info_ptr);
9401   else
9402     return info_ptr;
9403 }
9404
9405 /* Locate ORIG_PDI's sibling.
9406    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9407
9408 static const gdb_byte *
9409 locate_pdi_sibling (const struct die_reader_specs *reader,
9410                     struct partial_die_info *orig_pdi,
9411                     const gdb_byte *info_ptr)
9412 {
9413   /* Do we know the sibling already?  */
9414
9415   if (orig_pdi->sibling)
9416     return orig_pdi->sibling;
9417
9418   /* Are there any children to deal with?  */
9419
9420   if (!orig_pdi->has_children)
9421     return info_ptr;
9422
9423   /* Skip the children the long way.  */
9424
9425   return skip_children (reader, info_ptr);
9426 }
9427
9428 /* Expand this partial symbol table into a full symbol table.  SELF is
9429    not NULL.  */
9430
9431 static void
9432 dwarf2_read_symtab (struct partial_symtab *self,
9433                     struct objfile *objfile)
9434 {
9435   struct dwarf2_per_objfile *dwarf2_per_objfile
9436     = get_dwarf2_per_objfile (objfile);
9437
9438   if (self->readin)
9439     {
9440       warning (_("bug: psymtab for %s is already read in."),
9441                self->filename);
9442     }
9443   else
9444     {
9445       if (info_verbose)
9446         {
9447           printf_filtered (_("Reading in symbols for %s..."),
9448                            self->filename);
9449           gdb_flush (gdb_stdout);
9450         }
9451
9452       /* If this psymtab is constructed from a debug-only objfile, the
9453          has_section_at_zero flag will not necessarily be correct.  We
9454          can get the correct value for this flag by looking at the data
9455          associated with the (presumably stripped) associated objfile.  */
9456       if (objfile->separate_debug_objfile_backlink)
9457         {
9458           struct dwarf2_per_objfile *dpo_backlink
9459             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9460
9461           dwarf2_per_objfile->has_section_at_zero
9462             = dpo_backlink->has_section_at_zero;
9463         }
9464
9465       dwarf2_per_objfile->reading_partial_symbols = 0;
9466
9467       psymtab_to_symtab_1 (self);
9468
9469       /* Finish up the debug error message.  */
9470       if (info_verbose)
9471         printf_filtered (_("done.\n"));
9472     }
9473
9474   process_cu_includes (dwarf2_per_objfile);
9475 }
9476 \f
9477 /* Reading in full CUs.  */
9478
9479 /* Add PER_CU to the queue.  */
9480
9481 static void
9482 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9483                  enum language pretend_language)
9484 {
9485   struct dwarf2_queue_item *item;
9486
9487   per_cu->queued = 1;
9488   item = XNEW (struct dwarf2_queue_item);
9489   item->per_cu = per_cu;
9490   item->pretend_language = pretend_language;
9491   item->next = NULL;
9492
9493   if (dwarf2_queue == NULL)
9494     dwarf2_queue = item;
9495   else
9496     dwarf2_queue_tail->next = item;
9497
9498   dwarf2_queue_tail = item;
9499 }
9500
9501 /* If PER_CU is not yet queued, add it to the queue.
9502    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9503    dependency.
9504    The result is non-zero if PER_CU was queued, otherwise the result is zero
9505    meaning either PER_CU is already queued or it is already loaded.
9506
9507    N.B. There is an invariant here that if a CU is queued then it is loaded.
9508    The caller is required to load PER_CU if we return non-zero.  */
9509
9510 static int
9511 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9512                        struct dwarf2_per_cu_data *per_cu,
9513                        enum language pretend_language)
9514 {
9515   /* We may arrive here during partial symbol reading, if we need full
9516      DIEs to process an unusual case (e.g. template arguments).  Do
9517      not queue PER_CU, just tell our caller to load its DIEs.  */
9518   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9519     {
9520       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9521         return 1;
9522       return 0;
9523     }
9524
9525   /* Mark the dependence relation so that we don't flush PER_CU
9526      too early.  */
9527   if (dependent_cu != NULL)
9528     dwarf2_add_dependence (dependent_cu, per_cu);
9529
9530   /* If it's already on the queue, we have nothing to do.  */
9531   if (per_cu->queued)
9532     return 0;
9533
9534   /* If the compilation unit is already loaded, just mark it as
9535      used.  */
9536   if (per_cu->cu != NULL)
9537     {
9538       per_cu->cu->last_used = 0;
9539       return 0;
9540     }
9541
9542   /* Add it to the queue.  */
9543   queue_comp_unit (per_cu, pretend_language);
9544
9545   return 1;
9546 }
9547
9548 /* Process the queue.  */
9549
9550 static void
9551 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9552 {
9553   struct dwarf2_queue_item *item, *next_item;
9554
9555   if (dwarf_read_debug)
9556     {
9557       fprintf_unfiltered (gdb_stdlog,
9558                           "Expanding one or more symtabs of objfile %s ...\n",
9559                           objfile_name (dwarf2_per_objfile->objfile));
9560     }
9561
9562   /* The queue starts out with one item, but following a DIE reference
9563      may load a new CU, adding it to the end of the queue.  */
9564   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9565     {
9566       if ((dwarf2_per_objfile->using_index
9567            ? !item->per_cu->v.quick->compunit_symtab
9568            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9569           /* Skip dummy CUs.  */
9570           && item->per_cu->cu != NULL)
9571         {
9572           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9573           unsigned int debug_print_threshold;
9574           char buf[100];
9575
9576           if (per_cu->is_debug_types)
9577             {
9578               struct signatured_type *sig_type =
9579                 (struct signatured_type *) per_cu;
9580
9581               sprintf (buf, "TU %s at offset %s",
9582                        hex_string (sig_type->signature),
9583                        sect_offset_str (per_cu->sect_off));
9584               /* There can be 100s of TUs.
9585                  Only print them in verbose mode.  */
9586               debug_print_threshold = 2;
9587             }
9588           else
9589             {
9590               sprintf (buf, "CU at offset %s",
9591                        sect_offset_str (per_cu->sect_off));
9592               debug_print_threshold = 1;
9593             }
9594
9595           if (dwarf_read_debug >= debug_print_threshold)
9596             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9597
9598           if (per_cu->is_debug_types)
9599             process_full_type_unit (per_cu, item->pretend_language);
9600           else
9601             process_full_comp_unit (per_cu, item->pretend_language);
9602
9603           if (dwarf_read_debug >= debug_print_threshold)
9604             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9605         }
9606
9607       item->per_cu->queued = 0;
9608       next_item = item->next;
9609       xfree (item);
9610     }
9611
9612   dwarf2_queue_tail = NULL;
9613
9614   if (dwarf_read_debug)
9615     {
9616       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9617                           objfile_name (dwarf2_per_objfile->objfile));
9618     }
9619 }
9620
9621 /* Read in full symbols for PST, and anything it depends on.  */
9622
9623 static void
9624 psymtab_to_symtab_1 (struct partial_symtab *pst)
9625 {
9626   struct dwarf2_per_cu_data *per_cu;
9627   int i;
9628
9629   if (pst->readin)
9630     return;
9631
9632   for (i = 0; i < pst->number_of_dependencies; i++)
9633     if (!pst->dependencies[i]->readin
9634         && pst->dependencies[i]->user == NULL)
9635       {
9636         /* Inform about additional files that need to be read in.  */
9637         if (info_verbose)
9638           {
9639             /* FIXME: i18n: Need to make this a single string.  */
9640             fputs_filtered (" ", gdb_stdout);
9641             wrap_here ("");
9642             fputs_filtered ("and ", gdb_stdout);
9643             wrap_here ("");
9644             printf_filtered ("%s...", pst->dependencies[i]->filename);
9645             wrap_here ("");     /* Flush output.  */
9646             gdb_flush (gdb_stdout);
9647           }
9648         psymtab_to_symtab_1 (pst->dependencies[i]);
9649       }
9650
9651   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9652
9653   if (per_cu == NULL)
9654     {
9655       /* It's an include file, no symbols to read for it.
9656          Everything is in the parent symtab.  */
9657       pst->readin = 1;
9658       return;
9659     }
9660
9661   dw2_do_instantiate_symtab (per_cu, false);
9662 }
9663
9664 /* Trivial hash function for die_info: the hash value of a DIE
9665    is its offset in .debug_info for this objfile.  */
9666
9667 static hashval_t
9668 die_hash (const void *item)
9669 {
9670   const struct die_info *die = (const struct die_info *) item;
9671
9672   return to_underlying (die->sect_off);
9673 }
9674
9675 /* Trivial comparison function for die_info structures: two DIEs
9676    are equal if they have the same offset.  */
9677
9678 static int
9679 die_eq (const void *item_lhs, const void *item_rhs)
9680 {
9681   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9682   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9683
9684   return die_lhs->sect_off == die_rhs->sect_off;
9685 }
9686
9687 /* die_reader_func for load_full_comp_unit.
9688    This is identical to read_signatured_type_reader,
9689    but is kept separate for now.  */
9690
9691 static void
9692 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9693                             const gdb_byte *info_ptr,
9694                             struct die_info *comp_unit_die,
9695                             int has_children,
9696                             void *data)
9697 {
9698   struct dwarf2_cu *cu = reader->cu;
9699   enum language *language_ptr = (enum language *) data;
9700
9701   gdb_assert (cu->die_hash == NULL);
9702   cu->die_hash =
9703     htab_create_alloc_ex (cu->header.length / 12,
9704                           die_hash,
9705                           die_eq,
9706                           NULL,
9707                           &cu->comp_unit_obstack,
9708                           hashtab_obstack_allocate,
9709                           dummy_obstack_deallocate);
9710
9711   if (has_children)
9712     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9713                                                   &info_ptr, comp_unit_die);
9714   cu->dies = comp_unit_die;
9715   /* comp_unit_die is not stored in die_hash, no need.  */
9716
9717   /* We try not to read any attributes in this function, because not
9718      all CUs needed for references have been loaded yet, and symbol
9719      table processing isn't initialized.  But we have to set the CU language,
9720      or we won't be able to build types correctly.
9721      Similarly, if we do not read the producer, we can not apply
9722      producer-specific interpretation.  */
9723   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9724 }
9725
9726 /* Load the DIEs associated with PER_CU into memory.  */
9727
9728 static void
9729 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9730                      bool skip_partial,
9731                      enum language pretend_language)
9732 {
9733   gdb_assert (! this_cu->is_debug_types);
9734
9735   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9736                            load_full_comp_unit_reader, &pretend_language);
9737 }
9738
9739 /* Add a DIE to the delayed physname list.  */
9740
9741 static void
9742 add_to_method_list (struct type *type, int fnfield_index, int index,
9743                     const char *name, struct die_info *die,
9744                     struct dwarf2_cu *cu)
9745 {
9746   struct delayed_method_info mi;
9747   mi.type = type;
9748   mi.fnfield_index = fnfield_index;
9749   mi.index = index;
9750   mi.name = name;
9751   mi.die = die;
9752   cu->method_list.push_back (mi);
9753 }
9754
9755 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9756    "const" / "volatile".  If so, decrements LEN by the length of the
9757    modifier and return true.  Otherwise return false.  */
9758
9759 template<size_t N>
9760 static bool
9761 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9762 {
9763   size_t mod_len = sizeof (mod) - 1;
9764   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9765     {
9766       len -= mod_len;
9767       return true;
9768     }
9769   return false;
9770 }
9771
9772 /* Compute the physnames of any methods on the CU's method list.
9773
9774    The computation of method physnames is delayed in order to avoid the
9775    (bad) condition that one of the method's formal parameters is of an as yet
9776    incomplete type.  */
9777
9778 static void
9779 compute_delayed_physnames (struct dwarf2_cu *cu)
9780 {
9781   /* Only C++ delays computing physnames.  */
9782   if (cu->method_list.empty ())
9783     return;
9784   gdb_assert (cu->language == language_cplus);
9785
9786   for (const delayed_method_info &mi : cu->method_list)
9787     {
9788       const char *physname;
9789       struct fn_fieldlist *fn_flp
9790         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9791       physname = dwarf2_physname (mi.name, mi.die, cu);
9792       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9793         = physname ? physname : "";
9794
9795       /* Since there's no tag to indicate whether a method is a
9796          const/volatile overload, extract that information out of the
9797          demangled name.  */
9798       if (physname != NULL)
9799         {
9800           size_t len = strlen (physname);
9801
9802           while (1)
9803             {
9804               if (physname[len] == ')') /* shortcut */
9805                 break;
9806               else if (check_modifier (physname, len, " const"))
9807                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9808               else if (check_modifier (physname, len, " volatile"))
9809                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9810               else
9811                 break;
9812             }
9813         }
9814     }
9815
9816   /* The list is no longer needed.  */
9817   cu->method_list.clear ();
9818 }
9819
9820 /* Go objects should be embedded in a DW_TAG_module DIE,
9821    and it's not clear if/how imported objects will appear.
9822    To keep Go support simple until that's worked out,
9823    go back through what we've read and create something usable.
9824    We could do this while processing each DIE, and feels kinda cleaner,
9825    but that way is more invasive.
9826    This is to, for example, allow the user to type "p var" or "b main"
9827    without having to specify the package name, and allow lookups
9828    of module.object to work in contexts that use the expression
9829    parser.  */
9830
9831 static void
9832 fixup_go_packaging (struct dwarf2_cu *cu)
9833 {
9834   char *package_name = NULL;
9835   struct pending *list;
9836   int i;
9837
9838   for (list = *cu->get_builder ()->get_global_symbols ();
9839        list != NULL;
9840        list = list->next)
9841     {
9842       for (i = 0; i < list->nsyms; ++i)
9843         {
9844           struct symbol *sym = list->symbol[i];
9845
9846           if (SYMBOL_LANGUAGE (sym) == language_go
9847               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9848             {
9849               char *this_package_name = go_symbol_package_name (sym);
9850
9851               if (this_package_name == NULL)
9852                 continue;
9853               if (package_name == NULL)
9854                 package_name = this_package_name;
9855               else
9856                 {
9857                   struct objfile *objfile
9858                     = cu->per_cu->dwarf2_per_objfile->objfile;
9859                   if (strcmp (package_name, this_package_name) != 0)
9860                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9861                                (symbol_symtab (sym) != NULL
9862                                 ? symtab_to_filename_for_display
9863                                     (symbol_symtab (sym))
9864                                 : objfile_name (objfile)),
9865                                this_package_name, package_name);
9866                   xfree (this_package_name);
9867                 }
9868             }
9869         }
9870     }
9871
9872   if (package_name != NULL)
9873     {
9874       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9875       const char *saved_package_name
9876         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9877                                         package_name,
9878                                         strlen (package_name));
9879       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9880                                      saved_package_name);
9881       struct symbol *sym;
9882
9883       sym = allocate_symbol (objfile);
9884       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9885       SYMBOL_SET_NAMES (sym, saved_package_name,
9886                         strlen (saved_package_name), 0, objfile);
9887       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9888          e.g., "main" finds the "main" module and not C's main().  */
9889       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9890       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9891       SYMBOL_TYPE (sym) = type;
9892
9893       add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9894
9895       xfree (package_name);
9896     }
9897 }
9898
9899 /* Allocate a fully-qualified name consisting of the two parts on the
9900    obstack.  */
9901
9902 static const char *
9903 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9904 {
9905   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9906 }
9907
9908 /* A helper that allocates a struct discriminant_info to attach to a
9909    union type.  */
9910
9911 static struct discriminant_info *
9912 alloc_discriminant_info (struct type *type, int discriminant_index,
9913                          int default_index)
9914 {
9915   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9916   gdb_assert (discriminant_index == -1
9917               || (discriminant_index >= 0
9918                   && discriminant_index < TYPE_NFIELDS (type)));
9919   gdb_assert (default_index == -1
9920               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9921
9922   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9923
9924   struct discriminant_info *disc
9925     = ((struct discriminant_info *)
9926        TYPE_ZALLOC (type,
9927                     offsetof (struct discriminant_info, discriminants)
9928                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9929   disc->default_index = default_index;
9930   disc->discriminant_index = discriminant_index;
9931
9932   struct dynamic_prop prop;
9933   prop.kind = PROP_UNDEFINED;
9934   prop.data.baton = disc;
9935
9936   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9937
9938   return disc;
9939 }
9940
9941 /* Some versions of rustc emitted enums in an unusual way.
9942
9943    Ordinary enums were emitted as unions.  The first element of each
9944    structure in the union was named "RUST$ENUM$DISR".  This element
9945    held the discriminant.
9946
9947    These versions of Rust also implemented the "non-zero"
9948    optimization.  When the enum had two values, and one is empty and
9949    the other holds a pointer that cannot be zero, the pointer is used
9950    as the discriminant, with a zero value meaning the empty variant.
9951    Here, the union's first member is of the form
9952    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9953    where the fieldnos are the indices of the fields that should be
9954    traversed in order to find the field (which may be several fields deep)
9955    and the variantname is the name of the variant of the case when the
9956    field is zero.
9957
9958    This function recognizes whether TYPE is of one of these forms,
9959    and, if so, smashes it to be a variant type.  */
9960
9961 static void
9962 quirk_rust_enum (struct type *type, struct objfile *objfile)
9963 {
9964   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9965
9966   /* We don't need to deal with empty enums.  */
9967   if (TYPE_NFIELDS (type) == 0)
9968     return;
9969
9970 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9971   if (TYPE_NFIELDS (type) == 1
9972       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9973     {
9974       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9975
9976       /* Decode the field name to find the offset of the
9977          discriminant.  */
9978       ULONGEST bit_offset = 0;
9979       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9980       while (name[0] >= '0' && name[0] <= '9')
9981         {
9982           char *tail;
9983           unsigned long index = strtoul (name, &tail, 10);
9984           name = tail;
9985           if (*name != '$'
9986               || index >= TYPE_NFIELDS (field_type)
9987               || (TYPE_FIELD_LOC_KIND (field_type, index)
9988                   != FIELD_LOC_KIND_BITPOS))
9989             {
9990               complaint (_("Could not parse Rust enum encoding string \"%s\""
9991                            "[in module %s]"),
9992                          TYPE_FIELD_NAME (type, 0),
9993                          objfile_name (objfile));
9994               return;
9995             }
9996           ++name;
9997
9998           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9999           field_type = TYPE_FIELD_TYPE (field_type, index);
10000         }
10001
10002       /* Make a union to hold the variants.  */
10003       struct type *union_type = alloc_type (objfile);
10004       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10005       TYPE_NFIELDS (union_type) = 3;
10006       TYPE_FIELDS (union_type)
10007         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
10008       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10009       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10010
10011       /* Put the discriminant must at index 0.  */
10012       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10013       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10014       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10015       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10016
10017       /* The order of fields doesn't really matter, so put the real
10018          field at index 1 and the data-less field at index 2.  */
10019       struct discriminant_info *disc
10020         = alloc_discriminant_info (union_type, 0, 1);
10021       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10022       TYPE_FIELD_NAME (union_type, 1)
10023         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10024       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10025         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10026                               TYPE_FIELD_NAME (union_type, 1));
10027
10028       const char *dataless_name
10029         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10030                               name);
10031       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10032                                               dataless_name);
10033       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10034       /* NAME points into the original discriminant name, which
10035          already has the correct lifetime.  */
10036       TYPE_FIELD_NAME (union_type, 2) = name;
10037       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10038       disc->discriminants[2] = 0;
10039
10040       /* Smash this type to be a structure type.  We have to do this
10041          because the type has already been recorded.  */
10042       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10043       TYPE_NFIELDS (type) = 1;
10044       TYPE_FIELDS (type)
10045         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10046
10047       /* Install the variant part.  */
10048       TYPE_FIELD_TYPE (type, 0) = union_type;
10049       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10050       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10051     }
10052   else if (TYPE_NFIELDS (type) == 1)
10053     {
10054       /* We assume that a union with a single field is a univariant
10055          enum.  */
10056       /* Smash this type to be a structure type.  We have to do this
10057          because the type has already been recorded.  */
10058       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10059
10060       /* Make a union to hold the variants.  */
10061       struct type *union_type = alloc_type (objfile);
10062       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10063       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10064       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10065       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10066       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10067
10068       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10069       const char *variant_name
10070         = rust_last_path_segment (TYPE_NAME (field_type));
10071       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10072       TYPE_NAME (field_type)
10073         = rust_fully_qualify (&objfile->objfile_obstack,
10074                               TYPE_NAME (type), variant_name);
10075
10076       /* Install the union in the outer struct type.  */
10077       TYPE_NFIELDS (type) = 1;
10078       TYPE_FIELDS (type)
10079         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10080       TYPE_FIELD_TYPE (type, 0) = union_type;
10081       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10082       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10083
10084       alloc_discriminant_info (union_type, -1, 0);
10085     }
10086   else
10087     {
10088       struct type *disr_type = nullptr;
10089       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10090         {
10091           disr_type = TYPE_FIELD_TYPE (type, i);
10092
10093           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10094             {
10095               /* All fields of a true enum will be structs.  */
10096               return;
10097             }
10098           else if (TYPE_NFIELDS (disr_type) == 0)
10099             {
10100               /* Could be data-less variant, so keep going.  */
10101               disr_type = nullptr;
10102             }
10103           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10104                            "RUST$ENUM$DISR") != 0)
10105             {
10106               /* Not a Rust enum.  */
10107               return;
10108             }
10109           else
10110             {
10111               /* Found one.  */
10112               break;
10113             }
10114         }
10115
10116       /* If we got here without a discriminant, then it's probably
10117          just a union.  */
10118       if (disr_type == nullptr)
10119         return;
10120
10121       /* Smash this type to be a structure type.  We have to do this
10122          because the type has already been recorded.  */
10123       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10124
10125       /* Make a union to hold the variants.  */
10126       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10127       struct type *union_type = alloc_type (objfile);
10128       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10129       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10130       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10131       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10132       TYPE_FIELDS (union_type)
10133         = (struct field *) TYPE_ZALLOC (union_type,
10134                                         (TYPE_NFIELDS (union_type)
10135                                          * sizeof (struct field)));
10136
10137       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10138               TYPE_NFIELDS (type) * sizeof (struct field));
10139
10140       /* Install the discriminant at index 0 in the union.  */
10141       TYPE_FIELD (union_type, 0) = *disr_field;
10142       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10143       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10144
10145       /* Install the union in the outer struct type.  */
10146       TYPE_FIELD_TYPE (type, 0) = union_type;
10147       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10148       TYPE_NFIELDS (type) = 1;
10149
10150       /* Set the size and offset of the union type.  */
10151       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10152
10153       /* We need a way to find the correct discriminant given a
10154          variant name.  For convenience we build a map here.  */
10155       struct type *enum_type = FIELD_TYPE (*disr_field);
10156       std::unordered_map<std::string, ULONGEST> discriminant_map;
10157       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10158         {
10159           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10160             {
10161               const char *name
10162                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10163               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10164             }
10165         }
10166
10167       int n_fields = TYPE_NFIELDS (union_type);
10168       struct discriminant_info *disc
10169         = alloc_discriminant_info (union_type, 0, -1);
10170       /* Skip the discriminant here.  */
10171       for (int i = 1; i < n_fields; ++i)
10172         {
10173           /* Find the final word in the name of this variant's type.
10174              That name can be used to look up the correct
10175              discriminant.  */
10176           const char *variant_name
10177             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10178                                                                   i)));
10179
10180           auto iter = discriminant_map.find (variant_name);
10181           if (iter != discriminant_map.end ())
10182             disc->discriminants[i] = iter->second;
10183
10184           /* Remove the discriminant field, if it exists.  */
10185           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10186           if (TYPE_NFIELDS (sub_type) > 0)
10187             {
10188               --TYPE_NFIELDS (sub_type);
10189               ++TYPE_FIELDS (sub_type);
10190             }
10191           TYPE_FIELD_NAME (union_type, i) = variant_name;
10192           TYPE_NAME (sub_type)
10193             = rust_fully_qualify (&objfile->objfile_obstack,
10194                                   TYPE_NAME (type), variant_name);
10195         }
10196     }
10197 }
10198
10199 /* Rewrite some Rust unions to be structures with variants parts.  */
10200
10201 static void
10202 rust_union_quirks (struct dwarf2_cu *cu)
10203 {
10204   gdb_assert (cu->language == language_rust);
10205   for (type *type_ : cu->rust_unions)
10206     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10207   /* We don't need this any more.  */
10208   cu->rust_unions.clear ();
10209 }
10210
10211 /* Return the symtab for PER_CU.  This works properly regardless of
10212    whether we're using the index or psymtabs.  */
10213
10214 static struct compunit_symtab *
10215 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10216 {
10217   return (per_cu->dwarf2_per_objfile->using_index
10218           ? per_cu->v.quick->compunit_symtab
10219           : per_cu->v.psymtab->compunit_symtab);
10220 }
10221
10222 /* A helper function for computing the list of all symbol tables
10223    included by PER_CU.  */
10224
10225 static void
10226 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
10227                                 htab_t all_children, htab_t all_type_symtabs,
10228                                 struct dwarf2_per_cu_data *per_cu,
10229                                 struct compunit_symtab *immediate_parent)
10230 {
10231   void **slot;
10232   int ix;
10233   struct compunit_symtab *cust;
10234   struct dwarf2_per_cu_data *iter;
10235
10236   slot = htab_find_slot (all_children, per_cu, INSERT);
10237   if (*slot != NULL)
10238     {
10239       /* This inclusion and its children have been processed.  */
10240       return;
10241     }
10242
10243   *slot = per_cu;
10244   /* Only add a CU if it has a symbol table.  */
10245   cust = get_compunit_symtab (per_cu);
10246   if (cust != NULL)
10247     {
10248       /* If this is a type unit only add its symbol table if we haven't
10249          seen it yet (type unit per_cu's can share symtabs).  */
10250       if (per_cu->is_debug_types)
10251         {
10252           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10253           if (*slot == NULL)
10254             {
10255               *slot = cust;
10256               result->push_back (cust);
10257               if (cust->user == NULL)
10258                 cust->user = immediate_parent;
10259             }
10260         }
10261       else
10262         {
10263           result->push_back (cust);
10264           if (cust->user == NULL)
10265             cust->user = immediate_parent;
10266         }
10267     }
10268
10269   for (ix = 0;
10270        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10271        ++ix)
10272     {
10273       recursively_compute_inclusions (result, all_children,
10274                                       all_type_symtabs, iter, cust);
10275     }
10276 }
10277
10278 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10279    PER_CU.  */
10280
10281 static void
10282 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10283 {
10284   gdb_assert (! per_cu->is_debug_types);
10285
10286   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10287     {
10288       int ix, len;
10289       struct dwarf2_per_cu_data *per_cu_iter;
10290       std::vector<compunit_symtab *> result_symtabs;
10291       htab_t all_children, all_type_symtabs;
10292       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10293
10294       /* If we don't have a symtab, we can just skip this case.  */
10295       if (cust == NULL)
10296         return;
10297
10298       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10299                                         NULL, xcalloc, xfree);
10300       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10301                                             NULL, xcalloc, xfree);
10302
10303       for (ix = 0;
10304            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10305                         ix, per_cu_iter);
10306            ++ix)
10307         {
10308           recursively_compute_inclusions (&result_symtabs, all_children,
10309                                           all_type_symtabs, per_cu_iter,
10310                                           cust);
10311         }
10312
10313       /* Now we have a transitive closure of all the included symtabs.  */
10314       len = result_symtabs.size ();
10315       cust->includes
10316         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10317                      struct compunit_symtab *, len + 1);
10318       memcpy (cust->includes, result_symtabs.data (),
10319               len * sizeof (compunit_symtab *));
10320       cust->includes[len] = NULL;
10321
10322       htab_delete (all_children);
10323       htab_delete (all_type_symtabs);
10324     }
10325 }
10326
10327 /* Compute the 'includes' field for the symtabs of all the CUs we just
10328    read.  */
10329
10330 static void
10331 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10332 {
10333   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10334     {
10335       if (! iter->is_debug_types)
10336         compute_compunit_symtab_includes (iter);
10337     }
10338
10339   dwarf2_per_objfile->just_read_cus.clear ();
10340 }
10341
10342 /* Generate full symbol information for PER_CU, whose DIEs have
10343    already been loaded into memory.  */
10344
10345 static void
10346 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10347                         enum language pretend_language)
10348 {
10349   struct dwarf2_cu *cu = per_cu->cu;
10350   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10351   struct objfile *objfile = dwarf2_per_objfile->objfile;
10352   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10353   CORE_ADDR lowpc, highpc;
10354   struct compunit_symtab *cust;
10355   CORE_ADDR baseaddr;
10356   struct block *static_block;
10357   CORE_ADDR addr;
10358
10359   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10360
10361   /* Clear the list here in case something was left over.  */
10362   cu->method_list.clear ();
10363
10364   cu->language = pretend_language;
10365   cu->language_defn = language_def (cu->language);
10366
10367   /* Do line number decoding in read_file_scope () */
10368   process_die (cu->dies, cu);
10369
10370   /* For now fudge the Go package.  */
10371   if (cu->language == language_go)
10372     fixup_go_packaging (cu);
10373
10374   /* Now that we have processed all the DIEs in the CU, all the types 
10375      should be complete, and it should now be safe to compute all of the
10376      physnames.  */
10377   compute_delayed_physnames (cu);
10378
10379   if (cu->language == language_rust)
10380     rust_union_quirks (cu);
10381
10382   /* Some compilers don't define a DW_AT_high_pc attribute for the
10383      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10384      it, by scanning the DIE's below the compilation unit.  */
10385   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10386
10387   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10388   static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
10389
10390   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10391      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10392      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10393      addrmap to help ensure it has an accurate map of pc values belonging to
10394      this comp unit.  */
10395   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10396
10397   cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10398                                                     SECT_OFF_TEXT (objfile),
10399                                                     0);
10400
10401   if (cust != NULL)
10402     {
10403       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10404
10405       /* Set symtab language to language from DW_AT_language.  If the
10406          compilation is from a C file generated by language preprocessors, do
10407          not set the language if it was already deduced by start_subfile.  */
10408       if (!(cu->language == language_c
10409             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10410         COMPUNIT_FILETABS (cust)->language = cu->language;
10411
10412       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10413          produce DW_AT_location with location lists but it can be possibly
10414          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10415          there were bugs in prologue debug info, fixed later in GCC-4.5
10416          by "unwind info for epilogues" patch (which is not directly related).
10417
10418          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10419          needed, it would be wrong due to missing DW_AT_producer there.
10420
10421          Still one can confuse GDB by using non-standard GCC compilation
10422          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10423          */ 
10424       if (cu->has_loclist && gcc_4_minor >= 5)
10425         cust->locations_valid = 1;
10426
10427       if (gcc_4_minor >= 5)
10428         cust->epilogue_unwind_valid = 1;
10429
10430       cust->call_site_htab = cu->call_site_htab;
10431     }
10432
10433   if (dwarf2_per_objfile->using_index)
10434     per_cu->v.quick->compunit_symtab = cust;
10435   else
10436     {
10437       struct partial_symtab *pst = per_cu->v.psymtab;
10438       pst->compunit_symtab = cust;
10439       pst->readin = 1;
10440     }
10441
10442   /* Push it for inclusion processing later.  */
10443   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10444
10445   /* Not needed any more.  */
10446   cu->reset_builder ();
10447 }
10448
10449 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10450    already been loaded into memory.  */
10451
10452 static void
10453 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10454                         enum language pretend_language)
10455 {
10456   struct dwarf2_cu *cu = per_cu->cu;
10457   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10458   struct objfile *objfile = dwarf2_per_objfile->objfile;
10459   struct compunit_symtab *cust;
10460   struct signatured_type *sig_type;
10461
10462   gdb_assert (per_cu->is_debug_types);
10463   sig_type = (struct signatured_type *) per_cu;
10464
10465   /* Clear the list here in case something was left over.  */
10466   cu->method_list.clear ();
10467
10468   cu->language = pretend_language;
10469   cu->language_defn = language_def (cu->language);
10470
10471   /* The symbol tables are set up in read_type_unit_scope.  */
10472   process_die (cu->dies, cu);
10473
10474   /* For now fudge the Go package.  */
10475   if (cu->language == language_go)
10476     fixup_go_packaging (cu);
10477
10478   /* Now that we have processed all the DIEs in the CU, all the types 
10479      should be complete, and it should now be safe to compute all of the
10480      physnames.  */
10481   compute_delayed_physnames (cu);
10482
10483   if (cu->language == language_rust)
10484     rust_union_quirks (cu);
10485
10486   /* TUs share symbol tables.
10487      If this is the first TU to use this symtab, complete the construction
10488      of it with end_expandable_symtab.  Otherwise, complete the addition of
10489      this TU's symbols to the existing symtab.  */
10490   if (sig_type->type_unit_group->compunit_symtab == NULL)
10491     {
10492       buildsym_compunit *builder = cu->get_builder ();
10493       cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10494       sig_type->type_unit_group->compunit_symtab = cust;
10495
10496       if (cust != NULL)
10497         {
10498           /* Set symtab language to language from DW_AT_language.  If the
10499              compilation is from a C file generated by language preprocessors,
10500              do not set the language if it was already deduced by
10501              start_subfile.  */
10502           if (!(cu->language == language_c
10503                 && COMPUNIT_FILETABS (cust)->language != language_c))
10504             COMPUNIT_FILETABS (cust)->language = cu->language;
10505         }
10506     }
10507   else
10508     {
10509       cu->get_builder ()->augment_type_symtab ();
10510       cust = sig_type->type_unit_group->compunit_symtab;
10511     }
10512
10513   if (dwarf2_per_objfile->using_index)
10514     per_cu->v.quick->compunit_symtab = cust;
10515   else
10516     {
10517       struct partial_symtab *pst = per_cu->v.psymtab;
10518       pst->compunit_symtab = cust;
10519       pst->readin = 1;
10520     }
10521
10522   /* Not needed any more.  */
10523   cu->reset_builder ();
10524 }
10525
10526 /* Process an imported unit DIE.  */
10527
10528 static void
10529 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10530 {
10531   struct attribute *attr;
10532
10533   /* For now we don't handle imported units in type units.  */
10534   if (cu->per_cu->is_debug_types)
10535     {
10536       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10537                " supported in type units [in module %s]"),
10538              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10539     }
10540
10541   attr = dwarf2_attr (die, DW_AT_import, cu);
10542   if (attr != NULL)
10543     {
10544       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10545       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10546       dwarf2_per_cu_data *per_cu
10547         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10548                                             cu->per_cu->dwarf2_per_objfile);
10549
10550       /* If necessary, add it to the queue and load its DIEs.  */
10551       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10552         load_full_comp_unit (per_cu, false, cu->language);
10553
10554       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10555                      per_cu);
10556     }
10557 }
10558
10559 /* RAII object that represents a process_die scope: i.e.,
10560    starts/finishes processing a DIE.  */
10561 class process_die_scope
10562 {
10563 public:
10564   process_die_scope (die_info *die, dwarf2_cu *cu)
10565     : m_die (die), m_cu (cu)
10566   {
10567     /* We should only be processing DIEs not already in process.  */
10568     gdb_assert (!m_die->in_process);
10569     m_die->in_process = true;
10570   }
10571
10572   ~process_die_scope ()
10573   {
10574     m_die->in_process = false;
10575
10576     /* If we're done processing the DIE for the CU that owns the line
10577        header, we don't need the line header anymore.  */
10578     if (m_cu->line_header_die_owner == m_die)
10579       {
10580         delete m_cu->line_header;
10581         m_cu->line_header = NULL;
10582         m_cu->line_header_die_owner = NULL;
10583       }
10584   }
10585
10586 private:
10587   die_info *m_die;
10588   dwarf2_cu *m_cu;
10589 };
10590
10591 /* Process a die and its children.  */
10592
10593 static void
10594 process_die (struct die_info *die, struct dwarf2_cu *cu)
10595 {
10596   process_die_scope scope (die, cu);
10597
10598   switch (die->tag)
10599     {
10600     case DW_TAG_padding:
10601       break;
10602     case DW_TAG_compile_unit:
10603     case DW_TAG_partial_unit:
10604       read_file_scope (die, cu);
10605       break;
10606     case DW_TAG_type_unit:
10607       read_type_unit_scope (die, cu);
10608       break;
10609     case DW_TAG_subprogram:
10610     case DW_TAG_inlined_subroutine:
10611       read_func_scope (die, cu);
10612       break;
10613     case DW_TAG_lexical_block:
10614     case DW_TAG_try_block:
10615     case DW_TAG_catch_block:
10616       read_lexical_block_scope (die, cu);
10617       break;
10618     case DW_TAG_call_site:
10619     case DW_TAG_GNU_call_site:
10620       read_call_site_scope (die, cu);
10621       break;
10622     case DW_TAG_class_type:
10623     case DW_TAG_interface_type:
10624     case DW_TAG_structure_type:
10625     case DW_TAG_union_type:
10626       process_structure_scope (die, cu);
10627       break;
10628     case DW_TAG_enumeration_type:
10629       process_enumeration_scope (die, cu);
10630       break;
10631
10632     /* These dies have a type, but processing them does not create
10633        a symbol or recurse to process the children.  Therefore we can
10634        read them on-demand through read_type_die.  */
10635     case DW_TAG_subroutine_type:
10636     case DW_TAG_set_type:
10637     case DW_TAG_array_type:
10638     case DW_TAG_pointer_type:
10639     case DW_TAG_ptr_to_member_type:
10640     case DW_TAG_reference_type:
10641     case DW_TAG_rvalue_reference_type:
10642     case DW_TAG_string_type:
10643       break;
10644
10645     case DW_TAG_base_type:
10646     case DW_TAG_subrange_type:
10647     case DW_TAG_typedef:
10648       /* Add a typedef symbol for the type definition, if it has a
10649          DW_AT_name.  */
10650       new_symbol (die, read_type_die (die, cu), cu);
10651       break;
10652     case DW_TAG_common_block:
10653       read_common_block (die, cu);
10654       break;
10655     case DW_TAG_common_inclusion:
10656       break;
10657     case DW_TAG_namespace:
10658       cu->processing_has_namespace_info = true;
10659       read_namespace (die, cu);
10660       break;
10661     case DW_TAG_module:
10662       cu->processing_has_namespace_info = true;
10663       read_module (die, cu);
10664       break;
10665     case DW_TAG_imported_declaration:
10666       cu->processing_has_namespace_info = true;
10667       if (read_namespace_alias (die, cu))
10668         break;
10669       /* The declaration is not a global namespace alias.  */
10670       /* Fall through.  */
10671     case DW_TAG_imported_module:
10672       cu->processing_has_namespace_info = true;
10673       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10674                                  || cu->language != language_fortran))
10675         complaint (_("Tag '%s' has unexpected children"),
10676                    dwarf_tag_name (die->tag));
10677       read_import_statement (die, cu);
10678       break;
10679
10680     case DW_TAG_imported_unit:
10681       process_imported_unit_die (die, cu);
10682       break;
10683
10684     case DW_TAG_variable:
10685       read_variable (die, cu);
10686       break;
10687
10688     default:
10689       new_symbol (die, NULL, cu);
10690       break;
10691     }
10692 }
10693 \f
10694 /* DWARF name computation.  */
10695
10696 /* A helper function for dwarf2_compute_name which determines whether DIE
10697    needs to have the name of the scope prepended to the name listed in the
10698    die.  */
10699
10700 static int
10701 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10702 {
10703   struct attribute *attr;
10704
10705   switch (die->tag)
10706     {
10707     case DW_TAG_namespace:
10708     case DW_TAG_typedef:
10709     case DW_TAG_class_type:
10710     case DW_TAG_interface_type:
10711     case DW_TAG_structure_type:
10712     case DW_TAG_union_type:
10713     case DW_TAG_enumeration_type:
10714     case DW_TAG_enumerator:
10715     case DW_TAG_subprogram:
10716     case DW_TAG_inlined_subroutine:
10717     case DW_TAG_member:
10718     case DW_TAG_imported_declaration:
10719       return 1;
10720
10721     case DW_TAG_variable:
10722     case DW_TAG_constant:
10723       /* We only need to prefix "globally" visible variables.  These include
10724          any variable marked with DW_AT_external or any variable that
10725          lives in a namespace.  [Variables in anonymous namespaces
10726          require prefixing, but they are not DW_AT_external.]  */
10727
10728       if (dwarf2_attr (die, DW_AT_specification, cu))
10729         {
10730           struct dwarf2_cu *spec_cu = cu;
10731
10732           return die_needs_namespace (die_specification (die, &spec_cu),
10733                                       spec_cu);
10734         }
10735
10736       attr = dwarf2_attr (die, DW_AT_external, cu);
10737       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10738           && die->parent->tag != DW_TAG_module)
10739         return 0;
10740       /* A variable in a lexical block of some kind does not need a
10741          namespace, even though in C++ such variables may be external
10742          and have a mangled name.  */
10743       if (die->parent->tag ==  DW_TAG_lexical_block
10744           || die->parent->tag ==  DW_TAG_try_block
10745           || die->parent->tag ==  DW_TAG_catch_block
10746           || die->parent->tag == DW_TAG_subprogram)
10747         return 0;
10748       return 1;
10749
10750     default:
10751       return 0;
10752     }
10753 }
10754
10755 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10756    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10757    defined for the given DIE.  */
10758
10759 static struct attribute *
10760 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10761 {
10762   struct attribute *attr;
10763
10764   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10765   if (attr == NULL)
10766     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10767
10768   return attr;
10769 }
10770
10771 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10772    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10773    defined for the given DIE.  */
10774
10775 static const char *
10776 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10777 {
10778   const char *linkage_name;
10779
10780   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10781   if (linkage_name == NULL)
10782     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10783
10784   return linkage_name;
10785 }
10786
10787 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10788    compute the physname for the object, which include a method's:
10789    - formal parameters (C++),
10790    - receiver type (Go),
10791
10792    The term "physname" is a bit confusing.
10793    For C++, for example, it is the demangled name.
10794    For Go, for example, it's the mangled name.
10795
10796    For Ada, return the DIE's linkage name rather than the fully qualified
10797    name.  PHYSNAME is ignored..
10798
10799    The result is allocated on the objfile_obstack and canonicalized.  */
10800
10801 static const char *
10802 dwarf2_compute_name (const char *name,
10803                      struct die_info *die, struct dwarf2_cu *cu,
10804                      int physname)
10805 {
10806   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10807
10808   if (name == NULL)
10809     name = dwarf2_name (die, cu);
10810
10811   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10812      but otherwise compute it by typename_concat inside GDB.
10813      FIXME: Actually this is not really true, or at least not always true.
10814      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10815      Fortran names because there is no mangling standard.  So new_symbol
10816      will set the demangled name to the result of dwarf2_full_name, and it is
10817      the demangled name that GDB uses if it exists.  */
10818   if (cu->language == language_ada
10819       || (cu->language == language_fortran && physname))
10820     {
10821       /* For Ada unit, we prefer the linkage name over the name, as
10822          the former contains the exported name, which the user expects
10823          to be able to reference.  Ideally, we want the user to be able
10824          to reference this entity using either natural or linkage name,
10825          but we haven't started looking at this enhancement yet.  */
10826       const char *linkage_name = dw2_linkage_name (die, cu);
10827
10828       if (linkage_name != NULL)
10829         return linkage_name;
10830     }
10831
10832   /* These are the only languages we know how to qualify names in.  */
10833   if (name != NULL
10834       && (cu->language == language_cplus
10835           || cu->language == language_fortran || cu->language == language_d
10836           || cu->language == language_rust))
10837     {
10838       if (die_needs_namespace (die, cu))
10839         {
10840           const char *prefix;
10841           const char *canonical_name = NULL;
10842
10843           string_file buf;
10844
10845           prefix = determine_prefix (die, cu);
10846           if (*prefix != '\0')
10847             {
10848               char *prefixed_name = typename_concat (NULL, prefix, name,
10849                                                      physname, cu);
10850
10851               buf.puts (prefixed_name);
10852               xfree (prefixed_name);
10853             }
10854           else
10855             buf.puts (name);
10856
10857           /* Template parameters may be specified in the DIE's DW_AT_name, or
10858              as children with DW_TAG_template_type_param or
10859              DW_TAG_value_type_param.  If the latter, add them to the name
10860              here.  If the name already has template parameters, then
10861              skip this step; some versions of GCC emit both, and
10862              it is more efficient to use the pre-computed name.
10863
10864              Something to keep in mind about this process: it is very
10865              unlikely, or in some cases downright impossible, to produce
10866              something that will match the mangled name of a function.
10867              If the definition of the function has the same debug info,
10868              we should be able to match up with it anyway.  But fallbacks
10869              using the minimal symbol, for instance to find a method
10870              implemented in a stripped copy of libstdc++, will not work.
10871              If we do not have debug info for the definition, we will have to
10872              match them up some other way.
10873
10874              When we do name matching there is a related problem with function
10875              templates; two instantiated function templates are allowed to
10876              differ only by their return types, which we do not add here.  */
10877
10878           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10879             {
10880               struct attribute *attr;
10881               struct die_info *child;
10882               int first = 1;
10883
10884               die->building_fullname = 1;
10885
10886               for (child = die->child; child != NULL; child = child->sibling)
10887                 {
10888                   struct type *type;
10889                   LONGEST value;
10890                   const gdb_byte *bytes;
10891                   struct dwarf2_locexpr_baton *baton;
10892                   struct value *v;
10893
10894                   if (child->tag != DW_TAG_template_type_param
10895                       && child->tag != DW_TAG_template_value_param)
10896                     continue;
10897
10898                   if (first)
10899                     {
10900                       buf.puts ("<");
10901                       first = 0;
10902                     }
10903                   else
10904                     buf.puts (", ");
10905
10906                   attr = dwarf2_attr (child, DW_AT_type, cu);
10907                   if (attr == NULL)
10908                     {
10909                       complaint (_("template parameter missing DW_AT_type"));
10910                       buf.puts ("UNKNOWN_TYPE");
10911                       continue;
10912                     }
10913                   type = die_type (child, cu);
10914
10915                   if (child->tag == DW_TAG_template_type_param)
10916                     {
10917                       c_print_type (type, "", &buf, -1, 0, cu->language,
10918                                     &type_print_raw_options);
10919                       continue;
10920                     }
10921
10922                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10923                   if (attr == NULL)
10924                     {
10925                       complaint (_("template parameter missing "
10926                                    "DW_AT_const_value"));
10927                       buf.puts ("UNKNOWN_VALUE");
10928                       continue;
10929                     }
10930
10931                   dwarf2_const_value_attr (attr, type, name,
10932                                            &cu->comp_unit_obstack, cu,
10933                                            &value, &bytes, &baton);
10934
10935                   if (TYPE_NOSIGN (type))
10936                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10937                        changed, this can use value_print instead.  */
10938                     c_printchar (value, type, &buf);
10939                   else
10940                     {
10941                       struct value_print_options opts;
10942
10943                       if (baton != NULL)
10944                         v = dwarf2_evaluate_loc_desc (type, NULL,
10945                                                       baton->data,
10946                                                       baton->size,
10947                                                       baton->per_cu);
10948                       else if (bytes != NULL)
10949                         {
10950                           v = allocate_value (type);
10951                           memcpy (value_contents_writeable (v), bytes,
10952                                   TYPE_LENGTH (type));
10953                         }
10954                       else
10955                         v = value_from_longest (type, value);
10956
10957                       /* Specify decimal so that we do not depend on
10958                          the radix.  */
10959                       get_formatted_print_options (&opts, 'd');
10960                       opts.raw = 1;
10961                       value_print (v, &buf, &opts);
10962                       release_value (v);
10963                     }
10964                 }
10965
10966               die->building_fullname = 0;
10967
10968               if (!first)
10969                 {
10970                   /* Close the argument list, with a space if necessary
10971                      (nested templates).  */
10972                   if (!buf.empty () && buf.string ().back () == '>')
10973                     buf.puts (" >");
10974                   else
10975                     buf.puts (">");
10976                 }
10977             }
10978
10979           /* For C++ methods, append formal parameter type
10980              information, if PHYSNAME.  */
10981
10982           if (physname && die->tag == DW_TAG_subprogram
10983               && cu->language == language_cplus)
10984             {
10985               struct type *type = read_type_die (die, cu);
10986
10987               c_type_print_args (type, &buf, 1, cu->language,
10988                                  &type_print_raw_options);
10989
10990               if (cu->language == language_cplus)
10991                 {
10992                   /* Assume that an artificial first parameter is
10993                      "this", but do not crash if it is not.  RealView
10994                      marks unnamed (and thus unused) parameters as
10995                      artificial; there is no way to differentiate
10996                      the two cases.  */
10997                   if (TYPE_NFIELDS (type) > 0
10998                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10999                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
11000                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
11001                                                                         0))))
11002                     buf.puts (" const");
11003                 }
11004             }
11005
11006           const std::string &intermediate_name = buf.string ();
11007
11008           if (cu->language == language_cplus)
11009             canonical_name
11010               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11011                                           &objfile->per_bfd->storage_obstack);
11012
11013           /* If we only computed INTERMEDIATE_NAME, or if
11014              INTERMEDIATE_NAME is already canonical, then we need to
11015              copy it to the appropriate obstack.  */
11016           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11017             name = ((const char *)
11018                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11019                                    intermediate_name.c_str (),
11020                                    intermediate_name.length ()));
11021           else
11022             name = canonical_name;
11023         }
11024     }
11025
11026   return name;
11027 }
11028
11029 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11030    If scope qualifiers are appropriate they will be added.  The result
11031    will be allocated on the storage_obstack, or NULL if the DIE does
11032    not have a name.  NAME may either be from a previous call to
11033    dwarf2_name or NULL.
11034
11035    The output string will be canonicalized (if C++).  */
11036
11037 static const char *
11038 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11039 {
11040   return dwarf2_compute_name (name, die, cu, 0);
11041 }
11042
11043 /* Construct a physname for the given DIE in CU.  NAME may either be
11044    from a previous call to dwarf2_name or NULL.  The result will be
11045    allocated on the objfile_objstack or NULL if the DIE does not have a
11046    name.
11047
11048    The output string will be canonicalized (if C++).  */
11049
11050 static const char *
11051 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11052 {
11053   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11054   const char *retval, *mangled = NULL, *canon = NULL;
11055   int need_copy = 1;
11056
11057   /* In this case dwarf2_compute_name is just a shortcut not building anything
11058      on its own.  */
11059   if (!die_needs_namespace (die, cu))
11060     return dwarf2_compute_name (name, die, cu, 1);
11061
11062   mangled = dw2_linkage_name (die, cu);
11063
11064   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11065      See https://github.com/rust-lang/rust/issues/32925.  */
11066   if (cu->language == language_rust && mangled != NULL
11067       && strchr (mangled, '{') != NULL)
11068     mangled = NULL;
11069
11070   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11071      has computed.  */
11072   gdb::unique_xmalloc_ptr<char> demangled;
11073   if (mangled != NULL)
11074     {
11075
11076       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11077         {
11078           /* Do nothing (do not demangle the symbol name).  */
11079         }
11080       else if (cu->language == language_go)
11081         {
11082           /* This is a lie, but we already lie to the caller new_symbol.
11083              new_symbol assumes we return the mangled name.
11084              This just undoes that lie until things are cleaned up.  */
11085         }
11086       else
11087         {
11088           /* Use DMGL_RET_DROP for C++ template functions to suppress
11089              their return type.  It is easier for GDB users to search
11090              for such functions as `name(params)' than `long name(params)'.
11091              In such case the minimal symbol names do not match the full
11092              symbol names but for template functions there is never a need
11093              to look up their definition from their declaration so
11094              the only disadvantage remains the minimal symbol variant
11095              `long name(params)' does not have the proper inferior type.  */
11096           demangled.reset (gdb_demangle (mangled,
11097                                          (DMGL_PARAMS | DMGL_ANSI
11098                                           | DMGL_RET_DROP)));
11099         }
11100       if (demangled)
11101         canon = demangled.get ();
11102       else
11103         {
11104           canon = mangled;
11105           need_copy = 0;
11106         }
11107     }
11108
11109   if (canon == NULL || check_physname)
11110     {
11111       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11112
11113       if (canon != NULL && strcmp (physname, canon) != 0)
11114         {
11115           /* It may not mean a bug in GDB.  The compiler could also
11116              compute DW_AT_linkage_name incorrectly.  But in such case
11117              GDB would need to be bug-to-bug compatible.  */
11118
11119           complaint (_("Computed physname <%s> does not match demangled <%s> "
11120                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11121                      physname, canon, mangled, sect_offset_str (die->sect_off),
11122                      objfile_name (objfile));
11123
11124           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11125              is available here - over computed PHYSNAME.  It is safer
11126              against both buggy GDB and buggy compilers.  */
11127
11128           retval = canon;
11129         }
11130       else
11131         {
11132           retval = physname;
11133           need_copy = 0;
11134         }
11135     }
11136   else
11137     retval = canon;
11138
11139   if (need_copy)
11140     retval = ((const char *)
11141               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11142                              retval, strlen (retval)));
11143
11144   return retval;
11145 }
11146
11147 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11148    a new symbol for it.
11149
11150    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11151
11152 static int
11153 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11154 {
11155   struct attribute *attr;
11156
11157   /* If the die does not have a name, this is not a namespace
11158      alias.  */
11159   attr = dwarf2_attr (die, DW_AT_name, cu);
11160   if (attr != NULL)
11161     {
11162       int num;
11163       struct die_info *d = die;
11164       struct dwarf2_cu *imported_cu = cu;
11165
11166       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11167          keep inspecting DIEs until we hit the underlying import.  */
11168 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11169       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11170         {
11171           attr = dwarf2_attr (d, DW_AT_import, cu);
11172           if (attr == NULL)
11173             break;
11174
11175           d = follow_die_ref (d, attr, &imported_cu);
11176           if (d->tag != DW_TAG_imported_declaration)
11177             break;
11178         }
11179
11180       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11181         {
11182           complaint (_("DIE at %s has too many recursively imported "
11183                        "declarations"), sect_offset_str (d->sect_off));
11184           return 0;
11185         }
11186
11187       if (attr != NULL)
11188         {
11189           struct type *type;
11190           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11191
11192           type = get_die_type_at_offset (sect_off, cu->per_cu);
11193           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11194             {
11195               /* This declaration is a global namespace alias.  Add
11196                  a symbol for it whose type is the aliased namespace.  */
11197               new_symbol (die, type, cu);
11198               return 1;
11199             }
11200         }
11201     }
11202
11203   return 0;
11204 }
11205
11206 /* Return the using directives repository (global or local?) to use in the
11207    current context for CU.
11208
11209    For Ada, imported declarations can materialize renamings, which *may* be
11210    global.  However it is impossible (for now?) in DWARF to distinguish
11211    "external" imported declarations and "static" ones.  As all imported
11212    declarations seem to be static in all other languages, make them all CU-wide
11213    global only in Ada.  */
11214
11215 static struct using_direct **
11216 using_directives (struct dwarf2_cu *cu)
11217 {
11218   if (cu->language == language_ada
11219       && cu->get_builder ()->outermost_context_p ())
11220     return cu->get_builder ()->get_global_using_directives ();
11221   else
11222     return cu->get_builder ()->get_local_using_directives ();
11223 }
11224
11225 /* Read the import statement specified by the given die and record it.  */
11226
11227 static void
11228 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11229 {
11230   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11231   struct attribute *import_attr;
11232   struct die_info *imported_die, *child_die;
11233   struct dwarf2_cu *imported_cu;
11234   const char *imported_name;
11235   const char *imported_name_prefix;
11236   const char *canonical_name;
11237   const char *import_alias;
11238   const char *imported_declaration = NULL;
11239   const char *import_prefix;
11240   std::vector<const char *> excludes;
11241
11242   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11243   if (import_attr == NULL)
11244     {
11245       complaint (_("Tag '%s' has no DW_AT_import"),
11246                  dwarf_tag_name (die->tag));
11247       return;
11248     }
11249
11250   imported_cu = cu;
11251   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11252   imported_name = dwarf2_name (imported_die, imported_cu);
11253   if (imported_name == NULL)
11254     {
11255       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11256
11257         The import in the following code:
11258         namespace A
11259           {
11260             typedef int B;
11261           }
11262
11263         int main ()
11264           {
11265             using A::B;
11266             B b;
11267             return b;
11268           }
11269
11270         ...
11271          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11272             <52>   DW_AT_decl_file   : 1
11273             <53>   DW_AT_decl_line   : 6
11274             <54>   DW_AT_import      : <0x75>
11275          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11276             <59>   DW_AT_name        : B
11277             <5b>   DW_AT_decl_file   : 1
11278             <5c>   DW_AT_decl_line   : 2
11279             <5d>   DW_AT_type        : <0x6e>
11280         ...
11281          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11282             <76>   DW_AT_byte_size   : 4
11283             <77>   DW_AT_encoding    : 5        (signed)
11284
11285         imports the wrong die ( 0x75 instead of 0x58 ).
11286         This case will be ignored until the gcc bug is fixed.  */
11287       return;
11288     }
11289
11290   /* Figure out the local name after import.  */
11291   import_alias = dwarf2_name (die, cu);
11292
11293   /* Figure out where the statement is being imported to.  */
11294   import_prefix = determine_prefix (die, cu);
11295
11296   /* Figure out what the scope of the imported die is and prepend it
11297      to the name of the imported die.  */
11298   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11299
11300   if (imported_die->tag != DW_TAG_namespace
11301       && imported_die->tag != DW_TAG_module)
11302     {
11303       imported_declaration = imported_name;
11304       canonical_name = imported_name_prefix;
11305     }
11306   else if (strlen (imported_name_prefix) > 0)
11307     canonical_name = obconcat (&objfile->objfile_obstack,
11308                                imported_name_prefix,
11309                                (cu->language == language_d ? "." : "::"),
11310                                imported_name, (char *) NULL);
11311   else
11312     canonical_name = imported_name;
11313
11314   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11315     for (child_die = die->child; child_die && child_die->tag;
11316          child_die = sibling_die (child_die))
11317       {
11318         /* DWARF-4: A Fortran use statement with a “rename list” may be
11319            represented by an imported module entry with an import attribute
11320            referring to the module and owned entries corresponding to those
11321            entities that are renamed as part of being imported.  */
11322
11323         if (child_die->tag != DW_TAG_imported_declaration)
11324           {
11325             complaint (_("child DW_TAG_imported_declaration expected "
11326                          "- DIE at %s [in module %s]"),
11327                        sect_offset_str (child_die->sect_off),
11328                        objfile_name (objfile));
11329             continue;
11330           }
11331
11332         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11333         if (import_attr == NULL)
11334           {
11335             complaint (_("Tag '%s' has no DW_AT_import"),
11336                        dwarf_tag_name (child_die->tag));
11337             continue;
11338           }
11339
11340         imported_cu = cu;
11341         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11342                                               &imported_cu);
11343         imported_name = dwarf2_name (imported_die, imported_cu);
11344         if (imported_name == NULL)
11345           {
11346             complaint (_("child DW_TAG_imported_declaration has unknown "
11347                          "imported name - DIE at %s [in module %s]"),
11348                        sect_offset_str (child_die->sect_off),
11349                        objfile_name (objfile));
11350             continue;
11351           }
11352
11353         excludes.push_back (imported_name);
11354
11355         process_die (child_die, cu);
11356       }
11357
11358   add_using_directive (using_directives (cu),
11359                        import_prefix,
11360                        canonical_name,
11361                        import_alias,
11362                        imported_declaration,
11363                        excludes,
11364                        0,
11365                        &objfile->objfile_obstack);
11366 }
11367
11368 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11369    types, but gives them a size of zero.  Starting with version 14,
11370    ICC is compatible with GCC.  */
11371
11372 static bool
11373 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11374 {
11375   if (!cu->checked_producer)
11376     check_producer (cu);
11377
11378   return cu->producer_is_icc_lt_14;
11379 }
11380
11381 /* ICC generates a DW_AT_type for C void functions.  This was observed on
11382    ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11383    which says that void functions should not have a DW_AT_type.  */
11384
11385 static bool
11386 producer_is_icc (struct dwarf2_cu *cu)
11387 {
11388   if (!cu->checked_producer)
11389     check_producer (cu);
11390
11391   return cu->producer_is_icc;
11392 }
11393
11394 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11395    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11396    this, it was first present in GCC release 4.3.0.  */
11397
11398 static bool
11399 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11400 {
11401   if (!cu->checked_producer)
11402     check_producer (cu);
11403
11404   return cu->producer_is_gcc_lt_4_3;
11405 }
11406
11407 static file_and_directory
11408 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11409 {
11410   file_and_directory res;
11411
11412   /* Find the filename.  Do not use dwarf2_name here, since the filename
11413      is not a source language identifier.  */
11414   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11415   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11416
11417   if (res.comp_dir == NULL
11418       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11419       && IS_ABSOLUTE_PATH (res.name))
11420     {
11421       res.comp_dir_storage = ldirname (res.name);
11422       if (!res.comp_dir_storage.empty ())
11423         res.comp_dir = res.comp_dir_storage.c_str ();
11424     }
11425   if (res.comp_dir != NULL)
11426     {
11427       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11428          directory, get rid of it.  */
11429       const char *cp = strchr (res.comp_dir, ':');
11430
11431       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11432         res.comp_dir = cp + 1;
11433     }
11434
11435   if (res.name == NULL)
11436     res.name = "<unknown>";
11437
11438   return res;
11439 }
11440
11441 /* Handle DW_AT_stmt_list for a compilation unit.
11442    DIE is the DW_TAG_compile_unit die for CU.
11443    COMP_DIR is the compilation directory.  LOWPC is passed to
11444    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11445
11446 static void
11447 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11448                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11449 {
11450   struct dwarf2_per_objfile *dwarf2_per_objfile
11451     = cu->per_cu->dwarf2_per_objfile;
11452   struct objfile *objfile = dwarf2_per_objfile->objfile;
11453   struct attribute *attr;
11454   struct line_header line_header_local;
11455   hashval_t line_header_local_hash;
11456   void **slot;
11457   int decode_mapping;
11458
11459   gdb_assert (! cu->per_cu->is_debug_types);
11460
11461   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11462   if (attr == NULL)
11463     return;
11464
11465   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11466
11467   /* The line header hash table is only created if needed (it exists to
11468      prevent redundant reading of the line table for partial_units).
11469      If we're given a partial_unit, we'll need it.  If we're given a
11470      compile_unit, then use the line header hash table if it's already
11471      created, but don't create one just yet.  */
11472
11473   if (dwarf2_per_objfile->line_header_hash == NULL
11474       && die->tag == DW_TAG_partial_unit)
11475     {
11476       dwarf2_per_objfile->line_header_hash
11477         = htab_create_alloc_ex (127, line_header_hash_voidp,
11478                                 line_header_eq_voidp,
11479                                 free_line_header_voidp,
11480                                 &objfile->objfile_obstack,
11481                                 hashtab_obstack_allocate,
11482                                 dummy_obstack_deallocate);
11483     }
11484
11485   line_header_local.sect_off = line_offset;
11486   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11487   line_header_local_hash = line_header_hash (&line_header_local);
11488   if (dwarf2_per_objfile->line_header_hash != NULL)
11489     {
11490       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11491                                        &line_header_local,
11492                                        line_header_local_hash, NO_INSERT);
11493
11494       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11495          is not present in *SLOT (since if there is something in *SLOT then
11496          it will be for a partial_unit).  */
11497       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11498         {
11499           gdb_assert (*slot != NULL);
11500           cu->line_header = (struct line_header *) *slot;
11501           return;
11502         }
11503     }
11504
11505   /* dwarf_decode_line_header does not yet provide sufficient information.
11506      We always have to call also dwarf_decode_lines for it.  */
11507   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11508   if (lh == NULL)
11509     return;
11510
11511   cu->line_header = lh.release ();
11512   cu->line_header_die_owner = die;
11513
11514   if (dwarf2_per_objfile->line_header_hash == NULL)
11515     slot = NULL;
11516   else
11517     {
11518       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11519                                        &line_header_local,
11520                                        line_header_local_hash, INSERT);
11521       gdb_assert (slot != NULL);
11522     }
11523   if (slot != NULL && *slot == NULL)
11524     {
11525       /* This newly decoded line number information unit will be owned
11526          by line_header_hash hash table.  */
11527       *slot = cu->line_header;
11528       cu->line_header_die_owner = NULL;
11529     }
11530   else
11531     {
11532       /* We cannot free any current entry in (*slot) as that struct line_header
11533          may be already used by multiple CUs.  Create only temporary decoded
11534          line_header for this CU - it may happen at most once for each line
11535          number information unit.  And if we're not using line_header_hash
11536          then this is what we want as well.  */
11537       gdb_assert (die->tag != DW_TAG_partial_unit);
11538     }
11539   decode_mapping = (die->tag != DW_TAG_partial_unit);
11540   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11541                       decode_mapping);
11542
11543 }
11544
11545 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11546
11547 static void
11548 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11549 {
11550   struct dwarf2_per_objfile *dwarf2_per_objfile
11551     = cu->per_cu->dwarf2_per_objfile;
11552   struct objfile *objfile = dwarf2_per_objfile->objfile;
11553   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11554   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11555   CORE_ADDR highpc = ((CORE_ADDR) 0);
11556   struct attribute *attr;
11557   struct die_info *child_die;
11558   CORE_ADDR baseaddr;
11559
11560   prepare_one_comp_unit (cu, die, cu->language);
11561   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11562
11563   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11564
11565   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11566      from finish_block.  */
11567   if (lowpc == ((CORE_ADDR) -1))
11568     lowpc = highpc;
11569   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11570
11571   file_and_directory fnd = find_file_and_directory (die, cu);
11572
11573   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11574      standardised yet.  As a workaround for the language detection we fall
11575      back to the DW_AT_producer string.  */
11576   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11577     cu->language = language_opencl;
11578
11579   /* Similar hack for Go.  */
11580   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11581     set_cu_language (DW_LANG_Go, cu);
11582
11583   cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11584
11585   /* Decode line number information if present.  We do this before
11586      processing child DIEs, so that the line header table is available
11587      for DW_AT_decl_file.  */
11588   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11589
11590   /* Process all dies in compilation unit.  */
11591   if (die->child != NULL)
11592     {
11593       child_die = die->child;
11594       while (child_die && child_die->tag)
11595         {
11596           process_die (child_die, cu);
11597           child_die = sibling_die (child_die);
11598         }
11599     }
11600
11601   /* Decode macro information, if present.  Dwarf 2 macro information
11602      refers to information in the line number info statement program
11603      header, so we can only read it if we've read the header
11604      successfully.  */
11605   attr = dwarf2_attr (die, DW_AT_macros, cu);
11606   if (attr == NULL)
11607     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11608   if (attr && cu->line_header)
11609     {
11610       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11611         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11612
11613       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11614     }
11615   else
11616     {
11617       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11618       if (attr && cu->line_header)
11619         {
11620           unsigned int macro_offset = DW_UNSND (attr);
11621
11622           dwarf_decode_macros (cu, macro_offset, 0);
11623         }
11624     }
11625 }
11626
11627 void
11628 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11629 {
11630   struct type_unit_group *tu_group;
11631   int first_time;
11632   struct attribute *attr;
11633   unsigned int i;
11634   struct signatured_type *sig_type;
11635
11636   gdb_assert (per_cu->is_debug_types);
11637   sig_type = (struct signatured_type *) per_cu;
11638
11639   attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11640
11641   /* If we're using .gdb_index (includes -readnow) then
11642      per_cu->type_unit_group may not have been set up yet.  */
11643   if (sig_type->type_unit_group == NULL)
11644     sig_type->type_unit_group = get_type_unit_group (this, attr);
11645   tu_group = sig_type->type_unit_group;
11646
11647   /* If we've already processed this stmt_list there's no real need to
11648      do it again, we could fake it and just recreate the part we need
11649      (file name,index -> symtab mapping).  If data shows this optimization
11650      is useful we can do it then.  */
11651   first_time = tu_group->compunit_symtab == NULL;
11652
11653   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11654      debug info.  */
11655   line_header_up lh;
11656   if (attr != NULL)
11657     {
11658       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11659       lh = dwarf_decode_line_header (line_offset, this);
11660     }
11661   if (lh == NULL)
11662     {
11663       if (first_time)
11664         start_symtab ("", NULL, 0);
11665       else
11666         {
11667           gdb_assert (tu_group->symtabs == NULL);
11668           gdb_assert (m_builder == nullptr);
11669           struct compunit_symtab *cust = tu_group->compunit_symtab;
11670           m_builder.reset (new struct buildsym_compunit
11671                            (COMPUNIT_OBJFILE (cust), "",
11672                             COMPUNIT_DIRNAME (cust),
11673                             compunit_language (cust),
11674                             0, cust));
11675         }
11676       return;
11677     }
11678
11679   line_header = lh.release ();
11680   line_header_die_owner = die;
11681
11682   if (first_time)
11683     {
11684       struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11685
11686       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11687          still initializing it, and our caller (a few levels up)
11688          process_full_type_unit still needs to know if this is the first
11689          time.  */
11690
11691       tu_group->num_symtabs = line_header->file_names.size ();
11692       tu_group->symtabs = XNEWVEC (struct symtab *,
11693                                    line_header->file_names.size ());
11694
11695       for (i = 0; i < line_header->file_names.size (); ++i)
11696         {
11697           file_entry &fe = line_header->file_names[i];
11698
11699           dwarf2_start_subfile (this, fe.name,
11700                                 fe.include_dir (line_header));
11701           buildsym_compunit *b = get_builder ();
11702           if (b->get_current_subfile ()->symtab == NULL)
11703             {
11704               /* NOTE: start_subfile will recognize when it's been
11705                  passed a file it has already seen.  So we can't
11706                  assume there's a simple mapping from
11707                  cu->line_header->file_names to subfiles, plus
11708                  cu->line_header->file_names may contain dups.  */
11709               b->get_current_subfile ()->symtab
11710                 = allocate_symtab (cust, b->get_current_subfile ()->name);
11711             }
11712
11713           fe.symtab = b->get_current_subfile ()->symtab;
11714           tu_group->symtabs[i] = fe.symtab;
11715         }
11716     }
11717   else
11718     {
11719       gdb_assert (m_builder == nullptr);
11720       struct compunit_symtab *cust = tu_group->compunit_symtab;
11721       m_builder.reset (new struct buildsym_compunit
11722                        (COMPUNIT_OBJFILE (cust), "",
11723                         COMPUNIT_DIRNAME (cust),
11724                         compunit_language (cust),
11725                         0, cust));
11726
11727       for (i = 0; i < line_header->file_names.size (); ++i)
11728         {
11729           file_entry &fe = line_header->file_names[i];
11730
11731           fe.symtab = tu_group->symtabs[i];
11732         }
11733     }
11734
11735   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11736      so they don't have a "real" (so to speak) symtab anyway.
11737      There is later code that will assign the main symtab to all symbols
11738      that don't have one.  We need to handle the case of a symbol with a
11739      missing symtab (DW_AT_decl_file) anyway.  */
11740 }
11741
11742 /* Process DW_TAG_type_unit.
11743    For TUs we want to skip the first top level sibling if it's not the
11744    actual type being defined by this TU.  In this case the first top
11745    level sibling is there to provide context only.  */
11746
11747 static void
11748 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11749 {
11750   struct die_info *child_die;
11751
11752   prepare_one_comp_unit (cu, die, language_minimal);
11753
11754   /* Initialize (or reinitialize) the machinery for building symtabs.
11755      We do this before processing child DIEs, so that the line header table
11756      is available for DW_AT_decl_file.  */
11757   cu->setup_type_unit_groups (die);
11758
11759   if (die->child != NULL)
11760     {
11761       child_die = die->child;
11762       while (child_die && child_die->tag)
11763         {
11764           process_die (child_die, cu);
11765           child_die = sibling_die (child_die);
11766         }
11767     }
11768 }
11769 \f
11770 /* DWO/DWP files.
11771
11772    http://gcc.gnu.org/wiki/DebugFission
11773    http://gcc.gnu.org/wiki/DebugFissionDWP
11774
11775    To simplify handling of both DWO files ("object" files with the DWARF info)
11776    and DWP files (a file with the DWOs packaged up into one file), we treat
11777    DWP files as having a collection of virtual DWO files.  */
11778
11779 static hashval_t
11780 hash_dwo_file (const void *item)
11781 {
11782   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11783   hashval_t hash;
11784
11785   hash = htab_hash_string (dwo_file->dwo_name);
11786   if (dwo_file->comp_dir != NULL)
11787     hash += htab_hash_string (dwo_file->comp_dir);
11788   return hash;
11789 }
11790
11791 static int
11792 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11793 {
11794   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11795   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11796
11797   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11798     return 0;
11799   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11800     return lhs->comp_dir == rhs->comp_dir;
11801   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11802 }
11803
11804 /* Allocate a hash table for DWO files.  */
11805
11806 static htab_t
11807 allocate_dwo_file_hash_table (struct objfile *objfile)
11808 {
11809   return htab_create_alloc_ex (41,
11810                                hash_dwo_file,
11811                                eq_dwo_file,
11812                                NULL,
11813                                &objfile->objfile_obstack,
11814                                hashtab_obstack_allocate,
11815                                dummy_obstack_deallocate);
11816 }
11817
11818 /* Lookup DWO file DWO_NAME.  */
11819
11820 static void **
11821 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11822                       const char *dwo_name,
11823                       const char *comp_dir)
11824 {
11825   struct dwo_file find_entry;
11826   void **slot;
11827
11828   if (dwarf2_per_objfile->dwo_files == NULL)
11829     dwarf2_per_objfile->dwo_files
11830       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11831
11832   memset (&find_entry, 0, sizeof (find_entry));
11833   find_entry.dwo_name = dwo_name;
11834   find_entry.comp_dir = comp_dir;
11835   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11836
11837   return slot;
11838 }
11839
11840 static hashval_t
11841 hash_dwo_unit (const void *item)
11842 {
11843   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11844
11845   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11846   return dwo_unit->signature;
11847 }
11848
11849 static int
11850 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11851 {
11852   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11853   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11854
11855   /* The signature is assumed to be unique within the DWO file.
11856      So while object file CU dwo_id's always have the value zero,
11857      that's OK, assuming each object file DWO file has only one CU,
11858      and that's the rule for now.  */
11859   return lhs->signature == rhs->signature;
11860 }
11861
11862 /* Allocate a hash table for DWO CUs,TUs.
11863    There is one of these tables for each of CUs,TUs for each DWO file.  */
11864
11865 static htab_t
11866 allocate_dwo_unit_table (struct objfile *objfile)
11867 {
11868   /* Start out with a pretty small number.
11869      Generally DWO files contain only one CU and maybe some TUs.  */
11870   return htab_create_alloc_ex (3,
11871                                hash_dwo_unit,
11872                                eq_dwo_unit,
11873                                NULL,
11874                                &objfile->objfile_obstack,
11875                                hashtab_obstack_allocate,
11876                                dummy_obstack_deallocate);
11877 }
11878
11879 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11880
11881 struct create_dwo_cu_data
11882 {
11883   struct dwo_file *dwo_file;
11884   struct dwo_unit dwo_unit;
11885 };
11886
11887 /* die_reader_func for create_dwo_cu.  */
11888
11889 static void
11890 create_dwo_cu_reader (const struct die_reader_specs *reader,
11891                       const gdb_byte *info_ptr,
11892                       struct die_info *comp_unit_die,
11893                       int has_children,
11894                       void *datap)
11895 {
11896   struct dwarf2_cu *cu = reader->cu;
11897   sect_offset sect_off = cu->per_cu->sect_off;
11898   struct dwarf2_section_info *section = cu->per_cu->section;
11899   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11900   struct dwo_file *dwo_file = data->dwo_file;
11901   struct dwo_unit *dwo_unit = &data->dwo_unit;
11902   struct attribute *attr;
11903
11904   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11905   if (attr == NULL)
11906     {
11907       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11908                    " its dwo_id [in module %s]"),
11909                  sect_offset_str (sect_off), dwo_file->dwo_name);
11910       return;
11911     }
11912
11913   dwo_unit->dwo_file = dwo_file;
11914   dwo_unit->signature = DW_UNSND (attr);
11915   dwo_unit->section = section;
11916   dwo_unit->sect_off = sect_off;
11917   dwo_unit->length = cu->per_cu->length;
11918
11919   if (dwarf_read_debug)
11920     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11921                         sect_offset_str (sect_off),
11922                         hex_string (dwo_unit->signature));
11923 }
11924
11925 /* Create the dwo_units for the CUs in a DWO_FILE.
11926    Note: This function processes DWO files only, not DWP files.  */
11927
11928 static void
11929 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11930                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11931                        htab_t &cus_htab)
11932 {
11933   struct objfile *objfile = dwarf2_per_objfile->objfile;
11934   const gdb_byte *info_ptr, *end_ptr;
11935
11936   dwarf2_read_section (objfile, &section);
11937   info_ptr = section.buffer;
11938
11939   if (info_ptr == NULL)
11940     return;
11941
11942   if (dwarf_read_debug)
11943     {
11944       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11945                           get_section_name (&section),
11946                           get_section_file_name (&section));
11947     }
11948
11949   end_ptr = info_ptr + section.size;
11950   while (info_ptr < end_ptr)
11951     {
11952       struct dwarf2_per_cu_data per_cu;
11953       struct create_dwo_cu_data create_dwo_cu_data;
11954       struct dwo_unit *dwo_unit;
11955       void **slot;
11956       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11957
11958       memset (&create_dwo_cu_data.dwo_unit, 0,
11959               sizeof (create_dwo_cu_data.dwo_unit));
11960       memset (&per_cu, 0, sizeof (per_cu));
11961       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11962       per_cu.is_debug_types = 0;
11963       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11964       per_cu.section = &section;
11965       create_dwo_cu_data.dwo_file = &dwo_file;
11966
11967       init_cutu_and_read_dies_no_follow (
11968           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11969       info_ptr += per_cu.length;
11970
11971       // If the unit could not be parsed, skip it.
11972       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11973         continue;
11974
11975       if (cus_htab == NULL)
11976         cus_htab = allocate_dwo_unit_table (objfile);
11977
11978       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11979       *dwo_unit = create_dwo_cu_data.dwo_unit;
11980       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11981       gdb_assert (slot != NULL);
11982       if (*slot != NULL)
11983         {
11984           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11985           sect_offset dup_sect_off = dup_cu->sect_off;
11986
11987           complaint (_("debug cu entry at offset %s is duplicate to"
11988                        " the entry at offset %s, signature %s"),
11989                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11990                      hex_string (dwo_unit->signature));
11991         }
11992       *slot = (void *)dwo_unit;
11993     }
11994 }
11995
11996 /* DWP file .debug_{cu,tu}_index section format:
11997    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11998
11999    DWP Version 1:
12000
12001    Both index sections have the same format, and serve to map a 64-bit
12002    signature to a set of section numbers.  Each section begins with a header,
12003    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
12004    indexes, and a pool of 32-bit section numbers.  The index sections will be
12005    aligned at 8-byte boundaries in the file.
12006
12007    The index section header consists of:
12008
12009     V, 32 bit version number
12010     -, 32 bits unused
12011     N, 32 bit number of compilation units or type units in the index
12012     M, 32 bit number of slots in the hash table
12013
12014    Numbers are recorded using the byte order of the application binary.
12015
12016    The hash table begins at offset 16 in the section, and consists of an array
12017    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12018    order of the application binary).  Unused slots in the hash table are 0.
12019    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12020
12021    The parallel table begins immediately after the hash table
12022    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12023    array of 32-bit indexes (using the byte order of the application binary),
12024    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12025    table contains a 32-bit index into the pool of section numbers.  For unused
12026    hash table slots, the corresponding entry in the parallel table will be 0.
12027
12028    The pool of section numbers begins immediately following the hash table
12029    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12030    section numbers consists of an array of 32-bit words (using the byte order
12031    of the application binary).  Each item in the array is indexed starting
12032    from 0.  The hash table entry provides the index of the first section
12033    number in the set.  Additional section numbers in the set follow, and the
12034    set is terminated by a 0 entry (section number 0 is not used in ELF).
12035
12036    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12037    section must be the first entry in the set, and the .debug_abbrev.dwo must
12038    be the second entry. Other members of the set may follow in any order.
12039
12040    ---
12041
12042    DWP Version 2:
12043
12044    DWP Version 2 combines all the .debug_info, etc. sections into one,
12045    and the entries in the index tables are now offsets into these sections.
12046    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12047    section.
12048
12049    Index Section Contents:
12050     Header
12051     Hash Table of Signatures   dwp_hash_table.hash_table
12052     Parallel Table of Indices  dwp_hash_table.unit_table
12053     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12054     Table of Section Sizes     dwp_hash_table.v2.sizes
12055
12056    The index section header consists of:
12057
12058     V, 32 bit version number
12059     L, 32 bit number of columns in the table of section offsets
12060     N, 32 bit number of compilation units or type units in the index
12061     M, 32 bit number of slots in the hash table
12062
12063    Numbers are recorded using the byte order of the application binary.
12064
12065    The hash table has the same format as version 1.
12066    The parallel table of indices has the same format as version 1,
12067    except that the entries are origin-1 indices into the table of sections
12068    offsets and the table of section sizes.
12069
12070    The table of offsets begins immediately following the parallel table
12071    (at offset 16 + 12 * M from the beginning of the section).  The table is
12072    a two-dimensional array of 32-bit words (using the byte order of the
12073    application binary), with L columns and N+1 rows, in row-major order.
12074    Each row in the array is indexed starting from 0.  The first row provides
12075    a key to the remaining rows: each column in this row provides an identifier
12076    for a debug section, and the offsets in the same column of subsequent rows
12077    refer to that section.  The section identifiers are:
12078
12079     DW_SECT_INFO         1  .debug_info.dwo
12080     DW_SECT_TYPES        2  .debug_types.dwo
12081     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12082     DW_SECT_LINE         4  .debug_line.dwo
12083     DW_SECT_LOC          5  .debug_loc.dwo
12084     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12085     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12086     DW_SECT_MACRO        8  .debug_macro.dwo
12087
12088    The offsets provided by the CU and TU index sections are the base offsets
12089    for the contributions made by each CU or TU to the corresponding section
12090    in the package file.  Each CU and TU header contains an abbrev_offset
12091    field, used to find the abbreviations table for that CU or TU within the
12092    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12093    be interpreted as relative to the base offset given in the index section.
12094    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12095    should be interpreted as relative to the base offset for .debug_line.dwo,
12096    and offsets into other debug sections obtained from DWARF attributes should
12097    also be interpreted as relative to the corresponding base offset.
12098
12099    The table of sizes begins immediately following the table of offsets.
12100    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12101    with L columns and N rows, in row-major order.  Each row in the array is
12102    indexed starting from 1 (row 0 is shared by the two tables).
12103
12104    ---
12105
12106    Hash table lookup is handled the same in version 1 and 2:
12107
12108    We assume that N and M will not exceed 2^32 - 1.
12109    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12110
12111    Given a 64-bit compilation unit signature or a type signature S, an entry
12112    in the hash table is located as follows:
12113
12114    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12115       the low-order k bits all set to 1.
12116
12117    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12118
12119    3) If the hash table entry at index H matches the signature, use that
12120       entry.  If the hash table entry at index H is unused (all zeroes),
12121       terminate the search: the signature is not present in the table.
12122
12123    4) Let H = (H + H') modulo M. Repeat at Step 3.
12124
12125    Because M > N and H' and M are relatively prime, the search is guaranteed
12126    to stop at an unused slot or find the match.  */
12127
12128 /* Create a hash table to map DWO IDs to their CU/TU entry in
12129    .debug_{info,types}.dwo in DWP_FILE.
12130    Returns NULL if there isn't one.
12131    Note: This function processes DWP files only, not DWO files.  */
12132
12133 static struct dwp_hash_table *
12134 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12135                        struct dwp_file *dwp_file, int is_debug_types)
12136 {
12137   struct objfile *objfile = dwarf2_per_objfile->objfile;
12138   bfd *dbfd = dwp_file->dbfd.get ();
12139   const gdb_byte *index_ptr, *index_end;
12140   struct dwarf2_section_info *index;
12141   uint32_t version, nr_columns, nr_units, nr_slots;
12142   struct dwp_hash_table *htab;
12143
12144   if (is_debug_types)
12145     index = &dwp_file->sections.tu_index;
12146   else
12147     index = &dwp_file->sections.cu_index;
12148
12149   if (dwarf2_section_empty_p (index))
12150     return NULL;
12151   dwarf2_read_section (objfile, index);
12152
12153   index_ptr = index->buffer;
12154   index_end = index_ptr + index->size;
12155
12156   version = read_4_bytes (dbfd, index_ptr);
12157   index_ptr += 4;
12158   if (version == 2)
12159     nr_columns = read_4_bytes (dbfd, index_ptr);
12160   else
12161     nr_columns = 0;
12162   index_ptr += 4;
12163   nr_units = read_4_bytes (dbfd, index_ptr);
12164   index_ptr += 4;
12165   nr_slots = read_4_bytes (dbfd, index_ptr);
12166   index_ptr += 4;
12167
12168   if (version != 1 && version != 2)
12169     {
12170       error (_("Dwarf Error: unsupported DWP file version (%s)"
12171                " [in module %s]"),
12172              pulongest (version), dwp_file->name);
12173     }
12174   if (nr_slots != (nr_slots & -nr_slots))
12175     {
12176       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12177                " is not power of 2 [in module %s]"),
12178              pulongest (nr_slots), dwp_file->name);
12179     }
12180
12181   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12182   htab->version = version;
12183   htab->nr_columns = nr_columns;
12184   htab->nr_units = nr_units;
12185   htab->nr_slots = nr_slots;
12186   htab->hash_table = index_ptr;
12187   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12188
12189   /* Exit early if the table is empty.  */
12190   if (nr_slots == 0 || nr_units == 0
12191       || (version == 2 && nr_columns == 0))
12192     {
12193       /* All must be zero.  */
12194       if (nr_slots != 0 || nr_units != 0
12195           || (version == 2 && nr_columns != 0))
12196         {
12197           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12198                        " all zero [in modules %s]"),
12199                      dwp_file->name);
12200         }
12201       return htab;
12202     }
12203
12204   if (version == 1)
12205     {
12206       htab->section_pool.v1.indices =
12207         htab->unit_table + sizeof (uint32_t) * nr_slots;
12208       /* It's harder to decide whether the section is too small in v1.
12209          V1 is deprecated anyway so we punt.  */
12210     }
12211   else
12212     {
12213       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12214       int *ids = htab->section_pool.v2.section_ids;
12215       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12216       /* Reverse map for error checking.  */
12217       int ids_seen[DW_SECT_MAX + 1];
12218       int i;
12219
12220       if (nr_columns < 2)
12221         {
12222           error (_("Dwarf Error: bad DWP hash table, too few columns"
12223                    " in section table [in module %s]"),
12224                  dwp_file->name);
12225         }
12226       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12227         {
12228           error (_("Dwarf Error: bad DWP hash table, too many columns"
12229                    " in section table [in module %s]"),
12230                  dwp_file->name);
12231         }
12232       memset (ids, 255, sizeof_ids);
12233       memset (ids_seen, 255, sizeof (ids_seen));
12234       for (i = 0; i < nr_columns; ++i)
12235         {
12236           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12237
12238           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12239             {
12240               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12241                        " in section table [in module %s]"),
12242                      id, dwp_file->name);
12243             }
12244           if (ids_seen[id] != -1)
12245             {
12246               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12247                        " id %d in section table [in module %s]"),
12248                      id, dwp_file->name);
12249             }
12250           ids_seen[id] = i;
12251           ids[i] = id;
12252         }
12253       /* Must have exactly one info or types section.  */
12254       if (((ids_seen[DW_SECT_INFO] != -1)
12255            + (ids_seen[DW_SECT_TYPES] != -1))
12256           != 1)
12257         {
12258           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12259                    " DWO info/types section [in module %s]"),
12260                  dwp_file->name);
12261         }
12262       /* Must have an abbrev section.  */
12263       if (ids_seen[DW_SECT_ABBREV] == -1)
12264         {
12265           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12266                    " section [in module %s]"),
12267                  dwp_file->name);
12268         }
12269       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12270       htab->section_pool.v2.sizes =
12271         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12272                                          * nr_units * nr_columns);
12273       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12274                                           * nr_units * nr_columns))
12275           > index_end)
12276         {
12277           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12278                    " [in module %s]"),
12279                  dwp_file->name);
12280         }
12281     }
12282
12283   return htab;
12284 }
12285
12286 /* Update SECTIONS with the data from SECTP.
12287
12288    This function is like the other "locate" section routines that are
12289    passed to bfd_map_over_sections, but in this context the sections to
12290    read comes from the DWP V1 hash table, not the full ELF section table.
12291
12292    The result is non-zero for success, or zero if an error was found.  */
12293
12294 static int
12295 locate_v1_virtual_dwo_sections (asection *sectp,
12296                                 struct virtual_v1_dwo_sections *sections)
12297 {
12298   const struct dwop_section_names *names = &dwop_section_names;
12299
12300   if (section_is_p (sectp->name, &names->abbrev_dwo))
12301     {
12302       /* There can be only one.  */
12303       if (sections->abbrev.s.section != NULL)
12304         return 0;
12305       sections->abbrev.s.section = sectp;
12306       sections->abbrev.size = bfd_get_section_size (sectp);
12307     }
12308   else if (section_is_p (sectp->name, &names->info_dwo)
12309            || section_is_p (sectp->name, &names->types_dwo))
12310     {
12311       /* There can be only one.  */
12312       if (sections->info_or_types.s.section != NULL)
12313         return 0;
12314       sections->info_or_types.s.section = sectp;
12315       sections->info_or_types.size = bfd_get_section_size (sectp);
12316     }
12317   else if (section_is_p (sectp->name, &names->line_dwo))
12318     {
12319       /* There can be only one.  */
12320       if (sections->line.s.section != NULL)
12321         return 0;
12322       sections->line.s.section = sectp;
12323       sections->line.size = bfd_get_section_size (sectp);
12324     }
12325   else if (section_is_p (sectp->name, &names->loc_dwo))
12326     {
12327       /* There can be only one.  */
12328       if (sections->loc.s.section != NULL)
12329         return 0;
12330       sections->loc.s.section = sectp;
12331       sections->loc.size = bfd_get_section_size (sectp);
12332     }
12333   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12334     {
12335       /* There can be only one.  */
12336       if (sections->macinfo.s.section != NULL)
12337         return 0;
12338       sections->macinfo.s.section = sectp;
12339       sections->macinfo.size = bfd_get_section_size (sectp);
12340     }
12341   else if (section_is_p (sectp->name, &names->macro_dwo))
12342     {
12343       /* There can be only one.  */
12344       if (sections->macro.s.section != NULL)
12345         return 0;
12346       sections->macro.s.section = sectp;
12347       sections->macro.size = bfd_get_section_size (sectp);
12348     }
12349   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12350     {
12351       /* There can be only one.  */
12352       if (sections->str_offsets.s.section != NULL)
12353         return 0;
12354       sections->str_offsets.s.section = sectp;
12355       sections->str_offsets.size = bfd_get_section_size (sectp);
12356     }
12357   else
12358     {
12359       /* No other kind of section is valid.  */
12360       return 0;
12361     }
12362
12363   return 1;
12364 }
12365
12366 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12367    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12368    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12369    This is for DWP version 1 files.  */
12370
12371 static struct dwo_unit *
12372 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12373                            struct dwp_file *dwp_file,
12374                            uint32_t unit_index,
12375                            const char *comp_dir,
12376                            ULONGEST signature, int is_debug_types)
12377 {
12378   struct objfile *objfile = dwarf2_per_objfile->objfile;
12379   const struct dwp_hash_table *dwp_htab =
12380     is_debug_types ? dwp_file->tus : dwp_file->cus;
12381   bfd *dbfd = dwp_file->dbfd.get ();
12382   const char *kind = is_debug_types ? "TU" : "CU";
12383   struct dwo_file *dwo_file;
12384   struct dwo_unit *dwo_unit;
12385   struct virtual_v1_dwo_sections sections;
12386   void **dwo_file_slot;
12387   int i;
12388
12389   gdb_assert (dwp_file->version == 1);
12390
12391   if (dwarf_read_debug)
12392     {
12393       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12394                           kind,
12395                           pulongest (unit_index), hex_string (signature),
12396                           dwp_file->name);
12397     }
12398
12399   /* Fetch the sections of this DWO unit.
12400      Put a limit on the number of sections we look for so that bad data
12401      doesn't cause us to loop forever.  */
12402
12403 #define MAX_NR_V1_DWO_SECTIONS \
12404   (1 /* .debug_info or .debug_types */ \
12405    + 1 /* .debug_abbrev */ \
12406    + 1 /* .debug_line */ \
12407    + 1 /* .debug_loc */ \
12408    + 1 /* .debug_str_offsets */ \
12409    + 1 /* .debug_macro or .debug_macinfo */ \
12410    + 1 /* trailing zero */)
12411
12412   memset (&sections, 0, sizeof (sections));
12413
12414   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12415     {
12416       asection *sectp;
12417       uint32_t section_nr =
12418         read_4_bytes (dbfd,
12419                       dwp_htab->section_pool.v1.indices
12420                       + (unit_index + i) * sizeof (uint32_t));
12421
12422       if (section_nr == 0)
12423         break;
12424       if (section_nr >= dwp_file->num_sections)
12425         {
12426           error (_("Dwarf Error: bad DWP hash table, section number too large"
12427                    " [in module %s]"),
12428                  dwp_file->name);
12429         }
12430
12431       sectp = dwp_file->elf_sections[section_nr];
12432       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12433         {
12434           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12435                    " [in module %s]"),
12436                  dwp_file->name);
12437         }
12438     }
12439
12440   if (i < 2
12441       || dwarf2_section_empty_p (&sections.info_or_types)
12442       || dwarf2_section_empty_p (&sections.abbrev))
12443     {
12444       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12445                " [in module %s]"),
12446              dwp_file->name);
12447     }
12448   if (i == MAX_NR_V1_DWO_SECTIONS)
12449     {
12450       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12451                " [in module %s]"),
12452              dwp_file->name);
12453     }
12454
12455   /* It's easier for the rest of the code if we fake a struct dwo_file and
12456      have dwo_unit "live" in that.  At least for now.
12457
12458      The DWP file can be made up of a random collection of CUs and TUs.
12459      However, for each CU + set of TUs that came from the same original DWO
12460      file, we can combine them back into a virtual DWO file to save space
12461      (fewer struct dwo_file objects to allocate).  Remember that for really
12462      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12463
12464   std::string virtual_dwo_name =
12465     string_printf ("virtual-dwo/%d-%d-%d-%d",
12466                    get_section_id (&sections.abbrev),
12467                    get_section_id (&sections.line),
12468                    get_section_id (&sections.loc),
12469                    get_section_id (&sections.str_offsets));
12470   /* Can we use an existing virtual DWO file?  */
12471   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12472                                         virtual_dwo_name.c_str (),
12473                                         comp_dir);
12474   /* Create one if necessary.  */
12475   if (*dwo_file_slot == NULL)
12476     {
12477       if (dwarf_read_debug)
12478         {
12479           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12480                               virtual_dwo_name.c_str ());
12481         }
12482       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12483       dwo_file->dwo_name
12484         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12485                                         virtual_dwo_name.c_str (),
12486                                         virtual_dwo_name.size ());
12487       dwo_file->comp_dir = comp_dir;
12488       dwo_file->sections.abbrev = sections.abbrev;
12489       dwo_file->sections.line = sections.line;
12490       dwo_file->sections.loc = sections.loc;
12491       dwo_file->sections.macinfo = sections.macinfo;
12492       dwo_file->sections.macro = sections.macro;
12493       dwo_file->sections.str_offsets = sections.str_offsets;
12494       /* The "str" section is global to the entire DWP file.  */
12495       dwo_file->sections.str = dwp_file->sections.str;
12496       /* The info or types section is assigned below to dwo_unit,
12497          there's no need to record it in dwo_file.
12498          Also, we can't simply record type sections in dwo_file because
12499          we record a pointer into the vector in dwo_unit.  As we collect more
12500          types we'll grow the vector and eventually have to reallocate space
12501          for it, invalidating all copies of pointers into the previous
12502          contents.  */
12503       *dwo_file_slot = dwo_file;
12504     }
12505   else
12506     {
12507       if (dwarf_read_debug)
12508         {
12509           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12510                               virtual_dwo_name.c_str ());
12511         }
12512       dwo_file = (struct dwo_file *) *dwo_file_slot;
12513     }
12514
12515   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12516   dwo_unit->dwo_file = dwo_file;
12517   dwo_unit->signature = signature;
12518   dwo_unit->section =
12519     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12520   *dwo_unit->section = sections.info_or_types;
12521   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12522
12523   return dwo_unit;
12524 }
12525
12526 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12527    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12528    piece within that section used by a TU/CU, return a virtual section
12529    of just that piece.  */
12530
12531 static struct dwarf2_section_info
12532 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12533                        struct dwarf2_section_info *section,
12534                        bfd_size_type offset, bfd_size_type size)
12535 {
12536   struct dwarf2_section_info result;
12537   asection *sectp;
12538
12539   gdb_assert (section != NULL);
12540   gdb_assert (!section->is_virtual);
12541
12542   memset (&result, 0, sizeof (result));
12543   result.s.containing_section = section;
12544   result.is_virtual = 1;
12545
12546   if (size == 0)
12547     return result;
12548
12549   sectp = get_section_bfd_section (section);
12550
12551   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12552      bounds of the real section.  This is a pretty-rare event, so just
12553      flag an error (easier) instead of a warning and trying to cope.  */
12554   if (sectp == NULL
12555       || offset + size > bfd_get_section_size (sectp))
12556     {
12557       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12558                " in section %s [in module %s]"),
12559              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12560              objfile_name (dwarf2_per_objfile->objfile));
12561     }
12562
12563   result.virtual_offset = offset;
12564   result.size = size;
12565   return result;
12566 }
12567
12568 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12569    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12570    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12571    This is for DWP version 2 files.  */
12572
12573 static struct dwo_unit *
12574 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12575                            struct dwp_file *dwp_file,
12576                            uint32_t unit_index,
12577                            const char *comp_dir,
12578                            ULONGEST signature, int is_debug_types)
12579 {
12580   struct objfile *objfile = dwarf2_per_objfile->objfile;
12581   const struct dwp_hash_table *dwp_htab =
12582     is_debug_types ? dwp_file->tus : dwp_file->cus;
12583   bfd *dbfd = dwp_file->dbfd.get ();
12584   const char *kind = is_debug_types ? "TU" : "CU";
12585   struct dwo_file *dwo_file;
12586   struct dwo_unit *dwo_unit;
12587   struct virtual_v2_dwo_sections sections;
12588   void **dwo_file_slot;
12589   int i;
12590
12591   gdb_assert (dwp_file->version == 2);
12592
12593   if (dwarf_read_debug)
12594     {
12595       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12596                           kind,
12597                           pulongest (unit_index), hex_string (signature),
12598                           dwp_file->name);
12599     }
12600
12601   /* Fetch the section offsets of this DWO unit.  */
12602
12603   memset (&sections, 0, sizeof (sections));
12604
12605   for (i = 0; i < dwp_htab->nr_columns; ++i)
12606     {
12607       uint32_t offset = read_4_bytes (dbfd,
12608                                       dwp_htab->section_pool.v2.offsets
12609                                       + (((unit_index - 1) * dwp_htab->nr_columns
12610                                           + i)
12611                                          * sizeof (uint32_t)));
12612       uint32_t size = read_4_bytes (dbfd,
12613                                     dwp_htab->section_pool.v2.sizes
12614                                     + (((unit_index - 1) * dwp_htab->nr_columns
12615                                         + i)
12616                                        * sizeof (uint32_t)));
12617
12618       switch (dwp_htab->section_pool.v2.section_ids[i])
12619         {
12620         case DW_SECT_INFO:
12621         case DW_SECT_TYPES:
12622           sections.info_or_types_offset = offset;
12623           sections.info_or_types_size = size;
12624           break;
12625         case DW_SECT_ABBREV:
12626           sections.abbrev_offset = offset;
12627           sections.abbrev_size = size;
12628           break;
12629         case DW_SECT_LINE:
12630           sections.line_offset = offset;
12631           sections.line_size = size;
12632           break;
12633         case DW_SECT_LOC:
12634           sections.loc_offset = offset;
12635           sections.loc_size = size;
12636           break;
12637         case DW_SECT_STR_OFFSETS:
12638           sections.str_offsets_offset = offset;
12639           sections.str_offsets_size = size;
12640           break;
12641         case DW_SECT_MACINFO:
12642           sections.macinfo_offset = offset;
12643           sections.macinfo_size = size;
12644           break;
12645         case DW_SECT_MACRO:
12646           sections.macro_offset = offset;
12647           sections.macro_size = size;
12648           break;
12649         }
12650     }
12651
12652   /* It's easier for the rest of the code if we fake a struct dwo_file and
12653      have dwo_unit "live" in that.  At least for now.
12654
12655      The DWP file can be made up of a random collection of CUs and TUs.
12656      However, for each CU + set of TUs that came from the same original DWO
12657      file, we can combine them back into a virtual DWO file to save space
12658      (fewer struct dwo_file objects to allocate).  Remember that for really
12659      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12660
12661   std::string virtual_dwo_name =
12662     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12663                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12664                    (long) (sections.line_size ? sections.line_offset : 0),
12665                    (long) (sections.loc_size ? sections.loc_offset : 0),
12666                    (long) (sections.str_offsets_size
12667                            ? sections.str_offsets_offset : 0));
12668   /* Can we use an existing virtual DWO file?  */
12669   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12670                                         virtual_dwo_name.c_str (),
12671                                         comp_dir);
12672   /* Create one if necessary.  */
12673   if (*dwo_file_slot == NULL)
12674     {
12675       if (dwarf_read_debug)
12676         {
12677           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12678                               virtual_dwo_name.c_str ());
12679         }
12680       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12681       dwo_file->dwo_name
12682         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12683                                         virtual_dwo_name.c_str (),
12684                                         virtual_dwo_name.size ());
12685       dwo_file->comp_dir = comp_dir;
12686       dwo_file->sections.abbrev =
12687         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12688                                sections.abbrev_offset, sections.abbrev_size);
12689       dwo_file->sections.line =
12690         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12691                                sections.line_offset, sections.line_size);
12692       dwo_file->sections.loc =
12693         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12694                                sections.loc_offset, sections.loc_size);
12695       dwo_file->sections.macinfo =
12696         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12697                                sections.macinfo_offset, sections.macinfo_size);
12698       dwo_file->sections.macro =
12699         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12700                                sections.macro_offset, sections.macro_size);
12701       dwo_file->sections.str_offsets =
12702         create_dwp_v2_section (dwarf2_per_objfile,
12703                                &dwp_file->sections.str_offsets,
12704                                sections.str_offsets_offset,
12705                                sections.str_offsets_size);
12706       /* The "str" section is global to the entire DWP file.  */
12707       dwo_file->sections.str = dwp_file->sections.str;
12708       /* The info or types section is assigned below to dwo_unit,
12709          there's no need to record it in dwo_file.
12710          Also, we can't simply record type sections in dwo_file because
12711          we record a pointer into the vector in dwo_unit.  As we collect more
12712          types we'll grow the vector and eventually have to reallocate space
12713          for it, invalidating all copies of pointers into the previous
12714          contents.  */
12715       *dwo_file_slot = dwo_file;
12716     }
12717   else
12718     {
12719       if (dwarf_read_debug)
12720         {
12721           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12722                               virtual_dwo_name.c_str ());
12723         }
12724       dwo_file = (struct dwo_file *) *dwo_file_slot;
12725     }
12726
12727   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12728   dwo_unit->dwo_file = dwo_file;
12729   dwo_unit->signature = signature;
12730   dwo_unit->section =
12731     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12732   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12733                                               is_debug_types
12734                                               ? &dwp_file->sections.types
12735                                               : &dwp_file->sections.info,
12736                                               sections.info_or_types_offset,
12737                                               sections.info_or_types_size);
12738   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12739
12740   return dwo_unit;
12741 }
12742
12743 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12744    Returns NULL if the signature isn't found.  */
12745
12746 static struct dwo_unit *
12747 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12748                         struct dwp_file *dwp_file, const char *comp_dir,
12749                         ULONGEST signature, int is_debug_types)
12750 {
12751   const struct dwp_hash_table *dwp_htab =
12752     is_debug_types ? dwp_file->tus : dwp_file->cus;
12753   bfd *dbfd = dwp_file->dbfd.get ();
12754   uint32_t mask = dwp_htab->nr_slots - 1;
12755   uint32_t hash = signature & mask;
12756   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12757   unsigned int i;
12758   void **slot;
12759   struct dwo_unit find_dwo_cu;
12760
12761   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12762   find_dwo_cu.signature = signature;
12763   slot = htab_find_slot (is_debug_types
12764                          ? dwp_file->loaded_tus
12765                          : dwp_file->loaded_cus,
12766                          &find_dwo_cu, INSERT);
12767
12768   if (*slot != NULL)
12769     return (struct dwo_unit *) *slot;
12770
12771   /* Use a for loop so that we don't loop forever on bad debug info.  */
12772   for (i = 0; i < dwp_htab->nr_slots; ++i)
12773     {
12774       ULONGEST signature_in_table;
12775
12776       signature_in_table =
12777         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12778       if (signature_in_table == signature)
12779         {
12780           uint32_t unit_index =
12781             read_4_bytes (dbfd,
12782                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12783
12784           if (dwp_file->version == 1)
12785             {
12786               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12787                                                  dwp_file, unit_index,
12788                                                  comp_dir, signature,
12789                                                  is_debug_types);
12790             }
12791           else
12792             {
12793               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12794                                                  dwp_file, unit_index,
12795                                                  comp_dir, signature,
12796                                                  is_debug_types);
12797             }
12798           return (struct dwo_unit *) *slot;
12799         }
12800       if (signature_in_table == 0)
12801         return NULL;
12802       hash = (hash + hash2) & mask;
12803     }
12804
12805   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12806            " [in module %s]"),
12807          dwp_file->name);
12808 }
12809
12810 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12811    Open the file specified by FILE_NAME and hand it off to BFD for
12812    preliminary analysis.  Return a newly initialized bfd *, which
12813    includes a canonicalized copy of FILE_NAME.
12814    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12815    SEARCH_CWD is true if the current directory is to be searched.
12816    It will be searched before debug-file-directory.
12817    If successful, the file is added to the bfd include table of the
12818    objfile's bfd (see gdb_bfd_record_inclusion).
12819    If unable to find/open the file, return NULL.
12820    NOTE: This function is derived from symfile_bfd_open.  */
12821
12822 static gdb_bfd_ref_ptr
12823 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12824                     const char *file_name, int is_dwp, int search_cwd)
12825 {
12826   int desc;
12827   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12828      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12829      to debug_file_directory.  */
12830   const char *search_path;
12831   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12832
12833   gdb::unique_xmalloc_ptr<char> search_path_holder;
12834   if (search_cwd)
12835     {
12836       if (*debug_file_directory != '\0')
12837         {
12838           search_path_holder.reset (concat (".", dirname_separator_string,
12839                                             debug_file_directory,
12840                                             (char *) NULL));
12841           search_path = search_path_holder.get ();
12842         }
12843       else
12844         search_path = ".";
12845     }
12846   else
12847     search_path = debug_file_directory;
12848
12849   openp_flags flags = OPF_RETURN_REALPATH;
12850   if (is_dwp)
12851     flags |= OPF_SEARCH_IN_PATH;
12852
12853   gdb::unique_xmalloc_ptr<char> absolute_name;
12854   desc = openp (search_path, flags, file_name,
12855                 O_RDONLY | O_BINARY, &absolute_name);
12856   if (desc < 0)
12857     return NULL;
12858
12859   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12860                                          gnutarget, desc));
12861   if (sym_bfd == NULL)
12862     return NULL;
12863   bfd_set_cacheable (sym_bfd.get (), 1);
12864
12865   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12866     return NULL;
12867
12868   /* Success.  Record the bfd as having been included by the objfile's bfd.
12869      This is important because things like demangled_names_hash lives in the
12870      objfile's per_bfd space and may have references to things like symbol
12871      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12872   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12873
12874   return sym_bfd;
12875 }
12876
12877 /* Try to open DWO file FILE_NAME.
12878    COMP_DIR is the DW_AT_comp_dir attribute.
12879    The result is the bfd handle of the file.
12880    If there is a problem finding or opening the file, return NULL.
12881    Upon success, the canonicalized path of the file is stored in the bfd,
12882    same as symfile_bfd_open.  */
12883
12884 static gdb_bfd_ref_ptr
12885 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12886                const char *file_name, const char *comp_dir)
12887 {
12888   if (IS_ABSOLUTE_PATH (file_name))
12889     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12890                                0 /*is_dwp*/, 0 /*search_cwd*/);
12891
12892   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12893
12894   if (comp_dir != NULL)
12895     {
12896       char *path_to_try = concat (comp_dir, SLASH_STRING,
12897                                   file_name, (char *) NULL);
12898
12899       /* NOTE: If comp_dir is a relative path, this will also try the
12900          search path, which seems useful.  */
12901       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12902                                                 path_to_try,
12903                                                 0 /*is_dwp*/,
12904                                                 1 /*search_cwd*/));
12905       xfree (path_to_try);
12906       if (abfd != NULL)
12907         return abfd;
12908     }
12909
12910   /* That didn't work, try debug-file-directory, which, despite its name,
12911      is a list of paths.  */
12912
12913   if (*debug_file_directory == '\0')
12914     return NULL;
12915
12916   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12917                              0 /*is_dwp*/, 1 /*search_cwd*/);
12918 }
12919
12920 /* This function is mapped across the sections and remembers the offset and
12921    size of each of the DWO debugging sections we are interested in.  */
12922
12923 static void
12924 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12925 {
12926   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12927   const struct dwop_section_names *names = &dwop_section_names;
12928
12929   if (section_is_p (sectp->name, &names->abbrev_dwo))
12930     {
12931       dwo_sections->abbrev.s.section = sectp;
12932       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12933     }
12934   else if (section_is_p (sectp->name, &names->info_dwo))
12935     {
12936       dwo_sections->info.s.section = sectp;
12937       dwo_sections->info.size = bfd_get_section_size (sectp);
12938     }
12939   else if (section_is_p (sectp->name, &names->line_dwo))
12940     {
12941       dwo_sections->line.s.section = sectp;
12942       dwo_sections->line.size = bfd_get_section_size (sectp);
12943     }
12944   else if (section_is_p (sectp->name, &names->loc_dwo))
12945     {
12946       dwo_sections->loc.s.section = sectp;
12947       dwo_sections->loc.size = bfd_get_section_size (sectp);
12948     }
12949   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12950     {
12951       dwo_sections->macinfo.s.section = sectp;
12952       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12953     }
12954   else if (section_is_p (sectp->name, &names->macro_dwo))
12955     {
12956       dwo_sections->macro.s.section = sectp;
12957       dwo_sections->macro.size = bfd_get_section_size (sectp);
12958     }
12959   else if (section_is_p (sectp->name, &names->str_dwo))
12960     {
12961       dwo_sections->str.s.section = sectp;
12962       dwo_sections->str.size = bfd_get_section_size (sectp);
12963     }
12964   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12965     {
12966       dwo_sections->str_offsets.s.section = sectp;
12967       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12968     }
12969   else if (section_is_p (sectp->name, &names->types_dwo))
12970     {
12971       struct dwarf2_section_info type_section;
12972
12973       memset (&type_section, 0, sizeof (type_section));
12974       type_section.s.section = sectp;
12975       type_section.size = bfd_get_section_size (sectp);
12976       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12977                      &type_section);
12978     }
12979 }
12980
12981 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12982    by PER_CU.  This is for the non-DWP case.
12983    The result is NULL if DWO_NAME can't be found.  */
12984
12985 static struct dwo_file *
12986 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12987                         const char *dwo_name, const char *comp_dir)
12988 {
12989   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12990   struct objfile *objfile = dwarf2_per_objfile->objfile;
12991
12992   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12993   if (dbfd == NULL)
12994     {
12995       if (dwarf_read_debug)
12996         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12997       return NULL;
12998     }
12999
13000   /* We use a unique pointer here, despite the obstack allocation,
13001      because a dwo_file needs some cleanup if it is abandoned.  */
13002   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
13003                                         struct dwo_file));
13004   dwo_file->dwo_name = dwo_name;
13005   dwo_file->comp_dir = comp_dir;
13006   dwo_file->dbfd = dbfd.release ();
13007
13008   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
13009                          &dwo_file->sections);
13010
13011   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
13012                          dwo_file->cus);
13013
13014   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
13015                                  dwo_file->sections.types, dwo_file->tus);
13016
13017   if (dwarf_read_debug)
13018     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13019
13020   return dwo_file.release ();
13021 }
13022
13023 /* This function is mapped across the sections and remembers the offset and
13024    size of each of the DWP debugging sections common to version 1 and 2 that
13025    we are interested in.  */
13026
13027 static void
13028 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13029                                    void *dwp_file_ptr)
13030 {
13031   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13032   const struct dwop_section_names *names = &dwop_section_names;
13033   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13034
13035   /* Record the ELF section number for later lookup: this is what the
13036      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13037   gdb_assert (elf_section_nr < dwp_file->num_sections);
13038   dwp_file->elf_sections[elf_section_nr] = sectp;
13039
13040   /* Look for specific sections that we need.  */
13041   if (section_is_p (sectp->name, &names->str_dwo))
13042     {
13043       dwp_file->sections.str.s.section = sectp;
13044       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13045     }
13046   else if (section_is_p (sectp->name, &names->cu_index))
13047     {
13048       dwp_file->sections.cu_index.s.section = sectp;
13049       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13050     }
13051   else if (section_is_p (sectp->name, &names->tu_index))
13052     {
13053       dwp_file->sections.tu_index.s.section = sectp;
13054       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13055     }
13056 }
13057
13058 /* This function is mapped across the sections and remembers the offset and
13059    size of each of the DWP version 2 debugging sections that we are interested
13060    in.  This is split into a separate function because we don't know if we
13061    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13062
13063 static void
13064 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13065 {
13066   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13067   const struct dwop_section_names *names = &dwop_section_names;
13068   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13069
13070   /* Record the ELF section number for later lookup: this is what the
13071      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13072   gdb_assert (elf_section_nr < dwp_file->num_sections);
13073   dwp_file->elf_sections[elf_section_nr] = sectp;
13074
13075   /* Look for specific sections that we need.  */
13076   if (section_is_p (sectp->name, &names->abbrev_dwo))
13077     {
13078       dwp_file->sections.abbrev.s.section = sectp;
13079       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13080     }
13081   else if (section_is_p (sectp->name, &names->info_dwo))
13082     {
13083       dwp_file->sections.info.s.section = sectp;
13084       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13085     }
13086   else if (section_is_p (sectp->name, &names->line_dwo))
13087     {
13088       dwp_file->sections.line.s.section = sectp;
13089       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13090     }
13091   else if (section_is_p (sectp->name, &names->loc_dwo))
13092     {
13093       dwp_file->sections.loc.s.section = sectp;
13094       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13095     }
13096   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13097     {
13098       dwp_file->sections.macinfo.s.section = sectp;
13099       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13100     }
13101   else if (section_is_p (sectp->name, &names->macro_dwo))
13102     {
13103       dwp_file->sections.macro.s.section = sectp;
13104       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13105     }
13106   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13107     {
13108       dwp_file->sections.str_offsets.s.section = sectp;
13109       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13110     }
13111   else if (section_is_p (sectp->name, &names->types_dwo))
13112     {
13113       dwp_file->sections.types.s.section = sectp;
13114       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13115     }
13116 }
13117
13118 /* Hash function for dwp_file loaded CUs/TUs.  */
13119
13120 static hashval_t
13121 hash_dwp_loaded_cutus (const void *item)
13122 {
13123   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13124
13125   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13126   return dwo_unit->signature;
13127 }
13128
13129 /* Equality function for dwp_file loaded CUs/TUs.  */
13130
13131 static int
13132 eq_dwp_loaded_cutus (const void *a, const void *b)
13133 {
13134   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13135   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13136
13137   return dua->signature == dub->signature;
13138 }
13139
13140 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13141
13142 static htab_t
13143 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13144 {
13145   return htab_create_alloc_ex (3,
13146                                hash_dwp_loaded_cutus,
13147                                eq_dwp_loaded_cutus,
13148                                NULL,
13149                                &objfile->objfile_obstack,
13150                                hashtab_obstack_allocate,
13151                                dummy_obstack_deallocate);
13152 }
13153
13154 /* Try to open DWP file FILE_NAME.
13155    The result is the bfd handle of the file.
13156    If there is a problem finding or opening the file, return NULL.
13157    Upon success, the canonicalized path of the file is stored in the bfd,
13158    same as symfile_bfd_open.  */
13159
13160 static gdb_bfd_ref_ptr
13161 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13162                const char *file_name)
13163 {
13164   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13165                                             1 /*is_dwp*/,
13166                                             1 /*search_cwd*/));
13167   if (abfd != NULL)
13168     return abfd;
13169
13170   /* Work around upstream bug 15652.
13171      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13172      [Whether that's a "bug" is debatable, but it is getting in our way.]
13173      We have no real idea where the dwp file is, because gdb's realpath-ing
13174      of the executable's path may have discarded the needed info.
13175      [IWBN if the dwp file name was recorded in the executable, akin to
13176      .gnu_debuglink, but that doesn't exist yet.]
13177      Strip the directory from FILE_NAME and search again.  */
13178   if (*debug_file_directory != '\0')
13179     {
13180       /* Don't implicitly search the current directory here.
13181          If the user wants to search "." to handle this case,
13182          it must be added to debug-file-directory.  */
13183       return try_open_dwop_file (dwarf2_per_objfile,
13184                                  lbasename (file_name), 1 /*is_dwp*/,
13185                                  0 /*search_cwd*/);
13186     }
13187
13188   return NULL;
13189 }
13190
13191 /* Initialize the use of the DWP file for the current objfile.
13192    By convention the name of the DWP file is ${objfile}.dwp.
13193    The result is NULL if it can't be found.  */
13194
13195 static std::unique_ptr<struct dwp_file>
13196 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13197 {
13198   struct objfile *objfile = dwarf2_per_objfile->objfile;
13199
13200   /* Try to find first .dwp for the binary file before any symbolic links
13201      resolving.  */
13202
13203   /* If the objfile is a debug file, find the name of the real binary
13204      file and get the name of dwp file from there.  */
13205   std::string dwp_name;
13206   if (objfile->separate_debug_objfile_backlink != NULL)
13207     {
13208       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13209       const char *backlink_basename = lbasename (backlink->original_name);
13210
13211       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13212     }
13213   else
13214     dwp_name = objfile->original_name;
13215
13216   dwp_name += ".dwp";
13217
13218   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13219   if (dbfd == NULL
13220       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13221     {
13222       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13223       dwp_name = objfile_name (objfile);
13224       dwp_name += ".dwp";
13225       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13226     }
13227
13228   if (dbfd == NULL)
13229     {
13230       if (dwarf_read_debug)
13231         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13232       return std::unique_ptr<dwp_file> ();
13233     }
13234
13235   const char *name = bfd_get_filename (dbfd.get ());
13236   std::unique_ptr<struct dwp_file> dwp_file
13237     (new struct dwp_file (name, std::move (dbfd)));
13238
13239   dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
13240   dwp_file->elf_sections =
13241     OBSTACK_CALLOC (&objfile->objfile_obstack,
13242                     dwp_file->num_sections, asection *);
13243
13244   bfd_map_over_sections (dwp_file->dbfd.get (),
13245                          dwarf2_locate_common_dwp_sections,
13246                          dwp_file.get ());
13247
13248   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13249                                          0);
13250
13251   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13252                                          1);
13253
13254   /* The DWP file version is stored in the hash table.  Oh well.  */
13255   if (dwp_file->cus && dwp_file->tus
13256       && dwp_file->cus->version != dwp_file->tus->version)
13257     {
13258       /* Technically speaking, we should try to limp along, but this is
13259          pretty bizarre.  We use pulongest here because that's the established
13260          portability solution (e.g, we cannot use %u for uint32_t).  */
13261       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13262                " TU version %s [in DWP file %s]"),
13263              pulongest (dwp_file->cus->version),
13264              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13265     }
13266
13267   if (dwp_file->cus)
13268     dwp_file->version = dwp_file->cus->version;
13269   else if (dwp_file->tus)
13270     dwp_file->version = dwp_file->tus->version;
13271   else
13272     dwp_file->version = 2;
13273
13274   if (dwp_file->version == 2)
13275     bfd_map_over_sections (dwp_file->dbfd.get (),
13276                            dwarf2_locate_v2_dwp_sections,
13277                            dwp_file.get ());
13278
13279   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13280   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13281
13282   if (dwarf_read_debug)
13283     {
13284       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13285       fprintf_unfiltered (gdb_stdlog,
13286                           "    %s CUs, %s TUs\n",
13287                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13288                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13289     }
13290
13291   return dwp_file;
13292 }
13293
13294 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13295
13296 static struct dwp_file *
13297 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13298 {
13299   if (! dwarf2_per_objfile->dwp_checked)
13300     {
13301       dwarf2_per_objfile->dwp_file
13302         = open_and_init_dwp_file (dwarf2_per_objfile);
13303       dwarf2_per_objfile->dwp_checked = 1;
13304     }
13305   return dwarf2_per_objfile->dwp_file.get ();
13306 }
13307
13308 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13309    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13310    or in the DWP file for the objfile, referenced by THIS_UNIT.
13311    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13312    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13313
13314    This is called, for example, when wanting to read a variable with a
13315    complex location.  Therefore we don't want to do file i/o for every call.
13316    Therefore we don't want to look for a DWO file on every call.
13317    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13318    then we check if we've already seen DWO_NAME, and only THEN do we check
13319    for a DWO file.
13320
13321    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13322    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13323
13324 static struct dwo_unit *
13325 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13326                  const char *dwo_name, const char *comp_dir,
13327                  ULONGEST signature, int is_debug_types)
13328 {
13329   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13330   struct objfile *objfile = dwarf2_per_objfile->objfile;
13331   const char *kind = is_debug_types ? "TU" : "CU";
13332   void **dwo_file_slot;
13333   struct dwo_file *dwo_file;
13334   struct dwp_file *dwp_file;
13335
13336   /* First see if there's a DWP file.
13337      If we have a DWP file but didn't find the DWO inside it, don't
13338      look for the original DWO file.  It makes gdb behave differently
13339      depending on whether one is debugging in the build tree.  */
13340
13341   dwp_file = get_dwp_file (dwarf2_per_objfile);
13342   if (dwp_file != NULL)
13343     {
13344       const struct dwp_hash_table *dwp_htab =
13345         is_debug_types ? dwp_file->tus : dwp_file->cus;
13346
13347       if (dwp_htab != NULL)
13348         {
13349           struct dwo_unit *dwo_cutu =
13350             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13351                                     signature, is_debug_types);
13352
13353           if (dwo_cutu != NULL)
13354             {
13355               if (dwarf_read_debug)
13356                 {
13357                   fprintf_unfiltered (gdb_stdlog,
13358                                       "Virtual DWO %s %s found: @%s\n",
13359                                       kind, hex_string (signature),
13360                                       host_address_to_string (dwo_cutu));
13361                 }
13362               return dwo_cutu;
13363             }
13364         }
13365     }
13366   else
13367     {
13368       /* No DWP file, look for the DWO file.  */
13369
13370       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13371                                             dwo_name, comp_dir);
13372       if (*dwo_file_slot == NULL)
13373         {
13374           /* Read in the file and build a table of the CUs/TUs it contains.  */
13375           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13376         }
13377       /* NOTE: This will be NULL if unable to open the file.  */
13378       dwo_file = (struct dwo_file *) *dwo_file_slot;
13379
13380       if (dwo_file != NULL)
13381         {
13382           struct dwo_unit *dwo_cutu = NULL;
13383
13384           if (is_debug_types && dwo_file->tus)
13385             {
13386               struct dwo_unit find_dwo_cutu;
13387
13388               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13389               find_dwo_cutu.signature = signature;
13390               dwo_cutu
13391                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13392             }
13393           else if (!is_debug_types && dwo_file->cus)
13394             {
13395               struct dwo_unit find_dwo_cutu;
13396
13397               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13398               find_dwo_cutu.signature = signature;
13399               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13400                                                        &find_dwo_cutu);
13401             }
13402
13403           if (dwo_cutu != NULL)
13404             {
13405               if (dwarf_read_debug)
13406                 {
13407                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13408                                       kind, dwo_name, hex_string (signature),
13409                                       host_address_to_string (dwo_cutu));
13410                 }
13411               return dwo_cutu;
13412             }
13413         }
13414     }
13415
13416   /* We didn't find it.  This could mean a dwo_id mismatch, or
13417      someone deleted the DWO/DWP file, or the search path isn't set up
13418      correctly to find the file.  */
13419
13420   if (dwarf_read_debug)
13421     {
13422       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13423                           kind, dwo_name, hex_string (signature));
13424     }
13425
13426   /* This is a warning and not a complaint because it can be caused by
13427      pilot error (e.g., user accidentally deleting the DWO).  */
13428   {
13429     /* Print the name of the DWP file if we looked there, helps the user
13430        better diagnose the problem.  */
13431     std::string dwp_text;
13432
13433     if (dwp_file != NULL)
13434       dwp_text = string_printf (" [in DWP file %s]",
13435                                 lbasename (dwp_file->name));
13436
13437     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13438                " [in module %s]"),
13439              kind, dwo_name, hex_string (signature),
13440              dwp_text.c_str (),
13441              this_unit->is_debug_types ? "TU" : "CU",
13442              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13443   }
13444   return NULL;
13445 }
13446
13447 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13448    See lookup_dwo_cutu_unit for details.  */
13449
13450 static struct dwo_unit *
13451 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13452                       const char *dwo_name, const char *comp_dir,
13453                       ULONGEST signature)
13454 {
13455   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13456 }
13457
13458 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13459    See lookup_dwo_cutu_unit for details.  */
13460
13461 static struct dwo_unit *
13462 lookup_dwo_type_unit (struct signatured_type *this_tu,
13463                       const char *dwo_name, const char *comp_dir)
13464 {
13465   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13466 }
13467
13468 /* Traversal function for queue_and_load_all_dwo_tus.  */
13469
13470 static int
13471 queue_and_load_dwo_tu (void **slot, void *info)
13472 {
13473   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13474   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13475   ULONGEST signature = dwo_unit->signature;
13476   struct signatured_type *sig_type =
13477     lookup_dwo_signatured_type (per_cu->cu, signature);
13478
13479   if (sig_type != NULL)
13480     {
13481       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13482
13483       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13484          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13485          while processing PER_CU.  */
13486       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13487         load_full_type_unit (sig_cu);
13488       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13489     }
13490
13491   return 1;
13492 }
13493
13494 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13495    The DWO may have the only definition of the type, though it may not be
13496    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13497    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13498
13499 static void
13500 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13501 {
13502   struct dwo_unit *dwo_unit;
13503   struct dwo_file *dwo_file;
13504
13505   gdb_assert (!per_cu->is_debug_types);
13506   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13507   gdb_assert (per_cu->cu != NULL);
13508
13509   dwo_unit = per_cu->cu->dwo_unit;
13510   gdb_assert (dwo_unit != NULL);
13511
13512   dwo_file = dwo_unit->dwo_file;
13513   if (dwo_file->tus != NULL)
13514     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13515 }
13516
13517 /* Free all resources associated with DWO_FILE.
13518    Close the DWO file and munmap the sections.  */
13519
13520 static void
13521 free_dwo_file (struct dwo_file *dwo_file)
13522 {
13523   /* Note: dbfd is NULL for virtual DWO files.  */
13524   gdb_bfd_unref (dwo_file->dbfd);
13525
13526   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13527 }
13528
13529 /* Traversal function for free_dwo_files.  */
13530
13531 static int
13532 free_dwo_file_from_slot (void **slot, void *info)
13533 {
13534   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13535
13536   free_dwo_file (dwo_file);
13537
13538   return 1;
13539 }
13540
13541 /* Free all resources associated with DWO_FILES.  */
13542
13543 static void
13544 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13545 {
13546   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13547 }
13548 \f
13549 /* Read in various DIEs.  */
13550
13551 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13552    Inherit only the children of the DW_AT_abstract_origin DIE not being
13553    already referenced by DW_AT_abstract_origin from the children of the
13554    current DIE.  */
13555
13556 static void
13557 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13558 {
13559   struct die_info *child_die;
13560   sect_offset *offsetp;
13561   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13562   struct die_info *origin_die;
13563   /* Iterator of the ORIGIN_DIE children.  */
13564   struct die_info *origin_child_die;
13565   struct attribute *attr;
13566   struct dwarf2_cu *origin_cu;
13567   struct pending **origin_previous_list_in_scope;
13568
13569   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13570   if (!attr)
13571     return;
13572
13573   /* Note that following die references may follow to a die in a
13574      different cu.  */
13575
13576   origin_cu = cu;
13577   origin_die = follow_die_ref (die, attr, &origin_cu);
13578
13579   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13580      symbols in.  */
13581   origin_previous_list_in_scope = origin_cu->list_in_scope;
13582   origin_cu->list_in_scope = cu->list_in_scope;
13583
13584   if (die->tag != origin_die->tag
13585       && !(die->tag == DW_TAG_inlined_subroutine
13586            && origin_die->tag == DW_TAG_subprogram))
13587     complaint (_("DIE %s and its abstract origin %s have different tags"),
13588                sect_offset_str (die->sect_off),
13589                sect_offset_str (origin_die->sect_off));
13590
13591   std::vector<sect_offset> offsets;
13592
13593   for (child_die = die->child;
13594        child_die && child_die->tag;
13595        child_die = sibling_die (child_die))
13596     {
13597       struct die_info *child_origin_die;
13598       struct dwarf2_cu *child_origin_cu;
13599
13600       /* We are trying to process concrete instance entries:
13601          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13602          it's not relevant to our analysis here. i.e. detecting DIEs that are
13603          present in the abstract instance but not referenced in the concrete
13604          one.  */
13605       if (child_die->tag == DW_TAG_call_site
13606           || child_die->tag == DW_TAG_GNU_call_site)
13607         continue;
13608
13609       /* For each CHILD_DIE, find the corresponding child of
13610          ORIGIN_DIE.  If there is more than one layer of
13611          DW_AT_abstract_origin, follow them all; there shouldn't be,
13612          but GCC versions at least through 4.4 generate this (GCC PR
13613          40573).  */
13614       child_origin_die = child_die;
13615       child_origin_cu = cu;
13616       while (1)
13617         {
13618           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13619                               child_origin_cu);
13620           if (attr == NULL)
13621             break;
13622           child_origin_die = follow_die_ref (child_origin_die, attr,
13623                                              &child_origin_cu);
13624         }
13625
13626       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13627          counterpart may exist.  */
13628       if (child_origin_die != child_die)
13629         {
13630           if (child_die->tag != child_origin_die->tag
13631               && !(child_die->tag == DW_TAG_inlined_subroutine
13632                    && child_origin_die->tag == DW_TAG_subprogram))
13633             complaint (_("Child DIE %s and its abstract origin %s have "
13634                          "different tags"),
13635                        sect_offset_str (child_die->sect_off),
13636                        sect_offset_str (child_origin_die->sect_off));
13637           if (child_origin_die->parent != origin_die)
13638             complaint (_("Child DIE %s and its abstract origin %s have "
13639                          "different parents"),
13640                        sect_offset_str (child_die->sect_off),
13641                        sect_offset_str (child_origin_die->sect_off));
13642           else
13643             offsets.push_back (child_origin_die->sect_off);
13644         }
13645     }
13646   std::sort (offsets.begin (), offsets.end ());
13647   sect_offset *offsets_end = offsets.data () + offsets.size ();
13648   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13649     if (offsetp[-1] == *offsetp)
13650       complaint (_("Multiple children of DIE %s refer "
13651                    "to DIE %s as their abstract origin"),
13652                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13653
13654   offsetp = offsets.data ();
13655   origin_child_die = origin_die->child;
13656   while (origin_child_die && origin_child_die->tag)
13657     {
13658       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13659       while (offsetp < offsets_end
13660              && *offsetp < origin_child_die->sect_off)
13661         offsetp++;
13662       if (offsetp >= offsets_end
13663           || *offsetp > origin_child_die->sect_off)
13664         {
13665           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13666              Check whether we're already processing ORIGIN_CHILD_DIE.
13667              This can happen with mutually referenced abstract_origins.
13668              PR 16581.  */
13669           if (!origin_child_die->in_process)
13670             process_die (origin_child_die, origin_cu);
13671         }
13672       origin_child_die = sibling_die (origin_child_die);
13673     }
13674   origin_cu->list_in_scope = origin_previous_list_in_scope;
13675 }
13676
13677 static void
13678 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13679 {
13680   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13681   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13682   struct context_stack *newobj;
13683   CORE_ADDR lowpc;
13684   CORE_ADDR highpc;
13685   struct die_info *child_die;
13686   struct attribute *attr, *call_line, *call_file;
13687   const char *name;
13688   CORE_ADDR baseaddr;
13689   struct block *block;
13690   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13691   std::vector<struct symbol *> template_args;
13692   struct template_symbol *templ_func = NULL;
13693
13694   if (inlined_func)
13695     {
13696       /* If we do not have call site information, we can't show the
13697          caller of this inlined function.  That's too confusing, so
13698          only use the scope for local variables.  */
13699       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13700       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13701       if (call_line == NULL || call_file == NULL)
13702         {
13703           read_lexical_block_scope (die, cu);
13704           return;
13705         }
13706     }
13707
13708   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13709
13710   name = dwarf2_name (die, cu);
13711
13712   /* Ignore functions with missing or empty names.  These are actually
13713      illegal according to the DWARF standard.  */
13714   if (name == NULL)
13715     {
13716       complaint (_("missing name for subprogram DIE at %s"),
13717                  sect_offset_str (die->sect_off));
13718       return;
13719     }
13720
13721   /* Ignore functions with missing or invalid low and high pc attributes.  */
13722   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13723       <= PC_BOUNDS_INVALID)
13724     {
13725       attr = dwarf2_attr (die, DW_AT_external, cu);
13726       if (!attr || !DW_UNSND (attr))
13727         complaint (_("cannot get low and high bounds "
13728                      "for subprogram DIE at %s"),
13729                    sect_offset_str (die->sect_off));
13730       return;
13731     }
13732
13733   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13734   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13735
13736   /* If we have any template arguments, then we must allocate a
13737      different sort of symbol.  */
13738   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13739     {
13740       if (child_die->tag == DW_TAG_template_type_param
13741           || child_die->tag == DW_TAG_template_value_param)
13742         {
13743           templ_func = allocate_template_symbol (objfile);
13744           templ_func->subclass = SYMBOL_TEMPLATE;
13745           break;
13746         }
13747     }
13748
13749   newobj = cu->get_builder ()->push_context (0, lowpc);
13750   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13751                              (struct symbol *) templ_func);
13752
13753   if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
13754     set_objfile_main_name (objfile, SYMBOL_LINKAGE_NAME (newobj->name),
13755                            cu->language);
13756
13757   /* If there is a location expression for DW_AT_frame_base, record
13758      it.  */
13759   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13760   if (attr)
13761     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13762
13763   /* If there is a location for the static link, record it.  */
13764   newobj->static_link = NULL;
13765   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13766   if (attr)
13767     {
13768       newobj->static_link
13769         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13770       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13771     }
13772
13773   cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13774
13775   if (die->child != NULL)
13776     {
13777       child_die = die->child;
13778       while (child_die && child_die->tag)
13779         {
13780           if (child_die->tag == DW_TAG_template_type_param
13781               || child_die->tag == DW_TAG_template_value_param)
13782             {
13783               struct symbol *arg = new_symbol (child_die, NULL, cu);
13784
13785               if (arg != NULL)
13786                 template_args.push_back (arg);
13787             }
13788           else
13789             process_die (child_die, cu);
13790           child_die = sibling_die (child_die);
13791         }
13792     }
13793
13794   inherit_abstract_dies (die, cu);
13795
13796   /* If we have a DW_AT_specification, we might need to import using
13797      directives from the context of the specification DIE.  See the
13798      comment in determine_prefix.  */
13799   if (cu->language == language_cplus
13800       && dwarf2_attr (die, DW_AT_specification, cu))
13801     {
13802       struct dwarf2_cu *spec_cu = cu;
13803       struct die_info *spec_die = die_specification (die, &spec_cu);
13804
13805       while (spec_die)
13806         {
13807           child_die = spec_die->child;
13808           while (child_die && child_die->tag)
13809             {
13810               if (child_die->tag == DW_TAG_imported_module)
13811                 process_die (child_die, spec_cu);
13812               child_die = sibling_die (child_die);
13813             }
13814
13815           /* In some cases, GCC generates specification DIEs that
13816              themselves contain DW_AT_specification attributes.  */
13817           spec_die = die_specification (spec_die, &spec_cu);
13818         }
13819     }
13820
13821   struct context_stack cstk = cu->get_builder ()->pop_context ();
13822   /* Make a block for the local symbols within.  */
13823   block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13824                                      cstk.static_link, lowpc, highpc);
13825
13826   /* For C++, set the block's scope.  */
13827   if ((cu->language == language_cplus
13828        || cu->language == language_fortran
13829        || cu->language == language_d
13830        || cu->language == language_rust)
13831       && cu->processing_has_namespace_info)
13832     block_set_scope (block, determine_prefix (die, cu),
13833                      &objfile->objfile_obstack);
13834
13835   /* If we have address ranges, record them.  */
13836   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13837
13838   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13839
13840   /* Attach template arguments to function.  */
13841   if (!template_args.empty ())
13842     {
13843       gdb_assert (templ_func != NULL);
13844
13845       templ_func->n_template_arguments = template_args.size ();
13846       templ_func->template_arguments
13847         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13848                      templ_func->n_template_arguments);
13849       memcpy (templ_func->template_arguments,
13850               template_args.data (),
13851               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13852
13853       /* Make sure that the symtab is set on the new symbols.  Even
13854          though they don't appear in this symtab directly, other parts
13855          of gdb assume that symbols do, and this is reasonably
13856          true.  */
13857       for (symbol *sym : template_args)
13858         symbol_set_symtab (sym, symbol_symtab (templ_func));
13859     }
13860
13861   /* In C++, we can have functions nested inside functions (e.g., when
13862      a function declares a class that has methods).  This means that
13863      when we finish processing a function scope, we may need to go
13864      back to building a containing block's symbol lists.  */
13865   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13866   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13867
13868   /* If we've finished processing a top-level function, subsequent
13869      symbols go in the file symbol list.  */
13870   if (cu->get_builder ()->outermost_context_p ())
13871     cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13872 }
13873
13874 /* Process all the DIES contained within a lexical block scope.  Start
13875    a new scope, process the dies, and then close the scope.  */
13876
13877 static void
13878 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13879 {
13880   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13881   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13882   CORE_ADDR lowpc, highpc;
13883   struct die_info *child_die;
13884   CORE_ADDR baseaddr;
13885
13886   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13887
13888   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13889   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13890      as multiple lexical blocks?  Handling children in a sane way would
13891      be nasty.  Might be easier to properly extend generic blocks to
13892      describe ranges.  */
13893   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13894     {
13895     case PC_BOUNDS_NOT_PRESENT:
13896       /* DW_TAG_lexical_block has no attributes, process its children as if
13897          there was no wrapping by that DW_TAG_lexical_block.
13898          GCC does no longer produces such DWARF since GCC r224161.  */
13899       for (child_die = die->child;
13900            child_die != NULL && child_die->tag;
13901            child_die = sibling_die (child_die))
13902         process_die (child_die, cu);
13903       return;
13904     case PC_BOUNDS_INVALID:
13905       return;
13906     }
13907   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13908   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13909
13910   cu->get_builder ()->push_context (0, lowpc);
13911   if (die->child != NULL)
13912     {
13913       child_die = die->child;
13914       while (child_die && child_die->tag)
13915         {
13916           process_die (child_die, cu);
13917           child_die = sibling_die (child_die);
13918         }
13919     }
13920   inherit_abstract_dies (die, cu);
13921   struct context_stack cstk = cu->get_builder ()->pop_context ();
13922
13923   if (*cu->get_builder ()->get_local_symbols () != NULL
13924       || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13925     {
13926       struct block *block
13927         = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13928                                      cstk.start_addr, highpc);
13929
13930       /* Note that recording ranges after traversing children, as we
13931          do here, means that recording a parent's ranges entails
13932          walking across all its children's ranges as they appear in
13933          the address map, which is quadratic behavior.
13934
13935          It would be nicer to record the parent's ranges before
13936          traversing its children, simply overriding whatever you find
13937          there.  But since we don't even decide whether to create a
13938          block until after we've traversed its children, that's hard
13939          to do.  */
13940       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13941     }
13942   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13943   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13944 }
13945
13946 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13947
13948 static void
13949 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13950 {
13951   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13952   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13953   CORE_ADDR pc, baseaddr;
13954   struct attribute *attr;
13955   struct call_site *call_site, call_site_local;
13956   void **slot;
13957   int nparams;
13958   struct die_info *child_die;
13959
13960   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13961
13962   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13963   if (attr == NULL)
13964     {
13965       /* This was a pre-DWARF-5 GNU extension alias
13966          for DW_AT_call_return_pc.  */
13967       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13968     }
13969   if (!attr)
13970     {
13971       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13972                    "DIE %s [in module %s]"),
13973                  sect_offset_str (die->sect_off), objfile_name (objfile));
13974       return;
13975     }
13976   pc = attr_value_as_address (attr) + baseaddr;
13977   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13978
13979   if (cu->call_site_htab == NULL)
13980     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13981                                                NULL, &objfile->objfile_obstack,
13982                                                hashtab_obstack_allocate, NULL);
13983   call_site_local.pc = pc;
13984   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13985   if (*slot != NULL)
13986     {
13987       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13988                    "DIE %s [in module %s]"),
13989                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13990                  objfile_name (objfile));
13991       return;
13992     }
13993
13994   /* Count parameters at the caller.  */
13995
13996   nparams = 0;
13997   for (child_die = die->child; child_die && child_die->tag;
13998        child_die = sibling_die (child_die))
13999     {
14000       if (child_die->tag != DW_TAG_call_site_parameter
14001           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14002         {
14003           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
14004                        "DW_TAG_call_site child DIE %s [in module %s]"),
14005                      child_die->tag, sect_offset_str (child_die->sect_off),
14006                      objfile_name (objfile));
14007           continue;
14008         }
14009
14010       nparams++;
14011     }
14012
14013   call_site
14014     = ((struct call_site *)
14015        obstack_alloc (&objfile->objfile_obstack,
14016                       sizeof (*call_site)
14017                       + (sizeof (*call_site->parameter) * (nparams - 1))));
14018   *slot = call_site;
14019   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14020   call_site->pc = pc;
14021
14022   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14023       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14024     {
14025       struct die_info *func_die;
14026
14027       /* Skip also over DW_TAG_inlined_subroutine.  */
14028       for (func_die = die->parent;
14029            func_die && func_die->tag != DW_TAG_subprogram
14030            && func_die->tag != DW_TAG_subroutine_type;
14031            func_die = func_die->parent);
14032
14033       /* DW_AT_call_all_calls is a superset
14034          of DW_AT_call_all_tail_calls.  */
14035       if (func_die
14036           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14037           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14038           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14039           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14040         {
14041           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14042              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14043              both the initial caller containing the real return address PC and
14044              the final callee containing the current PC of a chain of tail
14045              calls do not need to have the tail call list complete.  But any
14046              function candidate for a virtual tail call frame searched via
14047              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14048              determined unambiguously.  */
14049         }
14050       else
14051         {
14052           struct type *func_type = NULL;
14053
14054           if (func_die)
14055             func_type = get_die_type (func_die, cu);
14056           if (func_type != NULL)
14057             {
14058               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14059
14060               /* Enlist this call site to the function.  */
14061               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14062               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14063             }
14064           else
14065             complaint (_("Cannot find function owning DW_TAG_call_site "
14066                          "DIE %s [in module %s]"),
14067                        sect_offset_str (die->sect_off), objfile_name (objfile));
14068         }
14069     }
14070
14071   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14072   if (attr == NULL)
14073     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14074   if (attr == NULL)
14075     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14076   if (attr == NULL)
14077     {
14078       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14079       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14080     }
14081   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14082   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14083     /* Keep NULL DWARF_BLOCK.  */;
14084   else if (attr_form_is_block (attr))
14085     {
14086       struct dwarf2_locexpr_baton *dlbaton;
14087
14088       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14089       dlbaton->data = DW_BLOCK (attr)->data;
14090       dlbaton->size = DW_BLOCK (attr)->size;
14091       dlbaton->per_cu = cu->per_cu;
14092
14093       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14094     }
14095   else if (attr_form_is_ref (attr))
14096     {
14097       struct dwarf2_cu *target_cu = cu;
14098       struct die_info *target_die;
14099
14100       target_die = follow_die_ref (die, attr, &target_cu);
14101       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14102       if (die_is_declaration (target_die, target_cu))
14103         {
14104           const char *target_physname;
14105
14106           /* Prefer the mangled name; otherwise compute the demangled one.  */
14107           target_physname = dw2_linkage_name (target_die, target_cu);
14108           if (target_physname == NULL)
14109             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14110           if (target_physname == NULL)
14111             complaint (_("DW_AT_call_target target DIE has invalid "
14112                          "physname, for referencing DIE %s [in module %s]"),
14113                        sect_offset_str (die->sect_off), objfile_name (objfile));
14114           else
14115             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14116         }
14117       else
14118         {
14119           CORE_ADDR lowpc;
14120
14121           /* DW_AT_entry_pc should be preferred.  */
14122           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14123               <= PC_BOUNDS_INVALID)
14124             complaint (_("DW_AT_call_target target DIE has invalid "
14125                          "low pc, for referencing DIE %s [in module %s]"),
14126                        sect_offset_str (die->sect_off), objfile_name (objfile));
14127           else
14128             {
14129               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14130               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14131             }
14132         }
14133     }
14134   else
14135     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14136                  "block nor reference, for DIE %s [in module %s]"),
14137                sect_offset_str (die->sect_off), objfile_name (objfile));
14138
14139   call_site->per_cu = cu->per_cu;
14140
14141   for (child_die = die->child;
14142        child_die && child_die->tag;
14143        child_die = sibling_die (child_die))
14144     {
14145       struct call_site_parameter *parameter;
14146       struct attribute *loc, *origin;
14147
14148       if (child_die->tag != DW_TAG_call_site_parameter
14149           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14150         {
14151           /* Already printed the complaint above.  */
14152           continue;
14153         }
14154
14155       gdb_assert (call_site->parameter_count < nparams);
14156       parameter = &call_site->parameter[call_site->parameter_count];
14157
14158       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14159          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14160          register is contained in DW_AT_call_value.  */
14161
14162       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14163       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14164       if (origin == NULL)
14165         {
14166           /* This was a pre-DWARF-5 GNU extension alias
14167              for DW_AT_call_parameter.  */
14168           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14169         }
14170       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14171         {
14172           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14173
14174           sect_offset sect_off
14175             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14176           if (!offset_in_cu_p (&cu->header, sect_off))
14177             {
14178               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14179                  binding can be done only inside one CU.  Such referenced DIE
14180                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14181               complaint (_("DW_AT_call_parameter offset is not in CU for "
14182                            "DW_TAG_call_site child DIE %s [in module %s]"),
14183                          sect_offset_str (child_die->sect_off),
14184                          objfile_name (objfile));
14185               continue;
14186             }
14187           parameter->u.param_cu_off
14188             = (cu_offset) (sect_off - cu->header.sect_off);
14189         }
14190       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14191         {
14192           complaint (_("No DW_FORM_block* DW_AT_location for "
14193                        "DW_TAG_call_site child DIE %s [in module %s]"),
14194                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14195           continue;
14196         }
14197       else
14198         {
14199           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14200             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14201           if (parameter->u.dwarf_reg != -1)
14202             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14203           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14204                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14205                                              &parameter->u.fb_offset))
14206             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14207           else
14208             {
14209               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14210                            "for DW_FORM_block* DW_AT_location is supported for "
14211                            "DW_TAG_call_site child DIE %s "
14212                            "[in module %s]"),
14213                          sect_offset_str (child_die->sect_off),
14214                          objfile_name (objfile));
14215               continue;
14216             }
14217         }
14218
14219       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14220       if (attr == NULL)
14221         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14222       if (!attr_form_is_block (attr))
14223         {
14224           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14225                        "DW_TAG_call_site child DIE %s [in module %s]"),
14226                      sect_offset_str (child_die->sect_off),
14227                      objfile_name (objfile));
14228           continue;
14229         }
14230       parameter->value = DW_BLOCK (attr)->data;
14231       parameter->value_size = DW_BLOCK (attr)->size;
14232
14233       /* Parameters are not pre-cleared by memset above.  */
14234       parameter->data_value = NULL;
14235       parameter->data_value_size = 0;
14236       call_site->parameter_count++;
14237
14238       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14239       if (attr == NULL)
14240         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14241       if (attr)
14242         {
14243           if (!attr_form_is_block (attr))
14244             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14245                          "DW_TAG_call_site child DIE %s [in module %s]"),
14246                        sect_offset_str (child_die->sect_off),
14247                        objfile_name (objfile));
14248           else
14249             {
14250               parameter->data_value = DW_BLOCK (attr)->data;
14251               parameter->data_value_size = DW_BLOCK (attr)->size;
14252             }
14253         }
14254     }
14255 }
14256
14257 /* Helper function for read_variable.  If DIE represents a virtual
14258    table, then return the type of the concrete object that is
14259    associated with the virtual table.  Otherwise, return NULL.  */
14260
14261 static struct type *
14262 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14263 {
14264   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14265   if (attr == NULL)
14266     return NULL;
14267
14268   /* Find the type DIE.  */
14269   struct die_info *type_die = NULL;
14270   struct dwarf2_cu *type_cu = cu;
14271
14272   if (attr_form_is_ref (attr))
14273     type_die = follow_die_ref (die, attr, &type_cu);
14274   if (type_die == NULL)
14275     return NULL;
14276
14277   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14278     return NULL;
14279   return die_containing_type (type_die, type_cu);
14280 }
14281
14282 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14283
14284 static void
14285 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14286 {
14287   struct rust_vtable_symbol *storage = NULL;
14288
14289   if (cu->language == language_rust)
14290     {
14291       struct type *containing_type = rust_containing_type (die, cu);
14292
14293       if (containing_type != NULL)
14294         {
14295           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14296
14297           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14298                                     struct rust_vtable_symbol);
14299           initialize_objfile_symbol (storage);
14300           storage->concrete_type = containing_type;
14301           storage->subclass = SYMBOL_RUST_VTABLE;
14302         }
14303     }
14304
14305   struct symbol *res = new_symbol (die, NULL, cu, storage);
14306   struct attribute *abstract_origin
14307     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14308   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14309   if (res == NULL && loc && abstract_origin)
14310     {
14311       /* We have a variable without a name, but with a location and an abstract
14312          origin.  This may be a concrete instance of an abstract variable
14313          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14314          later.  */
14315       struct dwarf2_cu *origin_cu = cu;
14316       struct die_info *origin_die
14317         = follow_die_ref (die, abstract_origin, &origin_cu);
14318       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14319       dpo->abstract_to_concrete[origin_die].push_back (die);
14320     }
14321 }
14322
14323 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14324    reading .debug_rnglists.
14325    Callback's type should be:
14326     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14327    Return true if the attributes are present and valid, otherwise,
14328    return false.  */
14329
14330 template <typename Callback>
14331 static bool
14332 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14333                          Callback &&callback)
14334 {
14335   struct dwarf2_per_objfile *dwarf2_per_objfile
14336     = cu->per_cu->dwarf2_per_objfile;
14337   struct objfile *objfile = dwarf2_per_objfile->objfile;
14338   bfd *obfd = objfile->obfd;
14339   /* Base address selection entry.  */
14340   CORE_ADDR base;
14341   int found_base;
14342   const gdb_byte *buffer;
14343   CORE_ADDR baseaddr;
14344   bool overflow = false;
14345
14346   found_base = cu->base_known;
14347   base = cu->base_address;
14348
14349   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14350   if (offset >= dwarf2_per_objfile->rnglists.size)
14351     {
14352       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14353                  offset);
14354       return false;
14355     }
14356   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14357
14358   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14359
14360   while (1)
14361     {
14362       /* Initialize it due to a false compiler warning.  */
14363       CORE_ADDR range_beginning = 0, range_end = 0;
14364       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14365                                  + dwarf2_per_objfile->rnglists.size);
14366       unsigned int bytes_read;
14367
14368       if (buffer == buf_end)
14369         {
14370           overflow = true;
14371           break;
14372         }
14373       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14374       switch (rlet)
14375         {
14376         case DW_RLE_end_of_list:
14377           break;
14378         case DW_RLE_base_address:
14379           if (buffer + cu->header.addr_size > buf_end)
14380             {
14381               overflow = true;
14382               break;
14383             }
14384           base = read_address (obfd, buffer, cu, &bytes_read);
14385           found_base = 1;
14386           buffer += bytes_read;
14387           break;
14388         case DW_RLE_start_length:
14389           if (buffer + cu->header.addr_size > buf_end)
14390             {
14391               overflow = true;
14392               break;
14393             }
14394           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14395           buffer += bytes_read;
14396           range_end = (range_beginning
14397                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14398           buffer += bytes_read;
14399           if (buffer > buf_end)
14400             {
14401               overflow = true;
14402               break;
14403             }
14404           break;
14405         case DW_RLE_offset_pair:
14406           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14407           buffer += bytes_read;
14408           if (buffer > buf_end)
14409             {
14410               overflow = true;
14411               break;
14412             }
14413           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14414           buffer += bytes_read;
14415           if (buffer > buf_end)
14416             {
14417               overflow = true;
14418               break;
14419             }
14420           break;
14421         case DW_RLE_start_end:
14422           if (buffer + 2 * cu->header.addr_size > buf_end)
14423             {
14424               overflow = true;
14425               break;
14426             }
14427           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14428           buffer += bytes_read;
14429           range_end = read_address (obfd, buffer, cu, &bytes_read);
14430           buffer += bytes_read;
14431           break;
14432         default:
14433           complaint (_("Invalid .debug_rnglists data (no base address)"));
14434           return false;
14435         }
14436       if (rlet == DW_RLE_end_of_list || overflow)
14437         break;
14438       if (rlet == DW_RLE_base_address)
14439         continue;
14440
14441       if (!found_base)
14442         {
14443           /* We have no valid base address for the ranges
14444              data.  */
14445           complaint (_("Invalid .debug_rnglists data (no base address)"));
14446           return false;
14447         }
14448
14449       if (range_beginning > range_end)
14450         {
14451           /* Inverted range entries are invalid.  */
14452           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14453           return false;
14454         }
14455
14456       /* Empty range entries have no effect.  */
14457       if (range_beginning == range_end)
14458         continue;
14459
14460       range_beginning += base;
14461       range_end += base;
14462
14463       /* A not-uncommon case of bad debug info.
14464          Don't pollute the addrmap with bad data.  */
14465       if (range_beginning + baseaddr == 0
14466           && !dwarf2_per_objfile->has_section_at_zero)
14467         {
14468           complaint (_(".debug_rnglists entry has start address of zero"
14469                        " [in module %s]"), objfile_name (objfile));
14470           continue;
14471         }
14472
14473       callback (range_beginning, range_end);
14474     }
14475
14476   if (overflow)
14477     {
14478       complaint (_("Offset %d is not terminated "
14479                    "for DW_AT_ranges attribute"),
14480                  offset);
14481       return false;
14482     }
14483
14484   return true;
14485 }
14486
14487 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14488    Callback's type should be:
14489     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14490    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14491
14492 template <typename Callback>
14493 static int
14494 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14495                        Callback &&callback)
14496 {
14497   struct dwarf2_per_objfile *dwarf2_per_objfile
14498       = cu->per_cu->dwarf2_per_objfile;
14499   struct objfile *objfile = dwarf2_per_objfile->objfile;
14500   struct comp_unit_head *cu_header = &cu->header;
14501   bfd *obfd = objfile->obfd;
14502   unsigned int addr_size = cu_header->addr_size;
14503   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14504   /* Base address selection entry.  */
14505   CORE_ADDR base;
14506   int found_base;
14507   unsigned int dummy;
14508   const gdb_byte *buffer;
14509   CORE_ADDR baseaddr;
14510
14511   if (cu_header->version >= 5)
14512     return dwarf2_rnglists_process (offset, cu, callback);
14513
14514   found_base = cu->base_known;
14515   base = cu->base_address;
14516
14517   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14518   if (offset >= dwarf2_per_objfile->ranges.size)
14519     {
14520       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14521                  offset);
14522       return 0;
14523     }
14524   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14525
14526   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14527
14528   while (1)
14529     {
14530       CORE_ADDR range_beginning, range_end;
14531
14532       range_beginning = read_address (obfd, buffer, cu, &dummy);
14533       buffer += addr_size;
14534       range_end = read_address (obfd, buffer, cu, &dummy);
14535       buffer += addr_size;
14536       offset += 2 * addr_size;
14537
14538       /* An end of list marker is a pair of zero addresses.  */
14539       if (range_beginning == 0 && range_end == 0)
14540         /* Found the end of list entry.  */
14541         break;
14542
14543       /* Each base address selection entry is a pair of 2 values.
14544          The first is the largest possible address, the second is
14545          the base address.  Check for a base address here.  */
14546       if ((range_beginning & mask) == mask)
14547         {
14548           /* If we found the largest possible address, then we already
14549              have the base address in range_end.  */
14550           base = range_end;
14551           found_base = 1;
14552           continue;
14553         }
14554
14555       if (!found_base)
14556         {
14557           /* We have no valid base address for the ranges
14558              data.  */
14559           complaint (_("Invalid .debug_ranges data (no base address)"));
14560           return 0;
14561         }
14562
14563       if (range_beginning > range_end)
14564         {
14565           /* Inverted range entries are invalid.  */
14566           complaint (_("Invalid .debug_ranges data (inverted range)"));
14567           return 0;
14568         }
14569
14570       /* Empty range entries have no effect.  */
14571       if (range_beginning == range_end)
14572         continue;
14573
14574       range_beginning += base;
14575       range_end += base;
14576
14577       /* A not-uncommon case of bad debug info.
14578          Don't pollute the addrmap with bad data.  */
14579       if (range_beginning + baseaddr == 0
14580           && !dwarf2_per_objfile->has_section_at_zero)
14581         {
14582           complaint (_(".debug_ranges entry has start address of zero"
14583                        " [in module %s]"), objfile_name (objfile));
14584           continue;
14585         }
14586
14587       callback (range_beginning, range_end);
14588     }
14589
14590   return 1;
14591 }
14592
14593 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14594    Return 1 if the attributes are present and valid, otherwise, return 0.
14595    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14596
14597 static int
14598 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14599                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14600                     struct partial_symtab *ranges_pst)
14601 {
14602   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14603   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14604   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14605                                        SECT_OFF_TEXT (objfile));
14606   int low_set = 0;
14607   CORE_ADDR low = 0;
14608   CORE_ADDR high = 0;
14609   int retval;
14610
14611   retval = dwarf2_ranges_process (offset, cu,
14612     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14613     {
14614       if (ranges_pst != NULL)
14615         {
14616           CORE_ADDR lowpc;
14617           CORE_ADDR highpc;
14618
14619           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14620                                                range_beginning + baseaddr)
14621                    - baseaddr);
14622           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14623                                                 range_end + baseaddr)
14624                     - baseaddr);
14625           addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14626                              lowpc, highpc - 1, ranges_pst);
14627         }
14628
14629       /* FIXME: This is recording everything as a low-high
14630          segment of consecutive addresses.  We should have a
14631          data structure for discontiguous block ranges
14632          instead.  */
14633       if (! low_set)
14634         {
14635           low = range_beginning;
14636           high = range_end;
14637           low_set = 1;
14638         }
14639       else
14640         {
14641           if (range_beginning < low)
14642             low = range_beginning;
14643           if (range_end > high)
14644             high = range_end;
14645         }
14646     });
14647   if (!retval)
14648     return 0;
14649
14650   if (! low_set)
14651     /* If the first entry is an end-of-list marker, the range
14652        describes an empty scope, i.e. no instructions.  */
14653     return 0;
14654
14655   if (low_return)
14656     *low_return = low;
14657   if (high_return)
14658     *high_return = high;
14659   return 1;
14660 }
14661
14662 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14663    definition for the return value.  *LOWPC and *HIGHPC are set iff
14664    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14665
14666 static enum pc_bounds_kind
14667 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14668                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14669                       struct partial_symtab *pst)
14670 {
14671   struct dwarf2_per_objfile *dwarf2_per_objfile
14672     = cu->per_cu->dwarf2_per_objfile;
14673   struct attribute *attr;
14674   struct attribute *attr_high;
14675   CORE_ADDR low = 0;
14676   CORE_ADDR high = 0;
14677   enum pc_bounds_kind ret;
14678
14679   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14680   if (attr_high)
14681     {
14682       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14683       if (attr)
14684         {
14685           low = attr_value_as_address (attr);
14686           high = attr_value_as_address (attr_high);
14687           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14688             high += low;
14689         }
14690       else
14691         /* Found high w/o low attribute.  */
14692         return PC_BOUNDS_INVALID;
14693
14694       /* Found consecutive range of addresses.  */
14695       ret = PC_BOUNDS_HIGH_LOW;
14696     }
14697   else
14698     {
14699       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14700       if (attr != NULL)
14701         {
14702           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14703              We take advantage of the fact that DW_AT_ranges does not appear
14704              in DW_TAG_compile_unit of DWO files.  */
14705           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14706           unsigned int ranges_offset = (DW_UNSND (attr)
14707                                         + (need_ranges_base
14708                                            ? cu->ranges_base
14709                                            : 0));
14710
14711           /* Value of the DW_AT_ranges attribute is the offset in the
14712              .debug_ranges section.  */
14713           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14714             return PC_BOUNDS_INVALID;
14715           /* Found discontinuous range of addresses.  */
14716           ret = PC_BOUNDS_RANGES;
14717         }
14718       else
14719         return PC_BOUNDS_NOT_PRESENT;
14720     }
14721
14722   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14723   if (high <= low)
14724     return PC_BOUNDS_INVALID;
14725
14726   /* When using the GNU linker, .gnu.linkonce. sections are used to
14727      eliminate duplicate copies of functions and vtables and such.
14728      The linker will arbitrarily choose one and discard the others.
14729      The AT_*_pc values for such functions refer to local labels in
14730      these sections.  If the section from that file was discarded, the
14731      labels are not in the output, so the relocs get a value of 0.
14732      If this is a discarded function, mark the pc bounds as invalid,
14733      so that GDB will ignore it.  */
14734   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14735     return PC_BOUNDS_INVALID;
14736
14737   *lowpc = low;
14738   if (highpc)
14739     *highpc = high;
14740   return ret;
14741 }
14742
14743 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14744    its low and high PC addresses.  Do nothing if these addresses could not
14745    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14746    and HIGHPC to the high address if greater than HIGHPC.  */
14747
14748 static void
14749 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14750                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14751                                  struct dwarf2_cu *cu)
14752 {
14753   CORE_ADDR low, high;
14754   struct die_info *child = die->child;
14755
14756   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14757     {
14758       *lowpc = std::min (*lowpc, low);
14759       *highpc = std::max (*highpc, high);
14760     }
14761
14762   /* If the language does not allow nested subprograms (either inside
14763      subprograms or lexical blocks), we're done.  */
14764   if (cu->language != language_ada)
14765     return;
14766
14767   /* Check all the children of the given DIE.  If it contains nested
14768      subprograms, then check their pc bounds.  Likewise, we need to
14769      check lexical blocks as well, as they may also contain subprogram
14770      definitions.  */
14771   while (child && child->tag)
14772     {
14773       if (child->tag == DW_TAG_subprogram
14774           || child->tag == DW_TAG_lexical_block)
14775         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14776       child = sibling_die (child);
14777     }
14778 }
14779
14780 /* Get the low and high pc's represented by the scope DIE, and store
14781    them in *LOWPC and *HIGHPC.  If the correct values can't be
14782    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14783
14784 static void
14785 get_scope_pc_bounds (struct die_info *die,
14786                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14787                      struct dwarf2_cu *cu)
14788 {
14789   CORE_ADDR best_low = (CORE_ADDR) -1;
14790   CORE_ADDR best_high = (CORE_ADDR) 0;
14791   CORE_ADDR current_low, current_high;
14792
14793   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14794       >= PC_BOUNDS_RANGES)
14795     {
14796       best_low = current_low;
14797       best_high = current_high;
14798     }
14799   else
14800     {
14801       struct die_info *child = die->child;
14802
14803       while (child && child->tag)
14804         {
14805           switch (child->tag) {
14806           case DW_TAG_subprogram:
14807             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14808             break;
14809           case DW_TAG_namespace:
14810           case DW_TAG_module:
14811             /* FIXME: carlton/2004-01-16: Should we do this for
14812                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14813                that current GCC's always emit the DIEs corresponding
14814                to definitions of methods of classes as children of a
14815                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14816                the DIEs giving the declarations, which could be
14817                anywhere).  But I don't see any reason why the
14818                standards says that they have to be there.  */
14819             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14820
14821             if (current_low != ((CORE_ADDR) -1))
14822               {
14823                 best_low = std::min (best_low, current_low);
14824                 best_high = std::max (best_high, current_high);
14825               }
14826             break;
14827           default:
14828             /* Ignore.  */
14829             break;
14830           }
14831
14832           child = sibling_die (child);
14833         }
14834     }
14835
14836   *lowpc = best_low;
14837   *highpc = best_high;
14838 }
14839
14840 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14841    in DIE.  */
14842
14843 static void
14844 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14845                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14846 {
14847   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14848   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14849   struct attribute *attr;
14850   struct attribute *attr_high;
14851
14852   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14853   if (attr_high)
14854     {
14855       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14856       if (attr)
14857         {
14858           CORE_ADDR low = attr_value_as_address (attr);
14859           CORE_ADDR high = attr_value_as_address (attr_high);
14860
14861           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14862             high += low;
14863
14864           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14865           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14866           cu->get_builder ()->record_block_range (block, low, high - 1);
14867         }
14868     }
14869
14870   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14871   if (attr)
14872     {
14873       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14874          We take advantage of the fact that DW_AT_ranges does not appear
14875          in DW_TAG_compile_unit of DWO files.  */
14876       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14877
14878       /* The value of the DW_AT_ranges attribute is the offset of the
14879          address range list in the .debug_ranges section.  */
14880       unsigned long offset = (DW_UNSND (attr)
14881                               + (need_ranges_base ? cu->ranges_base : 0));
14882
14883       std::vector<blockrange> blockvec;
14884       dwarf2_ranges_process (offset, cu,
14885         [&] (CORE_ADDR start, CORE_ADDR end)
14886         {
14887           start += baseaddr;
14888           end += baseaddr;
14889           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14890           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14891           cu->get_builder ()->record_block_range (block, start, end - 1);
14892           blockvec.emplace_back (start, end);
14893         });
14894
14895       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14896     }
14897 }
14898
14899 /* Check whether the producer field indicates either of GCC < 4.6, or the
14900    Intel C/C++ compiler, and cache the result in CU.  */
14901
14902 static void
14903 check_producer (struct dwarf2_cu *cu)
14904 {
14905   int major, minor;
14906
14907   if (cu->producer == NULL)
14908     {
14909       /* For unknown compilers expect their behavior is DWARF version
14910          compliant.
14911
14912          GCC started to support .debug_types sections by -gdwarf-4 since
14913          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14914          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14915          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14916          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14917     }
14918   else if (producer_is_gcc (cu->producer, &major, &minor))
14919     {
14920       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14921       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14922     }
14923   else if (producer_is_icc (cu->producer, &major, &minor))
14924     {
14925       cu->producer_is_icc = true;
14926       cu->producer_is_icc_lt_14 = major < 14;
14927     }
14928   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14929     cu->producer_is_codewarrior = true;
14930   else
14931     {
14932       /* For other non-GCC compilers, expect their behavior is DWARF version
14933          compliant.  */
14934     }
14935
14936   cu->checked_producer = true;
14937 }
14938
14939 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14940    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14941    during 4.6.0 experimental.  */
14942
14943 static bool
14944 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14945 {
14946   if (!cu->checked_producer)
14947     check_producer (cu);
14948
14949   return cu->producer_is_gxx_lt_4_6;
14950 }
14951
14952
14953 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14954    with incorrect is_stmt attributes.  */
14955
14956 static bool
14957 producer_is_codewarrior (struct dwarf2_cu *cu)
14958 {
14959   if (!cu->checked_producer)
14960     check_producer (cu);
14961
14962   return cu->producer_is_codewarrior;
14963 }
14964
14965 /* Return the default accessibility type if it is not overriden by
14966    DW_AT_accessibility.  */
14967
14968 static enum dwarf_access_attribute
14969 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14970 {
14971   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14972     {
14973       /* The default DWARF 2 accessibility for members is public, the default
14974          accessibility for inheritance is private.  */
14975
14976       if (die->tag != DW_TAG_inheritance)
14977         return DW_ACCESS_public;
14978       else
14979         return DW_ACCESS_private;
14980     }
14981   else
14982     {
14983       /* DWARF 3+ defines the default accessibility a different way.  The same
14984          rules apply now for DW_TAG_inheritance as for the members and it only
14985          depends on the container kind.  */
14986
14987       if (die->parent->tag == DW_TAG_class_type)
14988         return DW_ACCESS_private;
14989       else
14990         return DW_ACCESS_public;
14991     }
14992 }
14993
14994 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14995    offset.  If the attribute was not found return 0, otherwise return
14996    1.  If it was found but could not properly be handled, set *OFFSET
14997    to 0.  */
14998
14999 static int
15000 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
15001                              LONGEST *offset)
15002 {
15003   struct attribute *attr;
15004
15005   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
15006   if (attr != NULL)
15007     {
15008       *offset = 0;
15009
15010       /* Note that we do not check for a section offset first here.
15011          This is because DW_AT_data_member_location is new in DWARF 4,
15012          so if we see it, we can assume that a constant form is really
15013          a constant and not a section offset.  */
15014       if (attr_form_is_constant (attr))
15015         *offset = dwarf2_get_attr_constant_value (attr, 0);
15016       else if (attr_form_is_section_offset (attr))
15017         dwarf2_complex_location_expr_complaint ();
15018       else if (attr_form_is_block (attr))
15019         *offset = decode_locdesc (DW_BLOCK (attr), cu);
15020       else
15021         dwarf2_complex_location_expr_complaint ();
15022
15023       return 1;
15024     }
15025
15026   return 0;
15027 }
15028
15029 /* Add an aggregate field to the field list.  */
15030
15031 static void
15032 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15033                   struct dwarf2_cu *cu)
15034 {
15035   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15036   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15037   struct nextfield *new_field;
15038   struct attribute *attr;
15039   struct field *fp;
15040   const char *fieldname = "";
15041
15042   if (die->tag == DW_TAG_inheritance)
15043     {
15044       fip->baseclasses.emplace_back ();
15045       new_field = &fip->baseclasses.back ();
15046     }
15047   else
15048     {
15049       fip->fields.emplace_back ();
15050       new_field = &fip->fields.back ();
15051     }
15052
15053   fip->nfields++;
15054
15055   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15056   if (attr)
15057     new_field->accessibility = DW_UNSND (attr);
15058   else
15059     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15060   if (new_field->accessibility != DW_ACCESS_public)
15061     fip->non_public_fields = 1;
15062
15063   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15064   if (attr)
15065     new_field->virtuality = DW_UNSND (attr);
15066   else
15067     new_field->virtuality = DW_VIRTUALITY_none;
15068
15069   fp = &new_field->field;
15070
15071   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15072     {
15073       LONGEST offset;
15074
15075       /* Data member other than a C++ static data member.  */
15076
15077       /* Get type of field.  */
15078       fp->type = die_type (die, cu);
15079
15080       SET_FIELD_BITPOS (*fp, 0);
15081
15082       /* Get bit size of field (zero if none).  */
15083       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15084       if (attr)
15085         {
15086           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15087         }
15088       else
15089         {
15090           FIELD_BITSIZE (*fp) = 0;
15091         }
15092
15093       /* Get bit offset of field.  */
15094       if (handle_data_member_location (die, cu, &offset))
15095         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15096       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15097       if (attr)
15098         {
15099           if (gdbarch_bits_big_endian (gdbarch))
15100             {
15101               /* For big endian bits, the DW_AT_bit_offset gives the
15102                  additional bit offset from the MSB of the containing
15103                  anonymous object to the MSB of the field.  We don't
15104                  have to do anything special since we don't need to
15105                  know the size of the anonymous object.  */
15106               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15107             }
15108           else
15109             {
15110               /* For little endian bits, compute the bit offset to the
15111                  MSB of the anonymous object, subtract off the number of
15112                  bits from the MSB of the field to the MSB of the
15113                  object, and then subtract off the number of bits of
15114                  the field itself.  The result is the bit offset of
15115                  the LSB of the field.  */
15116               int anonymous_size;
15117               int bit_offset = DW_UNSND (attr);
15118
15119               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15120               if (attr)
15121                 {
15122                   /* The size of the anonymous object containing
15123                      the bit field is explicit, so use the
15124                      indicated size (in bytes).  */
15125                   anonymous_size = DW_UNSND (attr);
15126                 }
15127               else
15128                 {
15129                   /* The size of the anonymous object containing
15130                      the bit field must be inferred from the type
15131                      attribute of the data member containing the
15132                      bit field.  */
15133                   anonymous_size = TYPE_LENGTH (fp->type);
15134                 }
15135               SET_FIELD_BITPOS (*fp,
15136                                 (FIELD_BITPOS (*fp)
15137                                  + anonymous_size * bits_per_byte
15138                                  - bit_offset - FIELD_BITSIZE (*fp)));
15139             }
15140         }
15141       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15142       if (attr != NULL)
15143         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15144                                 + dwarf2_get_attr_constant_value (attr, 0)));
15145
15146       /* Get name of field.  */
15147       fieldname = dwarf2_name (die, cu);
15148       if (fieldname == NULL)
15149         fieldname = "";
15150
15151       /* The name is already allocated along with this objfile, so we don't
15152          need to duplicate it for the type.  */
15153       fp->name = fieldname;
15154
15155       /* Change accessibility for artificial fields (e.g. virtual table
15156          pointer or virtual base class pointer) to private.  */
15157       if (dwarf2_attr (die, DW_AT_artificial, cu))
15158         {
15159           FIELD_ARTIFICIAL (*fp) = 1;
15160           new_field->accessibility = DW_ACCESS_private;
15161           fip->non_public_fields = 1;
15162         }
15163     }
15164   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15165     {
15166       /* C++ static member.  */
15167
15168       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15169          is a declaration, but all versions of G++ as of this writing
15170          (so through at least 3.2.1) incorrectly generate
15171          DW_TAG_variable tags.  */
15172
15173       const char *physname;
15174
15175       /* Get name of field.  */
15176       fieldname = dwarf2_name (die, cu);
15177       if (fieldname == NULL)
15178         return;
15179
15180       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15181       if (attr
15182           /* Only create a symbol if this is an external value.
15183              new_symbol checks this and puts the value in the global symbol
15184              table, which we want.  If it is not external, new_symbol
15185              will try to put the value in cu->list_in_scope which is wrong.  */
15186           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15187         {
15188           /* A static const member, not much different than an enum as far as
15189              we're concerned, except that we can support more types.  */
15190           new_symbol (die, NULL, cu);
15191         }
15192
15193       /* Get physical name.  */
15194       physname = dwarf2_physname (fieldname, die, cu);
15195
15196       /* The name is already allocated along with this objfile, so we don't
15197          need to duplicate it for the type.  */
15198       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15199       FIELD_TYPE (*fp) = die_type (die, cu);
15200       FIELD_NAME (*fp) = fieldname;
15201     }
15202   else if (die->tag == DW_TAG_inheritance)
15203     {
15204       LONGEST offset;
15205
15206       /* C++ base class field.  */
15207       if (handle_data_member_location (die, cu, &offset))
15208         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15209       FIELD_BITSIZE (*fp) = 0;
15210       FIELD_TYPE (*fp) = die_type (die, cu);
15211       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15212     }
15213   else if (die->tag == DW_TAG_variant_part)
15214     {
15215       /* process_structure_scope will treat this DIE as a union.  */
15216       process_structure_scope (die, cu);
15217
15218       /* The variant part is relative to the start of the enclosing
15219          structure.  */
15220       SET_FIELD_BITPOS (*fp, 0);
15221       fp->type = get_die_type (die, cu);
15222       fp->artificial = 1;
15223       fp->name = "<<variant>>";
15224
15225       /* Normally a DW_TAG_variant_part won't have a size, but our
15226          representation requires one, so set it to the maximum of the
15227          child sizes.  */
15228       if (TYPE_LENGTH (fp->type) == 0)
15229         {
15230           unsigned max = 0;
15231           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15232             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15233               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15234           TYPE_LENGTH (fp->type) = max;
15235         }
15236     }
15237   else
15238     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15239 }
15240
15241 /* Can the type given by DIE define another type?  */
15242
15243 static bool
15244 type_can_define_types (const struct die_info *die)
15245 {
15246   switch (die->tag)
15247     {
15248     case DW_TAG_typedef:
15249     case DW_TAG_class_type:
15250     case DW_TAG_structure_type:
15251     case DW_TAG_union_type:
15252     case DW_TAG_enumeration_type:
15253       return true;
15254
15255     default:
15256       return false;
15257     }
15258 }
15259
15260 /* Add a type definition defined in the scope of the FIP's class.  */
15261
15262 static void
15263 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15264                       struct dwarf2_cu *cu)
15265 {
15266   struct decl_field fp;
15267   memset (&fp, 0, sizeof (fp));
15268
15269   gdb_assert (type_can_define_types (die));
15270
15271   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15272   fp.name = dwarf2_name (die, cu);
15273   fp.type = read_type_die (die, cu);
15274
15275   /* Save accessibility.  */
15276   enum dwarf_access_attribute accessibility;
15277   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15278   if (attr != NULL)
15279     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15280   else
15281     accessibility = dwarf2_default_access_attribute (die, cu);
15282   switch (accessibility)
15283     {
15284     case DW_ACCESS_public:
15285       /* The assumed value if neither private nor protected.  */
15286       break;
15287     case DW_ACCESS_private:
15288       fp.is_private = 1;
15289       break;
15290     case DW_ACCESS_protected:
15291       fp.is_protected = 1;
15292       break;
15293     default:
15294       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15295     }
15296
15297   if (die->tag == DW_TAG_typedef)
15298     fip->typedef_field_list.push_back (fp);
15299   else
15300     fip->nested_types_list.push_back (fp);
15301 }
15302
15303 /* Create the vector of fields, and attach it to the type.  */
15304
15305 static void
15306 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15307                               struct dwarf2_cu *cu)
15308 {
15309   int nfields = fip->nfields;
15310
15311   /* Record the field count, allocate space for the array of fields,
15312      and create blank accessibility bitfields if necessary.  */
15313   TYPE_NFIELDS (type) = nfields;
15314   TYPE_FIELDS (type) = (struct field *)
15315     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15316
15317   if (fip->non_public_fields && cu->language != language_ada)
15318     {
15319       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15320
15321       TYPE_FIELD_PRIVATE_BITS (type) =
15322         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15323       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15324
15325       TYPE_FIELD_PROTECTED_BITS (type) =
15326         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15327       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15328
15329       TYPE_FIELD_IGNORE_BITS (type) =
15330         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15331       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15332     }
15333
15334   /* If the type has baseclasses, allocate and clear a bit vector for
15335      TYPE_FIELD_VIRTUAL_BITS.  */
15336   if (!fip->baseclasses.empty () && cu->language != language_ada)
15337     {
15338       int num_bytes = B_BYTES (fip->baseclasses.size ());
15339       unsigned char *pointer;
15340
15341       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15342       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15343       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15344       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15345       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15346     }
15347
15348   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15349     {
15350       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15351
15352       for (int index = 0; index < nfields; ++index)
15353         {
15354           struct nextfield &field = fip->fields[index];
15355
15356           if (field.variant.is_discriminant)
15357             di->discriminant_index = index;
15358           else if (field.variant.default_branch)
15359             di->default_index = index;
15360           else
15361             di->discriminants[index] = field.variant.discriminant_value;
15362         }
15363     }
15364
15365   /* Copy the saved-up fields into the field vector.  */
15366   for (int i = 0; i < nfields; ++i)
15367     {
15368       struct nextfield &field
15369         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15370            : fip->fields[i - fip->baseclasses.size ()]);
15371
15372       TYPE_FIELD (type, i) = field.field;
15373       switch (field.accessibility)
15374         {
15375         case DW_ACCESS_private:
15376           if (cu->language != language_ada)
15377             SET_TYPE_FIELD_PRIVATE (type, i);
15378           break;
15379
15380         case DW_ACCESS_protected:
15381           if (cu->language != language_ada)
15382             SET_TYPE_FIELD_PROTECTED (type, i);
15383           break;
15384
15385         case DW_ACCESS_public:
15386           break;
15387
15388         default:
15389           /* Unknown accessibility.  Complain and treat it as public.  */
15390           {
15391             complaint (_("unsupported accessibility %d"),
15392                        field.accessibility);
15393           }
15394           break;
15395         }
15396       if (i < fip->baseclasses.size ())
15397         {
15398           switch (field.virtuality)
15399             {
15400             case DW_VIRTUALITY_virtual:
15401             case DW_VIRTUALITY_pure_virtual:
15402               if (cu->language == language_ada)
15403                 error (_("unexpected virtuality in component of Ada type"));
15404               SET_TYPE_FIELD_VIRTUAL (type, i);
15405               break;
15406             }
15407         }
15408     }
15409 }
15410
15411 /* Return true if this member function is a constructor, false
15412    otherwise.  */
15413
15414 static int
15415 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15416 {
15417   const char *fieldname;
15418   const char *type_name;
15419   int len;
15420
15421   if (die->parent == NULL)
15422     return 0;
15423
15424   if (die->parent->tag != DW_TAG_structure_type
15425       && die->parent->tag != DW_TAG_union_type
15426       && die->parent->tag != DW_TAG_class_type)
15427     return 0;
15428
15429   fieldname = dwarf2_name (die, cu);
15430   type_name = dwarf2_name (die->parent, cu);
15431   if (fieldname == NULL || type_name == NULL)
15432     return 0;
15433
15434   len = strlen (fieldname);
15435   return (strncmp (fieldname, type_name, len) == 0
15436           && (type_name[len] == '\0' || type_name[len] == '<'));
15437 }
15438
15439 /* Add a member function to the proper fieldlist.  */
15440
15441 static void
15442 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15443                       struct type *type, struct dwarf2_cu *cu)
15444 {
15445   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15446   struct attribute *attr;
15447   int i;
15448   struct fnfieldlist *flp = nullptr;
15449   struct fn_field *fnp;
15450   const char *fieldname;
15451   struct type *this_type;
15452   enum dwarf_access_attribute accessibility;
15453
15454   if (cu->language == language_ada)
15455     error (_("unexpected member function in Ada type"));
15456
15457   /* Get name of member function.  */
15458   fieldname = dwarf2_name (die, cu);
15459   if (fieldname == NULL)
15460     return;
15461
15462   /* Look up member function name in fieldlist.  */
15463   for (i = 0; i < fip->fnfieldlists.size (); i++)
15464     {
15465       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15466         {
15467           flp = &fip->fnfieldlists[i];
15468           break;
15469         }
15470     }
15471
15472   /* Create a new fnfieldlist if necessary.  */
15473   if (flp == nullptr)
15474     {
15475       fip->fnfieldlists.emplace_back ();
15476       flp = &fip->fnfieldlists.back ();
15477       flp->name = fieldname;
15478       i = fip->fnfieldlists.size () - 1;
15479     }
15480
15481   /* Create a new member function field and add it to the vector of
15482      fnfieldlists.  */
15483   flp->fnfields.emplace_back ();
15484   fnp = &flp->fnfields.back ();
15485
15486   /* Delay processing of the physname until later.  */
15487   if (cu->language == language_cplus)
15488     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15489                         die, cu);
15490   else
15491     {
15492       const char *physname = dwarf2_physname (fieldname, die, cu);
15493       fnp->physname = physname ? physname : "";
15494     }
15495
15496   fnp->type = alloc_type (objfile);
15497   this_type = read_type_die (die, cu);
15498   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15499     {
15500       int nparams = TYPE_NFIELDS (this_type);
15501
15502       /* TYPE is the domain of this method, and THIS_TYPE is the type
15503            of the method itself (TYPE_CODE_METHOD).  */
15504       smash_to_method_type (fnp->type, type,
15505                             TYPE_TARGET_TYPE (this_type),
15506                             TYPE_FIELDS (this_type),
15507                             TYPE_NFIELDS (this_type),
15508                             TYPE_VARARGS (this_type));
15509
15510       /* Handle static member functions.
15511          Dwarf2 has no clean way to discern C++ static and non-static
15512          member functions.  G++ helps GDB by marking the first
15513          parameter for non-static member functions (which is the this
15514          pointer) as artificial.  We obtain this information from
15515          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15516       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15517         fnp->voffset = VOFFSET_STATIC;
15518     }
15519   else
15520     complaint (_("member function type missing for '%s'"),
15521                dwarf2_full_name (fieldname, die, cu));
15522
15523   /* Get fcontext from DW_AT_containing_type if present.  */
15524   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15525     fnp->fcontext = die_containing_type (die, cu);
15526
15527   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15528      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15529
15530   /* Get accessibility.  */
15531   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15532   if (attr)
15533     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15534   else
15535     accessibility = dwarf2_default_access_attribute (die, cu);
15536   switch (accessibility)
15537     {
15538     case DW_ACCESS_private:
15539       fnp->is_private = 1;
15540       break;
15541     case DW_ACCESS_protected:
15542       fnp->is_protected = 1;
15543       break;
15544     }
15545
15546   /* Check for artificial methods.  */
15547   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15548   if (attr && DW_UNSND (attr) != 0)
15549     fnp->is_artificial = 1;
15550
15551   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15552
15553   /* Get index in virtual function table if it is a virtual member
15554      function.  For older versions of GCC, this is an offset in the
15555      appropriate virtual table, as specified by DW_AT_containing_type.
15556      For everyone else, it is an expression to be evaluated relative
15557      to the object address.  */
15558
15559   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15560   if (attr)
15561     {
15562       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15563         {
15564           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15565             {
15566               /* Old-style GCC.  */
15567               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15568             }
15569           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15570                    || (DW_BLOCK (attr)->size > 1
15571                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15572                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15573             {
15574               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15575               if ((fnp->voffset % cu->header.addr_size) != 0)
15576                 dwarf2_complex_location_expr_complaint ();
15577               else
15578                 fnp->voffset /= cu->header.addr_size;
15579               fnp->voffset += 2;
15580             }
15581           else
15582             dwarf2_complex_location_expr_complaint ();
15583
15584           if (!fnp->fcontext)
15585             {
15586               /* If there is no `this' field and no DW_AT_containing_type,
15587                  we cannot actually find a base class context for the
15588                  vtable!  */
15589               if (TYPE_NFIELDS (this_type) == 0
15590                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15591                 {
15592                   complaint (_("cannot determine context for virtual member "
15593                                "function \"%s\" (offset %s)"),
15594                              fieldname, sect_offset_str (die->sect_off));
15595                 }
15596               else
15597                 {
15598                   fnp->fcontext
15599                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15600                 }
15601             }
15602         }
15603       else if (attr_form_is_section_offset (attr))
15604         {
15605           dwarf2_complex_location_expr_complaint ();
15606         }
15607       else
15608         {
15609           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15610                                                  fieldname);
15611         }
15612     }
15613   else
15614     {
15615       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15616       if (attr && DW_UNSND (attr))
15617         {
15618           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15619           complaint (_("Member function \"%s\" (offset %s) is virtual "
15620                        "but the vtable offset is not specified"),
15621                      fieldname, sect_offset_str (die->sect_off));
15622           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15623           TYPE_CPLUS_DYNAMIC (type) = 1;
15624         }
15625     }
15626 }
15627
15628 /* Create the vector of member function fields, and attach it to the type.  */
15629
15630 static void
15631 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15632                                  struct dwarf2_cu *cu)
15633 {
15634   if (cu->language == language_ada)
15635     error (_("unexpected member functions in Ada type"));
15636
15637   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15638   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15639     TYPE_ALLOC (type,
15640                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15641
15642   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15643     {
15644       struct fnfieldlist &nf = fip->fnfieldlists[i];
15645       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15646
15647       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15648       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15649       fn_flp->fn_fields = (struct fn_field *)
15650         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15651
15652       for (int k = 0; k < nf.fnfields.size (); ++k)
15653         fn_flp->fn_fields[k] = nf.fnfields[k];
15654     }
15655
15656   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15657 }
15658
15659 /* Returns non-zero if NAME is the name of a vtable member in CU's
15660    language, zero otherwise.  */
15661 static int
15662 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15663 {
15664   static const char vptr[] = "_vptr";
15665
15666   /* Look for the C++ form of the vtable.  */
15667   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15668     return 1;
15669
15670   return 0;
15671 }
15672
15673 /* GCC outputs unnamed structures that are really pointers to member
15674    functions, with the ABI-specified layout.  If TYPE describes
15675    such a structure, smash it into a member function type.
15676
15677    GCC shouldn't do this; it should just output pointer to member DIEs.
15678    This is GCC PR debug/28767.  */
15679
15680 static void
15681 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15682 {
15683   struct type *pfn_type, *self_type, *new_type;
15684
15685   /* Check for a structure with no name and two children.  */
15686   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15687     return;
15688
15689   /* Check for __pfn and __delta members.  */
15690   if (TYPE_FIELD_NAME (type, 0) == NULL
15691       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15692       || TYPE_FIELD_NAME (type, 1) == NULL
15693       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15694     return;
15695
15696   /* Find the type of the method.  */
15697   pfn_type = TYPE_FIELD_TYPE (type, 0);
15698   if (pfn_type == NULL
15699       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15700       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15701     return;
15702
15703   /* Look for the "this" argument.  */
15704   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15705   if (TYPE_NFIELDS (pfn_type) == 0
15706       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15707       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15708     return;
15709
15710   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15711   new_type = alloc_type (objfile);
15712   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15713                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15714                         TYPE_VARARGS (pfn_type));
15715   smash_to_methodptr_type (type, new_type);
15716 }
15717
15718 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15719    appropriate error checking and issuing complaints if there is a
15720    problem.  */
15721
15722 static ULONGEST
15723 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15724 {
15725   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15726
15727   if (attr == nullptr)
15728     return 0;
15729
15730   if (!attr_form_is_constant (attr))
15731     {
15732       complaint (_("DW_AT_alignment must have constant form"
15733                    " - DIE at %s [in module %s]"),
15734                  sect_offset_str (die->sect_off),
15735                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15736       return 0;
15737     }
15738
15739   ULONGEST align;
15740   if (attr->form == DW_FORM_sdata)
15741     {
15742       LONGEST val = DW_SND (attr);
15743       if (val < 0)
15744         {
15745           complaint (_("DW_AT_alignment value must not be negative"
15746                        " - DIE at %s [in module %s]"),
15747                      sect_offset_str (die->sect_off),
15748                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15749           return 0;
15750         }
15751       align = val;
15752     }
15753   else
15754     align = DW_UNSND (attr);
15755
15756   if (align == 0)
15757     {
15758       complaint (_("DW_AT_alignment value must not be zero"
15759                    " - DIE at %s [in module %s]"),
15760                  sect_offset_str (die->sect_off),
15761                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15762       return 0;
15763     }
15764   if ((align & (align - 1)) != 0)
15765     {
15766       complaint (_("DW_AT_alignment value must be a power of 2"
15767                    " - DIE at %s [in module %s]"),
15768                  sect_offset_str (die->sect_off),
15769                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15770       return 0;
15771     }
15772
15773   return align;
15774 }
15775
15776 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15777    the alignment for TYPE.  */
15778
15779 static void
15780 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15781                      struct type *type)
15782 {
15783   if (!set_type_align (type, get_alignment (cu, die)))
15784     complaint (_("DW_AT_alignment value too large"
15785                  " - DIE at %s [in module %s]"),
15786                sect_offset_str (die->sect_off),
15787                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15788 }
15789
15790 /* Called when we find the DIE that starts a structure or union scope
15791    (definition) to create a type for the structure or union.  Fill in
15792    the type's name and general properties; the members will not be
15793    processed until process_structure_scope.  A symbol table entry for
15794    the type will also not be done until process_structure_scope (assuming
15795    the type has a name).
15796
15797    NOTE: we need to call these functions regardless of whether or not the
15798    DIE has a DW_AT_name attribute, since it might be an anonymous
15799    structure or union.  This gets the type entered into our set of
15800    user defined types.  */
15801
15802 static struct type *
15803 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15804 {
15805   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15806   struct type *type;
15807   struct attribute *attr;
15808   const char *name;
15809
15810   /* If the definition of this type lives in .debug_types, read that type.
15811      Don't follow DW_AT_specification though, that will take us back up
15812      the chain and we want to go down.  */
15813   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15814   if (attr)
15815     {
15816       type = get_DW_AT_signature_type (die, attr, cu);
15817
15818       /* The type's CU may not be the same as CU.
15819          Ensure TYPE is recorded with CU in die_type_hash.  */
15820       return set_die_type (die, type, cu);
15821     }
15822
15823   type = alloc_type (objfile);
15824   INIT_CPLUS_SPECIFIC (type);
15825
15826   name = dwarf2_name (die, cu);
15827   if (name != NULL)
15828     {
15829       if (cu->language == language_cplus
15830           || cu->language == language_d
15831           || cu->language == language_rust)
15832         {
15833           const char *full_name = dwarf2_full_name (name, die, cu);
15834
15835           /* dwarf2_full_name might have already finished building the DIE's
15836              type.  If so, there is no need to continue.  */
15837           if (get_die_type (die, cu) != NULL)
15838             return get_die_type (die, cu);
15839
15840           TYPE_NAME (type) = full_name;
15841         }
15842       else
15843         {
15844           /* The name is already allocated along with this objfile, so
15845              we don't need to duplicate it for the type.  */
15846           TYPE_NAME (type) = name;
15847         }
15848     }
15849
15850   if (die->tag == DW_TAG_structure_type)
15851     {
15852       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15853     }
15854   else if (die->tag == DW_TAG_union_type)
15855     {
15856       TYPE_CODE (type) = TYPE_CODE_UNION;
15857     }
15858   else if (die->tag == DW_TAG_variant_part)
15859     {
15860       TYPE_CODE (type) = TYPE_CODE_UNION;
15861       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15862     }
15863   else
15864     {
15865       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15866     }
15867
15868   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15869     TYPE_DECLARED_CLASS (type) = 1;
15870
15871   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15872   if (attr)
15873     {
15874       if (attr_form_is_constant (attr))
15875         TYPE_LENGTH (type) = DW_UNSND (attr);
15876       else
15877         {
15878           /* For the moment, dynamic type sizes are not supported
15879              by GDB's struct type.  The actual size is determined
15880              on-demand when resolving the type of a given object,
15881              so set the type's length to zero for now.  Otherwise,
15882              we record an expression as the length, and that expression
15883              could lead to a very large value, which could eventually
15884              lead to us trying to allocate that much memory when creating
15885              a value of that type.  */
15886           TYPE_LENGTH (type) = 0;
15887         }
15888     }
15889   else
15890     {
15891       TYPE_LENGTH (type) = 0;
15892     }
15893
15894   maybe_set_alignment (cu, die, type);
15895
15896   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15897     {
15898       /* ICC<14 does not output the required DW_AT_declaration on
15899          incomplete types, but gives them a size of zero.  */
15900       TYPE_STUB (type) = 1;
15901     }
15902   else
15903     TYPE_STUB_SUPPORTED (type) = 1;
15904
15905   if (die_is_declaration (die, cu))
15906     TYPE_STUB (type) = 1;
15907   else if (attr == NULL && die->child == NULL
15908            && producer_is_realview (cu->producer))
15909     /* RealView does not output the required DW_AT_declaration
15910        on incomplete types.  */
15911     TYPE_STUB (type) = 1;
15912
15913   /* We need to add the type field to the die immediately so we don't
15914      infinitely recurse when dealing with pointers to the structure
15915      type within the structure itself.  */
15916   set_die_type (die, type, cu);
15917
15918   /* set_die_type should be already done.  */
15919   set_descriptive_type (type, die, cu);
15920
15921   return type;
15922 }
15923
15924 /* A helper for process_structure_scope that handles a single member
15925    DIE.  */
15926
15927 static void
15928 handle_struct_member_die (struct die_info *child_die, struct type *type,
15929                           struct field_info *fi,
15930                           std::vector<struct symbol *> *template_args,
15931                           struct dwarf2_cu *cu)
15932 {
15933   if (child_die->tag == DW_TAG_member
15934       || child_die->tag == DW_TAG_variable
15935       || child_die->tag == DW_TAG_variant_part)
15936     {
15937       /* NOTE: carlton/2002-11-05: A C++ static data member
15938          should be a DW_TAG_member that is a declaration, but
15939          all versions of G++ as of this writing (so through at
15940          least 3.2.1) incorrectly generate DW_TAG_variable
15941          tags for them instead.  */
15942       dwarf2_add_field (fi, child_die, cu);
15943     }
15944   else if (child_die->tag == DW_TAG_subprogram)
15945     {
15946       /* Rust doesn't have member functions in the C++ sense.
15947          However, it does emit ordinary functions as children
15948          of a struct DIE.  */
15949       if (cu->language == language_rust)
15950         read_func_scope (child_die, cu);
15951       else
15952         {
15953           /* C++ member function.  */
15954           dwarf2_add_member_fn (fi, child_die, type, cu);
15955         }
15956     }
15957   else if (child_die->tag == DW_TAG_inheritance)
15958     {
15959       /* C++ base class field.  */
15960       dwarf2_add_field (fi, child_die, cu);
15961     }
15962   else if (type_can_define_types (child_die))
15963     dwarf2_add_type_defn (fi, child_die, cu);
15964   else if (child_die->tag == DW_TAG_template_type_param
15965            || child_die->tag == DW_TAG_template_value_param)
15966     {
15967       struct symbol *arg = new_symbol (child_die, NULL, cu);
15968
15969       if (arg != NULL)
15970         template_args->push_back (arg);
15971     }
15972   else if (child_die->tag == DW_TAG_variant)
15973     {
15974       /* In a variant we want to get the discriminant and also add a
15975          field for our sole member child.  */
15976       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15977
15978       for (die_info *variant_child = child_die->child;
15979            variant_child != NULL;
15980            variant_child = sibling_die (variant_child))
15981         {
15982           if (variant_child->tag == DW_TAG_member)
15983             {
15984               handle_struct_member_die (variant_child, type, fi,
15985                                         template_args, cu);
15986               /* Only handle the one.  */
15987               break;
15988             }
15989         }
15990
15991       /* We don't handle this but we might as well report it if we see
15992          it.  */
15993       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15994           complaint (_("DW_AT_discr_list is not supported yet"
15995                        " - DIE at %s [in module %s]"),
15996                      sect_offset_str (child_die->sect_off),
15997                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15998
15999       /* The first field was just added, so we can stash the
16000          discriminant there.  */
16001       gdb_assert (!fi->fields.empty ());
16002       if (discr == NULL)
16003         fi->fields.back ().variant.default_branch = true;
16004       else
16005         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
16006     }
16007 }
16008
16009 /* Finish creating a structure or union type, including filling in
16010    its members and creating a symbol for it.  */
16011
16012 static void
16013 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
16014 {
16015   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16016   struct die_info *child_die;
16017   struct type *type;
16018
16019   type = get_die_type (die, cu);
16020   if (type == NULL)
16021     type = read_structure_type (die, cu);
16022
16023   /* When reading a DW_TAG_variant_part, we need to notice when we
16024      read the discriminant member, so we can record it later in the
16025      discriminant_info.  */
16026   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16027   sect_offset discr_offset;
16028   bool has_template_parameters = false;
16029
16030   if (is_variant_part)
16031     {
16032       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16033       if (discr == NULL)
16034         {
16035           /* Maybe it's a univariant form, an extension we support.
16036              In this case arrange not to check the offset.  */
16037           is_variant_part = false;
16038         }
16039       else if (attr_form_is_ref (discr))
16040         {
16041           struct dwarf2_cu *target_cu = cu;
16042           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16043
16044           discr_offset = target_die->sect_off;
16045         }
16046       else
16047         {
16048           complaint (_("DW_AT_discr does not have DIE reference form"
16049                        " - DIE at %s [in module %s]"),
16050                      sect_offset_str (die->sect_off),
16051                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16052           is_variant_part = false;
16053         }
16054     }
16055
16056   if (die->child != NULL && ! die_is_declaration (die, cu))
16057     {
16058       struct field_info fi;
16059       std::vector<struct symbol *> template_args;
16060
16061       child_die = die->child;
16062
16063       while (child_die && child_die->tag)
16064         {
16065           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16066
16067           if (is_variant_part && discr_offset == child_die->sect_off)
16068             fi.fields.back ().variant.is_discriminant = true;
16069
16070           child_die = sibling_die (child_die);
16071         }
16072
16073       /* Attach template arguments to type.  */
16074       if (!template_args.empty ())
16075         {
16076           has_template_parameters = true;
16077           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16078           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16079           TYPE_TEMPLATE_ARGUMENTS (type)
16080             = XOBNEWVEC (&objfile->objfile_obstack,
16081                          struct symbol *,
16082                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16083           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16084                   template_args.data (),
16085                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16086                    * sizeof (struct symbol *)));
16087         }
16088
16089       /* Attach fields and member functions to the type.  */
16090       if (fi.nfields)
16091         dwarf2_attach_fields_to_type (&fi, type, cu);
16092       if (!fi.fnfieldlists.empty ())
16093         {
16094           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16095
16096           /* Get the type which refers to the base class (possibly this
16097              class itself) which contains the vtable pointer for the current
16098              class from the DW_AT_containing_type attribute.  This use of
16099              DW_AT_containing_type is a GNU extension.  */
16100
16101           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16102             {
16103               struct type *t = die_containing_type (die, cu);
16104
16105               set_type_vptr_basetype (type, t);
16106               if (type == t)
16107                 {
16108                   int i;
16109
16110                   /* Our own class provides vtbl ptr.  */
16111                   for (i = TYPE_NFIELDS (t) - 1;
16112                        i >= TYPE_N_BASECLASSES (t);
16113                        --i)
16114                     {
16115                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16116
16117                       if (is_vtable_name (fieldname, cu))
16118                         {
16119                           set_type_vptr_fieldno (type, i);
16120                           break;
16121                         }
16122                     }
16123
16124                   /* Complain if virtual function table field not found.  */
16125                   if (i < TYPE_N_BASECLASSES (t))
16126                     complaint (_("virtual function table pointer "
16127                                  "not found when defining class '%s'"),
16128                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16129                 }
16130               else
16131                 {
16132                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16133                 }
16134             }
16135           else if (cu->producer
16136                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16137             {
16138               /* The IBM XLC compiler does not provide direct indication
16139                  of the containing type, but the vtable pointer is
16140                  always named __vfp.  */
16141
16142               int i;
16143
16144               for (i = TYPE_NFIELDS (type) - 1;
16145                    i >= TYPE_N_BASECLASSES (type);
16146                    --i)
16147                 {
16148                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16149                     {
16150                       set_type_vptr_fieldno (type, i);
16151                       set_type_vptr_basetype (type, type);
16152                       break;
16153                     }
16154                 }
16155             }
16156         }
16157
16158       /* Copy fi.typedef_field_list linked list elements content into the
16159          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16160       if (!fi.typedef_field_list.empty ())
16161         {
16162           int count = fi.typedef_field_list.size ();
16163
16164           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16165           TYPE_TYPEDEF_FIELD_ARRAY (type)
16166             = ((struct decl_field *)
16167                TYPE_ALLOC (type,
16168                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16169           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16170
16171           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16172             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16173         }
16174
16175       /* Copy fi.nested_types_list linked list elements content into the
16176          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16177       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16178         {
16179           int count = fi.nested_types_list.size ();
16180
16181           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16182           TYPE_NESTED_TYPES_ARRAY (type)
16183             = ((struct decl_field *)
16184                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16185           TYPE_NESTED_TYPES_COUNT (type) = count;
16186
16187           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16188             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16189         }
16190     }
16191
16192   quirk_gcc_member_function_pointer (type, objfile);
16193   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16194     cu->rust_unions.push_back (type);
16195
16196   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16197      snapshots) has been known to create a die giving a declaration
16198      for a class that has, as a child, a die giving a definition for a
16199      nested class.  So we have to process our children even if the
16200      current die is a declaration.  Normally, of course, a declaration
16201      won't have any children at all.  */
16202
16203   child_die = die->child;
16204
16205   while (child_die != NULL && child_die->tag)
16206     {
16207       if (child_die->tag == DW_TAG_member
16208           || child_die->tag == DW_TAG_variable
16209           || child_die->tag == DW_TAG_inheritance
16210           || child_die->tag == DW_TAG_template_value_param
16211           || child_die->tag == DW_TAG_template_type_param)
16212         {
16213           /* Do nothing.  */
16214         }
16215       else
16216         process_die (child_die, cu);
16217
16218       child_die = sibling_die (child_die);
16219     }
16220
16221   /* Do not consider external references.  According to the DWARF standard,
16222      these DIEs are identified by the fact that they have no byte_size
16223      attribute, and a declaration attribute.  */
16224   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16225       || !die_is_declaration (die, cu))
16226     {
16227       struct symbol *sym = new_symbol (die, type, cu);
16228
16229       if (has_template_parameters)
16230         {
16231           struct symtab *symtab;
16232           if (sym != nullptr)
16233             symtab = symbol_symtab (sym);
16234           else if (cu->line_header != nullptr)
16235             {
16236               /* Any related symtab will do.  */
16237               symtab
16238                 = cu->line_header->file_name_at (file_name_index (1))->symtab;
16239             }
16240           else
16241             {
16242               symtab = nullptr;
16243               complaint (_("could not find suitable "
16244                            "symtab for template parameter"
16245                            " - DIE at %s [in module %s]"),
16246                          sect_offset_str (die->sect_off),
16247                          objfile_name (objfile));
16248             }
16249
16250           if (symtab != nullptr)
16251             {
16252               /* Make sure that the symtab is set on the new symbols.
16253                  Even though they don't appear in this symtab directly,
16254                  other parts of gdb assume that symbols do, and this is
16255                  reasonably true.  */
16256               for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16257                 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
16258             }
16259         }
16260     }
16261 }
16262
16263 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16264    update TYPE using some information only available in DIE's children.  */
16265
16266 static void
16267 update_enumeration_type_from_children (struct die_info *die,
16268                                        struct type *type,
16269                                        struct dwarf2_cu *cu)
16270 {
16271   struct die_info *child_die;
16272   int unsigned_enum = 1;
16273   int flag_enum = 1;
16274   ULONGEST mask = 0;
16275
16276   auto_obstack obstack;
16277
16278   for (child_die = die->child;
16279        child_die != NULL && child_die->tag;
16280        child_die = sibling_die (child_die))
16281     {
16282       struct attribute *attr;
16283       LONGEST value;
16284       const gdb_byte *bytes;
16285       struct dwarf2_locexpr_baton *baton;
16286       const char *name;
16287
16288       if (child_die->tag != DW_TAG_enumerator)
16289         continue;
16290
16291       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16292       if (attr == NULL)
16293         continue;
16294
16295       name = dwarf2_name (child_die, cu);
16296       if (name == NULL)
16297         name = "<anonymous enumerator>";
16298
16299       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16300                                &value, &bytes, &baton);
16301       if (value < 0)
16302         {
16303           unsigned_enum = 0;
16304           flag_enum = 0;
16305         }
16306       else if ((mask & value) != 0)
16307         flag_enum = 0;
16308       else
16309         mask |= value;
16310
16311       /* If we already know that the enum type is neither unsigned, nor
16312          a flag type, no need to look at the rest of the enumerates.  */
16313       if (!unsigned_enum && !flag_enum)
16314         break;
16315     }
16316
16317   if (unsigned_enum)
16318     TYPE_UNSIGNED (type) = 1;
16319   if (flag_enum)
16320     TYPE_FLAG_ENUM (type) = 1;
16321 }
16322
16323 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16324    complete the type's fields yet, or create any symbols.  */
16325
16326 static struct type *
16327 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16328 {
16329   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16330   struct type *type;
16331   struct attribute *attr;
16332   const char *name;
16333
16334   /* If the definition of this type lives in .debug_types, read that type.
16335      Don't follow DW_AT_specification though, that will take us back up
16336      the chain and we want to go down.  */
16337   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16338   if (attr)
16339     {
16340       type = get_DW_AT_signature_type (die, attr, cu);
16341
16342       /* The type's CU may not be the same as CU.
16343          Ensure TYPE is recorded with CU in die_type_hash.  */
16344       return set_die_type (die, type, cu);
16345     }
16346
16347   type = alloc_type (objfile);
16348
16349   TYPE_CODE (type) = TYPE_CODE_ENUM;
16350   name = dwarf2_full_name (NULL, die, cu);
16351   if (name != NULL)
16352     TYPE_NAME (type) = name;
16353
16354   attr = dwarf2_attr (die, DW_AT_type, cu);
16355   if (attr != NULL)
16356     {
16357       struct type *underlying_type = die_type (die, cu);
16358
16359       TYPE_TARGET_TYPE (type) = underlying_type;
16360     }
16361
16362   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16363   if (attr)
16364     {
16365       TYPE_LENGTH (type) = DW_UNSND (attr);
16366     }
16367   else
16368     {
16369       TYPE_LENGTH (type) = 0;
16370     }
16371
16372   maybe_set_alignment (cu, die, type);
16373
16374   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16375      declared as private in the package spec, and then defined only
16376      inside the package body.  Such types are known as Taft Amendment
16377      Types.  When another package uses such a type, an incomplete DIE
16378      may be generated by the compiler.  */
16379   if (die_is_declaration (die, cu))
16380     TYPE_STUB (type) = 1;
16381
16382   /* Finish the creation of this type by using the enum's children.
16383      We must call this even when the underlying type has been provided
16384      so that we can determine if we're looking at a "flag" enum.  */
16385   update_enumeration_type_from_children (die, type, cu);
16386
16387   /* If this type has an underlying type that is not a stub, then we
16388      may use its attributes.  We always use the "unsigned" attribute
16389      in this situation, because ordinarily we guess whether the type
16390      is unsigned -- but the guess can be wrong and the underlying type
16391      can tell us the reality.  However, we defer to a local size
16392      attribute if one exists, because this lets the compiler override
16393      the underlying type if needed.  */
16394   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16395     {
16396       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16397       if (TYPE_LENGTH (type) == 0)
16398         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16399       if (TYPE_RAW_ALIGN (type) == 0
16400           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16401         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16402     }
16403
16404   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16405
16406   return set_die_type (die, type, cu);
16407 }
16408
16409 /* Given a pointer to a die which begins an enumeration, process all
16410    the dies that define the members of the enumeration, and create the
16411    symbol for the enumeration type.
16412
16413    NOTE: We reverse the order of the element list.  */
16414
16415 static void
16416 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16417 {
16418   struct type *this_type;
16419
16420   this_type = get_die_type (die, cu);
16421   if (this_type == NULL)
16422     this_type = read_enumeration_type (die, cu);
16423
16424   if (die->child != NULL)
16425     {
16426       struct die_info *child_die;
16427       struct symbol *sym;
16428       struct field *fields = NULL;
16429       int num_fields = 0;
16430       const char *name;
16431
16432       child_die = die->child;
16433       while (child_die && child_die->tag)
16434         {
16435           if (child_die->tag != DW_TAG_enumerator)
16436             {
16437               process_die (child_die, cu);
16438             }
16439           else
16440             {
16441               name = dwarf2_name (child_die, cu);
16442               if (name)
16443                 {
16444                   sym = new_symbol (child_die, this_type, cu);
16445
16446                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16447                     {
16448                       fields = (struct field *)
16449                         xrealloc (fields,
16450                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16451                                   * sizeof (struct field));
16452                     }
16453
16454                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16455                   FIELD_TYPE (fields[num_fields]) = NULL;
16456                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16457                   FIELD_BITSIZE (fields[num_fields]) = 0;
16458
16459                   num_fields++;
16460                 }
16461             }
16462
16463           child_die = sibling_die (child_die);
16464         }
16465
16466       if (num_fields)
16467         {
16468           TYPE_NFIELDS (this_type) = num_fields;
16469           TYPE_FIELDS (this_type) = (struct field *)
16470             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16471           memcpy (TYPE_FIELDS (this_type), fields,
16472                   sizeof (struct field) * num_fields);
16473           xfree (fields);
16474         }
16475     }
16476
16477   /* If we are reading an enum from a .debug_types unit, and the enum
16478      is a declaration, and the enum is not the signatured type in the
16479      unit, then we do not want to add a symbol for it.  Adding a
16480      symbol would in some cases obscure the true definition of the
16481      enum, giving users an incomplete type when the definition is
16482      actually available.  Note that we do not want to do this for all
16483      enums which are just declarations, because C++0x allows forward
16484      enum declarations.  */
16485   if (cu->per_cu->is_debug_types
16486       && die_is_declaration (die, cu))
16487     {
16488       struct signatured_type *sig_type;
16489
16490       sig_type = (struct signatured_type *) cu->per_cu;
16491       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16492       if (sig_type->type_offset_in_section != die->sect_off)
16493         return;
16494     }
16495
16496   new_symbol (die, this_type, cu);
16497 }
16498
16499 /* Extract all information from a DW_TAG_array_type DIE and put it in
16500    the DIE's type field.  For now, this only handles one dimensional
16501    arrays.  */
16502
16503 static struct type *
16504 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16505 {
16506   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16507   struct die_info *child_die;
16508   struct type *type;
16509   struct type *element_type, *range_type, *index_type;
16510   struct attribute *attr;
16511   const char *name;
16512   struct dynamic_prop *byte_stride_prop = NULL;
16513   unsigned int bit_stride = 0;
16514
16515   element_type = die_type (die, cu);
16516
16517   /* The die_type call above may have already set the type for this DIE.  */
16518   type = get_die_type (die, cu);
16519   if (type)
16520     return type;
16521
16522   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16523   if (attr != NULL)
16524     {
16525       int stride_ok;
16526
16527       byte_stride_prop
16528         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16529       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16530       if (!stride_ok)
16531         {
16532           complaint (_("unable to read array DW_AT_byte_stride "
16533                        " - DIE at %s [in module %s]"),
16534                      sect_offset_str (die->sect_off),
16535                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16536           /* Ignore this attribute.  We will likely not be able to print
16537              arrays of this type correctly, but there is little we can do
16538              to help if we cannot read the attribute's value.  */
16539           byte_stride_prop = NULL;
16540         }
16541     }
16542
16543   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16544   if (attr != NULL)
16545     bit_stride = DW_UNSND (attr);
16546
16547   /* Irix 6.2 native cc creates array types without children for
16548      arrays with unspecified length.  */
16549   if (die->child == NULL)
16550     {
16551       index_type = objfile_type (objfile)->builtin_int;
16552       range_type = create_static_range_type (NULL, index_type, 0, -1);
16553       type = create_array_type_with_stride (NULL, element_type, range_type,
16554                                             byte_stride_prop, bit_stride);
16555       return set_die_type (die, type, cu);
16556     }
16557
16558   std::vector<struct type *> range_types;
16559   child_die = die->child;
16560   while (child_die && child_die->tag)
16561     {
16562       if (child_die->tag == DW_TAG_subrange_type)
16563         {
16564           struct type *child_type = read_type_die (child_die, cu);
16565
16566           if (child_type != NULL)
16567             {
16568               /* The range type was succesfully read.  Save it for the
16569                  array type creation.  */
16570               range_types.push_back (child_type);
16571             }
16572         }
16573       child_die = sibling_die (child_die);
16574     }
16575
16576   /* Dwarf2 dimensions are output from left to right, create the
16577      necessary array types in backwards order.  */
16578
16579   type = element_type;
16580
16581   if (read_array_order (die, cu) == DW_ORD_col_major)
16582     {
16583       int i = 0;
16584
16585       while (i < range_types.size ())
16586         type = create_array_type_with_stride (NULL, type, range_types[i++],
16587                                               byte_stride_prop, bit_stride);
16588     }
16589   else
16590     {
16591       size_t ndim = range_types.size ();
16592       while (ndim-- > 0)
16593         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16594                                               byte_stride_prop, bit_stride);
16595     }
16596
16597   /* Understand Dwarf2 support for vector types (like they occur on
16598      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16599      array type.  This is not part of the Dwarf2/3 standard yet, but a
16600      custom vendor extension.  The main difference between a regular
16601      array and the vector variant is that vectors are passed by value
16602      to functions.  */
16603   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16604   if (attr)
16605     make_vector_type (type);
16606
16607   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16608      implementation may choose to implement triple vectors using this
16609      attribute.  */
16610   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16611   if (attr)
16612     {
16613       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16614         TYPE_LENGTH (type) = DW_UNSND (attr);
16615       else
16616         complaint (_("DW_AT_byte_size for array type smaller "
16617                      "than the total size of elements"));
16618     }
16619
16620   name = dwarf2_name (die, cu);
16621   if (name)
16622     TYPE_NAME (type) = name;
16623
16624   maybe_set_alignment (cu, die, type);
16625
16626   /* Install the type in the die.  */
16627   set_die_type (die, type, cu);
16628
16629   /* set_die_type should be already done.  */
16630   set_descriptive_type (type, die, cu);
16631
16632   return type;
16633 }
16634
16635 static enum dwarf_array_dim_ordering
16636 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16637 {
16638   struct attribute *attr;
16639
16640   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16641
16642   if (attr)
16643     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16644
16645   /* GNU F77 is a special case, as at 08/2004 array type info is the
16646      opposite order to the dwarf2 specification, but data is still
16647      laid out as per normal fortran.
16648
16649      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16650      version checking.  */
16651
16652   if (cu->language == language_fortran
16653       && cu->producer && strstr (cu->producer, "GNU F77"))
16654     {
16655       return DW_ORD_row_major;
16656     }
16657
16658   switch (cu->language_defn->la_array_ordering)
16659     {
16660     case array_column_major:
16661       return DW_ORD_col_major;
16662     case array_row_major:
16663     default:
16664       return DW_ORD_row_major;
16665     };
16666 }
16667
16668 /* Extract all information from a DW_TAG_set_type DIE and put it in
16669    the DIE's type field.  */
16670
16671 static struct type *
16672 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16673 {
16674   struct type *domain_type, *set_type;
16675   struct attribute *attr;
16676
16677   domain_type = die_type (die, cu);
16678
16679   /* The die_type call above may have already set the type for this DIE.  */
16680   set_type = get_die_type (die, cu);
16681   if (set_type)
16682     return set_type;
16683
16684   set_type = create_set_type (NULL, domain_type);
16685
16686   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16687   if (attr)
16688     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16689
16690   maybe_set_alignment (cu, die, set_type);
16691
16692   return set_die_type (die, set_type, cu);
16693 }
16694
16695 /* A helper for read_common_block that creates a locexpr baton.
16696    SYM is the symbol which we are marking as computed.
16697    COMMON_DIE is the DIE for the common block.
16698    COMMON_LOC is the location expression attribute for the common
16699    block itself.
16700    MEMBER_LOC is the location expression attribute for the particular
16701    member of the common block that we are processing.
16702    CU is the CU from which the above come.  */
16703
16704 static void
16705 mark_common_block_symbol_computed (struct symbol *sym,
16706                                    struct die_info *common_die,
16707                                    struct attribute *common_loc,
16708                                    struct attribute *member_loc,
16709                                    struct dwarf2_cu *cu)
16710 {
16711   struct dwarf2_per_objfile *dwarf2_per_objfile
16712     = cu->per_cu->dwarf2_per_objfile;
16713   struct objfile *objfile = dwarf2_per_objfile->objfile;
16714   struct dwarf2_locexpr_baton *baton;
16715   gdb_byte *ptr;
16716   unsigned int cu_off;
16717   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16718   LONGEST offset = 0;
16719
16720   gdb_assert (common_loc && member_loc);
16721   gdb_assert (attr_form_is_block (common_loc));
16722   gdb_assert (attr_form_is_block (member_loc)
16723               || attr_form_is_constant (member_loc));
16724
16725   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16726   baton->per_cu = cu->per_cu;
16727   gdb_assert (baton->per_cu);
16728
16729   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16730
16731   if (attr_form_is_constant (member_loc))
16732     {
16733       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16734       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16735     }
16736   else
16737     baton->size += DW_BLOCK (member_loc)->size;
16738
16739   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16740   baton->data = ptr;
16741
16742   *ptr++ = DW_OP_call4;
16743   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16744   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16745   ptr += 4;
16746
16747   if (attr_form_is_constant (member_loc))
16748     {
16749       *ptr++ = DW_OP_addr;
16750       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16751       ptr += cu->header.addr_size;
16752     }
16753   else
16754     {
16755       /* We have to copy the data here, because DW_OP_call4 will only
16756          use a DW_AT_location attribute.  */
16757       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16758       ptr += DW_BLOCK (member_loc)->size;
16759     }
16760
16761   *ptr++ = DW_OP_plus;
16762   gdb_assert (ptr - baton->data == baton->size);
16763
16764   SYMBOL_LOCATION_BATON (sym) = baton;
16765   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16766 }
16767
16768 /* Create appropriate locally-scoped variables for all the
16769    DW_TAG_common_block entries.  Also create a struct common_block
16770    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16771    is used to sepate the common blocks name namespace from regular
16772    variable names.  */
16773
16774 static void
16775 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16776 {
16777   struct attribute *attr;
16778
16779   attr = dwarf2_attr (die, DW_AT_location, cu);
16780   if (attr)
16781     {
16782       /* Support the .debug_loc offsets.  */
16783       if (attr_form_is_block (attr))
16784         {
16785           /* Ok.  */
16786         }
16787       else if (attr_form_is_section_offset (attr))
16788         {
16789           dwarf2_complex_location_expr_complaint ();
16790           attr = NULL;
16791         }
16792       else
16793         {
16794           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16795                                                  "common block member");
16796           attr = NULL;
16797         }
16798     }
16799
16800   if (die->child != NULL)
16801     {
16802       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16803       struct die_info *child_die;
16804       size_t n_entries = 0, size;
16805       struct common_block *common_block;
16806       struct symbol *sym;
16807
16808       for (child_die = die->child;
16809            child_die && child_die->tag;
16810            child_die = sibling_die (child_die))
16811         ++n_entries;
16812
16813       size = (sizeof (struct common_block)
16814               + (n_entries - 1) * sizeof (struct symbol *));
16815       common_block
16816         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16817                                                  size);
16818       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16819       common_block->n_entries = 0;
16820
16821       for (child_die = die->child;
16822            child_die && child_die->tag;
16823            child_die = sibling_die (child_die))
16824         {
16825           /* Create the symbol in the DW_TAG_common_block block in the current
16826              symbol scope.  */
16827           sym = new_symbol (child_die, NULL, cu);
16828           if (sym != NULL)
16829             {
16830               struct attribute *member_loc;
16831
16832               common_block->contents[common_block->n_entries++] = sym;
16833
16834               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16835                                         cu);
16836               if (member_loc)
16837                 {
16838                   /* GDB has handled this for a long time, but it is
16839                      not specified by DWARF.  It seems to have been
16840                      emitted by gfortran at least as recently as:
16841                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16842                   complaint (_("Variable in common block has "
16843                                "DW_AT_data_member_location "
16844                                "- DIE at %s [in module %s]"),
16845                                sect_offset_str (child_die->sect_off),
16846                              objfile_name (objfile));
16847
16848                   if (attr_form_is_section_offset (member_loc))
16849                     dwarf2_complex_location_expr_complaint ();
16850                   else if (attr_form_is_constant (member_loc)
16851                            || attr_form_is_block (member_loc))
16852                     {
16853                       if (attr)
16854                         mark_common_block_symbol_computed (sym, die, attr,
16855                                                            member_loc, cu);
16856                     }
16857                   else
16858                     dwarf2_complex_location_expr_complaint ();
16859                 }
16860             }
16861         }
16862
16863       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16864       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16865     }
16866 }
16867
16868 /* Create a type for a C++ namespace.  */
16869
16870 static struct type *
16871 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16872 {
16873   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16874   const char *previous_prefix, *name;
16875   int is_anonymous;
16876   struct type *type;
16877
16878   /* For extensions, reuse the type of the original namespace.  */
16879   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16880     {
16881       struct die_info *ext_die;
16882       struct dwarf2_cu *ext_cu = cu;
16883
16884       ext_die = dwarf2_extension (die, &ext_cu);
16885       type = read_type_die (ext_die, ext_cu);
16886
16887       /* EXT_CU may not be the same as CU.
16888          Ensure TYPE is recorded with CU in die_type_hash.  */
16889       return set_die_type (die, type, cu);
16890     }
16891
16892   name = namespace_name (die, &is_anonymous, cu);
16893
16894   /* Now build the name of the current namespace.  */
16895
16896   previous_prefix = determine_prefix (die, cu);
16897   if (previous_prefix[0] != '\0')
16898     name = typename_concat (&objfile->objfile_obstack,
16899                             previous_prefix, name, 0, cu);
16900
16901   /* Create the type.  */
16902   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16903
16904   return set_die_type (die, type, cu);
16905 }
16906
16907 /* Read a namespace scope.  */
16908
16909 static void
16910 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16911 {
16912   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16913   int is_anonymous;
16914
16915   /* Add a symbol associated to this if we haven't seen the namespace
16916      before.  Also, add a using directive if it's an anonymous
16917      namespace.  */
16918
16919   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16920     {
16921       struct type *type;
16922
16923       type = read_type_die (die, cu);
16924       new_symbol (die, type, cu);
16925
16926       namespace_name (die, &is_anonymous, cu);
16927       if (is_anonymous)
16928         {
16929           const char *previous_prefix = determine_prefix (die, cu);
16930
16931           std::vector<const char *> excludes;
16932           add_using_directive (using_directives (cu),
16933                                previous_prefix, TYPE_NAME (type), NULL,
16934                                NULL, excludes, 0, &objfile->objfile_obstack);
16935         }
16936     }
16937
16938   if (die->child != NULL)
16939     {
16940       struct die_info *child_die = die->child;
16941
16942       while (child_die && child_die->tag)
16943         {
16944           process_die (child_die, cu);
16945           child_die = sibling_die (child_die);
16946         }
16947     }
16948 }
16949
16950 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16951    imported module.  Still we need that type as local Fortran "use ... only"
16952    declaration imports depend on the created type in determine_prefix.  */
16953
16954 static struct type *
16955 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16956 {
16957   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16958   const char *module_name;
16959   struct type *type;
16960
16961   module_name = dwarf2_name (die, cu);
16962   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16963
16964   return set_die_type (die, type, cu);
16965 }
16966
16967 /* Read a Fortran module.  */
16968
16969 static void
16970 read_module (struct die_info *die, struct dwarf2_cu *cu)
16971 {
16972   struct die_info *child_die = die->child;
16973   struct type *type;
16974
16975   type = read_type_die (die, cu);
16976   new_symbol (die, type, cu);
16977
16978   while (child_die && child_die->tag)
16979     {
16980       process_die (child_die, cu);
16981       child_die = sibling_die (child_die);
16982     }
16983 }
16984
16985 /* Return the name of the namespace represented by DIE.  Set
16986    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16987    namespace.  */
16988
16989 static const char *
16990 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16991 {
16992   struct die_info *current_die;
16993   const char *name = NULL;
16994
16995   /* Loop through the extensions until we find a name.  */
16996
16997   for (current_die = die;
16998        current_die != NULL;
16999        current_die = dwarf2_extension (die, &cu))
17000     {
17001       /* We don't use dwarf2_name here so that we can detect the absence
17002          of a name -> anonymous namespace.  */
17003       name = dwarf2_string_attr (die, DW_AT_name, cu);
17004
17005       if (name != NULL)
17006         break;
17007     }
17008
17009   /* Is it an anonymous namespace?  */
17010
17011   *is_anonymous = (name == NULL);
17012   if (*is_anonymous)
17013     name = CP_ANONYMOUS_NAMESPACE_STR;
17014
17015   return name;
17016 }
17017
17018 /* Extract all information from a DW_TAG_pointer_type DIE and add to
17019    the user defined type vector.  */
17020
17021 static struct type *
17022 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
17023 {
17024   struct gdbarch *gdbarch
17025     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
17026   struct comp_unit_head *cu_header = &cu->header;
17027   struct type *type;
17028   struct attribute *attr_byte_size;
17029   struct attribute *attr_address_class;
17030   int byte_size, addr_class;
17031   struct type *target_type;
17032
17033   target_type = die_type (die, cu);
17034
17035   /* The die_type call above may have already set the type for this DIE.  */
17036   type = get_die_type (die, cu);
17037   if (type)
17038     return type;
17039
17040   type = lookup_pointer_type (target_type);
17041
17042   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17043   if (attr_byte_size)
17044     byte_size = DW_UNSND (attr_byte_size);
17045   else
17046     byte_size = cu_header->addr_size;
17047
17048   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17049   if (attr_address_class)
17050     addr_class = DW_UNSND (attr_address_class);
17051   else
17052     addr_class = DW_ADDR_none;
17053
17054   ULONGEST alignment = get_alignment (cu, die);
17055
17056   /* If the pointer size, alignment, or address class is different
17057      than the default, create a type variant marked as such and set
17058      the length accordingly.  */
17059   if (TYPE_LENGTH (type) != byte_size
17060       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17061           && alignment != TYPE_RAW_ALIGN (type))
17062       || addr_class != DW_ADDR_none)
17063     {
17064       if (gdbarch_address_class_type_flags_p (gdbarch))
17065         {
17066           int type_flags;
17067
17068           type_flags = gdbarch_address_class_type_flags
17069                          (gdbarch, byte_size, addr_class);
17070           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17071                       == 0);
17072           type = make_type_with_address_space (type, type_flags);
17073         }
17074       else if (TYPE_LENGTH (type) != byte_size)
17075         {
17076           complaint (_("invalid pointer size %d"), byte_size);
17077         }
17078       else if (TYPE_RAW_ALIGN (type) != alignment)
17079         {
17080           complaint (_("Invalid DW_AT_alignment"
17081                        " - DIE at %s [in module %s]"),
17082                      sect_offset_str (die->sect_off),
17083                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17084         }
17085       else
17086         {
17087           /* Should we also complain about unhandled address classes?  */
17088         }
17089     }
17090
17091   TYPE_LENGTH (type) = byte_size;
17092   set_type_align (type, alignment);
17093   return set_die_type (die, type, cu);
17094 }
17095
17096 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17097    the user defined type vector.  */
17098
17099 static struct type *
17100 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17101 {
17102   struct type *type;
17103   struct type *to_type;
17104   struct type *domain;
17105
17106   to_type = die_type (die, cu);
17107   domain = die_containing_type (die, cu);
17108
17109   /* The calls above may have already set the type for this DIE.  */
17110   type = get_die_type (die, cu);
17111   if (type)
17112     return type;
17113
17114   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17115     type = lookup_methodptr_type (to_type);
17116   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17117     {
17118       struct type *new_type
17119         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17120
17121       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17122                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17123                             TYPE_VARARGS (to_type));
17124       type = lookup_methodptr_type (new_type);
17125     }
17126   else
17127     type = lookup_memberptr_type (to_type, domain);
17128
17129   return set_die_type (die, type, cu);
17130 }
17131
17132 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17133    the user defined type vector.  */
17134
17135 static struct type *
17136 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17137                           enum type_code refcode)
17138 {
17139   struct comp_unit_head *cu_header = &cu->header;
17140   struct type *type, *target_type;
17141   struct attribute *attr;
17142
17143   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17144
17145   target_type = die_type (die, cu);
17146
17147   /* The die_type call above may have already set the type for this DIE.  */
17148   type = get_die_type (die, cu);
17149   if (type)
17150     return type;
17151
17152   type = lookup_reference_type (target_type, refcode);
17153   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17154   if (attr)
17155     {
17156       TYPE_LENGTH (type) = DW_UNSND (attr);
17157     }
17158   else
17159     {
17160       TYPE_LENGTH (type) = cu_header->addr_size;
17161     }
17162   maybe_set_alignment (cu, die, type);
17163   return set_die_type (die, type, cu);
17164 }
17165
17166 /* Add the given cv-qualifiers to the element type of the array.  GCC
17167    outputs DWARF type qualifiers that apply to an array, not the
17168    element type.  But GDB relies on the array element type to carry
17169    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17170    specification.  */
17171
17172 static struct type *
17173 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17174                    struct type *base_type, int cnst, int voltl)
17175 {
17176   struct type *el_type, *inner_array;
17177
17178   base_type = copy_type (base_type);
17179   inner_array = base_type;
17180
17181   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17182     {
17183       TYPE_TARGET_TYPE (inner_array) =
17184         copy_type (TYPE_TARGET_TYPE (inner_array));
17185       inner_array = TYPE_TARGET_TYPE (inner_array);
17186     }
17187
17188   el_type = TYPE_TARGET_TYPE (inner_array);
17189   cnst |= TYPE_CONST (el_type);
17190   voltl |= TYPE_VOLATILE (el_type);
17191   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17192
17193   return set_die_type (die, base_type, cu);
17194 }
17195
17196 static struct type *
17197 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17198 {
17199   struct type *base_type, *cv_type;
17200
17201   base_type = die_type (die, cu);
17202
17203   /* The die_type call above may have already set the type for this DIE.  */
17204   cv_type = get_die_type (die, cu);
17205   if (cv_type)
17206     return cv_type;
17207
17208   /* In case the const qualifier is applied to an array type, the element type
17209      is so qualified, not the array type (section 6.7.3 of C99).  */
17210   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17211     return add_array_cv_type (die, cu, base_type, 1, 0);
17212
17213   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17214   return set_die_type (die, cv_type, cu);
17215 }
17216
17217 static struct type *
17218 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17219 {
17220   struct type *base_type, *cv_type;
17221
17222   base_type = die_type (die, cu);
17223
17224   /* The die_type call above may have already set the type for this DIE.  */
17225   cv_type = get_die_type (die, cu);
17226   if (cv_type)
17227     return cv_type;
17228
17229   /* In case the volatile qualifier is applied to an array type, the
17230      element type is so qualified, not the array type (section 6.7.3
17231      of C99).  */
17232   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17233     return add_array_cv_type (die, cu, base_type, 0, 1);
17234
17235   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17236   return set_die_type (die, cv_type, cu);
17237 }
17238
17239 /* Handle DW_TAG_restrict_type.  */
17240
17241 static struct type *
17242 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17243 {
17244   struct type *base_type, *cv_type;
17245
17246   base_type = die_type (die, cu);
17247
17248   /* The die_type call above may have already set the type for this DIE.  */
17249   cv_type = get_die_type (die, cu);
17250   if (cv_type)
17251     return cv_type;
17252
17253   cv_type = make_restrict_type (base_type);
17254   return set_die_type (die, cv_type, cu);
17255 }
17256
17257 /* Handle DW_TAG_atomic_type.  */
17258
17259 static struct type *
17260 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17261 {
17262   struct type *base_type, *cv_type;
17263
17264   base_type = die_type (die, cu);
17265
17266   /* The die_type call above may have already set the type for this DIE.  */
17267   cv_type = get_die_type (die, cu);
17268   if (cv_type)
17269     return cv_type;
17270
17271   cv_type = make_atomic_type (base_type);
17272   return set_die_type (die, cv_type, cu);
17273 }
17274
17275 /* Extract all information from a DW_TAG_string_type DIE and add to
17276    the user defined type vector.  It isn't really a user defined type,
17277    but it behaves like one, with other DIE's using an AT_user_def_type
17278    attribute to reference it.  */
17279
17280 static struct type *
17281 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17282 {
17283   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17284   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17285   struct type *type, *range_type, *index_type, *char_type;
17286   struct attribute *attr;
17287   unsigned int length;
17288
17289   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17290   if (attr)
17291     {
17292       length = DW_UNSND (attr);
17293     }
17294   else
17295     {
17296       /* Check for the DW_AT_byte_size attribute.  */
17297       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17298       if (attr)
17299         {
17300           length = DW_UNSND (attr);
17301         }
17302       else
17303         {
17304           length = 1;
17305         }
17306     }
17307
17308   index_type = objfile_type (objfile)->builtin_int;
17309   range_type = create_static_range_type (NULL, index_type, 1, length);
17310   char_type = language_string_char_type (cu->language_defn, gdbarch);
17311   type = create_string_type (NULL, char_type, range_type);
17312
17313   return set_die_type (die, type, cu);
17314 }
17315
17316 /* Assuming that DIE corresponds to a function, returns nonzero
17317    if the function is prototyped.  */
17318
17319 static int
17320 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17321 {
17322   struct attribute *attr;
17323
17324   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17325   if (attr && (DW_UNSND (attr) != 0))
17326     return 1;
17327
17328   /* The DWARF standard implies that the DW_AT_prototyped attribute
17329      is only meaninful for C, but the concept also extends to other
17330      languages that allow unprototyped functions (Eg: Objective C).
17331      For all other languages, assume that functions are always
17332      prototyped.  */
17333   if (cu->language != language_c
17334       && cu->language != language_objc
17335       && cu->language != language_opencl)
17336     return 1;
17337
17338   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17339      prototyped and unprototyped functions; default to prototyped,
17340      since that is more common in modern code (and RealView warns
17341      about unprototyped functions).  */
17342   if (producer_is_realview (cu->producer))
17343     return 1;
17344
17345   return 0;
17346 }
17347
17348 /* Handle DIES due to C code like:
17349
17350    struct foo
17351    {
17352    int (*funcp)(int a, long l);
17353    int b;
17354    };
17355
17356    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17357
17358 static struct type *
17359 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17360 {
17361   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17362   struct type *type;            /* Type that this function returns.  */
17363   struct type *ftype;           /* Function that returns above type.  */
17364   struct attribute *attr;
17365
17366   type = die_type (die, cu);
17367
17368   /* The die_type call above may have already set the type for this DIE.  */
17369   ftype = get_die_type (die, cu);
17370   if (ftype)
17371     return ftype;
17372
17373   ftype = lookup_function_type (type);
17374
17375   if (prototyped_function_p (die, cu))
17376     TYPE_PROTOTYPED (ftype) = 1;
17377
17378   /* Store the calling convention in the type if it's available in
17379      the subroutine die.  Otherwise set the calling convention to
17380      the default value DW_CC_normal.  */
17381   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17382   if (attr)
17383     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17384   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17385     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17386   else
17387     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17388
17389   /* Record whether the function returns normally to its caller or not
17390      if the DWARF producer set that information.  */
17391   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17392   if (attr && (DW_UNSND (attr) != 0))
17393     TYPE_NO_RETURN (ftype) = 1;
17394
17395   /* We need to add the subroutine type to the die immediately so
17396      we don't infinitely recurse when dealing with parameters
17397      declared as the same subroutine type.  */
17398   set_die_type (die, ftype, cu);
17399
17400   if (die->child != NULL)
17401     {
17402       struct type *void_type = objfile_type (objfile)->builtin_void;
17403       struct die_info *child_die;
17404       int nparams, iparams;
17405
17406       /* Count the number of parameters.
17407          FIXME: GDB currently ignores vararg functions, but knows about
17408          vararg member functions.  */
17409       nparams = 0;
17410       child_die = die->child;
17411       while (child_die && child_die->tag)
17412         {
17413           if (child_die->tag == DW_TAG_formal_parameter)
17414             nparams++;
17415           else if (child_die->tag == DW_TAG_unspecified_parameters)
17416             TYPE_VARARGS (ftype) = 1;
17417           child_die = sibling_die (child_die);
17418         }
17419
17420       /* Allocate storage for parameters and fill them in.  */
17421       TYPE_NFIELDS (ftype) = nparams;
17422       TYPE_FIELDS (ftype) = (struct field *)
17423         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17424
17425       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17426          even if we error out during the parameters reading below.  */
17427       for (iparams = 0; iparams < nparams; iparams++)
17428         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17429
17430       iparams = 0;
17431       child_die = die->child;
17432       while (child_die && child_die->tag)
17433         {
17434           if (child_die->tag == DW_TAG_formal_parameter)
17435             {
17436               struct type *arg_type;
17437
17438               /* DWARF version 2 has no clean way to discern C++
17439                  static and non-static member functions.  G++ helps
17440                  GDB by marking the first parameter for non-static
17441                  member functions (which is the this pointer) as
17442                  artificial.  We pass this information to
17443                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17444
17445                  DWARF version 3 added DW_AT_object_pointer, which GCC
17446                  4.5 does not yet generate.  */
17447               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17448               if (attr)
17449                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17450               else
17451                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17452               arg_type = die_type (child_die, cu);
17453
17454               /* RealView does not mark THIS as const, which the testsuite
17455                  expects.  GCC marks THIS as const in method definitions,
17456                  but not in the class specifications (GCC PR 43053).  */
17457               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17458                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17459                 {
17460                   int is_this = 0;
17461                   struct dwarf2_cu *arg_cu = cu;
17462                   const char *name = dwarf2_name (child_die, cu);
17463
17464                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17465                   if (attr)
17466                     {
17467                       /* If the compiler emits this, use it.  */
17468                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17469                         is_this = 1;
17470                     }
17471                   else if (name && strcmp (name, "this") == 0)
17472                     /* Function definitions will have the argument names.  */
17473                     is_this = 1;
17474                   else if (name == NULL && iparams == 0)
17475                     /* Declarations may not have the names, so like
17476                        elsewhere in GDB, assume an artificial first
17477                        argument is "this".  */
17478                     is_this = 1;
17479
17480                   if (is_this)
17481                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17482                                              arg_type, 0);
17483                 }
17484
17485               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17486               iparams++;
17487             }
17488           child_die = sibling_die (child_die);
17489         }
17490     }
17491
17492   return ftype;
17493 }
17494
17495 static struct type *
17496 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17497 {
17498   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17499   const char *name = NULL;
17500   struct type *this_type, *target_type;
17501
17502   name = dwarf2_full_name (NULL, die, cu);
17503   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17504   TYPE_TARGET_STUB (this_type) = 1;
17505   set_die_type (die, this_type, cu);
17506   target_type = die_type (die, cu);
17507   if (target_type != this_type)
17508     TYPE_TARGET_TYPE (this_type) = target_type;
17509   else
17510     {
17511       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17512          spec and cause infinite loops in GDB.  */
17513       complaint (_("Self-referential DW_TAG_typedef "
17514                    "- DIE at %s [in module %s]"),
17515                  sect_offset_str (die->sect_off), objfile_name (objfile));
17516       TYPE_TARGET_TYPE (this_type) = NULL;
17517     }
17518   return this_type;
17519 }
17520
17521 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17522    (which may be different from NAME) to the architecture back-end to allow
17523    it to guess the correct format if necessary.  */
17524
17525 static struct type *
17526 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17527                         const char *name_hint)
17528 {
17529   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17530   const struct floatformat **format;
17531   struct type *type;
17532
17533   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17534   if (format)
17535     type = init_float_type (objfile, bits, name, format);
17536   else
17537     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17538
17539   return type;
17540 }
17541
17542 /* Allocate an integer type of size BITS and name NAME.  */
17543
17544 static struct type *
17545 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17546                           int bits, int unsigned_p, const char *name)
17547 {
17548   struct type *type;
17549
17550   /* Versions of Intel's C Compiler generate an integer type called "void"
17551      instead of using DW_TAG_unspecified_type.  This has been seen on
17552      at least versions 14, 17, and 18.  */
17553   if (bits == 0 && producer_is_icc (cu) && name != nullptr
17554       && strcmp (name, "void") == 0)
17555     type = objfile_type (objfile)->builtin_void;
17556   else
17557     type = init_integer_type (objfile, bits, unsigned_p, name);
17558
17559   return type;
17560 }
17561
17562 /* Initialise and return a floating point type of size BITS suitable for
17563    use as a component of a complex number.  The NAME_HINT is passed through
17564    when initialising the floating point type and is the name of the complex
17565    type.
17566
17567    As DWARF doesn't currently provide an explicit name for the components
17568    of a complex number, but it can be helpful to have these components
17569    named, we try to select a suitable name based on the size of the
17570    component.  */
17571 static struct type *
17572 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17573                                  struct objfile *objfile,
17574                                  int bits, const char *name_hint)
17575 {
17576   gdbarch *gdbarch = get_objfile_arch (objfile);
17577   struct type *tt = nullptr;
17578
17579   /* Try to find a suitable floating point builtin type of size BITS.
17580      We're going to use the name of this type as the name for the complex
17581      target type that we are about to create.  */
17582   switch (cu->language)
17583     {
17584     case language_fortran:
17585       switch (bits)
17586         {
17587         case 32:
17588           tt = builtin_f_type (gdbarch)->builtin_real;
17589           break;
17590         case 64:
17591           tt = builtin_f_type (gdbarch)->builtin_real_s8;
17592           break;
17593         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17594         case 128:
17595           tt = builtin_f_type (gdbarch)->builtin_real_s16;
17596           break;
17597         }
17598       break;
17599     default:
17600       switch (bits)
17601         {
17602         case 32:
17603           tt = builtin_type (gdbarch)->builtin_float;
17604           break;
17605         case 64:
17606           tt = builtin_type (gdbarch)->builtin_double;
17607           break;
17608         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17609         case 128:
17610           tt = builtin_type (gdbarch)->builtin_long_double;
17611           break;
17612         }
17613       break;
17614     }
17615
17616   /* If the type we found doesn't match the size we were looking for, then
17617      pretend we didn't find a type at all, the complex target type we
17618      create will then be nameless.  */
17619   if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17620     tt = nullptr;
17621
17622   const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17623   return dwarf2_init_float_type (objfile, bits, name, name_hint);
17624 }
17625
17626 /* Find a representation of a given base type and install
17627    it in the TYPE field of the die.  */
17628
17629 static struct type *
17630 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17631 {
17632   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17633   struct type *type;
17634   struct attribute *attr;
17635   int encoding = 0, bits = 0;
17636   const char *name;
17637
17638   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17639   if (attr)
17640     {
17641       encoding = DW_UNSND (attr);
17642     }
17643   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17644   if (attr)
17645     {
17646       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17647     }
17648   name = dwarf2_name (die, cu);
17649   if (!name)
17650     {
17651       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17652     }
17653
17654   switch (encoding)
17655     {
17656       case DW_ATE_address:
17657         /* Turn DW_ATE_address into a void * pointer.  */
17658         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17659         type = init_pointer_type (objfile, bits, name, type);
17660         break;
17661       case DW_ATE_boolean:
17662         type = init_boolean_type (objfile, bits, 1, name);
17663         break;
17664       case DW_ATE_complex_float:
17665         type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name);
17666         type = init_complex_type (objfile, name, type);
17667         break;
17668       case DW_ATE_decimal_float:
17669         type = init_decfloat_type (objfile, bits, name);
17670         break;
17671       case DW_ATE_float:
17672         type = dwarf2_init_float_type (objfile, bits, name, name);
17673         break;
17674       case DW_ATE_signed:
17675         type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17676         break;
17677       case DW_ATE_unsigned:
17678         if (cu->language == language_fortran
17679             && name
17680             && startswith (name, "character("))
17681           type = init_character_type (objfile, bits, 1, name);
17682         else
17683           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17684         break;
17685       case DW_ATE_signed_char:
17686         if (cu->language == language_ada || cu->language == language_m2
17687             || cu->language == language_pascal
17688             || cu->language == language_fortran)
17689           type = init_character_type (objfile, bits, 0, name);
17690         else
17691           type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17692         break;
17693       case DW_ATE_unsigned_char:
17694         if (cu->language == language_ada || cu->language == language_m2
17695             || cu->language == language_pascal
17696             || cu->language == language_fortran
17697             || cu->language == language_rust)
17698           type = init_character_type (objfile, bits, 1, name);
17699         else
17700           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17701         break;
17702       case DW_ATE_UTF:
17703         {
17704           gdbarch *arch = get_objfile_arch (objfile);
17705
17706           if (bits == 16)
17707             type = builtin_type (arch)->builtin_char16;
17708           else if (bits == 32)
17709             type = builtin_type (arch)->builtin_char32;
17710           else
17711             {
17712               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17713                          bits);
17714               type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17715             }
17716           return set_die_type (die, type, cu);
17717         }
17718         break;
17719
17720       default:
17721         complaint (_("unsupported DW_AT_encoding: '%s'"),
17722                    dwarf_type_encoding_name (encoding));
17723         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17724         break;
17725     }
17726
17727   if (name && strcmp (name, "char") == 0)
17728     TYPE_NOSIGN (type) = 1;
17729
17730   maybe_set_alignment (cu, die, type);
17731
17732   return set_die_type (die, type, cu);
17733 }
17734
17735 /* Parse dwarf attribute if it's a block, reference or constant and put the
17736    resulting value of the attribute into struct bound_prop.
17737    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17738
17739 static int
17740 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17741                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17742 {
17743   struct dwarf2_property_baton *baton;
17744   struct obstack *obstack
17745     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17746
17747   if (attr == NULL || prop == NULL)
17748     return 0;
17749
17750   if (attr_form_is_block (attr))
17751     {
17752       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17753       baton->referenced_type = NULL;
17754       baton->locexpr.per_cu = cu->per_cu;
17755       baton->locexpr.size = DW_BLOCK (attr)->size;
17756       baton->locexpr.data = DW_BLOCK (attr)->data;
17757       prop->data.baton = baton;
17758       prop->kind = PROP_LOCEXPR;
17759       gdb_assert (prop->data.baton != NULL);
17760     }
17761   else if (attr_form_is_ref (attr))
17762     {
17763       struct dwarf2_cu *target_cu = cu;
17764       struct die_info *target_die;
17765       struct attribute *target_attr;
17766
17767       target_die = follow_die_ref (die, attr, &target_cu);
17768       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17769       if (target_attr == NULL)
17770         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17771                                    target_cu);
17772       if (target_attr == NULL)
17773         return 0;
17774
17775       switch (target_attr->name)
17776         {
17777           case DW_AT_location:
17778             if (attr_form_is_section_offset (target_attr))
17779               {
17780                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17781                 baton->referenced_type = die_type (target_die, target_cu);
17782                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17783                 prop->data.baton = baton;
17784                 prop->kind = PROP_LOCLIST;
17785                 gdb_assert (prop->data.baton != NULL);
17786               }
17787             else if (attr_form_is_block (target_attr))
17788               {
17789                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17790                 baton->referenced_type = die_type (target_die, target_cu);
17791                 baton->locexpr.per_cu = cu->per_cu;
17792                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17793                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17794                 prop->data.baton = baton;
17795                 prop->kind = PROP_LOCEXPR;
17796                 gdb_assert (prop->data.baton != NULL);
17797               }
17798             else
17799               {
17800                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17801                                                        "dynamic property");
17802                 return 0;
17803               }
17804             break;
17805           case DW_AT_data_member_location:
17806             {
17807               LONGEST offset;
17808
17809               if (!handle_data_member_location (target_die, target_cu,
17810                                                 &offset))
17811                 return 0;
17812
17813               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17814               baton->referenced_type = read_type_die (target_die->parent,
17815                                                       target_cu);
17816               baton->offset_info.offset = offset;
17817               baton->offset_info.type = die_type (target_die, target_cu);
17818               prop->data.baton = baton;
17819               prop->kind = PROP_ADDR_OFFSET;
17820               break;
17821             }
17822         }
17823     }
17824   else if (attr_form_is_constant (attr))
17825     {
17826       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17827       prop->kind = PROP_CONST;
17828     }
17829   else
17830     {
17831       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17832                                              dwarf2_name (die, cu));
17833       return 0;
17834     }
17835
17836   return 1;
17837 }
17838
17839 /* Read the given DW_AT_subrange DIE.  */
17840
17841 static struct type *
17842 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17843 {
17844   struct type *base_type, *orig_base_type;
17845   struct type *range_type;
17846   struct attribute *attr;
17847   struct dynamic_prop low, high;
17848   int low_default_is_valid;
17849   int high_bound_is_count = 0;
17850   const char *name;
17851   ULONGEST negative_mask;
17852
17853   orig_base_type = die_type (die, cu);
17854   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17855      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17856      creating the range type, but we use the result of check_typedef
17857      when examining properties of the type.  */
17858   base_type = check_typedef (orig_base_type);
17859
17860   /* The die_type call above may have already set the type for this DIE.  */
17861   range_type = get_die_type (die, cu);
17862   if (range_type)
17863     return range_type;
17864
17865   low.kind = PROP_CONST;
17866   high.kind = PROP_CONST;
17867   high.data.const_val = 0;
17868
17869   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17870      omitting DW_AT_lower_bound.  */
17871   switch (cu->language)
17872     {
17873     case language_c:
17874     case language_cplus:
17875       low.data.const_val = 0;
17876       low_default_is_valid = 1;
17877       break;
17878     case language_fortran:
17879       low.data.const_val = 1;
17880       low_default_is_valid = 1;
17881       break;
17882     case language_d:
17883     case language_objc:
17884     case language_rust:
17885       low.data.const_val = 0;
17886       low_default_is_valid = (cu->header.version >= 4);
17887       break;
17888     case language_ada:
17889     case language_m2:
17890     case language_pascal:
17891       low.data.const_val = 1;
17892       low_default_is_valid = (cu->header.version >= 4);
17893       break;
17894     default:
17895       low.data.const_val = 0;
17896       low_default_is_valid = 0;
17897       break;
17898     }
17899
17900   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17901   if (attr)
17902     attr_to_dynamic_prop (attr, die, cu, &low);
17903   else if (!low_default_is_valid)
17904     complaint (_("Missing DW_AT_lower_bound "
17905                                       "- DIE at %s [in module %s]"),
17906                sect_offset_str (die->sect_off),
17907                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17908
17909   struct attribute *attr_ub, *attr_count;
17910   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17911   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17912     {
17913       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17914       if (attr_to_dynamic_prop (attr, die, cu, &high))
17915         {
17916           /* If bounds are constant do the final calculation here.  */
17917           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17918             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17919           else
17920             high_bound_is_count = 1;
17921         }
17922       else
17923         {
17924           if (attr_ub != NULL)
17925             complaint (_("Unresolved DW_AT_upper_bound "
17926                          "- DIE at %s [in module %s]"),
17927                        sect_offset_str (die->sect_off),
17928                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17929           if (attr_count != NULL)
17930             complaint (_("Unresolved DW_AT_count "
17931                          "- DIE at %s [in module %s]"),
17932                        sect_offset_str (die->sect_off),
17933                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17934         }
17935         
17936     }
17937
17938   /* Dwarf-2 specifications explicitly allows to create subrange types
17939      without specifying a base type.
17940      In that case, the base type must be set to the type of
17941      the lower bound, upper bound or count, in that order, if any of these
17942      three attributes references an object that has a type.
17943      If no base type is found, the Dwarf-2 specifications say that
17944      a signed integer type of size equal to the size of an address should
17945      be used.
17946      For the following C code: `extern char gdb_int [];'
17947      GCC produces an empty range DIE.
17948      FIXME: muller/2010-05-28: Possible references to object for low bound,
17949      high bound or count are not yet handled by this code.  */
17950   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17951     {
17952       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17953       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17954       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17955       struct type *int_type = objfile_type (objfile)->builtin_int;
17956
17957       /* Test "int", "long int", and "long long int" objfile types,
17958          and select the first one having a size above or equal to the
17959          architecture address size.  */
17960       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17961         base_type = int_type;
17962       else
17963         {
17964           int_type = objfile_type (objfile)->builtin_long;
17965           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17966             base_type = int_type;
17967           else
17968             {
17969               int_type = objfile_type (objfile)->builtin_long_long;
17970               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17971                 base_type = int_type;
17972             }
17973         }
17974     }
17975
17976   /* Normally, the DWARF producers are expected to use a signed
17977      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17978      But this is unfortunately not always the case, as witnessed
17979      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17980      is used instead.  To work around that ambiguity, we treat
17981      the bounds as signed, and thus sign-extend their values, when
17982      the base type is signed.  */
17983   negative_mask =
17984     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17985   if (low.kind == PROP_CONST
17986       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17987     low.data.const_val |= negative_mask;
17988   if (high.kind == PROP_CONST
17989       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17990     high.data.const_val |= negative_mask;
17991
17992   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17993
17994   if (high_bound_is_count)
17995     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17996
17997   /* Ada expects an empty array on no boundary attributes.  */
17998   if (attr == NULL && cu->language != language_ada)
17999     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
18000
18001   name = dwarf2_name (die, cu);
18002   if (name)
18003     TYPE_NAME (range_type) = name;
18004
18005   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
18006   if (attr)
18007     TYPE_LENGTH (range_type) = DW_UNSND (attr);
18008
18009   maybe_set_alignment (cu, die, range_type);
18010
18011   set_die_type (die, range_type, cu);
18012
18013   /* set_die_type should be already done.  */
18014   set_descriptive_type (range_type, die, cu);
18015
18016   return range_type;
18017 }
18018
18019 static struct type *
18020 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
18021 {
18022   struct type *type;
18023
18024   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
18025                     NULL);
18026   TYPE_NAME (type) = dwarf2_name (die, cu);
18027
18028   /* In Ada, an unspecified type is typically used when the description
18029      of the type is defered to a different unit.  When encountering
18030      such a type, we treat it as a stub, and try to resolve it later on,
18031      when needed.  */
18032   if (cu->language == language_ada)
18033     TYPE_STUB (type) = 1;
18034
18035   return set_die_type (die, type, cu);
18036 }
18037
18038 /* Read a single die and all its descendents.  Set the die's sibling
18039    field to NULL; set other fields in the die correctly, and set all
18040    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
18041    location of the info_ptr after reading all of those dies.  PARENT
18042    is the parent of the die in question.  */
18043
18044 static struct die_info *
18045 read_die_and_children (const struct die_reader_specs *reader,
18046                        const gdb_byte *info_ptr,
18047                        const gdb_byte **new_info_ptr,
18048                        struct die_info *parent)
18049 {
18050   struct die_info *die;
18051   const gdb_byte *cur_ptr;
18052   int has_children;
18053
18054   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
18055   if (die == NULL)
18056     {
18057       *new_info_ptr = cur_ptr;
18058       return NULL;
18059     }
18060   store_in_ref_table (die, reader->cu);
18061
18062   if (has_children)
18063     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
18064   else
18065     {
18066       die->child = NULL;
18067       *new_info_ptr = cur_ptr;
18068     }
18069
18070   die->sibling = NULL;
18071   die->parent = parent;
18072   return die;
18073 }
18074
18075 /* Read a die, all of its descendents, and all of its siblings; set
18076    all of the fields of all of the dies correctly.  Arguments are as
18077    in read_die_and_children.  */
18078
18079 static struct die_info *
18080 read_die_and_siblings_1 (const struct die_reader_specs *reader,
18081                          const gdb_byte *info_ptr,
18082                          const gdb_byte **new_info_ptr,
18083                          struct die_info *parent)
18084 {
18085   struct die_info *first_die, *last_sibling;
18086   const gdb_byte *cur_ptr;
18087
18088   cur_ptr = info_ptr;
18089   first_die = last_sibling = NULL;
18090
18091   while (1)
18092     {
18093       struct die_info *die
18094         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
18095
18096       if (die == NULL)
18097         {
18098           *new_info_ptr = cur_ptr;
18099           return first_die;
18100         }
18101
18102       if (!first_die)
18103         first_die = die;
18104       else
18105         last_sibling->sibling = die;
18106
18107       last_sibling = die;
18108     }
18109 }
18110
18111 /* Read a die, all of its descendents, and all of its siblings; set
18112    all of the fields of all of the dies correctly.  Arguments are as
18113    in read_die_and_children.
18114    This the main entry point for reading a DIE and all its children.  */
18115
18116 static struct die_info *
18117 read_die_and_siblings (const struct die_reader_specs *reader,
18118                        const gdb_byte *info_ptr,
18119                        const gdb_byte **new_info_ptr,
18120                        struct die_info *parent)
18121 {
18122   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18123                                                   new_info_ptr, parent);
18124
18125   if (dwarf_die_debug)
18126     {
18127       fprintf_unfiltered (gdb_stdlog,
18128                           "Read die from %s@0x%x of %s:\n",
18129                           get_section_name (reader->die_section),
18130                           (unsigned) (info_ptr - reader->die_section->buffer),
18131                           bfd_get_filename (reader->abfd));
18132       dump_die (die, dwarf_die_debug);
18133     }
18134
18135   return die;
18136 }
18137
18138 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18139    attributes.
18140    The caller is responsible for filling in the extra attributes
18141    and updating (*DIEP)->num_attrs.
18142    Set DIEP to point to a newly allocated die with its information,
18143    except for its child, sibling, and parent fields.
18144    Set HAS_CHILDREN to tell whether the die has children or not.  */
18145
18146 static const gdb_byte *
18147 read_full_die_1 (const struct die_reader_specs *reader,
18148                  struct die_info **diep, const gdb_byte *info_ptr,
18149                  int *has_children, int num_extra_attrs)
18150 {
18151   unsigned int abbrev_number, bytes_read, i;
18152   struct abbrev_info *abbrev;
18153   struct die_info *die;
18154   struct dwarf2_cu *cu = reader->cu;
18155   bfd *abfd = reader->abfd;
18156
18157   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18158   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18159   info_ptr += bytes_read;
18160   if (!abbrev_number)
18161     {
18162       *diep = NULL;
18163       *has_children = 0;
18164       return info_ptr;
18165     }
18166
18167   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18168   if (!abbrev)
18169     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18170            abbrev_number,
18171            bfd_get_filename (abfd));
18172
18173   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18174   die->sect_off = sect_off;
18175   die->tag = abbrev->tag;
18176   die->abbrev = abbrev_number;
18177
18178   /* Make the result usable.
18179      The caller needs to update num_attrs after adding the extra
18180      attributes.  */
18181   die->num_attrs = abbrev->num_attrs;
18182
18183   for (i = 0; i < abbrev->num_attrs; ++i)
18184     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18185                                info_ptr);
18186
18187   *diep = die;
18188   *has_children = abbrev->has_children;
18189   return info_ptr;
18190 }
18191
18192 /* Read a die and all its attributes.
18193    Set DIEP to point to a newly allocated die with its information,
18194    except for its child, sibling, and parent fields.
18195    Set HAS_CHILDREN to tell whether the die has children or not.  */
18196
18197 static const gdb_byte *
18198 read_full_die (const struct die_reader_specs *reader,
18199                struct die_info **diep, const gdb_byte *info_ptr,
18200                int *has_children)
18201 {
18202   const gdb_byte *result;
18203
18204   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18205
18206   if (dwarf_die_debug)
18207     {
18208       fprintf_unfiltered (gdb_stdlog,
18209                           "Read die from %s@0x%x of %s:\n",
18210                           get_section_name (reader->die_section),
18211                           (unsigned) (info_ptr - reader->die_section->buffer),
18212                           bfd_get_filename (reader->abfd));
18213       dump_die (*diep, dwarf_die_debug);
18214     }
18215
18216   return result;
18217 }
18218 \f
18219 /* Abbreviation tables.
18220
18221    In DWARF version 2, the description of the debugging information is
18222    stored in a separate .debug_abbrev section.  Before we read any
18223    dies from a section we read in all abbreviations and install them
18224    in a hash table.  */
18225
18226 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18227
18228 struct abbrev_info *
18229 abbrev_table::alloc_abbrev ()
18230 {
18231   struct abbrev_info *abbrev;
18232
18233   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18234   memset (abbrev, 0, sizeof (struct abbrev_info));
18235
18236   return abbrev;
18237 }
18238
18239 /* Add an abbreviation to the table.  */
18240
18241 void
18242 abbrev_table::add_abbrev (unsigned int abbrev_number,
18243                           struct abbrev_info *abbrev)
18244 {
18245   unsigned int hash_number;
18246
18247   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18248   abbrev->next = m_abbrevs[hash_number];
18249   m_abbrevs[hash_number] = abbrev;
18250 }
18251
18252 /* Look up an abbrev in the table.
18253    Returns NULL if the abbrev is not found.  */
18254
18255 struct abbrev_info *
18256 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18257 {
18258   unsigned int hash_number;
18259   struct abbrev_info *abbrev;
18260
18261   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18262   abbrev = m_abbrevs[hash_number];
18263
18264   while (abbrev)
18265     {
18266       if (abbrev->number == abbrev_number)
18267         return abbrev;
18268       abbrev = abbrev->next;
18269     }
18270   return NULL;
18271 }
18272
18273 /* Read in an abbrev table.  */
18274
18275 static abbrev_table_up
18276 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18277                          struct dwarf2_section_info *section,
18278                          sect_offset sect_off)
18279 {
18280   struct objfile *objfile = dwarf2_per_objfile->objfile;
18281   bfd *abfd = get_section_bfd_owner (section);
18282   const gdb_byte *abbrev_ptr;
18283   struct abbrev_info *cur_abbrev;
18284   unsigned int abbrev_number, bytes_read, abbrev_name;
18285   unsigned int abbrev_form;
18286   struct attr_abbrev *cur_attrs;
18287   unsigned int allocated_attrs;
18288
18289   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18290
18291   dwarf2_read_section (objfile, section);
18292   abbrev_ptr = section->buffer + to_underlying (sect_off);
18293   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18294   abbrev_ptr += bytes_read;
18295
18296   allocated_attrs = ATTR_ALLOC_CHUNK;
18297   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18298
18299   /* Loop until we reach an abbrev number of 0.  */
18300   while (abbrev_number)
18301     {
18302       cur_abbrev = abbrev_table->alloc_abbrev ();
18303
18304       /* read in abbrev header */
18305       cur_abbrev->number = abbrev_number;
18306       cur_abbrev->tag
18307         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18308       abbrev_ptr += bytes_read;
18309       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18310       abbrev_ptr += 1;
18311
18312       /* now read in declarations */
18313       for (;;)
18314         {
18315           LONGEST implicit_const;
18316
18317           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18318           abbrev_ptr += bytes_read;
18319           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18320           abbrev_ptr += bytes_read;
18321           if (abbrev_form == DW_FORM_implicit_const)
18322             {
18323               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18324                                                    &bytes_read);
18325               abbrev_ptr += bytes_read;
18326             }
18327           else
18328             {
18329               /* Initialize it due to a false compiler warning.  */
18330               implicit_const = -1;
18331             }
18332
18333           if (abbrev_name == 0)
18334             break;
18335
18336           if (cur_abbrev->num_attrs == allocated_attrs)
18337             {
18338               allocated_attrs += ATTR_ALLOC_CHUNK;
18339               cur_attrs
18340                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18341             }
18342
18343           cur_attrs[cur_abbrev->num_attrs].name
18344             = (enum dwarf_attribute) abbrev_name;
18345           cur_attrs[cur_abbrev->num_attrs].form
18346             = (enum dwarf_form) abbrev_form;
18347           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18348           ++cur_abbrev->num_attrs;
18349         }
18350
18351       cur_abbrev->attrs =
18352         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18353                    cur_abbrev->num_attrs);
18354       memcpy (cur_abbrev->attrs, cur_attrs,
18355               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18356
18357       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18358
18359       /* Get next abbreviation.
18360          Under Irix6 the abbreviations for a compilation unit are not
18361          always properly terminated with an abbrev number of 0.
18362          Exit loop if we encounter an abbreviation which we have
18363          already read (which means we are about to read the abbreviations
18364          for the next compile unit) or if the end of the abbreviation
18365          table is reached.  */
18366       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18367         break;
18368       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18369       abbrev_ptr += bytes_read;
18370       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18371         break;
18372     }
18373
18374   xfree (cur_attrs);
18375   return abbrev_table;
18376 }
18377
18378 /* Returns nonzero if TAG represents a type that we might generate a partial
18379    symbol for.  */
18380
18381 static int
18382 is_type_tag_for_partial (int tag)
18383 {
18384   switch (tag)
18385     {
18386 #if 0
18387     /* Some types that would be reasonable to generate partial symbols for,
18388        that we don't at present.  */
18389     case DW_TAG_array_type:
18390     case DW_TAG_file_type:
18391     case DW_TAG_ptr_to_member_type:
18392     case DW_TAG_set_type:
18393     case DW_TAG_string_type:
18394     case DW_TAG_subroutine_type:
18395 #endif
18396     case DW_TAG_base_type:
18397     case DW_TAG_class_type:
18398     case DW_TAG_interface_type:
18399     case DW_TAG_enumeration_type:
18400     case DW_TAG_structure_type:
18401     case DW_TAG_subrange_type:
18402     case DW_TAG_typedef:
18403     case DW_TAG_union_type:
18404       return 1;
18405     default:
18406       return 0;
18407     }
18408 }
18409
18410 /* Load all DIEs that are interesting for partial symbols into memory.  */
18411
18412 static struct partial_die_info *
18413 load_partial_dies (const struct die_reader_specs *reader,
18414                    const gdb_byte *info_ptr, int building_psymtab)
18415 {
18416   struct dwarf2_cu *cu = reader->cu;
18417   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18418   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18419   unsigned int bytes_read;
18420   unsigned int load_all = 0;
18421   int nesting_level = 1;
18422
18423   parent_die = NULL;
18424   last_die = NULL;
18425
18426   gdb_assert (cu->per_cu != NULL);
18427   if (cu->per_cu->load_all_dies)
18428     load_all = 1;
18429
18430   cu->partial_dies
18431     = htab_create_alloc_ex (cu->header.length / 12,
18432                             partial_die_hash,
18433                             partial_die_eq,
18434                             NULL,
18435                             &cu->comp_unit_obstack,
18436                             hashtab_obstack_allocate,
18437                             dummy_obstack_deallocate);
18438
18439   while (1)
18440     {
18441       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18442
18443       /* A NULL abbrev means the end of a series of children.  */
18444       if (abbrev == NULL)
18445         {
18446           if (--nesting_level == 0)
18447             return first_die;
18448
18449           info_ptr += bytes_read;
18450           last_die = parent_die;
18451           parent_die = parent_die->die_parent;
18452           continue;
18453         }
18454
18455       /* Check for template arguments.  We never save these; if
18456          they're seen, we just mark the parent, and go on our way.  */
18457       if (parent_die != NULL
18458           && cu->language == language_cplus
18459           && (abbrev->tag == DW_TAG_template_type_param
18460               || abbrev->tag == DW_TAG_template_value_param))
18461         {
18462           parent_die->has_template_arguments = 1;
18463
18464           if (!load_all)
18465             {
18466               /* We don't need a partial DIE for the template argument.  */
18467               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18468               continue;
18469             }
18470         }
18471
18472       /* We only recurse into c++ subprograms looking for template arguments.
18473          Skip their other children.  */
18474       if (!load_all
18475           && cu->language == language_cplus
18476           && parent_die != NULL
18477           && parent_die->tag == DW_TAG_subprogram)
18478         {
18479           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18480           continue;
18481         }
18482
18483       /* Check whether this DIE is interesting enough to save.  Normally
18484          we would not be interested in members here, but there may be
18485          later variables referencing them via DW_AT_specification (for
18486          static members).  */
18487       if (!load_all
18488           && !is_type_tag_for_partial (abbrev->tag)
18489           && abbrev->tag != DW_TAG_constant
18490           && abbrev->tag != DW_TAG_enumerator
18491           && abbrev->tag != DW_TAG_subprogram
18492           && abbrev->tag != DW_TAG_inlined_subroutine
18493           && abbrev->tag != DW_TAG_lexical_block
18494           && abbrev->tag != DW_TAG_variable
18495           && abbrev->tag != DW_TAG_namespace
18496           && abbrev->tag != DW_TAG_module
18497           && abbrev->tag != DW_TAG_member
18498           && abbrev->tag != DW_TAG_imported_unit
18499           && abbrev->tag != DW_TAG_imported_declaration)
18500         {
18501           /* Otherwise we skip to the next sibling, if any.  */
18502           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18503           continue;
18504         }
18505
18506       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18507                                    abbrev);
18508
18509       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18510
18511       /* This two-pass algorithm for processing partial symbols has a
18512          high cost in cache pressure.  Thus, handle some simple cases
18513          here which cover the majority of C partial symbols.  DIEs
18514          which neither have specification tags in them, nor could have
18515          specification tags elsewhere pointing at them, can simply be
18516          processed and discarded.
18517
18518          This segment is also optional; scan_partial_symbols and
18519          add_partial_symbol will handle these DIEs if we chain
18520          them in normally.  When compilers which do not emit large
18521          quantities of duplicate debug information are more common,
18522          this code can probably be removed.  */
18523
18524       /* Any complete simple types at the top level (pretty much all
18525          of them, for a language without namespaces), can be processed
18526          directly.  */
18527       if (parent_die == NULL
18528           && pdi.has_specification == 0
18529           && pdi.is_declaration == 0
18530           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18531               || pdi.tag == DW_TAG_base_type
18532               || pdi.tag == DW_TAG_subrange_type))
18533         {
18534           if (building_psymtab && pdi.name != NULL)
18535             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18536                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18537                                  psymbol_placement::STATIC,
18538                                  0, cu->language, objfile);
18539           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18540           continue;
18541         }
18542
18543       /* The exception for DW_TAG_typedef with has_children above is
18544          a workaround of GCC PR debug/47510.  In the case of this complaint
18545          type_name_or_error will error on such types later.
18546
18547          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18548          it could not find the child DIEs referenced later, this is checked
18549          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18550
18551       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18552         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18553                      "- DIE at %s [in module %s]"),
18554                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18555
18556       /* If we're at the second level, and we're an enumerator, and
18557          our parent has no specification (meaning possibly lives in a
18558          namespace elsewhere), then we can add the partial symbol now
18559          instead of queueing it.  */
18560       if (pdi.tag == DW_TAG_enumerator
18561           && parent_die != NULL
18562           && parent_die->die_parent == NULL
18563           && parent_die->tag == DW_TAG_enumeration_type
18564           && parent_die->has_specification == 0)
18565         {
18566           if (pdi.name == NULL)
18567             complaint (_("malformed enumerator DIE ignored"));
18568           else if (building_psymtab)
18569             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18570                                  VAR_DOMAIN, LOC_CONST, -1,
18571                                  cu->language == language_cplus
18572                                  ? psymbol_placement::GLOBAL
18573                                  : psymbol_placement::STATIC,
18574                                  0, cu->language, objfile);
18575
18576           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18577           continue;
18578         }
18579
18580       struct partial_die_info *part_die
18581         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18582
18583       /* We'll save this DIE so link it in.  */
18584       part_die->die_parent = parent_die;
18585       part_die->die_sibling = NULL;
18586       part_die->die_child = NULL;
18587
18588       if (last_die && last_die == parent_die)
18589         last_die->die_child = part_die;
18590       else if (last_die)
18591         last_die->die_sibling = part_die;
18592
18593       last_die = part_die;
18594
18595       if (first_die == NULL)
18596         first_die = part_die;
18597
18598       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18599          find interesting need to be in the hash table, because we
18600          also have the parent/sibling/child chains; only those that we
18601          might refer to by offset later during partial symbol reading.
18602
18603          For now this means things that might have be the target of a
18604          DW_AT_specification, DW_AT_abstract_origin, or
18605          DW_AT_extension.  DW_AT_extension will refer only to
18606          namespaces; DW_AT_abstract_origin refers to functions (and
18607          many things under the function DIE, but we do not recurse
18608          into function DIEs during partial symbol reading) and
18609          possibly variables as well; DW_AT_specification refers to
18610          declarations.  Declarations ought to have the DW_AT_declaration
18611          flag.  It happens that GCC forgets to put it in sometimes, but
18612          only for functions, not for types.
18613
18614          Adding more things than necessary to the hash table is harmless
18615          except for the performance cost.  Adding too few will result in
18616          wasted time in find_partial_die, when we reread the compilation
18617          unit with load_all_dies set.  */
18618
18619       if (load_all
18620           || abbrev->tag == DW_TAG_constant
18621           || abbrev->tag == DW_TAG_subprogram
18622           || abbrev->tag == DW_TAG_variable
18623           || abbrev->tag == DW_TAG_namespace
18624           || part_die->is_declaration)
18625         {
18626           void **slot;
18627
18628           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18629                                            to_underlying (part_die->sect_off),
18630                                            INSERT);
18631           *slot = part_die;
18632         }
18633
18634       /* For some DIEs we want to follow their children (if any).  For C
18635          we have no reason to follow the children of structures; for other
18636          languages we have to, so that we can get at method physnames
18637          to infer fully qualified class names, for DW_AT_specification,
18638          and for C++ template arguments.  For C++, we also look one level
18639          inside functions to find template arguments (if the name of the
18640          function does not already contain the template arguments).
18641
18642          For Ada, we need to scan the children of subprograms and lexical
18643          blocks as well because Ada allows the definition of nested
18644          entities that could be interesting for the debugger, such as
18645          nested subprograms for instance.  */
18646       if (last_die->has_children
18647           && (load_all
18648               || last_die->tag == DW_TAG_namespace
18649               || last_die->tag == DW_TAG_module
18650               || last_die->tag == DW_TAG_enumeration_type
18651               || (cu->language == language_cplus
18652                   && last_die->tag == DW_TAG_subprogram
18653                   && (last_die->name == NULL
18654                       || strchr (last_die->name, '<') == NULL))
18655               || (cu->language != language_c
18656                   && (last_die->tag == DW_TAG_class_type
18657                       || last_die->tag == DW_TAG_interface_type
18658                       || last_die->tag == DW_TAG_structure_type
18659                       || last_die->tag == DW_TAG_union_type))
18660               || (cu->language == language_ada
18661                   && (last_die->tag == DW_TAG_subprogram
18662                       || last_die->tag == DW_TAG_lexical_block))))
18663         {
18664           nesting_level++;
18665           parent_die = last_die;
18666           continue;
18667         }
18668
18669       /* Otherwise we skip to the next sibling, if any.  */
18670       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18671
18672       /* Back to the top, do it again.  */
18673     }
18674 }
18675
18676 partial_die_info::partial_die_info (sect_offset sect_off_,
18677                                     struct abbrev_info *abbrev)
18678   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18679 {
18680 }
18681
18682 /* Read a minimal amount of information into the minimal die structure.
18683    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18684
18685 const gdb_byte *
18686 partial_die_info::read (const struct die_reader_specs *reader,
18687                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18688 {
18689   struct dwarf2_cu *cu = reader->cu;
18690   struct dwarf2_per_objfile *dwarf2_per_objfile
18691     = cu->per_cu->dwarf2_per_objfile;
18692   unsigned int i;
18693   int has_low_pc_attr = 0;
18694   int has_high_pc_attr = 0;
18695   int high_pc_relative = 0;
18696
18697   for (i = 0; i < abbrev.num_attrs; ++i)
18698     {
18699       struct attribute attr;
18700
18701       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18702
18703       /* Store the data if it is of an attribute we want to keep in a
18704          partial symbol table.  */
18705       switch (attr.name)
18706         {
18707         case DW_AT_name:
18708           switch (tag)
18709             {
18710             case DW_TAG_compile_unit:
18711             case DW_TAG_partial_unit:
18712             case DW_TAG_type_unit:
18713               /* Compilation units have a DW_AT_name that is a filename, not
18714                  a source language identifier.  */
18715             case DW_TAG_enumeration_type:
18716             case DW_TAG_enumerator:
18717               /* These tags always have simple identifiers already; no need
18718                  to canonicalize them.  */
18719               name = DW_STRING (&attr);
18720               break;
18721             default:
18722               {
18723                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18724
18725                 name
18726                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18727                                               &objfile->per_bfd->storage_obstack);
18728               }
18729               break;
18730             }
18731           break;
18732         case DW_AT_linkage_name:
18733         case DW_AT_MIPS_linkage_name:
18734           /* Note that both forms of linkage name might appear.  We
18735              assume they will be the same, and we only store the last
18736              one we see.  */
18737           if (cu->language == language_ada)
18738             name = DW_STRING (&attr);
18739           linkage_name = DW_STRING (&attr);
18740           break;
18741         case DW_AT_low_pc:
18742           has_low_pc_attr = 1;
18743           lowpc = attr_value_as_address (&attr);
18744           break;
18745         case DW_AT_high_pc:
18746           has_high_pc_attr = 1;
18747           highpc = attr_value_as_address (&attr);
18748           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18749                 high_pc_relative = 1;
18750           break;
18751         case DW_AT_location:
18752           /* Support the .debug_loc offsets.  */
18753           if (attr_form_is_block (&attr))
18754             {
18755                d.locdesc = DW_BLOCK (&attr);
18756             }
18757           else if (attr_form_is_section_offset (&attr))
18758             {
18759               dwarf2_complex_location_expr_complaint ();
18760             }
18761           else
18762             {
18763               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18764                                                      "partial symbol information");
18765             }
18766           break;
18767         case DW_AT_external:
18768           is_external = DW_UNSND (&attr);
18769           break;
18770         case DW_AT_declaration:
18771           is_declaration = DW_UNSND (&attr);
18772           break;
18773         case DW_AT_type:
18774           has_type = 1;
18775           break;
18776         case DW_AT_abstract_origin:
18777         case DW_AT_specification:
18778         case DW_AT_extension:
18779           has_specification = 1;
18780           spec_offset = dwarf2_get_ref_die_offset (&attr);
18781           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18782                                    || cu->per_cu->is_dwz);
18783           break;
18784         case DW_AT_sibling:
18785           /* Ignore absolute siblings, they might point outside of
18786              the current compile unit.  */
18787           if (attr.form == DW_FORM_ref_addr)
18788             complaint (_("ignoring absolute DW_AT_sibling"));
18789           else
18790             {
18791               const gdb_byte *buffer = reader->buffer;
18792               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18793               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18794
18795               if (sibling_ptr < info_ptr)
18796                 complaint (_("DW_AT_sibling points backwards"));
18797               else if (sibling_ptr > reader->buffer_end)
18798                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18799               else
18800                 sibling = sibling_ptr;
18801             }
18802           break;
18803         case DW_AT_byte_size:
18804           has_byte_size = 1;
18805           break;
18806         case DW_AT_const_value:
18807           has_const_value = 1;
18808           break;
18809         case DW_AT_calling_convention:
18810           /* DWARF doesn't provide a way to identify a program's source-level
18811              entry point.  DW_AT_calling_convention attributes are only meant
18812              to describe functions' calling conventions.
18813
18814              However, because it's a necessary piece of information in
18815              Fortran, and before DWARF 4 DW_CC_program was the only
18816              piece of debugging information whose definition refers to
18817              a 'main program' at all, several compilers marked Fortran
18818              main programs with DW_CC_program --- even when those
18819              functions use the standard calling conventions.
18820
18821              Although DWARF now specifies a way to provide this
18822              information, we support this practice for backward
18823              compatibility.  */
18824           if (DW_UNSND (&attr) == DW_CC_program
18825               && cu->language == language_fortran)
18826             main_subprogram = 1;
18827           break;
18828         case DW_AT_inline:
18829           if (DW_UNSND (&attr) == DW_INL_inlined
18830               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18831             may_be_inlined = 1;
18832           break;
18833
18834         case DW_AT_import:
18835           if (tag == DW_TAG_imported_unit)
18836             {
18837               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18838               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18839                                   || cu->per_cu->is_dwz);
18840             }
18841           break;
18842
18843         case DW_AT_main_subprogram:
18844           main_subprogram = DW_UNSND (&attr);
18845           break;
18846
18847         case DW_AT_ranges:
18848           {
18849             /* It would be nice to reuse dwarf2_get_pc_bounds here,
18850                but that requires a full DIE, so instead we just
18851                reimplement it.  */
18852             int need_ranges_base = tag != DW_TAG_compile_unit;
18853             unsigned int ranges_offset = (DW_UNSND (&attr)
18854                                           + (need_ranges_base
18855                                              ? cu->ranges_base
18856                                              : 0));
18857
18858             /* Value of the DW_AT_ranges attribute is the offset in the
18859                .debug_ranges section.  */
18860             if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18861                                     nullptr))
18862               has_pc_info = 1;
18863           }
18864           break;
18865
18866         default:
18867           break;
18868         }
18869     }
18870
18871   if (high_pc_relative)
18872     highpc += lowpc;
18873
18874   if (has_low_pc_attr && has_high_pc_attr)
18875     {
18876       /* When using the GNU linker, .gnu.linkonce. sections are used to
18877          eliminate duplicate copies of functions and vtables and such.
18878          The linker will arbitrarily choose one and discard the others.
18879          The AT_*_pc values for such functions refer to local labels in
18880          these sections.  If the section from that file was discarded, the
18881          labels are not in the output, so the relocs get a value of 0.
18882          If this is a discarded function, mark the pc bounds as invalid,
18883          so that GDB will ignore it.  */
18884       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18885         {
18886           struct objfile *objfile = dwarf2_per_objfile->objfile;
18887           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18888
18889           complaint (_("DW_AT_low_pc %s is zero "
18890                        "for DIE at %s [in module %s]"),
18891                      paddress (gdbarch, lowpc),
18892                      sect_offset_str (sect_off),
18893                      objfile_name (objfile));
18894         }
18895       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18896       else if (lowpc >= highpc)
18897         {
18898           struct objfile *objfile = dwarf2_per_objfile->objfile;
18899           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18900
18901           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18902                        "for DIE at %s [in module %s]"),
18903                      paddress (gdbarch, lowpc),
18904                      paddress (gdbarch, highpc),
18905                      sect_offset_str (sect_off),
18906                      objfile_name (objfile));
18907         }
18908       else
18909         has_pc_info = 1;
18910     }
18911
18912   return info_ptr;
18913 }
18914
18915 /* Find a cached partial DIE at OFFSET in CU.  */
18916
18917 struct partial_die_info *
18918 dwarf2_cu::find_partial_die (sect_offset sect_off)
18919 {
18920   struct partial_die_info *lookup_die = NULL;
18921   struct partial_die_info part_die (sect_off);
18922
18923   lookup_die = ((struct partial_die_info *)
18924                 htab_find_with_hash (partial_dies, &part_die,
18925                                      to_underlying (sect_off)));
18926
18927   return lookup_die;
18928 }
18929
18930 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18931    except in the case of .debug_types DIEs which do not reference
18932    outside their CU (they do however referencing other types via
18933    DW_FORM_ref_sig8).  */
18934
18935 static const struct cu_partial_die_info
18936 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18937 {
18938   struct dwarf2_per_objfile *dwarf2_per_objfile
18939     = cu->per_cu->dwarf2_per_objfile;
18940   struct objfile *objfile = dwarf2_per_objfile->objfile;
18941   struct dwarf2_per_cu_data *per_cu = NULL;
18942   struct partial_die_info *pd = NULL;
18943
18944   if (offset_in_dwz == cu->per_cu->is_dwz
18945       && offset_in_cu_p (&cu->header, sect_off))
18946     {
18947       pd = cu->find_partial_die (sect_off);
18948       if (pd != NULL)
18949         return { cu, pd };
18950       /* We missed recording what we needed.
18951          Load all dies and try again.  */
18952       per_cu = cu->per_cu;
18953     }
18954   else
18955     {
18956       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18957       if (cu->per_cu->is_debug_types)
18958         {
18959           error (_("Dwarf Error: Type Unit at offset %s contains"
18960                    " external reference to offset %s [in module %s].\n"),
18961                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18962                  bfd_get_filename (objfile->obfd));
18963         }
18964       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18965                                                  dwarf2_per_objfile);
18966
18967       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18968         load_partial_comp_unit (per_cu);
18969
18970       per_cu->cu->last_used = 0;
18971       pd = per_cu->cu->find_partial_die (sect_off);
18972     }
18973
18974   /* If we didn't find it, and not all dies have been loaded,
18975      load them all and try again.  */
18976
18977   if (pd == NULL && per_cu->load_all_dies == 0)
18978     {
18979       per_cu->load_all_dies = 1;
18980
18981       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18982          THIS_CU->cu may already be in use.  So we can't just free it and
18983          replace its DIEs with the ones we read in.  Instead, we leave those
18984          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18985          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18986          set.  */
18987       load_partial_comp_unit (per_cu);
18988
18989       pd = per_cu->cu->find_partial_die (sect_off);
18990     }
18991
18992   if (pd == NULL)
18993     internal_error (__FILE__, __LINE__,
18994                     _("could not find partial DIE %s "
18995                       "in cache [from module %s]\n"),
18996                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18997   return { per_cu->cu, pd };
18998 }
18999
19000 /* See if we can figure out if the class lives in a namespace.  We do
19001    this by looking for a member function; its demangled name will
19002    contain namespace info, if there is any.  */
19003
19004 static void
19005 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
19006                                   struct dwarf2_cu *cu)
19007 {
19008   /* NOTE: carlton/2003-10-07: Getting the info this way changes
19009      what template types look like, because the demangler
19010      frequently doesn't give the same name as the debug info.  We
19011      could fix this by only using the demangled name to get the
19012      prefix (but see comment in read_structure_type).  */
19013
19014   struct partial_die_info *real_pdi;
19015   struct partial_die_info *child_pdi;
19016
19017   /* If this DIE (this DIE's specification, if any) has a parent, then
19018      we should not do this.  We'll prepend the parent's fully qualified
19019      name when we create the partial symbol.  */
19020
19021   real_pdi = struct_pdi;
19022   while (real_pdi->has_specification)
19023     {
19024       auto res = find_partial_die (real_pdi->spec_offset,
19025                                    real_pdi->spec_is_dwz, cu);
19026       real_pdi = res.pdi;
19027       cu = res.cu;
19028     }
19029
19030   if (real_pdi->die_parent != NULL)
19031     return;
19032
19033   for (child_pdi = struct_pdi->die_child;
19034        child_pdi != NULL;
19035        child_pdi = child_pdi->die_sibling)
19036     {
19037       if (child_pdi->tag == DW_TAG_subprogram
19038           && child_pdi->linkage_name != NULL)
19039         {
19040           char *actual_class_name
19041             = language_class_name_from_physname (cu->language_defn,
19042                                                  child_pdi->linkage_name);
19043           if (actual_class_name != NULL)
19044             {
19045               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19046               struct_pdi->name
19047                 = ((const char *)
19048                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
19049                                   actual_class_name,
19050                                   strlen (actual_class_name)));
19051               xfree (actual_class_name);
19052             }
19053           break;
19054         }
19055     }
19056 }
19057
19058 void
19059 partial_die_info::fixup (struct dwarf2_cu *cu)
19060 {
19061   /* Once we've fixed up a die, there's no point in doing so again.
19062      This also avoids a memory leak if we were to call
19063      guess_partial_die_structure_name multiple times.  */
19064   if (fixup_called)
19065     return;
19066
19067   /* If we found a reference attribute and the DIE has no name, try
19068      to find a name in the referred to DIE.  */
19069
19070   if (name == NULL && has_specification)
19071     {
19072       struct partial_die_info *spec_die;
19073
19074       auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
19075       spec_die = res.pdi;
19076       cu = res.cu;
19077
19078       spec_die->fixup (cu);
19079
19080       if (spec_die->name)
19081         {
19082           name = spec_die->name;
19083
19084           /* Copy DW_AT_external attribute if it is set.  */
19085           if (spec_die->is_external)
19086             is_external = spec_die->is_external;
19087         }
19088     }
19089
19090   /* Set default names for some unnamed DIEs.  */
19091
19092   if (name == NULL && tag == DW_TAG_namespace)
19093     name = CP_ANONYMOUS_NAMESPACE_STR;
19094
19095   /* If there is no parent die to provide a namespace, and there are
19096      children, see if we can determine the namespace from their linkage
19097      name.  */
19098   if (cu->language == language_cplus
19099       && !VEC_empty (dwarf2_section_info_def,
19100                      cu->per_cu->dwarf2_per_objfile->types)
19101       && die_parent == NULL
19102       && has_children
19103       && (tag == DW_TAG_class_type
19104           || tag == DW_TAG_structure_type
19105           || tag == DW_TAG_union_type))
19106     guess_partial_die_structure_name (this, cu);
19107
19108   /* GCC might emit a nameless struct or union that has a linkage
19109      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19110   if (name == NULL
19111       && (tag == DW_TAG_class_type
19112           || tag == DW_TAG_interface_type
19113           || tag == DW_TAG_structure_type
19114           || tag == DW_TAG_union_type)
19115       && linkage_name != NULL)
19116     {
19117       char *demangled;
19118
19119       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
19120       if (demangled)
19121         {
19122           const char *base;
19123
19124           /* Strip any leading namespaces/classes, keep only the base name.
19125              DW_AT_name for named DIEs does not contain the prefixes.  */
19126           base = strrchr (demangled, ':');
19127           if (base && base > demangled && base[-1] == ':')
19128             base++;
19129           else
19130             base = demangled;
19131
19132           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19133           name
19134             = ((const char *)
19135                obstack_copy0 (&objfile->per_bfd->storage_obstack,
19136                               base, strlen (base)));
19137           xfree (demangled);
19138         }
19139     }
19140
19141   fixup_called = 1;
19142 }
19143
19144 /* Read an attribute value described by an attribute form.  */
19145
19146 static const gdb_byte *
19147 read_attribute_value (const struct die_reader_specs *reader,
19148                       struct attribute *attr, unsigned form,
19149                       LONGEST implicit_const, const gdb_byte *info_ptr)
19150 {
19151   struct dwarf2_cu *cu = reader->cu;
19152   struct dwarf2_per_objfile *dwarf2_per_objfile
19153     = cu->per_cu->dwarf2_per_objfile;
19154   struct objfile *objfile = dwarf2_per_objfile->objfile;
19155   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19156   bfd *abfd = reader->abfd;
19157   struct comp_unit_head *cu_header = &cu->header;
19158   unsigned int bytes_read;
19159   struct dwarf_block *blk;
19160
19161   attr->form = (enum dwarf_form) form;
19162   switch (form)
19163     {
19164     case DW_FORM_ref_addr:
19165       if (cu->header.version == 2)
19166         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19167       else
19168         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19169                                        &cu->header, &bytes_read);
19170       info_ptr += bytes_read;
19171       break;
19172     case DW_FORM_GNU_ref_alt:
19173       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19174       info_ptr += bytes_read;
19175       break;
19176     case DW_FORM_addr:
19177       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19178       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19179       info_ptr += bytes_read;
19180       break;
19181     case DW_FORM_block2:
19182       blk = dwarf_alloc_block (cu);
19183       blk->size = read_2_bytes (abfd, info_ptr);
19184       info_ptr += 2;
19185       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19186       info_ptr += blk->size;
19187       DW_BLOCK (attr) = blk;
19188       break;
19189     case DW_FORM_block4:
19190       blk = dwarf_alloc_block (cu);
19191       blk->size = read_4_bytes (abfd, info_ptr);
19192       info_ptr += 4;
19193       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19194       info_ptr += blk->size;
19195       DW_BLOCK (attr) = blk;
19196       break;
19197     case DW_FORM_data2:
19198       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19199       info_ptr += 2;
19200       break;
19201     case DW_FORM_data4:
19202       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19203       info_ptr += 4;
19204       break;
19205     case DW_FORM_data8:
19206       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19207       info_ptr += 8;
19208       break;
19209     case DW_FORM_data16:
19210       blk = dwarf_alloc_block (cu);
19211       blk->size = 16;
19212       blk->data = read_n_bytes (abfd, info_ptr, 16);
19213       info_ptr += 16;
19214       DW_BLOCK (attr) = blk;
19215       break;
19216     case DW_FORM_sec_offset:
19217       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19218       info_ptr += bytes_read;
19219       break;
19220     case DW_FORM_string:
19221       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19222       DW_STRING_IS_CANONICAL (attr) = 0;
19223       info_ptr += bytes_read;
19224       break;
19225     case DW_FORM_strp:
19226       if (!cu->per_cu->is_dwz)
19227         {
19228           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19229                                                    abfd, info_ptr, cu_header,
19230                                                    &bytes_read);
19231           DW_STRING_IS_CANONICAL (attr) = 0;
19232           info_ptr += bytes_read;
19233           break;
19234         }
19235       /* FALLTHROUGH */
19236     case DW_FORM_line_strp:
19237       if (!cu->per_cu->is_dwz)
19238         {
19239           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19240                                                         abfd, info_ptr,
19241                                                         cu_header, &bytes_read);
19242           DW_STRING_IS_CANONICAL (attr) = 0;
19243           info_ptr += bytes_read;
19244           break;
19245         }
19246       /* FALLTHROUGH */
19247     case DW_FORM_GNU_strp_alt:
19248       {
19249         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19250         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19251                                           &bytes_read);
19252
19253         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19254                                                           dwz, str_offset);
19255         DW_STRING_IS_CANONICAL (attr) = 0;
19256         info_ptr += bytes_read;
19257       }
19258       break;
19259     case DW_FORM_exprloc:
19260     case DW_FORM_block:
19261       blk = dwarf_alloc_block (cu);
19262       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19263       info_ptr += bytes_read;
19264       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19265       info_ptr += blk->size;
19266       DW_BLOCK (attr) = blk;
19267       break;
19268     case DW_FORM_block1:
19269       blk = dwarf_alloc_block (cu);
19270       blk->size = read_1_byte (abfd, info_ptr);
19271       info_ptr += 1;
19272       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19273       info_ptr += blk->size;
19274       DW_BLOCK (attr) = blk;
19275       break;
19276     case DW_FORM_data1:
19277       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19278       info_ptr += 1;
19279       break;
19280     case DW_FORM_flag:
19281       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19282       info_ptr += 1;
19283       break;
19284     case DW_FORM_flag_present:
19285       DW_UNSND (attr) = 1;
19286       break;
19287     case DW_FORM_sdata:
19288       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19289       info_ptr += bytes_read;
19290       break;
19291     case DW_FORM_udata:
19292       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19293       info_ptr += bytes_read;
19294       break;
19295     case DW_FORM_ref1:
19296       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19297                          + read_1_byte (abfd, info_ptr));
19298       info_ptr += 1;
19299       break;
19300     case DW_FORM_ref2:
19301       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19302                          + read_2_bytes (abfd, info_ptr));
19303       info_ptr += 2;
19304       break;
19305     case DW_FORM_ref4:
19306       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19307                          + read_4_bytes (abfd, info_ptr));
19308       info_ptr += 4;
19309       break;
19310     case DW_FORM_ref8:
19311       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19312                          + read_8_bytes (abfd, info_ptr));
19313       info_ptr += 8;
19314       break;
19315     case DW_FORM_ref_sig8:
19316       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19317       info_ptr += 8;
19318       break;
19319     case DW_FORM_ref_udata:
19320       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19321                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19322       info_ptr += bytes_read;
19323       break;
19324     case DW_FORM_indirect:
19325       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19326       info_ptr += bytes_read;
19327       if (form == DW_FORM_implicit_const)
19328         {
19329           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19330           info_ptr += bytes_read;
19331         }
19332       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19333                                        info_ptr);
19334       break;
19335     case DW_FORM_implicit_const:
19336       DW_SND (attr) = implicit_const;
19337       break;
19338     case DW_FORM_addrx:
19339     case DW_FORM_GNU_addr_index:
19340       if (reader->dwo_file == NULL)
19341         {
19342           /* For now flag a hard error.
19343              Later we can turn this into a complaint.  */
19344           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19345                  dwarf_form_name (form),
19346                  bfd_get_filename (abfd));
19347         }
19348       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19349       info_ptr += bytes_read;
19350       break;
19351     case DW_FORM_strx:
19352     case DW_FORM_strx1:
19353     case DW_FORM_strx2:
19354     case DW_FORM_strx3:
19355     case DW_FORM_strx4:
19356     case DW_FORM_GNU_str_index:
19357       if (reader->dwo_file == NULL)
19358         {
19359           /* For now flag a hard error.
19360              Later we can turn this into a complaint if warranted.  */
19361           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19362                  dwarf_form_name (form),
19363                  bfd_get_filename (abfd));
19364         }
19365       {
19366         ULONGEST str_index;
19367         if (form == DW_FORM_strx1)
19368           {
19369             str_index = read_1_byte (abfd, info_ptr);
19370             info_ptr += 1;
19371           }
19372         else if (form == DW_FORM_strx2)
19373           {
19374             str_index = read_2_bytes (abfd, info_ptr);
19375             info_ptr += 2;
19376           }
19377         else if (form == DW_FORM_strx3)
19378           {
19379             str_index = read_3_bytes (abfd, info_ptr);
19380             info_ptr += 3;
19381           }
19382         else if (form == DW_FORM_strx4)
19383           {
19384             str_index = read_4_bytes (abfd, info_ptr);
19385             info_ptr += 4;
19386           }
19387         else
19388           {
19389             str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19390             info_ptr += bytes_read;
19391           }
19392         DW_STRING (attr) = read_str_index (reader, str_index);
19393         DW_STRING_IS_CANONICAL (attr) = 0;
19394       }
19395       break;
19396     default:
19397       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19398              dwarf_form_name (form),
19399              bfd_get_filename (abfd));
19400     }
19401
19402   /* Super hack.  */
19403   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19404     attr->form = DW_FORM_GNU_ref_alt;
19405
19406   /* We have seen instances where the compiler tried to emit a byte
19407      size attribute of -1 which ended up being encoded as an unsigned
19408      0xffffffff.  Although 0xffffffff is technically a valid size value,
19409      an object of this size seems pretty unlikely so we can relatively
19410      safely treat these cases as if the size attribute was invalid and
19411      treat them as zero by default.  */
19412   if (attr->name == DW_AT_byte_size
19413       && form == DW_FORM_data4
19414       && DW_UNSND (attr) >= 0xffffffff)
19415     {
19416       complaint
19417         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19418          hex_string (DW_UNSND (attr)));
19419       DW_UNSND (attr) = 0;
19420     }
19421
19422   return info_ptr;
19423 }
19424
19425 /* Read an attribute described by an abbreviated attribute.  */
19426
19427 static const gdb_byte *
19428 read_attribute (const struct die_reader_specs *reader,
19429                 struct attribute *attr, struct attr_abbrev *abbrev,
19430                 const gdb_byte *info_ptr)
19431 {
19432   attr->name = abbrev->name;
19433   return read_attribute_value (reader, attr, abbrev->form,
19434                                abbrev->implicit_const, info_ptr);
19435 }
19436
19437 /* Read dwarf information from a buffer.  */
19438
19439 static unsigned int
19440 read_1_byte (bfd *abfd, const gdb_byte *buf)
19441 {
19442   return bfd_get_8 (abfd, buf);
19443 }
19444
19445 static int
19446 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19447 {
19448   return bfd_get_signed_8 (abfd, buf);
19449 }
19450
19451 static unsigned int
19452 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19453 {
19454   return bfd_get_16 (abfd, buf);
19455 }
19456
19457 static int
19458 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19459 {
19460   return bfd_get_signed_16 (abfd, buf);
19461 }
19462
19463 static unsigned int
19464 read_3_bytes (bfd *abfd, const gdb_byte *buf)
19465 {
19466   unsigned int result = 0;
19467   for (int i = 0; i < 3; ++i)
19468     {
19469       unsigned char byte = bfd_get_8 (abfd, buf);
19470       buf++;
19471       result |= ((unsigned int) byte << (i * 8));
19472     }
19473   return result;
19474 }
19475
19476 static unsigned int
19477 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19478 {
19479   return bfd_get_32 (abfd, buf);
19480 }
19481
19482 static int
19483 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19484 {
19485   return bfd_get_signed_32 (abfd, buf);
19486 }
19487
19488 static ULONGEST
19489 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19490 {
19491   return bfd_get_64 (abfd, buf);
19492 }
19493
19494 static CORE_ADDR
19495 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19496               unsigned int *bytes_read)
19497 {
19498   struct comp_unit_head *cu_header = &cu->header;
19499   CORE_ADDR retval = 0;
19500
19501   if (cu_header->signed_addr_p)
19502     {
19503       switch (cu_header->addr_size)
19504         {
19505         case 2:
19506           retval = bfd_get_signed_16 (abfd, buf);
19507           break;
19508         case 4:
19509           retval = bfd_get_signed_32 (abfd, buf);
19510           break;
19511         case 8:
19512           retval = bfd_get_signed_64 (abfd, buf);
19513           break;
19514         default:
19515           internal_error (__FILE__, __LINE__,
19516                           _("read_address: bad switch, signed [in module %s]"),
19517                           bfd_get_filename (abfd));
19518         }
19519     }
19520   else
19521     {
19522       switch (cu_header->addr_size)
19523         {
19524         case 2:
19525           retval = bfd_get_16 (abfd, buf);
19526           break;
19527         case 4:
19528           retval = bfd_get_32 (abfd, buf);
19529           break;
19530         case 8:
19531           retval = bfd_get_64 (abfd, buf);
19532           break;
19533         default:
19534           internal_error (__FILE__, __LINE__,
19535                           _("read_address: bad switch, "
19536                             "unsigned [in module %s]"),
19537                           bfd_get_filename (abfd));
19538         }
19539     }
19540
19541   *bytes_read = cu_header->addr_size;
19542   return retval;
19543 }
19544
19545 /* Read the initial length from a section.  The (draft) DWARF 3
19546    specification allows the initial length to take up either 4 bytes
19547    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19548    bytes describe the length and all offsets will be 8 bytes in length
19549    instead of 4.
19550
19551    An older, non-standard 64-bit format is also handled by this
19552    function.  The older format in question stores the initial length
19553    as an 8-byte quantity without an escape value.  Lengths greater
19554    than 2^32 aren't very common which means that the initial 4 bytes
19555    is almost always zero.  Since a length value of zero doesn't make
19556    sense for the 32-bit format, this initial zero can be considered to
19557    be an escape value which indicates the presence of the older 64-bit
19558    format.  As written, the code can't detect (old format) lengths
19559    greater than 4GB.  If it becomes necessary to handle lengths
19560    somewhat larger than 4GB, we could allow other small values (such
19561    as the non-sensical values of 1, 2, and 3) to also be used as
19562    escape values indicating the presence of the old format.
19563
19564    The value returned via bytes_read should be used to increment the
19565    relevant pointer after calling read_initial_length().
19566
19567    [ Note:  read_initial_length() and read_offset() are based on the
19568      document entitled "DWARF Debugging Information Format", revision
19569      3, draft 8, dated November 19, 2001.  This document was obtained
19570      from:
19571
19572         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19573
19574      This document is only a draft and is subject to change.  (So beware.)
19575
19576      Details regarding the older, non-standard 64-bit format were
19577      determined empirically by examining 64-bit ELF files produced by
19578      the SGI toolchain on an IRIX 6.5 machine.
19579
19580      - Kevin, July 16, 2002
19581    ] */
19582
19583 static LONGEST
19584 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19585 {
19586   LONGEST length = bfd_get_32 (abfd, buf);
19587
19588   if (length == 0xffffffff)
19589     {
19590       length = bfd_get_64 (abfd, buf + 4);
19591       *bytes_read = 12;
19592     }
19593   else if (length == 0)
19594     {
19595       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19596       length = bfd_get_64 (abfd, buf);
19597       *bytes_read = 8;
19598     }
19599   else
19600     {
19601       *bytes_read = 4;
19602     }
19603
19604   return length;
19605 }
19606
19607 /* Cover function for read_initial_length.
19608    Returns the length of the object at BUF, and stores the size of the
19609    initial length in *BYTES_READ and stores the size that offsets will be in
19610    *OFFSET_SIZE.
19611    If the initial length size is not equivalent to that specified in
19612    CU_HEADER then issue a complaint.
19613    This is useful when reading non-comp-unit headers.  */
19614
19615 static LONGEST
19616 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19617                                         const struct comp_unit_head *cu_header,
19618                                         unsigned int *bytes_read,
19619                                         unsigned int *offset_size)
19620 {
19621   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19622
19623   gdb_assert (cu_header->initial_length_size == 4
19624               || cu_header->initial_length_size == 8
19625               || cu_header->initial_length_size == 12);
19626
19627   if (cu_header->initial_length_size != *bytes_read)
19628     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19629
19630   *offset_size = (*bytes_read == 4) ? 4 : 8;
19631   return length;
19632 }
19633
19634 /* Read an offset from the data stream.  The size of the offset is
19635    given by cu_header->offset_size.  */
19636
19637 static LONGEST
19638 read_offset (bfd *abfd, const gdb_byte *buf,
19639              const struct comp_unit_head *cu_header,
19640              unsigned int *bytes_read)
19641 {
19642   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19643
19644   *bytes_read = cu_header->offset_size;
19645   return offset;
19646 }
19647
19648 /* Read an offset from the data stream.  */
19649
19650 static LONGEST
19651 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19652 {
19653   LONGEST retval = 0;
19654
19655   switch (offset_size)
19656     {
19657     case 4:
19658       retval = bfd_get_32 (abfd, buf);
19659       break;
19660     case 8:
19661       retval = bfd_get_64 (abfd, buf);
19662       break;
19663     default:
19664       internal_error (__FILE__, __LINE__,
19665                       _("read_offset_1: bad switch [in module %s]"),
19666                       bfd_get_filename (abfd));
19667     }
19668
19669   return retval;
19670 }
19671
19672 static const gdb_byte *
19673 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19674 {
19675   /* If the size of a host char is 8 bits, we can return a pointer
19676      to the buffer, otherwise we have to copy the data to a buffer
19677      allocated on the temporary obstack.  */
19678   gdb_assert (HOST_CHAR_BIT == 8);
19679   return buf;
19680 }
19681
19682 static const char *
19683 read_direct_string (bfd *abfd, const gdb_byte *buf,
19684                     unsigned int *bytes_read_ptr)
19685 {
19686   /* If the size of a host char is 8 bits, we can return a pointer
19687      to the string, otherwise we have to copy the string to a buffer
19688      allocated on the temporary obstack.  */
19689   gdb_assert (HOST_CHAR_BIT == 8);
19690   if (*buf == '\0')
19691     {
19692       *bytes_read_ptr = 1;
19693       return NULL;
19694     }
19695   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19696   return (const char *) buf;
19697 }
19698
19699 /* Return pointer to string at section SECT offset STR_OFFSET with error
19700    reporting strings FORM_NAME and SECT_NAME.  */
19701
19702 static const char *
19703 read_indirect_string_at_offset_from (struct objfile *objfile,
19704                                      bfd *abfd, LONGEST str_offset,
19705                                      struct dwarf2_section_info *sect,
19706                                      const char *form_name,
19707                                      const char *sect_name)
19708 {
19709   dwarf2_read_section (objfile, sect);
19710   if (sect->buffer == NULL)
19711     error (_("%s used without %s section [in module %s]"),
19712            form_name, sect_name, bfd_get_filename (abfd));
19713   if (str_offset >= sect->size)
19714     error (_("%s pointing outside of %s section [in module %s]"),
19715            form_name, sect_name, bfd_get_filename (abfd));
19716   gdb_assert (HOST_CHAR_BIT == 8);
19717   if (sect->buffer[str_offset] == '\0')
19718     return NULL;
19719   return (const char *) (sect->buffer + str_offset);
19720 }
19721
19722 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19723
19724 static const char *
19725 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19726                                 bfd *abfd, LONGEST str_offset)
19727 {
19728   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19729                                               abfd, str_offset,
19730                                               &dwarf2_per_objfile->str,
19731                                               "DW_FORM_strp", ".debug_str");
19732 }
19733
19734 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19735
19736 static const char *
19737 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19738                                      bfd *abfd, LONGEST str_offset)
19739 {
19740   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19741                                               abfd, str_offset,
19742                                               &dwarf2_per_objfile->line_str,
19743                                               "DW_FORM_line_strp",
19744                                               ".debug_line_str");
19745 }
19746
19747 /* Read a string at offset STR_OFFSET in the .debug_str section from
19748    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19749    the string consists of a single NUL byte, return NULL; otherwise
19750    return a pointer to the string.  */
19751
19752 static const char *
19753 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19754                                LONGEST str_offset)
19755 {
19756   dwarf2_read_section (objfile, &dwz->str);
19757
19758   if (dwz->str.buffer == NULL)
19759     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19760              "section [in module %s]"),
19761            bfd_get_filename (dwz->dwz_bfd));
19762   if (str_offset >= dwz->str.size)
19763     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19764              ".debug_str section [in module %s]"),
19765            bfd_get_filename (dwz->dwz_bfd));
19766   gdb_assert (HOST_CHAR_BIT == 8);
19767   if (dwz->str.buffer[str_offset] == '\0')
19768     return NULL;
19769   return (const char *) (dwz->str.buffer + str_offset);
19770 }
19771
19772 /* Return pointer to string at .debug_str offset as read from BUF.
19773    BUF is assumed to be in a compilation unit described by CU_HEADER.
19774    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19775
19776 static const char *
19777 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19778                       const gdb_byte *buf,
19779                       const struct comp_unit_head *cu_header,
19780                       unsigned int *bytes_read_ptr)
19781 {
19782   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19783
19784   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19785 }
19786
19787 /* Return pointer to string at .debug_line_str offset as read from BUF.
19788    BUF is assumed to be in a compilation unit described by CU_HEADER.
19789    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19790
19791 static const char *
19792 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19793                            bfd *abfd, const gdb_byte *buf,
19794                            const struct comp_unit_head *cu_header,
19795                            unsigned int *bytes_read_ptr)
19796 {
19797   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19798
19799   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19800                                               str_offset);
19801 }
19802
19803 ULONGEST
19804 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19805                           unsigned int *bytes_read_ptr)
19806 {
19807   ULONGEST result;
19808   unsigned int num_read;
19809   int shift;
19810   unsigned char byte;
19811
19812   result = 0;
19813   shift = 0;
19814   num_read = 0;
19815   while (1)
19816     {
19817       byte = bfd_get_8 (abfd, buf);
19818       buf++;
19819       num_read++;
19820       result |= ((ULONGEST) (byte & 127) << shift);
19821       if ((byte & 128) == 0)
19822         {
19823           break;
19824         }
19825       shift += 7;
19826     }
19827   *bytes_read_ptr = num_read;
19828   return result;
19829 }
19830
19831 static LONGEST
19832 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19833                     unsigned int *bytes_read_ptr)
19834 {
19835   ULONGEST result;
19836   int shift, num_read;
19837   unsigned char byte;
19838
19839   result = 0;
19840   shift = 0;
19841   num_read = 0;
19842   while (1)
19843     {
19844       byte = bfd_get_8 (abfd, buf);
19845       buf++;
19846       num_read++;
19847       result |= ((ULONGEST) (byte & 127) << shift);
19848       shift += 7;
19849       if ((byte & 128) == 0)
19850         {
19851           break;
19852         }
19853     }
19854   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19855     result |= -(((ULONGEST) 1) << shift);
19856   *bytes_read_ptr = num_read;
19857   return result;
19858 }
19859
19860 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19861    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19862    ADDR_SIZE is the size of addresses from the CU header.  */
19863
19864 static CORE_ADDR
19865 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19866                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19867 {
19868   struct objfile *objfile = dwarf2_per_objfile->objfile;
19869   bfd *abfd = objfile->obfd;
19870   const gdb_byte *info_ptr;
19871
19872   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19873   if (dwarf2_per_objfile->addr.buffer == NULL)
19874     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19875            objfile_name (objfile));
19876   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19877     error (_("DW_FORM_addr_index pointing outside of "
19878              ".debug_addr section [in module %s]"),
19879            objfile_name (objfile));
19880   info_ptr = (dwarf2_per_objfile->addr.buffer
19881               + addr_base + addr_index * addr_size);
19882   if (addr_size == 4)
19883     return bfd_get_32 (abfd, info_ptr);
19884   else
19885     return bfd_get_64 (abfd, info_ptr);
19886 }
19887
19888 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19889
19890 static CORE_ADDR
19891 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19892 {
19893   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19894                             cu->addr_base, cu->header.addr_size);
19895 }
19896
19897 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19898
19899 static CORE_ADDR
19900 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19901                              unsigned int *bytes_read)
19902 {
19903   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19904   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19905
19906   return read_addr_index (cu, addr_index);
19907 }
19908
19909 /* Data structure to pass results from dwarf2_read_addr_index_reader
19910    back to dwarf2_read_addr_index.  */
19911
19912 struct dwarf2_read_addr_index_data
19913 {
19914   ULONGEST addr_base;
19915   int addr_size;
19916 };
19917
19918 /* die_reader_func for dwarf2_read_addr_index.  */
19919
19920 static void
19921 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19922                                const gdb_byte *info_ptr,
19923                                struct die_info *comp_unit_die,
19924                                int has_children,
19925                                void *data)
19926 {
19927   struct dwarf2_cu *cu = reader->cu;
19928   struct dwarf2_read_addr_index_data *aidata =
19929     (struct dwarf2_read_addr_index_data *) data;
19930
19931   aidata->addr_base = cu->addr_base;
19932   aidata->addr_size = cu->header.addr_size;
19933 }
19934
19935 /* Given an index in .debug_addr, fetch the value.
19936    NOTE: This can be called during dwarf expression evaluation,
19937    long after the debug information has been read, and thus per_cu->cu
19938    may no longer exist.  */
19939
19940 CORE_ADDR
19941 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19942                         unsigned int addr_index)
19943 {
19944   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19945   struct dwarf2_cu *cu = per_cu->cu;
19946   ULONGEST addr_base;
19947   int addr_size;
19948
19949   /* We need addr_base and addr_size.
19950      If we don't have PER_CU->cu, we have to get it.
19951      Nasty, but the alternative is storing the needed info in PER_CU,
19952      which at this point doesn't seem justified: it's not clear how frequently
19953      it would get used and it would increase the size of every PER_CU.
19954      Entry points like dwarf2_per_cu_addr_size do a similar thing
19955      so we're not in uncharted territory here.
19956      Alas we need to be a bit more complicated as addr_base is contained
19957      in the DIE.
19958
19959      We don't need to read the entire CU(/TU).
19960      We just need the header and top level die.
19961
19962      IWBN to use the aging mechanism to let us lazily later discard the CU.
19963      For now we skip this optimization.  */
19964
19965   if (cu != NULL)
19966     {
19967       addr_base = cu->addr_base;
19968       addr_size = cu->header.addr_size;
19969     }
19970   else
19971     {
19972       struct dwarf2_read_addr_index_data aidata;
19973
19974       /* Note: We can't use init_cutu_and_read_dies_simple here,
19975          we need addr_base.  */
19976       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19977                                dwarf2_read_addr_index_reader, &aidata);
19978       addr_base = aidata.addr_base;
19979       addr_size = aidata.addr_size;
19980     }
19981
19982   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19983                             addr_size);
19984 }
19985
19986 /* Given a DW_FORM_GNU_str_index or DW_FORM_strx, fetch the string.
19987    This is only used by the Fission support.  */
19988
19989 static const char *
19990 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19991 {
19992   struct dwarf2_cu *cu = reader->cu;
19993   struct dwarf2_per_objfile *dwarf2_per_objfile
19994     = cu->per_cu->dwarf2_per_objfile;
19995   struct objfile *objfile = dwarf2_per_objfile->objfile;
19996   const char *objf_name = objfile_name (objfile);
19997   bfd *abfd = objfile->obfd;
19998   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19999   struct dwarf2_section_info *str_offsets_section =
20000     &reader->dwo_file->sections.str_offsets;
20001   const gdb_byte *info_ptr;
20002   ULONGEST str_offset;
20003   static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
20004
20005   dwarf2_read_section (objfile, str_section);
20006   dwarf2_read_section (objfile, str_offsets_section);
20007   if (str_section->buffer == NULL)
20008     error (_("%s used without .debug_str.dwo section"
20009              " in CU at offset %s [in module %s]"),
20010            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20011   if (str_offsets_section->buffer == NULL)
20012     error (_("%s used without .debug_str_offsets.dwo section"
20013              " in CU at offset %s [in module %s]"),
20014            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20015   if (str_index * cu->header.offset_size >= str_offsets_section->size)
20016     error (_("%s pointing outside of .debug_str_offsets.dwo"
20017              " section in CU at offset %s [in module %s]"),
20018            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20019   info_ptr = (str_offsets_section->buffer
20020               + str_index * cu->header.offset_size);
20021   if (cu->header.offset_size == 4)
20022     str_offset = bfd_get_32 (abfd, info_ptr);
20023   else
20024     str_offset = bfd_get_64 (abfd, info_ptr);
20025   if (str_offset >= str_section->size)
20026     error (_("Offset from %s pointing outside of"
20027              " .debug_str.dwo section in CU at offset %s [in module %s]"),
20028            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20029   return (const char *) (str_section->buffer + str_offset);
20030 }
20031
20032 /* Return the length of an LEB128 number in BUF.  */
20033
20034 static int
20035 leb128_size (const gdb_byte *buf)
20036 {
20037   const gdb_byte *begin = buf;
20038   gdb_byte byte;
20039
20040   while (1)
20041     {
20042       byte = *buf++;
20043       if ((byte & 128) == 0)
20044         return buf - begin;
20045     }
20046 }
20047
20048 static void
20049 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
20050 {
20051   switch (lang)
20052     {
20053     case DW_LANG_C89:
20054     case DW_LANG_C99:
20055     case DW_LANG_C11:
20056     case DW_LANG_C:
20057     case DW_LANG_UPC:
20058       cu->language = language_c;
20059       break;
20060     case DW_LANG_Java:
20061     case DW_LANG_C_plus_plus:
20062     case DW_LANG_C_plus_plus_11:
20063     case DW_LANG_C_plus_plus_14:
20064       cu->language = language_cplus;
20065       break;
20066     case DW_LANG_D:
20067       cu->language = language_d;
20068       break;
20069     case DW_LANG_Fortran77:
20070     case DW_LANG_Fortran90:
20071     case DW_LANG_Fortran95:
20072     case DW_LANG_Fortran03:
20073     case DW_LANG_Fortran08:
20074       cu->language = language_fortran;
20075       break;
20076     case DW_LANG_Go:
20077       cu->language = language_go;
20078       break;
20079     case DW_LANG_Mips_Assembler:
20080       cu->language = language_asm;
20081       break;
20082     case DW_LANG_Ada83:
20083     case DW_LANG_Ada95:
20084       cu->language = language_ada;
20085       break;
20086     case DW_LANG_Modula2:
20087       cu->language = language_m2;
20088       break;
20089     case DW_LANG_Pascal83:
20090       cu->language = language_pascal;
20091       break;
20092     case DW_LANG_ObjC:
20093       cu->language = language_objc;
20094       break;
20095     case DW_LANG_Rust:
20096     case DW_LANG_Rust_old:
20097       cu->language = language_rust;
20098       break;
20099     case DW_LANG_Cobol74:
20100     case DW_LANG_Cobol85:
20101     default:
20102       cu->language = language_minimal;
20103       break;
20104     }
20105   cu->language_defn = language_def (cu->language);
20106 }
20107
20108 /* Return the named attribute or NULL if not there.  */
20109
20110 static struct attribute *
20111 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20112 {
20113   for (;;)
20114     {
20115       unsigned int i;
20116       struct attribute *spec = NULL;
20117
20118       for (i = 0; i < die->num_attrs; ++i)
20119         {
20120           if (die->attrs[i].name == name)
20121             return &die->attrs[i];
20122           if (die->attrs[i].name == DW_AT_specification
20123               || die->attrs[i].name == DW_AT_abstract_origin)
20124             spec = &die->attrs[i];
20125         }
20126
20127       if (!spec)
20128         break;
20129
20130       die = follow_die_ref (die, spec, &cu);
20131     }
20132
20133   return NULL;
20134 }
20135
20136 /* Return the named attribute or NULL if not there,
20137    but do not follow DW_AT_specification, etc.
20138    This is for use in contexts where we're reading .debug_types dies.
20139    Following DW_AT_specification, DW_AT_abstract_origin will take us
20140    back up the chain, and we want to go down.  */
20141
20142 static struct attribute *
20143 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20144 {
20145   unsigned int i;
20146
20147   for (i = 0; i < die->num_attrs; ++i)
20148     if (die->attrs[i].name == name)
20149       return &die->attrs[i];
20150
20151   return NULL;
20152 }
20153
20154 /* Return the string associated with a string-typed attribute, or NULL if it
20155    is either not found or is of an incorrect type.  */
20156
20157 static const char *
20158 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20159 {
20160   struct attribute *attr;
20161   const char *str = NULL;
20162
20163   attr = dwarf2_attr (die, name, cu);
20164
20165   if (attr != NULL)
20166     {
20167       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20168           || attr->form == DW_FORM_string
20169           || attr->form == DW_FORM_strx
20170           || attr->form == DW_FORM_GNU_str_index
20171           || attr->form == DW_FORM_GNU_strp_alt)
20172         str = DW_STRING (attr);
20173       else
20174         complaint (_("string type expected for attribute %s for "
20175                      "DIE at %s in module %s"),
20176                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
20177                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20178     }
20179
20180   return str;
20181 }
20182
20183 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20184    and holds a non-zero value.  This function should only be used for
20185    DW_FORM_flag or DW_FORM_flag_present attributes.  */
20186
20187 static int
20188 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20189 {
20190   struct attribute *attr = dwarf2_attr (die, name, cu);
20191
20192   return (attr && DW_UNSND (attr));
20193 }
20194
20195 static int
20196 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20197 {
20198   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20199      which value is non-zero.  However, we have to be careful with
20200      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20201      (via dwarf2_flag_true_p) follows this attribute.  So we may
20202      end up accidently finding a declaration attribute that belongs
20203      to a different DIE referenced by the specification attribute,
20204      even though the given DIE does not have a declaration attribute.  */
20205   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20206           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20207 }
20208
20209 /* Return the die giving the specification for DIE, if there is
20210    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20211    containing the return value on output.  If there is no
20212    specification, but there is an abstract origin, that is
20213    returned.  */
20214
20215 static struct die_info *
20216 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20217 {
20218   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20219                                              *spec_cu);
20220
20221   if (spec_attr == NULL)
20222     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20223
20224   if (spec_attr == NULL)
20225     return NULL;
20226   else
20227     return follow_die_ref (die, spec_attr, spec_cu);
20228 }
20229
20230 /* Stub for free_line_header to match void * callback types.  */
20231
20232 static void
20233 free_line_header_voidp (void *arg)
20234 {
20235   struct line_header *lh = (struct line_header *) arg;
20236
20237   delete lh;
20238 }
20239
20240 void
20241 line_header::add_include_dir (const char *include_dir)
20242 {
20243   if (dwarf_line_debug >= 2)
20244     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20245                         include_dirs.size () + 1, include_dir);
20246
20247   include_dirs.push_back (include_dir);
20248 }
20249
20250 void
20251 line_header::add_file_name (const char *name,
20252                             dir_index d_index,
20253                             unsigned int mod_time,
20254                             unsigned int length)
20255 {
20256   if (dwarf_line_debug >= 2)
20257     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20258                         (unsigned) file_names.size () + 1, name);
20259
20260   file_names.emplace_back (name, d_index, mod_time, length);
20261 }
20262
20263 /* A convenience function to find the proper .debug_line section for a CU.  */
20264
20265 static struct dwarf2_section_info *
20266 get_debug_line_section (struct dwarf2_cu *cu)
20267 {
20268   struct dwarf2_section_info *section;
20269   struct dwarf2_per_objfile *dwarf2_per_objfile
20270     = cu->per_cu->dwarf2_per_objfile;
20271
20272   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20273      DWO file.  */
20274   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20275     section = &cu->dwo_unit->dwo_file->sections.line;
20276   else if (cu->per_cu->is_dwz)
20277     {
20278       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20279
20280       section = &dwz->line;
20281     }
20282   else
20283     section = &dwarf2_per_objfile->line;
20284
20285   return section;
20286 }
20287
20288 /* Read directory or file name entry format, starting with byte of
20289    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20290    entries count and the entries themselves in the described entry
20291    format.  */
20292
20293 static void
20294 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20295                         bfd *abfd, const gdb_byte **bufp,
20296                         struct line_header *lh,
20297                         const struct comp_unit_head *cu_header,
20298                         void (*callback) (struct line_header *lh,
20299                                           const char *name,
20300                                           dir_index d_index,
20301                                           unsigned int mod_time,
20302                                           unsigned int length))
20303 {
20304   gdb_byte format_count, formati;
20305   ULONGEST data_count, datai;
20306   const gdb_byte *buf = *bufp;
20307   const gdb_byte *format_header_data;
20308   unsigned int bytes_read;
20309
20310   format_count = read_1_byte (abfd, buf);
20311   buf += 1;
20312   format_header_data = buf;
20313   for (formati = 0; formati < format_count; formati++)
20314     {
20315       read_unsigned_leb128 (abfd, buf, &bytes_read);
20316       buf += bytes_read;
20317       read_unsigned_leb128 (abfd, buf, &bytes_read);
20318       buf += bytes_read;
20319     }
20320
20321   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20322   buf += bytes_read;
20323   for (datai = 0; datai < data_count; datai++)
20324     {
20325       const gdb_byte *format = format_header_data;
20326       struct file_entry fe;
20327
20328       for (formati = 0; formati < format_count; formati++)
20329         {
20330           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20331           format += bytes_read;
20332
20333           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20334           format += bytes_read;
20335
20336           gdb::optional<const char *> string;
20337           gdb::optional<unsigned int> uint;
20338
20339           switch (form)
20340             {
20341             case DW_FORM_string:
20342               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20343               buf += bytes_read;
20344               break;
20345
20346             case DW_FORM_line_strp:
20347               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20348                                                          abfd, buf,
20349                                                          cu_header,
20350                                                          &bytes_read));
20351               buf += bytes_read;
20352               break;
20353
20354             case DW_FORM_data1:
20355               uint.emplace (read_1_byte (abfd, buf));
20356               buf += 1;
20357               break;
20358
20359             case DW_FORM_data2:
20360               uint.emplace (read_2_bytes (abfd, buf));
20361               buf += 2;
20362               break;
20363
20364             case DW_FORM_data4:
20365               uint.emplace (read_4_bytes (abfd, buf));
20366               buf += 4;
20367               break;
20368
20369             case DW_FORM_data8:
20370               uint.emplace (read_8_bytes (abfd, buf));
20371               buf += 8;
20372               break;
20373
20374             case DW_FORM_udata:
20375               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20376               buf += bytes_read;
20377               break;
20378
20379             case DW_FORM_block:
20380               /* It is valid only for DW_LNCT_timestamp which is ignored by
20381                  current GDB.  */
20382               break;
20383             }
20384
20385           switch (content_type)
20386             {
20387             case DW_LNCT_path:
20388               if (string.has_value ())
20389                 fe.name = *string;
20390               break;
20391             case DW_LNCT_directory_index:
20392               if (uint.has_value ())
20393                 fe.d_index = (dir_index) *uint;
20394               break;
20395             case DW_LNCT_timestamp:
20396               if (uint.has_value ())
20397                 fe.mod_time = *uint;
20398               break;
20399             case DW_LNCT_size:
20400               if (uint.has_value ())
20401                 fe.length = *uint;
20402               break;
20403             case DW_LNCT_MD5:
20404               break;
20405             default:
20406               complaint (_("Unknown format content type %s"),
20407                          pulongest (content_type));
20408             }
20409         }
20410
20411       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20412     }
20413
20414   *bufp = buf;
20415 }
20416
20417 /* Read the statement program header starting at OFFSET in
20418    .debug_line, or .debug_line.dwo.  Return a pointer
20419    to a struct line_header, allocated using xmalloc.
20420    Returns NULL if there is a problem reading the header, e.g., if it
20421    has a version we don't understand.
20422
20423    NOTE: the strings in the include directory and file name tables of
20424    the returned object point into the dwarf line section buffer,
20425    and must not be freed.  */
20426
20427 static line_header_up
20428 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20429 {
20430   const gdb_byte *line_ptr;
20431   unsigned int bytes_read, offset_size;
20432   int i;
20433   const char *cur_dir, *cur_file;
20434   struct dwarf2_section_info *section;
20435   bfd *abfd;
20436   struct dwarf2_per_objfile *dwarf2_per_objfile
20437     = cu->per_cu->dwarf2_per_objfile;
20438
20439   section = get_debug_line_section (cu);
20440   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20441   if (section->buffer == NULL)
20442     {
20443       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20444         complaint (_("missing .debug_line.dwo section"));
20445       else
20446         complaint (_("missing .debug_line section"));
20447       return 0;
20448     }
20449
20450   /* We can't do this until we know the section is non-empty.
20451      Only then do we know we have such a section.  */
20452   abfd = get_section_bfd_owner (section);
20453
20454   /* Make sure that at least there's room for the total_length field.
20455      That could be 12 bytes long, but we're just going to fudge that.  */
20456   if (to_underlying (sect_off) + 4 >= section->size)
20457     {
20458       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20459       return 0;
20460     }
20461
20462   line_header_up lh (new line_header ());
20463
20464   lh->sect_off = sect_off;
20465   lh->offset_in_dwz = cu->per_cu->is_dwz;
20466
20467   line_ptr = section->buffer + to_underlying (sect_off);
20468
20469   /* Read in the header.  */
20470   lh->total_length =
20471     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20472                                             &bytes_read, &offset_size);
20473   line_ptr += bytes_read;
20474   if (line_ptr + lh->total_length > (section->buffer + section->size))
20475     {
20476       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20477       return 0;
20478     }
20479   lh->statement_program_end = line_ptr + lh->total_length;
20480   lh->version = read_2_bytes (abfd, line_ptr);
20481   line_ptr += 2;
20482   if (lh->version > 5)
20483     {
20484       /* This is a version we don't understand.  The format could have
20485          changed in ways we don't handle properly so just punt.  */
20486       complaint (_("unsupported version in .debug_line section"));
20487       return NULL;
20488     }
20489   if (lh->version >= 5)
20490     {
20491       gdb_byte segment_selector_size;
20492
20493       /* Skip address size.  */
20494       read_1_byte (abfd, line_ptr);
20495       line_ptr += 1;
20496
20497       segment_selector_size = read_1_byte (abfd, line_ptr);
20498       line_ptr += 1;
20499       if (segment_selector_size != 0)
20500         {
20501           complaint (_("unsupported segment selector size %u "
20502                        "in .debug_line section"),
20503                      segment_selector_size);
20504           return NULL;
20505         }
20506     }
20507   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20508   line_ptr += offset_size;
20509   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20510   line_ptr += 1;
20511   if (lh->version >= 4)
20512     {
20513       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20514       line_ptr += 1;
20515     }
20516   else
20517     lh->maximum_ops_per_instruction = 1;
20518
20519   if (lh->maximum_ops_per_instruction == 0)
20520     {
20521       lh->maximum_ops_per_instruction = 1;
20522       complaint (_("invalid maximum_ops_per_instruction "
20523                    "in `.debug_line' section"));
20524     }
20525
20526   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20527   line_ptr += 1;
20528   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20529   line_ptr += 1;
20530   lh->line_range = read_1_byte (abfd, line_ptr);
20531   line_ptr += 1;
20532   lh->opcode_base = read_1_byte (abfd, line_ptr);
20533   line_ptr += 1;
20534   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20535
20536   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20537   for (i = 1; i < lh->opcode_base; ++i)
20538     {
20539       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20540       line_ptr += 1;
20541     }
20542
20543   if (lh->version >= 5)
20544     {
20545       /* Read directory table.  */
20546       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20547                               &cu->header,
20548                               [] (struct line_header *header, const char *name,
20549                                   dir_index d_index, unsigned int mod_time,
20550                                   unsigned int length)
20551         {
20552           header->add_include_dir (name);
20553         });
20554
20555       /* Read file name table.  */
20556       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20557                               &cu->header,
20558                               [] (struct line_header *header, const char *name,
20559                                   dir_index d_index, unsigned int mod_time,
20560                                   unsigned int length)
20561         {
20562           header->add_file_name (name, d_index, mod_time, length);
20563         });
20564     }
20565   else
20566     {
20567       /* Read directory table.  */
20568       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20569         {
20570           line_ptr += bytes_read;
20571           lh->add_include_dir (cur_dir);
20572         }
20573       line_ptr += bytes_read;
20574
20575       /* Read file name table.  */
20576       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20577         {
20578           unsigned int mod_time, length;
20579           dir_index d_index;
20580
20581           line_ptr += bytes_read;
20582           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20583           line_ptr += bytes_read;
20584           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20585           line_ptr += bytes_read;
20586           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20587           line_ptr += bytes_read;
20588
20589           lh->add_file_name (cur_file, d_index, mod_time, length);
20590         }
20591       line_ptr += bytes_read;
20592     }
20593   lh->statement_program_start = line_ptr;
20594
20595   if (line_ptr > (section->buffer + section->size))
20596     complaint (_("line number info header doesn't "
20597                  "fit in `.debug_line' section"));
20598
20599   return lh;
20600 }
20601
20602 /* Subroutine of dwarf_decode_lines to simplify it.
20603    Return the file name of the psymtab for included file FILE_INDEX
20604    in line header LH of PST.
20605    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20606    If space for the result is malloc'd, *NAME_HOLDER will be set.
20607    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20608
20609 static const char *
20610 psymtab_include_file_name (const struct line_header *lh, int file_index,
20611                            const struct partial_symtab *pst,
20612                            const char *comp_dir,
20613                            gdb::unique_xmalloc_ptr<char> *name_holder)
20614 {
20615   const file_entry &fe = lh->file_names[file_index];
20616   const char *include_name = fe.name;
20617   const char *include_name_to_compare = include_name;
20618   const char *pst_filename;
20619   int file_is_pst;
20620
20621   const char *dir_name = fe.include_dir (lh);
20622
20623   gdb::unique_xmalloc_ptr<char> hold_compare;
20624   if (!IS_ABSOLUTE_PATH (include_name)
20625       && (dir_name != NULL || comp_dir != NULL))
20626     {
20627       /* Avoid creating a duplicate psymtab for PST.
20628          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20629          Before we do the comparison, however, we need to account
20630          for DIR_NAME and COMP_DIR.
20631          First prepend dir_name (if non-NULL).  If we still don't
20632          have an absolute path prepend comp_dir (if non-NULL).
20633          However, the directory we record in the include-file's
20634          psymtab does not contain COMP_DIR (to match the
20635          corresponding symtab(s)).
20636
20637          Example:
20638
20639          bash$ cd /tmp
20640          bash$ gcc -g ./hello.c
20641          include_name = "hello.c"
20642          dir_name = "."
20643          DW_AT_comp_dir = comp_dir = "/tmp"
20644          DW_AT_name = "./hello.c"
20645
20646       */
20647
20648       if (dir_name != NULL)
20649         {
20650           name_holder->reset (concat (dir_name, SLASH_STRING,
20651                                       include_name, (char *) NULL));
20652           include_name = name_holder->get ();
20653           include_name_to_compare = include_name;
20654         }
20655       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20656         {
20657           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20658                                       include_name, (char *) NULL));
20659           include_name_to_compare = hold_compare.get ();
20660         }
20661     }
20662
20663   pst_filename = pst->filename;
20664   gdb::unique_xmalloc_ptr<char> copied_name;
20665   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20666     {
20667       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20668                                  pst_filename, (char *) NULL));
20669       pst_filename = copied_name.get ();
20670     }
20671
20672   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20673
20674   if (file_is_pst)
20675     return NULL;
20676   return include_name;
20677 }
20678
20679 /* State machine to track the state of the line number program.  */
20680
20681 class lnp_state_machine
20682 {
20683 public:
20684   /* Initialize a machine state for the start of a line number
20685      program.  */
20686   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20687                      bool record_lines_p);
20688
20689   file_entry *current_file ()
20690   {
20691     /* lh->file_names is 0-based, but the file name numbers in the
20692        statement program are 1-based.  */
20693     return m_line_header->file_name_at (m_file);
20694   }
20695
20696   /* Record the line in the state machine.  END_SEQUENCE is true if
20697      we're processing the end of a sequence.  */
20698   void record_line (bool end_sequence);
20699
20700   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20701      nop-out rest of the lines in this sequence.  */
20702   void check_line_address (struct dwarf2_cu *cu,
20703                            const gdb_byte *line_ptr,
20704                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20705
20706   void handle_set_discriminator (unsigned int discriminator)
20707   {
20708     m_discriminator = discriminator;
20709     m_line_has_non_zero_discriminator |= discriminator != 0;
20710   }
20711
20712   /* Handle DW_LNE_set_address.  */
20713   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20714   {
20715     m_op_index = 0;
20716     address += baseaddr;
20717     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20718   }
20719
20720   /* Handle DW_LNS_advance_pc.  */
20721   void handle_advance_pc (CORE_ADDR adjust);
20722
20723   /* Handle a special opcode.  */
20724   void handle_special_opcode (unsigned char op_code);
20725
20726   /* Handle DW_LNS_advance_line.  */
20727   void handle_advance_line (int line_delta)
20728   {
20729     advance_line (line_delta);
20730   }
20731
20732   /* Handle DW_LNS_set_file.  */
20733   void handle_set_file (file_name_index file);
20734
20735   /* Handle DW_LNS_negate_stmt.  */
20736   void handle_negate_stmt ()
20737   {
20738     m_is_stmt = !m_is_stmt;
20739   }
20740
20741   /* Handle DW_LNS_const_add_pc.  */
20742   void handle_const_add_pc ();
20743
20744   /* Handle DW_LNS_fixed_advance_pc.  */
20745   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20746   {
20747     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20748     m_op_index = 0;
20749   }
20750
20751   /* Handle DW_LNS_copy.  */
20752   void handle_copy ()
20753   {
20754     record_line (false);
20755     m_discriminator = 0;
20756   }
20757
20758   /* Handle DW_LNE_end_sequence.  */
20759   void handle_end_sequence ()
20760   {
20761     m_currently_recording_lines = true;
20762   }
20763
20764 private:
20765   /* Advance the line by LINE_DELTA.  */
20766   void advance_line (int line_delta)
20767   {
20768     m_line += line_delta;
20769
20770     if (line_delta != 0)
20771       m_line_has_non_zero_discriminator = m_discriminator != 0;
20772   }
20773
20774   struct dwarf2_cu *m_cu;
20775
20776   gdbarch *m_gdbarch;
20777
20778   /* True if we're recording lines.
20779      Otherwise we're building partial symtabs and are just interested in
20780      finding include files mentioned by the line number program.  */
20781   bool m_record_lines_p;
20782
20783   /* The line number header.  */
20784   line_header *m_line_header;
20785
20786   /* These are part of the standard DWARF line number state machine,
20787      and initialized according to the DWARF spec.  */
20788
20789   unsigned char m_op_index = 0;
20790   /* The line table index (1-based) of the current file.  */
20791   file_name_index m_file = (file_name_index) 1;
20792   unsigned int m_line = 1;
20793
20794   /* These are initialized in the constructor.  */
20795
20796   CORE_ADDR m_address;
20797   bool m_is_stmt;
20798   unsigned int m_discriminator;
20799
20800   /* Additional bits of state we need to track.  */
20801
20802   /* The last file that we called dwarf2_start_subfile for.
20803      This is only used for TLLs.  */
20804   unsigned int m_last_file = 0;
20805   /* The last file a line number was recorded for.  */
20806   struct subfile *m_last_subfile = NULL;
20807
20808   /* When true, record the lines we decode.  */
20809   bool m_currently_recording_lines = false;
20810
20811   /* The last line number that was recorded, used to coalesce
20812      consecutive entries for the same line.  This can happen, for
20813      example, when discriminators are present.  PR 17276.  */
20814   unsigned int m_last_line = 0;
20815   bool m_line_has_non_zero_discriminator = false;
20816 };
20817
20818 void
20819 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20820 {
20821   CORE_ADDR addr_adj = (((m_op_index + adjust)
20822                          / m_line_header->maximum_ops_per_instruction)
20823                         * m_line_header->minimum_instruction_length);
20824   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20825   m_op_index = ((m_op_index + adjust)
20826                 % m_line_header->maximum_ops_per_instruction);
20827 }
20828
20829 void
20830 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20831 {
20832   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20833   CORE_ADDR addr_adj = (((m_op_index
20834                           + (adj_opcode / m_line_header->line_range))
20835                          / m_line_header->maximum_ops_per_instruction)
20836                         * m_line_header->minimum_instruction_length);
20837   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20838   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20839                 % m_line_header->maximum_ops_per_instruction);
20840
20841   int line_delta = (m_line_header->line_base
20842                     + (adj_opcode % m_line_header->line_range));
20843   advance_line (line_delta);
20844   record_line (false);
20845   m_discriminator = 0;
20846 }
20847
20848 void
20849 lnp_state_machine::handle_set_file (file_name_index file)
20850 {
20851   m_file = file;
20852
20853   const file_entry *fe = current_file ();
20854   if (fe == NULL)
20855     dwarf2_debug_line_missing_file_complaint ();
20856   else if (m_record_lines_p)
20857     {
20858       const char *dir = fe->include_dir (m_line_header);
20859
20860       m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20861       m_line_has_non_zero_discriminator = m_discriminator != 0;
20862       dwarf2_start_subfile (m_cu, fe->name, dir);
20863     }
20864 }
20865
20866 void
20867 lnp_state_machine::handle_const_add_pc ()
20868 {
20869   CORE_ADDR adjust
20870     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20871
20872   CORE_ADDR addr_adj
20873     = (((m_op_index + adjust)
20874         / m_line_header->maximum_ops_per_instruction)
20875        * m_line_header->minimum_instruction_length);
20876
20877   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20878   m_op_index = ((m_op_index + adjust)
20879                 % m_line_header->maximum_ops_per_instruction);
20880 }
20881
20882 /* Return non-zero if we should add LINE to the line number table.
20883    LINE is the line to add, LAST_LINE is the last line that was added,
20884    LAST_SUBFILE is the subfile for LAST_LINE.
20885    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20886    had a non-zero discriminator.
20887
20888    We have to be careful in the presence of discriminators.
20889    E.g., for this line:
20890
20891      for (i = 0; i < 100000; i++);
20892
20893    clang can emit four line number entries for that one line,
20894    each with a different discriminator.
20895    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20896
20897    However, we want gdb to coalesce all four entries into one.
20898    Otherwise the user could stepi into the middle of the line and
20899    gdb would get confused about whether the pc really was in the
20900    middle of the line.
20901
20902    Things are further complicated by the fact that two consecutive
20903    line number entries for the same line is a heuristic used by gcc
20904    to denote the end of the prologue.  So we can't just discard duplicate
20905    entries, we have to be selective about it.  The heuristic we use is
20906    that we only collapse consecutive entries for the same line if at least
20907    one of those entries has a non-zero discriminator.  PR 17276.
20908
20909    Note: Addresses in the line number state machine can never go backwards
20910    within one sequence, thus this coalescing is ok.  */
20911
20912 static int
20913 dwarf_record_line_p (struct dwarf2_cu *cu,
20914                      unsigned int line, unsigned int last_line,
20915                      int line_has_non_zero_discriminator,
20916                      struct subfile *last_subfile)
20917 {
20918   if (cu->get_builder ()->get_current_subfile () != last_subfile)
20919     return 1;
20920   if (line != last_line)
20921     return 1;
20922   /* Same line for the same file that we've seen already.
20923      As a last check, for pr 17276, only record the line if the line
20924      has never had a non-zero discriminator.  */
20925   if (!line_has_non_zero_discriminator)
20926     return 1;
20927   return 0;
20928 }
20929
20930 /* Use the CU's builder to record line number LINE beginning at
20931    address ADDRESS in the line table of subfile SUBFILE.  */
20932
20933 static void
20934 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20935                      unsigned int line, CORE_ADDR address,
20936                      struct dwarf2_cu *cu)
20937 {
20938   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20939
20940   if (dwarf_line_debug)
20941     {
20942       fprintf_unfiltered (gdb_stdlog,
20943                           "Recording line %u, file %s, address %s\n",
20944                           line, lbasename (subfile->name),
20945                           paddress (gdbarch, address));
20946     }
20947
20948   if (cu != nullptr)
20949     cu->get_builder ()->record_line (subfile, line, addr);
20950 }
20951
20952 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20953    Mark the end of a set of line number records.
20954    The arguments are the same as for dwarf_record_line_1.
20955    If SUBFILE is NULL the request is ignored.  */
20956
20957 static void
20958 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20959                    CORE_ADDR address, struct dwarf2_cu *cu)
20960 {
20961   if (subfile == NULL)
20962     return;
20963
20964   if (dwarf_line_debug)
20965     {
20966       fprintf_unfiltered (gdb_stdlog,
20967                           "Finishing current line, file %s, address %s\n",
20968                           lbasename (subfile->name),
20969                           paddress (gdbarch, address));
20970     }
20971
20972   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20973 }
20974
20975 void
20976 lnp_state_machine::record_line (bool end_sequence)
20977 {
20978   if (dwarf_line_debug)
20979     {
20980       fprintf_unfiltered (gdb_stdlog,
20981                           "Processing actual line %u: file %u,"
20982                           " address %s, is_stmt %u, discrim %u\n",
20983                           m_line, to_underlying (m_file),
20984                           paddress (m_gdbarch, m_address),
20985                           m_is_stmt, m_discriminator);
20986     }
20987
20988   file_entry *fe = current_file ();
20989
20990   if (fe == NULL)
20991     dwarf2_debug_line_missing_file_complaint ();
20992   /* For now we ignore lines not starting on an instruction boundary.
20993      But not when processing end_sequence for compatibility with the
20994      previous version of the code.  */
20995   else if (m_op_index == 0 || end_sequence)
20996     {
20997       fe->included_p = 1;
20998       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20999         {
21000           if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
21001               || end_sequence)
21002             {
21003               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
21004                                  m_currently_recording_lines ? m_cu : nullptr);
21005             }
21006
21007           if (!end_sequence)
21008             {
21009               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
21010                                        m_line_has_non_zero_discriminator,
21011                                        m_last_subfile))
21012                 {
21013                   buildsym_compunit *builder = m_cu->get_builder ();
21014                   dwarf_record_line_1 (m_gdbarch,
21015                                        builder->get_current_subfile (),
21016                                        m_line, m_address,
21017                                        m_currently_recording_lines ? m_cu : nullptr);
21018                 }
21019               m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
21020               m_last_line = m_line;
21021             }
21022         }
21023     }
21024 }
21025
21026 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
21027                                       line_header *lh, bool record_lines_p)
21028 {
21029   m_cu = cu;
21030   m_gdbarch = arch;
21031   m_record_lines_p = record_lines_p;
21032   m_line_header = lh;
21033
21034   m_currently_recording_lines = true;
21035
21036   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
21037      was a line entry for it so that the backend has a chance to adjust it
21038      and also record it in case it needs it.  This is currently used by MIPS
21039      code, cf. `mips_adjust_dwarf2_line'.  */
21040   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
21041   m_is_stmt = lh->default_is_stmt;
21042   m_discriminator = 0;
21043 }
21044
21045 void
21046 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
21047                                        const gdb_byte *line_ptr,
21048                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
21049 {
21050   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
21051      the pc range of the CU.  However, we restrict the test to only ADDRESS
21052      values of zero to preserve GDB's previous behaviour which is to handle
21053      the specific case of a function being GC'd by the linker.  */
21054
21055   if (address == 0 && address < unrelocated_lowpc)
21056     {
21057       /* This line table is for a function which has been
21058          GCd by the linker.  Ignore it.  PR gdb/12528 */
21059
21060       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21061       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
21062
21063       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
21064                  line_offset, objfile_name (objfile));
21065       m_currently_recording_lines = false;
21066       /* Note: m_currently_recording_lines is left as false until we see
21067          DW_LNE_end_sequence.  */
21068     }
21069 }
21070
21071 /* Subroutine of dwarf_decode_lines to simplify it.
21072    Process the line number information in LH.
21073    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
21074    program in order to set included_p for every referenced header.  */
21075
21076 static void
21077 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
21078                       const int decode_for_pst_p, CORE_ADDR lowpc)
21079 {
21080   const gdb_byte *line_ptr, *extended_end;
21081   const gdb_byte *line_end;
21082   unsigned int bytes_read, extended_len;
21083   unsigned char op_code, extended_op;
21084   CORE_ADDR baseaddr;
21085   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21086   bfd *abfd = objfile->obfd;
21087   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21088   /* True if we're recording line info (as opposed to building partial
21089      symtabs and just interested in finding include files mentioned by
21090      the line number program).  */
21091   bool record_lines_p = !decode_for_pst_p;
21092
21093   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21094
21095   line_ptr = lh->statement_program_start;
21096   line_end = lh->statement_program_end;
21097
21098   /* Read the statement sequences until there's nothing left.  */
21099   while (line_ptr < line_end)
21100     {
21101       /* The DWARF line number program state machine.  Reset the state
21102          machine at the start of each sequence.  */
21103       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21104       bool end_sequence = false;
21105
21106       if (record_lines_p)
21107         {
21108           /* Start a subfile for the current file of the state
21109              machine.  */
21110           const file_entry *fe = state_machine.current_file ();
21111
21112           if (fe != NULL)
21113             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21114         }
21115
21116       /* Decode the table.  */
21117       while (line_ptr < line_end && !end_sequence)
21118         {
21119           op_code = read_1_byte (abfd, line_ptr);
21120           line_ptr += 1;
21121
21122           if (op_code >= lh->opcode_base)
21123             {
21124               /* Special opcode.  */
21125               state_machine.handle_special_opcode (op_code);
21126             }
21127           else switch (op_code)
21128             {
21129             case DW_LNS_extended_op:
21130               extended_len = read_unsigned_leb128 (abfd, line_ptr,
21131                                                    &bytes_read);
21132               line_ptr += bytes_read;
21133               extended_end = line_ptr + extended_len;
21134               extended_op = read_1_byte (abfd, line_ptr);
21135               line_ptr += 1;
21136               switch (extended_op)
21137                 {
21138                 case DW_LNE_end_sequence:
21139                   state_machine.handle_end_sequence ();
21140                   end_sequence = true;
21141                   break;
21142                 case DW_LNE_set_address:
21143                   {
21144                     CORE_ADDR address
21145                       = read_address (abfd, line_ptr, cu, &bytes_read);
21146                     line_ptr += bytes_read;
21147
21148                     state_machine.check_line_address (cu, line_ptr,
21149                                                       lowpc - baseaddr, address);
21150                     state_machine.handle_set_address (baseaddr, address);
21151                   }
21152                   break;
21153                 case DW_LNE_define_file:
21154                   {
21155                     const char *cur_file;
21156                     unsigned int mod_time, length;
21157                     dir_index dindex;
21158
21159                     cur_file = read_direct_string (abfd, line_ptr,
21160                                                    &bytes_read);
21161                     line_ptr += bytes_read;
21162                     dindex = (dir_index)
21163                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21164                     line_ptr += bytes_read;
21165                     mod_time =
21166                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21167                     line_ptr += bytes_read;
21168                     length =
21169                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21170                     line_ptr += bytes_read;
21171                     lh->add_file_name (cur_file, dindex, mod_time, length);
21172                   }
21173                   break;
21174                 case DW_LNE_set_discriminator:
21175                   {
21176                     /* The discriminator is not interesting to the
21177                        debugger; just ignore it.  We still need to
21178                        check its value though:
21179                        if there are consecutive entries for the same
21180                        (non-prologue) line we want to coalesce them.
21181                        PR 17276.  */
21182                     unsigned int discr
21183                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21184                     line_ptr += bytes_read;
21185
21186                     state_machine.handle_set_discriminator (discr);
21187                   }
21188                   break;
21189                 default:
21190                   complaint (_("mangled .debug_line section"));
21191                   return;
21192                 }
21193               /* Make sure that we parsed the extended op correctly.  If e.g.
21194                  we expected a different address size than the producer used,
21195                  we may have read the wrong number of bytes.  */
21196               if (line_ptr != extended_end)
21197                 {
21198                   complaint (_("mangled .debug_line section"));
21199                   return;
21200                 }
21201               break;
21202             case DW_LNS_copy:
21203               state_machine.handle_copy ();
21204               break;
21205             case DW_LNS_advance_pc:
21206               {
21207                 CORE_ADDR adjust
21208                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21209                 line_ptr += bytes_read;
21210
21211                 state_machine.handle_advance_pc (adjust);
21212               }
21213               break;
21214             case DW_LNS_advance_line:
21215               {
21216                 int line_delta
21217                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21218                 line_ptr += bytes_read;
21219
21220                 state_machine.handle_advance_line (line_delta);
21221               }
21222               break;
21223             case DW_LNS_set_file:
21224               {
21225                 file_name_index file
21226                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21227                                                             &bytes_read);
21228                 line_ptr += bytes_read;
21229
21230                 state_machine.handle_set_file (file);
21231               }
21232               break;
21233             case DW_LNS_set_column:
21234               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21235               line_ptr += bytes_read;
21236               break;
21237             case DW_LNS_negate_stmt:
21238               state_machine.handle_negate_stmt ();
21239               break;
21240             case DW_LNS_set_basic_block:
21241               break;
21242             /* Add to the address register of the state machine the
21243                address increment value corresponding to special opcode
21244                255.  I.e., this value is scaled by the minimum
21245                instruction length since special opcode 255 would have
21246                scaled the increment.  */
21247             case DW_LNS_const_add_pc:
21248               state_machine.handle_const_add_pc ();
21249               break;
21250             case DW_LNS_fixed_advance_pc:
21251               {
21252                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21253                 line_ptr += 2;
21254
21255                 state_machine.handle_fixed_advance_pc (addr_adj);
21256               }
21257               break;
21258             default:
21259               {
21260                 /* Unknown standard opcode, ignore it.  */
21261                 int i;
21262
21263                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21264                   {
21265                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21266                     line_ptr += bytes_read;
21267                   }
21268               }
21269             }
21270         }
21271
21272       if (!end_sequence)
21273         dwarf2_debug_line_missing_end_sequence_complaint ();
21274
21275       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21276          in which case we still finish recording the last line).  */
21277       state_machine.record_line (true);
21278     }
21279 }
21280
21281 /* Decode the Line Number Program (LNP) for the given line_header
21282    structure and CU.  The actual information extracted and the type
21283    of structures created from the LNP depends on the value of PST.
21284
21285    1. If PST is NULL, then this procedure uses the data from the program
21286       to create all necessary symbol tables, and their linetables.
21287
21288    2. If PST is not NULL, this procedure reads the program to determine
21289       the list of files included by the unit represented by PST, and
21290       builds all the associated partial symbol tables.
21291
21292    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21293    It is used for relative paths in the line table.
21294    NOTE: When processing partial symtabs (pst != NULL),
21295    comp_dir == pst->dirname.
21296
21297    NOTE: It is important that psymtabs have the same file name (via strcmp)
21298    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21299    symtab we don't use it in the name of the psymtabs we create.
21300    E.g. expand_line_sal requires this when finding psymtabs to expand.
21301    A good testcase for this is mb-inline.exp.
21302
21303    LOWPC is the lowest address in CU (or 0 if not known).
21304
21305    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21306    for its PC<->lines mapping information.  Otherwise only the filename
21307    table is read in.  */
21308
21309 static void
21310 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21311                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21312                     CORE_ADDR lowpc, int decode_mapping)
21313 {
21314   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21315   const int decode_for_pst_p = (pst != NULL);
21316
21317   if (decode_mapping)
21318     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21319
21320   if (decode_for_pst_p)
21321     {
21322       int file_index;
21323
21324       /* Now that we're done scanning the Line Header Program, we can
21325          create the psymtab of each included file.  */
21326       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21327         if (lh->file_names[file_index].included_p == 1)
21328           {
21329             gdb::unique_xmalloc_ptr<char> name_holder;
21330             const char *include_name =
21331               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21332                                          &name_holder);
21333             if (include_name != NULL)
21334               dwarf2_create_include_psymtab (include_name, pst, objfile);
21335           }
21336     }
21337   else
21338     {
21339       /* Make sure a symtab is created for every file, even files
21340          which contain only variables (i.e. no code with associated
21341          line numbers).  */
21342       buildsym_compunit *builder = cu->get_builder ();
21343       struct compunit_symtab *cust = builder->get_compunit_symtab ();
21344       int i;
21345
21346       for (i = 0; i < lh->file_names.size (); i++)
21347         {
21348           file_entry &fe = lh->file_names[i];
21349
21350           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21351
21352           if (builder->get_current_subfile ()->symtab == NULL)
21353             {
21354               builder->get_current_subfile ()->symtab
21355                 = allocate_symtab (cust,
21356                                    builder->get_current_subfile ()->name);
21357             }
21358           fe.symtab = builder->get_current_subfile ()->symtab;
21359         }
21360     }
21361 }
21362
21363 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21364    DIRNAME the name of the source directory which contains FILENAME
21365    or NULL if not known.
21366    This routine tries to keep line numbers from identical absolute and
21367    relative file names in a common subfile.
21368
21369    Using the `list' example from the GDB testsuite, which resides in
21370    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21371    of /srcdir/list0.c yields the following debugging information for list0.c:
21372
21373    DW_AT_name:          /srcdir/list0.c
21374    DW_AT_comp_dir:      /compdir
21375    files.files[0].name: list0.h
21376    files.files[0].dir:  /srcdir
21377    files.files[1].name: list0.c
21378    files.files[1].dir:  /srcdir
21379
21380    The line number information for list0.c has to end up in a single
21381    subfile, so that `break /srcdir/list0.c:1' works as expected.
21382    start_subfile will ensure that this happens provided that we pass the
21383    concatenation of files.files[1].dir and files.files[1].name as the
21384    subfile's name.  */
21385
21386 static void
21387 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21388                       const char *dirname)
21389 {
21390   char *copy = NULL;
21391
21392   /* In order not to lose the line information directory,
21393      we concatenate it to the filename when it makes sense.
21394      Note that the Dwarf3 standard says (speaking of filenames in line
21395      information): ``The directory index is ignored for file names
21396      that represent full path names''.  Thus ignoring dirname in the
21397      `else' branch below isn't an issue.  */
21398
21399   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21400     {
21401       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21402       filename = copy;
21403     }
21404
21405   cu->get_builder ()->start_subfile (filename);
21406
21407   if (copy != NULL)
21408     xfree (copy);
21409 }
21410
21411 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21412    buildsym_compunit constructor.  */
21413
21414 struct compunit_symtab *
21415 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21416                          CORE_ADDR low_pc)
21417 {
21418   gdb_assert (m_builder == nullptr);
21419
21420   m_builder.reset (new struct buildsym_compunit
21421                    (per_cu->dwarf2_per_objfile->objfile,
21422                     name, comp_dir, language, low_pc));
21423
21424   list_in_scope = get_builder ()->get_file_symbols ();
21425
21426   get_builder ()->record_debugformat ("DWARF 2");
21427   get_builder ()->record_producer (producer);
21428
21429   processing_has_namespace_info = false;
21430
21431   return get_builder ()->get_compunit_symtab ();
21432 }
21433
21434 static void
21435 var_decode_location (struct attribute *attr, struct symbol *sym,
21436                      struct dwarf2_cu *cu)
21437 {
21438   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21439   struct comp_unit_head *cu_header = &cu->header;
21440
21441   /* NOTE drow/2003-01-30: There used to be a comment and some special
21442      code here to turn a symbol with DW_AT_external and a
21443      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21444      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21445      with some versions of binutils) where shared libraries could have
21446      relocations against symbols in their debug information - the
21447      minimal symbol would have the right address, but the debug info
21448      would not.  It's no longer necessary, because we will explicitly
21449      apply relocations when we read in the debug information now.  */
21450
21451   /* A DW_AT_location attribute with no contents indicates that a
21452      variable has been optimized away.  */
21453   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21454     {
21455       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21456       return;
21457     }
21458
21459   /* Handle one degenerate form of location expression specially, to
21460      preserve GDB's previous behavior when section offsets are
21461      specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
21462      DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
21463
21464   if (attr_form_is_block (attr)
21465       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21466            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21467           || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21468                || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
21469               && (DW_BLOCK (attr)->size
21470                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21471     {
21472       unsigned int dummy;
21473
21474       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21475         SYMBOL_VALUE_ADDRESS (sym) =
21476           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21477       else
21478         SYMBOL_VALUE_ADDRESS (sym) =
21479           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21480       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21481       fixup_symbol_section (sym, objfile);
21482       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21483                                               SYMBOL_SECTION (sym));
21484       return;
21485     }
21486
21487   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21488      expression evaluator, and use LOC_COMPUTED only when necessary
21489      (i.e. when the value of a register or memory location is
21490      referenced, or a thread-local block, etc.).  Then again, it might
21491      not be worthwhile.  I'm assuming that it isn't unless performance
21492      or memory numbers show me otherwise.  */
21493
21494   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21495
21496   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21497     cu->has_loclist = true;
21498 }
21499
21500 /* Given a pointer to a DWARF information entry, figure out if we need
21501    to make a symbol table entry for it, and if so, create a new entry
21502    and return a pointer to it.
21503    If TYPE is NULL, determine symbol type from the die, otherwise
21504    used the passed type.
21505    If SPACE is not NULL, use it to hold the new symbol.  If it is
21506    NULL, allocate a new symbol on the objfile's obstack.  */
21507
21508 static struct symbol *
21509 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21510             struct symbol *space)
21511 {
21512   struct dwarf2_per_objfile *dwarf2_per_objfile
21513     = cu->per_cu->dwarf2_per_objfile;
21514   struct objfile *objfile = dwarf2_per_objfile->objfile;
21515   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21516   struct symbol *sym = NULL;
21517   const char *name;
21518   struct attribute *attr = NULL;
21519   struct attribute *attr2 = NULL;
21520   CORE_ADDR baseaddr;
21521   struct pending **list_to_add = NULL;
21522
21523   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21524
21525   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21526
21527   name = dwarf2_name (die, cu);
21528   if (name)
21529     {
21530       const char *linkagename;
21531       int suppress_add = 0;
21532
21533       if (space)
21534         sym = space;
21535       else
21536         sym = allocate_symbol (objfile);
21537       OBJSTAT (objfile, n_syms++);
21538
21539       /* Cache this symbol's name and the name's demangled form (if any).  */
21540       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21541       linkagename = dwarf2_physname (name, die, cu);
21542       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21543
21544       /* Fortran does not have mangling standard and the mangling does differ
21545          between gfortran, iFort etc.  */
21546       if (cu->language == language_fortran
21547           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21548         symbol_set_demangled_name (&(sym->ginfo),
21549                                    dwarf2_full_name (name, die, cu),
21550                                    NULL);
21551
21552       /* Default assumptions.
21553          Use the passed type or decode it from the die.  */
21554       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21555       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21556       if (type != NULL)
21557         SYMBOL_TYPE (sym) = type;
21558       else
21559         SYMBOL_TYPE (sym) = die_type (die, cu);
21560       attr = dwarf2_attr (die,
21561                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21562                           cu);
21563       if (attr)
21564         {
21565           SYMBOL_LINE (sym) = DW_UNSND (attr);
21566         }
21567
21568       attr = dwarf2_attr (die,
21569                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21570                           cu);
21571       if (attr)
21572         {
21573           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21574           struct file_entry *fe;
21575
21576           if (cu->line_header != NULL)
21577             fe = cu->line_header->file_name_at (file_index);
21578           else
21579             fe = NULL;
21580
21581           if (fe == NULL)
21582             complaint (_("file index out of range"));
21583           else
21584             symbol_set_symtab (sym, fe->symtab);
21585         }
21586
21587       switch (die->tag)
21588         {
21589         case DW_TAG_label:
21590           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21591           if (attr)
21592             {
21593               CORE_ADDR addr;
21594
21595               addr = attr_value_as_address (attr);
21596               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21597               SYMBOL_VALUE_ADDRESS (sym) = addr;
21598             }
21599           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21600           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21601           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21602           add_symbol_to_list (sym, cu->list_in_scope);
21603           break;
21604         case DW_TAG_subprogram:
21605           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21606              finish_block.  */
21607           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21608           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21609           if ((attr2 && (DW_UNSND (attr2) != 0))
21610               || cu->language == language_ada)
21611             {
21612               /* Subprograms marked external are stored as a global symbol.
21613                  Ada subprograms, whether marked external or not, are always
21614                  stored as a global symbol, because we want to be able to
21615                  access them globally.  For instance, we want to be able
21616                  to break on a nested subprogram without having to
21617                  specify the context.  */
21618               list_to_add = cu->get_builder ()->get_global_symbols ();
21619             }
21620           else
21621             {
21622               list_to_add = cu->list_in_scope;
21623             }
21624           break;
21625         case DW_TAG_inlined_subroutine:
21626           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21627              finish_block.  */
21628           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21629           SYMBOL_INLINED (sym) = 1;
21630           list_to_add = cu->list_in_scope;
21631           break;
21632         case DW_TAG_template_value_param:
21633           suppress_add = 1;
21634           /* Fall through.  */
21635         case DW_TAG_constant:
21636         case DW_TAG_variable:
21637         case DW_TAG_member:
21638           /* Compilation with minimal debug info may result in
21639              variables with missing type entries.  Change the
21640              misleading `void' type to something sensible.  */
21641           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21642             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21643
21644           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21645           /* In the case of DW_TAG_member, we should only be called for
21646              static const members.  */
21647           if (die->tag == DW_TAG_member)
21648             {
21649               /* dwarf2_add_field uses die_is_declaration,
21650                  so we do the same.  */
21651               gdb_assert (die_is_declaration (die, cu));
21652               gdb_assert (attr);
21653             }
21654           if (attr)
21655             {
21656               dwarf2_const_value (attr, sym, cu);
21657               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21658               if (!suppress_add)
21659                 {
21660                   if (attr2 && (DW_UNSND (attr2) != 0))
21661                     list_to_add = cu->get_builder ()->get_global_symbols ();
21662                   else
21663                     list_to_add = cu->list_in_scope;
21664                 }
21665               break;
21666             }
21667           attr = dwarf2_attr (die, DW_AT_location, cu);
21668           if (attr)
21669             {
21670               var_decode_location (attr, sym, cu);
21671               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21672
21673               /* Fortran explicitly imports any global symbols to the local
21674                  scope by DW_TAG_common_block.  */
21675               if (cu->language == language_fortran && die->parent
21676                   && die->parent->tag == DW_TAG_common_block)
21677                 attr2 = NULL;
21678
21679               if (SYMBOL_CLASS (sym) == LOC_STATIC
21680                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21681                   && !dwarf2_per_objfile->has_section_at_zero)
21682                 {
21683                   /* When a static variable is eliminated by the linker,
21684                      the corresponding debug information is not stripped
21685                      out, but the variable address is set to null;
21686                      do not add such variables into symbol table.  */
21687                 }
21688               else if (attr2 && (DW_UNSND (attr2) != 0))
21689                 {
21690                   /* Workaround gfortran PR debug/40040 - it uses
21691                      DW_AT_location for variables in -fPIC libraries which may
21692                      get overriden by other libraries/executable and get
21693                      a different address.  Resolve it by the minimal symbol
21694                      which may come from inferior's executable using copy
21695                      relocation.  Make this workaround only for gfortran as for
21696                      other compilers GDB cannot guess the minimal symbol
21697                      Fortran mangling kind.  */
21698                   if (cu->language == language_fortran && die->parent
21699                       && die->parent->tag == DW_TAG_module
21700                       && cu->producer
21701                       && startswith (cu->producer, "GNU Fortran"))
21702                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21703
21704                   /* A variable with DW_AT_external is never static,
21705                      but it may be block-scoped.  */
21706                   list_to_add
21707                     = ((cu->list_in_scope
21708                         == cu->get_builder ()->get_file_symbols ())
21709                        ? cu->get_builder ()->get_global_symbols ()
21710                        : cu->list_in_scope);
21711                 }
21712               else
21713                 list_to_add = cu->list_in_scope;
21714             }
21715           else
21716             {
21717               /* We do not know the address of this symbol.
21718                  If it is an external symbol and we have type information
21719                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21720                  The address of the variable will then be determined from
21721                  the minimal symbol table whenever the variable is
21722                  referenced.  */
21723               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21724
21725               /* Fortran explicitly imports any global symbols to the local
21726                  scope by DW_TAG_common_block.  */
21727               if (cu->language == language_fortran && die->parent
21728                   && die->parent->tag == DW_TAG_common_block)
21729                 {
21730                   /* SYMBOL_CLASS doesn't matter here because
21731                      read_common_block is going to reset it.  */
21732                   if (!suppress_add)
21733                     list_to_add = cu->list_in_scope;
21734                 }
21735               else if (attr2 && (DW_UNSND (attr2) != 0)
21736                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21737                 {
21738                   /* A variable with DW_AT_external is never static, but it
21739                      may be block-scoped.  */
21740                   list_to_add
21741                     = ((cu->list_in_scope
21742                         == cu->get_builder ()->get_file_symbols ())
21743                        ? cu->get_builder ()->get_global_symbols ()
21744                        : cu->list_in_scope);
21745
21746                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21747                 }
21748               else if (!die_is_declaration (die, cu))
21749                 {
21750                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21751                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21752                   if (!suppress_add)
21753                     list_to_add = cu->list_in_scope;
21754                 }
21755             }
21756           break;
21757         case DW_TAG_formal_parameter:
21758           {
21759             /* If we are inside a function, mark this as an argument.  If
21760                not, we might be looking at an argument to an inlined function
21761                when we do not have enough information to show inlined frames;
21762                pretend it's a local variable in that case so that the user can
21763                still see it.  */
21764             struct context_stack *curr
21765               = cu->get_builder ()->get_current_context_stack ();
21766             if (curr != nullptr && curr->name != nullptr)
21767               SYMBOL_IS_ARGUMENT (sym) = 1;
21768             attr = dwarf2_attr (die, DW_AT_location, cu);
21769             if (attr)
21770               {
21771                 var_decode_location (attr, sym, cu);
21772               }
21773             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21774             if (attr)
21775               {
21776                 dwarf2_const_value (attr, sym, cu);
21777               }
21778
21779             list_to_add = cu->list_in_scope;
21780           }
21781           break;
21782         case DW_TAG_unspecified_parameters:
21783           /* From varargs functions; gdb doesn't seem to have any
21784              interest in this information, so just ignore it for now.
21785              (FIXME?) */
21786           break;
21787         case DW_TAG_template_type_param:
21788           suppress_add = 1;
21789           /* Fall through.  */
21790         case DW_TAG_class_type:
21791         case DW_TAG_interface_type:
21792         case DW_TAG_structure_type:
21793         case DW_TAG_union_type:
21794         case DW_TAG_set_type:
21795         case DW_TAG_enumeration_type:
21796           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21797           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21798
21799           {
21800             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21801                really ever be static objects: otherwise, if you try
21802                to, say, break of a class's method and you're in a file
21803                which doesn't mention that class, it won't work unless
21804                the check for all static symbols in lookup_symbol_aux
21805                saves you.  See the OtherFileClass tests in
21806                gdb.c++/namespace.exp.  */
21807
21808             if (!suppress_add)
21809               {
21810                 buildsym_compunit *builder = cu->get_builder ();
21811                 list_to_add
21812                   = (cu->list_in_scope == builder->get_file_symbols ()
21813                      && cu->language == language_cplus
21814                      ? builder->get_global_symbols ()
21815                      : cu->list_in_scope);
21816
21817                 /* The semantics of C++ state that "struct foo {
21818                    ... }" also defines a typedef for "foo".  */
21819                 if (cu->language == language_cplus
21820                     || cu->language == language_ada
21821                     || cu->language == language_d
21822                     || cu->language == language_rust)
21823                   {
21824                     /* The symbol's name is already allocated along
21825                        with this objfile, so we don't need to
21826                        duplicate it for the type.  */
21827                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21828                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21829                   }
21830               }
21831           }
21832           break;
21833         case DW_TAG_typedef:
21834           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21835           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21836           list_to_add = cu->list_in_scope;
21837           break;
21838         case DW_TAG_base_type:
21839         case DW_TAG_subrange_type:
21840           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21841           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21842           list_to_add = cu->list_in_scope;
21843           break;
21844         case DW_TAG_enumerator:
21845           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21846           if (attr)
21847             {
21848               dwarf2_const_value (attr, sym, cu);
21849             }
21850           {
21851             /* NOTE: carlton/2003-11-10: See comment above in the
21852                DW_TAG_class_type, etc. block.  */
21853
21854             list_to_add
21855               = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21856                  && cu->language == language_cplus
21857                  ? cu->get_builder ()->get_global_symbols ()
21858                  : cu->list_in_scope);
21859           }
21860           break;
21861         case DW_TAG_imported_declaration:
21862         case DW_TAG_namespace:
21863           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21864           list_to_add = cu->get_builder ()->get_global_symbols ();
21865           break;
21866         case DW_TAG_module:
21867           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21868           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21869           list_to_add = cu->get_builder ()->get_global_symbols ();
21870           break;
21871         case DW_TAG_common_block:
21872           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21873           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21874           add_symbol_to_list (sym, cu->list_in_scope);
21875           break;
21876         default:
21877           /* Not a tag we recognize.  Hopefully we aren't processing
21878              trash data, but since we must specifically ignore things
21879              we don't recognize, there is nothing else we should do at
21880              this point.  */
21881           complaint (_("unsupported tag: '%s'"),
21882                      dwarf_tag_name (die->tag));
21883           break;
21884         }
21885
21886       if (suppress_add)
21887         {
21888           sym->hash_next = objfile->template_symbols;
21889           objfile->template_symbols = sym;
21890           list_to_add = NULL;
21891         }
21892
21893       if (list_to_add != NULL)
21894         add_symbol_to_list (sym, list_to_add);
21895
21896       /* For the benefit of old versions of GCC, check for anonymous
21897          namespaces based on the demangled name.  */
21898       if (!cu->processing_has_namespace_info
21899           && cu->language == language_cplus)
21900         cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21901     }
21902   return (sym);
21903 }
21904
21905 /* Given an attr with a DW_FORM_dataN value in host byte order,
21906    zero-extend it as appropriate for the symbol's type.  The DWARF
21907    standard (v4) is not entirely clear about the meaning of using
21908    DW_FORM_dataN for a constant with a signed type, where the type is
21909    wider than the data.  The conclusion of a discussion on the DWARF
21910    list was that this is unspecified.  We choose to always zero-extend
21911    because that is the interpretation long in use by GCC.  */
21912
21913 static gdb_byte *
21914 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21915                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21916 {
21917   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21918   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21919                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21920   LONGEST l = DW_UNSND (attr);
21921
21922   if (bits < sizeof (*value) * 8)
21923     {
21924       l &= ((LONGEST) 1 << bits) - 1;
21925       *value = l;
21926     }
21927   else if (bits == sizeof (*value) * 8)
21928     *value = l;
21929   else
21930     {
21931       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21932       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21933       return bytes;
21934     }
21935
21936   return NULL;
21937 }
21938
21939 /* Read a constant value from an attribute.  Either set *VALUE, or if
21940    the value does not fit in *VALUE, set *BYTES - either already
21941    allocated on the objfile obstack, or newly allocated on OBSTACK,
21942    or, set *BATON, if we translated the constant to a location
21943    expression.  */
21944
21945 static void
21946 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21947                          const char *name, struct obstack *obstack,
21948                          struct dwarf2_cu *cu,
21949                          LONGEST *value, const gdb_byte **bytes,
21950                          struct dwarf2_locexpr_baton **baton)
21951 {
21952   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21953   struct comp_unit_head *cu_header = &cu->header;
21954   struct dwarf_block *blk;
21955   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21956                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21957
21958   *value = 0;
21959   *bytes = NULL;
21960   *baton = NULL;
21961
21962   switch (attr->form)
21963     {
21964     case DW_FORM_addr:
21965     case DW_FORM_addrx:
21966     case DW_FORM_GNU_addr_index:
21967       {
21968         gdb_byte *data;
21969
21970         if (TYPE_LENGTH (type) != cu_header->addr_size)
21971           dwarf2_const_value_length_mismatch_complaint (name,
21972                                                         cu_header->addr_size,
21973                                                         TYPE_LENGTH (type));
21974         /* Symbols of this form are reasonably rare, so we just
21975            piggyback on the existing location code rather than writing
21976            a new implementation of symbol_computed_ops.  */
21977         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21978         (*baton)->per_cu = cu->per_cu;
21979         gdb_assert ((*baton)->per_cu);
21980
21981         (*baton)->size = 2 + cu_header->addr_size;
21982         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21983         (*baton)->data = data;
21984
21985         data[0] = DW_OP_addr;
21986         store_unsigned_integer (&data[1], cu_header->addr_size,
21987                                 byte_order, DW_ADDR (attr));
21988         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21989       }
21990       break;
21991     case DW_FORM_string:
21992     case DW_FORM_strp:
21993     case DW_FORM_strx:
21994     case DW_FORM_GNU_str_index:
21995     case DW_FORM_GNU_strp_alt:
21996       /* DW_STRING is already allocated on the objfile obstack, point
21997          directly to it.  */
21998       *bytes = (const gdb_byte *) DW_STRING (attr);
21999       break;
22000     case DW_FORM_block1:
22001     case DW_FORM_block2:
22002     case DW_FORM_block4:
22003     case DW_FORM_block:
22004     case DW_FORM_exprloc:
22005     case DW_FORM_data16:
22006       blk = DW_BLOCK (attr);
22007       if (TYPE_LENGTH (type) != blk->size)
22008         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
22009                                                       TYPE_LENGTH (type));
22010       *bytes = blk->data;
22011       break;
22012
22013       /* The DW_AT_const_value attributes are supposed to carry the
22014          symbol's value "represented as it would be on the target
22015          architecture."  By the time we get here, it's already been
22016          converted to host endianness, so we just need to sign- or
22017          zero-extend it as appropriate.  */
22018     case DW_FORM_data1:
22019       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
22020       break;
22021     case DW_FORM_data2:
22022       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
22023       break;
22024     case DW_FORM_data4:
22025       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
22026       break;
22027     case DW_FORM_data8:
22028       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
22029       break;
22030
22031     case DW_FORM_sdata:
22032     case DW_FORM_implicit_const:
22033       *value = DW_SND (attr);
22034       break;
22035
22036     case DW_FORM_udata:
22037       *value = DW_UNSND (attr);
22038       break;
22039
22040     default:
22041       complaint (_("unsupported const value attribute form: '%s'"),
22042                  dwarf_form_name (attr->form));
22043       *value = 0;
22044       break;
22045     }
22046 }
22047
22048
22049 /* Copy constant value from an attribute to a symbol.  */
22050
22051 static void
22052 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
22053                     struct dwarf2_cu *cu)
22054 {
22055   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22056   LONGEST value;
22057   const gdb_byte *bytes;
22058   struct dwarf2_locexpr_baton *baton;
22059
22060   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
22061                            SYMBOL_PRINT_NAME (sym),
22062                            &objfile->objfile_obstack, cu,
22063                            &value, &bytes, &baton);
22064
22065   if (baton != NULL)
22066     {
22067       SYMBOL_LOCATION_BATON (sym) = baton;
22068       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
22069     }
22070   else if (bytes != NULL)
22071      {
22072       SYMBOL_VALUE_BYTES (sym) = bytes;
22073       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
22074     }
22075   else
22076     {
22077       SYMBOL_VALUE (sym) = value;
22078       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
22079     }
22080 }
22081
22082 /* Return the type of the die in question using its DW_AT_type attribute.  */
22083
22084 static struct type *
22085 die_type (struct die_info *die, struct dwarf2_cu *cu)
22086 {
22087   struct attribute *type_attr;
22088
22089   type_attr = dwarf2_attr (die, DW_AT_type, cu);
22090   if (!type_attr)
22091     {
22092       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22093       /* A missing DW_AT_type represents a void type.  */
22094       return objfile_type (objfile)->builtin_void;
22095     }
22096
22097   return lookup_die_type (die, type_attr, cu);
22098 }
22099
22100 /* True iff CU's producer generates GNAT Ada auxiliary information
22101    that allows to find parallel types through that information instead
22102    of having to do expensive parallel lookups by type name.  */
22103
22104 static int
22105 need_gnat_info (struct dwarf2_cu *cu)
22106 {
22107   /* Assume that the Ada compiler was GNAT, which always produces
22108      the auxiliary information.  */
22109   return (cu->language == language_ada);
22110 }
22111
22112 /* Return the auxiliary type of the die in question using its
22113    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
22114    attribute is not present.  */
22115
22116 static struct type *
22117 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22118 {
22119   struct attribute *type_attr;
22120
22121   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22122   if (!type_attr)
22123     return NULL;
22124
22125   return lookup_die_type (die, type_attr, cu);
22126 }
22127
22128 /* If DIE has a descriptive_type attribute, then set the TYPE's
22129    descriptive type accordingly.  */
22130
22131 static void
22132 set_descriptive_type (struct type *type, struct die_info *die,
22133                       struct dwarf2_cu *cu)
22134 {
22135   struct type *descriptive_type = die_descriptive_type (die, cu);
22136
22137   if (descriptive_type)
22138     {
22139       ALLOCATE_GNAT_AUX_TYPE (type);
22140       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22141     }
22142 }
22143
22144 /* Return the containing type of the die in question using its
22145    DW_AT_containing_type attribute.  */
22146
22147 static struct type *
22148 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22149 {
22150   struct attribute *type_attr;
22151   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22152
22153   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22154   if (!type_attr)
22155     error (_("Dwarf Error: Problem turning containing type into gdb type "
22156              "[in module %s]"), objfile_name (objfile));
22157
22158   return lookup_die_type (die, type_attr, cu);
22159 }
22160
22161 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
22162
22163 static struct type *
22164 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22165 {
22166   struct dwarf2_per_objfile *dwarf2_per_objfile
22167     = cu->per_cu->dwarf2_per_objfile;
22168   struct objfile *objfile = dwarf2_per_objfile->objfile;
22169   char *saved;
22170
22171   std::string message
22172     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22173                      objfile_name (objfile),
22174                      sect_offset_str (cu->header.sect_off),
22175                      sect_offset_str (die->sect_off));
22176   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22177                                   message.c_str (), message.length ());
22178
22179   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22180 }
22181
22182 /* Look up the type of DIE in CU using its type attribute ATTR.
22183    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22184    DW_AT_containing_type.
22185    If there is no type substitute an error marker.  */
22186
22187 static struct type *
22188 lookup_die_type (struct die_info *die, const struct attribute *attr,
22189                  struct dwarf2_cu *cu)
22190 {
22191   struct dwarf2_per_objfile *dwarf2_per_objfile
22192     = cu->per_cu->dwarf2_per_objfile;
22193   struct objfile *objfile = dwarf2_per_objfile->objfile;
22194   struct type *this_type;
22195
22196   gdb_assert (attr->name == DW_AT_type
22197               || attr->name == DW_AT_GNAT_descriptive_type
22198               || attr->name == DW_AT_containing_type);
22199
22200   /* First see if we have it cached.  */
22201
22202   if (attr->form == DW_FORM_GNU_ref_alt)
22203     {
22204       struct dwarf2_per_cu_data *per_cu;
22205       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22206
22207       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22208                                                  dwarf2_per_objfile);
22209       this_type = get_die_type_at_offset (sect_off, per_cu);
22210     }
22211   else if (attr_form_is_ref (attr))
22212     {
22213       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22214
22215       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22216     }
22217   else if (attr->form == DW_FORM_ref_sig8)
22218     {
22219       ULONGEST signature = DW_SIGNATURE (attr);
22220
22221       return get_signatured_type (die, signature, cu);
22222     }
22223   else
22224     {
22225       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22226                    " at %s [in module %s]"),
22227                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22228                  objfile_name (objfile));
22229       return build_error_marker_type (cu, die);
22230     }
22231
22232   /* If not cached we need to read it in.  */
22233
22234   if (this_type == NULL)
22235     {
22236       struct die_info *type_die = NULL;
22237       struct dwarf2_cu *type_cu = cu;
22238
22239       if (attr_form_is_ref (attr))
22240         type_die = follow_die_ref (die, attr, &type_cu);
22241       if (type_die == NULL)
22242         return build_error_marker_type (cu, die);
22243       /* If we find the type now, it's probably because the type came
22244          from an inter-CU reference and the type's CU got expanded before
22245          ours.  */
22246       this_type = read_type_die (type_die, type_cu);
22247     }
22248
22249   /* If we still don't have a type use an error marker.  */
22250
22251   if (this_type == NULL)
22252     return build_error_marker_type (cu, die);
22253
22254   return this_type;
22255 }
22256
22257 /* Return the type in DIE, CU.
22258    Returns NULL for invalid types.
22259
22260    This first does a lookup in die_type_hash,
22261    and only reads the die in if necessary.
22262
22263    NOTE: This can be called when reading in partial or full symbols.  */
22264
22265 static struct type *
22266 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22267 {
22268   struct type *this_type;
22269
22270   this_type = get_die_type (die, cu);
22271   if (this_type)
22272     return this_type;
22273
22274   return read_type_die_1 (die, cu);
22275 }
22276
22277 /* Read the type in DIE, CU.
22278    Returns NULL for invalid types.  */
22279
22280 static struct type *
22281 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22282 {
22283   struct type *this_type = NULL;
22284
22285   switch (die->tag)
22286     {
22287     case DW_TAG_class_type:
22288     case DW_TAG_interface_type:
22289     case DW_TAG_structure_type:
22290     case DW_TAG_union_type:
22291       this_type = read_structure_type (die, cu);
22292       break;
22293     case DW_TAG_enumeration_type:
22294       this_type = read_enumeration_type (die, cu);
22295       break;
22296     case DW_TAG_subprogram:
22297     case DW_TAG_subroutine_type:
22298     case DW_TAG_inlined_subroutine:
22299       this_type = read_subroutine_type (die, cu);
22300       break;
22301     case DW_TAG_array_type:
22302       this_type = read_array_type (die, cu);
22303       break;
22304     case DW_TAG_set_type:
22305       this_type = read_set_type (die, cu);
22306       break;
22307     case DW_TAG_pointer_type:
22308       this_type = read_tag_pointer_type (die, cu);
22309       break;
22310     case DW_TAG_ptr_to_member_type:
22311       this_type = read_tag_ptr_to_member_type (die, cu);
22312       break;
22313     case DW_TAG_reference_type:
22314       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22315       break;
22316     case DW_TAG_rvalue_reference_type:
22317       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22318       break;
22319     case DW_TAG_const_type:
22320       this_type = read_tag_const_type (die, cu);
22321       break;
22322     case DW_TAG_volatile_type:
22323       this_type = read_tag_volatile_type (die, cu);
22324       break;
22325     case DW_TAG_restrict_type:
22326       this_type = read_tag_restrict_type (die, cu);
22327       break;
22328     case DW_TAG_string_type:
22329       this_type = read_tag_string_type (die, cu);
22330       break;
22331     case DW_TAG_typedef:
22332       this_type = read_typedef (die, cu);
22333       break;
22334     case DW_TAG_subrange_type:
22335       this_type = read_subrange_type (die, cu);
22336       break;
22337     case DW_TAG_base_type:
22338       this_type = read_base_type (die, cu);
22339       break;
22340     case DW_TAG_unspecified_type:
22341       this_type = read_unspecified_type (die, cu);
22342       break;
22343     case DW_TAG_namespace:
22344       this_type = read_namespace_type (die, cu);
22345       break;
22346     case DW_TAG_module:
22347       this_type = read_module_type (die, cu);
22348       break;
22349     case DW_TAG_atomic_type:
22350       this_type = read_tag_atomic_type (die, cu);
22351       break;
22352     default:
22353       complaint (_("unexpected tag in read_type_die: '%s'"),
22354                  dwarf_tag_name (die->tag));
22355       break;
22356     }
22357
22358   return this_type;
22359 }
22360
22361 /* See if we can figure out if the class lives in a namespace.  We do
22362    this by looking for a member function; its demangled name will
22363    contain namespace info, if there is any.
22364    Return the computed name or NULL.
22365    Space for the result is allocated on the objfile's obstack.
22366    This is the full-die version of guess_partial_die_structure_name.
22367    In this case we know DIE has no useful parent.  */
22368
22369 static char *
22370 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22371 {
22372   struct die_info *spec_die;
22373   struct dwarf2_cu *spec_cu;
22374   struct die_info *child;
22375   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22376
22377   spec_cu = cu;
22378   spec_die = die_specification (die, &spec_cu);
22379   if (spec_die != NULL)
22380     {
22381       die = spec_die;
22382       cu = spec_cu;
22383     }
22384
22385   for (child = die->child;
22386        child != NULL;
22387        child = child->sibling)
22388     {
22389       if (child->tag == DW_TAG_subprogram)
22390         {
22391           const char *linkage_name = dw2_linkage_name (child, cu);
22392
22393           if (linkage_name != NULL)
22394             {
22395               char *actual_name
22396                 = language_class_name_from_physname (cu->language_defn,
22397                                                      linkage_name);
22398               char *name = NULL;
22399
22400               if (actual_name != NULL)
22401                 {
22402                   const char *die_name = dwarf2_name (die, cu);
22403
22404                   if (die_name != NULL
22405                       && strcmp (die_name, actual_name) != 0)
22406                     {
22407                       /* Strip off the class name from the full name.
22408                          We want the prefix.  */
22409                       int die_name_len = strlen (die_name);
22410                       int actual_name_len = strlen (actual_name);
22411
22412                       /* Test for '::' as a sanity check.  */
22413                       if (actual_name_len > die_name_len + 2
22414                           && actual_name[actual_name_len
22415                                          - die_name_len - 1] == ':')
22416                         name = (char *) obstack_copy0 (
22417                           &objfile->per_bfd->storage_obstack,
22418                           actual_name, actual_name_len - die_name_len - 2);
22419                     }
22420                 }
22421               xfree (actual_name);
22422               return name;
22423             }
22424         }
22425     }
22426
22427   return NULL;
22428 }
22429
22430 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22431    prefix part in such case.  See
22432    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22433
22434 static const char *
22435 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22436 {
22437   struct attribute *attr;
22438   const char *base;
22439
22440   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22441       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22442     return NULL;
22443
22444   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22445     return NULL;
22446
22447   attr = dw2_linkage_name_attr (die, cu);
22448   if (attr == NULL || DW_STRING (attr) == NULL)
22449     return NULL;
22450
22451   /* dwarf2_name had to be already called.  */
22452   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22453
22454   /* Strip the base name, keep any leading namespaces/classes.  */
22455   base = strrchr (DW_STRING (attr), ':');
22456   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22457     return "";
22458
22459   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22460   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22461                                  DW_STRING (attr),
22462                                  &base[-1] - DW_STRING (attr));
22463 }
22464
22465 /* Return the name of the namespace/class that DIE is defined within,
22466    or "" if we can't tell.  The caller should not xfree the result.
22467
22468    For example, if we're within the method foo() in the following
22469    code:
22470
22471    namespace N {
22472      class C {
22473        void foo () {
22474        }
22475      };
22476    }
22477
22478    then determine_prefix on foo's die will return "N::C".  */
22479
22480 static const char *
22481 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22482 {
22483   struct dwarf2_per_objfile *dwarf2_per_objfile
22484     = cu->per_cu->dwarf2_per_objfile;
22485   struct die_info *parent, *spec_die;
22486   struct dwarf2_cu *spec_cu;
22487   struct type *parent_type;
22488   const char *retval;
22489
22490   if (cu->language != language_cplus
22491       && cu->language != language_fortran && cu->language != language_d
22492       && cu->language != language_rust)
22493     return "";
22494
22495   retval = anonymous_struct_prefix (die, cu);
22496   if (retval)
22497     return retval;
22498
22499   /* We have to be careful in the presence of DW_AT_specification.
22500      For example, with GCC 3.4, given the code
22501
22502      namespace N {
22503        void foo() {
22504          // Definition of N::foo.
22505        }
22506      }
22507
22508      then we'll have a tree of DIEs like this:
22509
22510      1: DW_TAG_compile_unit
22511        2: DW_TAG_namespace        // N
22512          3: DW_TAG_subprogram     // declaration of N::foo
22513        4: DW_TAG_subprogram       // definition of N::foo
22514             DW_AT_specification   // refers to die #3
22515
22516      Thus, when processing die #4, we have to pretend that we're in
22517      the context of its DW_AT_specification, namely the contex of die
22518      #3.  */
22519   spec_cu = cu;
22520   spec_die = die_specification (die, &spec_cu);
22521   if (spec_die == NULL)
22522     parent = die->parent;
22523   else
22524     {
22525       parent = spec_die->parent;
22526       cu = spec_cu;
22527     }
22528
22529   if (parent == NULL)
22530     return "";
22531   else if (parent->building_fullname)
22532     {
22533       const char *name;
22534       const char *parent_name;
22535
22536       /* It has been seen on RealView 2.2 built binaries,
22537          DW_TAG_template_type_param types actually _defined_ as
22538          children of the parent class:
22539
22540          enum E {};
22541          template class <class Enum> Class{};
22542          Class<enum E> class_e;
22543
22544          1: DW_TAG_class_type (Class)
22545            2: DW_TAG_enumeration_type (E)
22546              3: DW_TAG_enumerator (enum1:0)
22547              3: DW_TAG_enumerator (enum2:1)
22548              ...
22549            2: DW_TAG_template_type_param
22550               DW_AT_type  DW_FORM_ref_udata (E)
22551
22552          Besides being broken debug info, it can put GDB into an
22553          infinite loop.  Consider:
22554
22555          When we're building the full name for Class<E>, we'll start
22556          at Class, and go look over its template type parameters,
22557          finding E.  We'll then try to build the full name of E, and
22558          reach here.  We're now trying to build the full name of E,
22559          and look over the parent DIE for containing scope.  In the
22560          broken case, if we followed the parent DIE of E, we'd again
22561          find Class, and once again go look at its template type
22562          arguments, etc., etc.  Simply don't consider such parent die
22563          as source-level parent of this die (it can't be, the language
22564          doesn't allow it), and break the loop here.  */
22565       name = dwarf2_name (die, cu);
22566       parent_name = dwarf2_name (parent, cu);
22567       complaint (_("template param type '%s' defined within parent '%s'"),
22568                  name ? name : "<unknown>",
22569                  parent_name ? parent_name : "<unknown>");
22570       return "";
22571     }
22572   else
22573     switch (parent->tag)
22574       {
22575       case DW_TAG_namespace:
22576         parent_type = read_type_die (parent, cu);
22577         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22578            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22579            Work around this problem here.  */
22580         if (cu->language == language_cplus
22581             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22582           return "";
22583         /* We give a name to even anonymous namespaces.  */
22584         return TYPE_NAME (parent_type);
22585       case DW_TAG_class_type:
22586       case DW_TAG_interface_type:
22587       case DW_TAG_structure_type:
22588       case DW_TAG_union_type:
22589       case DW_TAG_module:
22590         parent_type = read_type_die (parent, cu);
22591         if (TYPE_NAME (parent_type) != NULL)
22592           return TYPE_NAME (parent_type);
22593         else
22594           /* An anonymous structure is only allowed non-static data
22595              members; no typedefs, no member functions, et cetera.
22596              So it does not need a prefix.  */
22597           return "";
22598       case DW_TAG_compile_unit:
22599       case DW_TAG_partial_unit:
22600         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22601         if (cu->language == language_cplus
22602             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22603             && die->child != NULL
22604             && (die->tag == DW_TAG_class_type
22605                 || die->tag == DW_TAG_structure_type
22606                 || die->tag == DW_TAG_union_type))
22607           {
22608             char *name = guess_full_die_structure_name (die, cu);
22609             if (name != NULL)
22610               return name;
22611           }
22612         return "";
22613       case DW_TAG_enumeration_type:
22614         parent_type = read_type_die (parent, cu);
22615         if (TYPE_DECLARED_CLASS (parent_type))
22616           {
22617             if (TYPE_NAME (parent_type) != NULL)
22618               return TYPE_NAME (parent_type);
22619             return "";
22620           }
22621         /* Fall through.  */
22622       default:
22623         return determine_prefix (parent, cu);
22624       }
22625 }
22626
22627 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22628    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22629    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22630    an obconcat, otherwise allocate storage for the result.  The CU argument is
22631    used to determine the language and hence, the appropriate separator.  */
22632
22633 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22634
22635 static char *
22636 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22637                  int physname, struct dwarf2_cu *cu)
22638 {
22639   const char *lead = "";
22640   const char *sep;
22641
22642   if (suffix == NULL || suffix[0] == '\0'
22643       || prefix == NULL || prefix[0] == '\0')
22644     sep = "";
22645   else if (cu->language == language_d)
22646     {
22647       /* For D, the 'main' function could be defined in any module, but it
22648          should never be prefixed.  */
22649       if (strcmp (suffix, "D main") == 0)
22650         {
22651           prefix = "";
22652           sep = "";
22653         }
22654       else
22655         sep = ".";
22656     }
22657   else if (cu->language == language_fortran && physname)
22658     {
22659       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22660          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22661
22662       lead = "__";
22663       sep = "_MOD_";
22664     }
22665   else
22666     sep = "::";
22667
22668   if (prefix == NULL)
22669     prefix = "";
22670   if (suffix == NULL)
22671     suffix = "";
22672
22673   if (obs == NULL)
22674     {
22675       char *retval
22676         = ((char *)
22677            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22678
22679       strcpy (retval, lead);
22680       strcat (retval, prefix);
22681       strcat (retval, sep);
22682       strcat (retval, suffix);
22683       return retval;
22684     }
22685   else
22686     {
22687       /* We have an obstack.  */
22688       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22689     }
22690 }
22691
22692 /* Return sibling of die, NULL if no sibling.  */
22693
22694 static struct die_info *
22695 sibling_die (struct die_info *die)
22696 {
22697   return die->sibling;
22698 }
22699
22700 /* Get name of a die, return NULL if not found.  */
22701
22702 static const char *
22703 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22704                           struct obstack *obstack)
22705 {
22706   if (name && cu->language == language_cplus)
22707     {
22708       std::string canon_name = cp_canonicalize_string (name);
22709
22710       if (!canon_name.empty ())
22711         {
22712           if (canon_name != name)
22713             name = (const char *) obstack_copy0 (obstack,
22714                                                  canon_name.c_str (),
22715                                                  canon_name.length ());
22716         }
22717     }
22718
22719   return name;
22720 }
22721
22722 /* Get name of a die, return NULL if not found.
22723    Anonymous namespaces are converted to their magic string.  */
22724
22725 static const char *
22726 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22727 {
22728   struct attribute *attr;
22729   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22730
22731   attr = dwarf2_attr (die, DW_AT_name, cu);
22732   if ((!attr || !DW_STRING (attr))
22733       && die->tag != DW_TAG_namespace
22734       && die->tag != DW_TAG_class_type
22735       && die->tag != DW_TAG_interface_type
22736       && die->tag != DW_TAG_structure_type
22737       && die->tag != DW_TAG_union_type)
22738     return NULL;
22739
22740   switch (die->tag)
22741     {
22742     case DW_TAG_compile_unit:
22743     case DW_TAG_partial_unit:
22744       /* Compilation units have a DW_AT_name that is a filename, not
22745          a source language identifier.  */
22746     case DW_TAG_enumeration_type:
22747     case DW_TAG_enumerator:
22748       /* These tags always have simple identifiers already; no need
22749          to canonicalize them.  */
22750       return DW_STRING (attr);
22751
22752     case DW_TAG_namespace:
22753       if (attr != NULL && DW_STRING (attr) != NULL)
22754         return DW_STRING (attr);
22755       return CP_ANONYMOUS_NAMESPACE_STR;
22756
22757     case DW_TAG_class_type:
22758     case DW_TAG_interface_type:
22759     case DW_TAG_structure_type:
22760     case DW_TAG_union_type:
22761       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22762          structures or unions.  These were of the form "._%d" in GCC 4.1,
22763          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22764          and GCC 4.4.  We work around this problem by ignoring these.  */
22765       if (attr && DW_STRING (attr)
22766           && (startswith (DW_STRING (attr), "._")
22767               || startswith (DW_STRING (attr), "<anonymous")))
22768         return NULL;
22769
22770       /* GCC might emit a nameless typedef that has a linkage name.  See
22771          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22772       if (!attr || DW_STRING (attr) == NULL)
22773         {
22774           char *demangled = NULL;
22775
22776           attr = dw2_linkage_name_attr (die, cu);
22777           if (attr == NULL || DW_STRING (attr) == NULL)
22778             return NULL;
22779
22780           /* Avoid demangling DW_STRING (attr) the second time on a second
22781              call for the same DIE.  */
22782           if (!DW_STRING_IS_CANONICAL (attr))
22783             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22784
22785           if (demangled)
22786             {
22787               const char *base;
22788
22789               /* FIXME: we already did this for the partial symbol... */
22790               DW_STRING (attr)
22791                 = ((const char *)
22792                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22793                                   demangled, strlen (demangled)));
22794               DW_STRING_IS_CANONICAL (attr) = 1;
22795               xfree (demangled);
22796
22797               /* Strip any leading namespaces/classes, keep only the base name.
22798                  DW_AT_name for named DIEs does not contain the prefixes.  */
22799               base = strrchr (DW_STRING (attr), ':');
22800               if (base && base > DW_STRING (attr) && base[-1] == ':')
22801                 return &base[1];
22802               else
22803                 return DW_STRING (attr);
22804             }
22805         }
22806       break;
22807
22808     default:
22809       break;
22810     }
22811
22812   if (!DW_STRING_IS_CANONICAL (attr))
22813     {
22814       DW_STRING (attr)
22815         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22816                                     &objfile->per_bfd->storage_obstack);
22817       DW_STRING_IS_CANONICAL (attr) = 1;
22818     }
22819   return DW_STRING (attr);
22820 }
22821
22822 /* Return the die that this die in an extension of, or NULL if there
22823    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22824    containing the return value on output.  */
22825
22826 static struct die_info *
22827 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22828 {
22829   struct attribute *attr;
22830
22831   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22832   if (attr == NULL)
22833     return NULL;
22834
22835   return follow_die_ref (die, attr, ext_cu);
22836 }
22837
22838 /* A convenience function that returns an "unknown" DWARF name,
22839    including the value of V.  STR is the name of the entity being
22840    printed, e.g., "TAG".  */
22841
22842 static const char *
22843 dwarf_unknown (const char *str, unsigned v)
22844 {
22845   char *cell = get_print_cell ();
22846   xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
22847   return cell;
22848 }
22849
22850 /* Convert a DIE tag into its string name.  */
22851
22852 static const char *
22853 dwarf_tag_name (unsigned tag)
22854 {
22855   const char *name = get_DW_TAG_name (tag);
22856
22857   if (name == NULL)
22858     return dwarf_unknown ("TAG", tag);
22859
22860   return name;
22861 }
22862
22863 /* Convert a DWARF attribute code into its string name.  */
22864
22865 static const char *
22866 dwarf_attr_name (unsigned attr)
22867 {
22868   const char *name;
22869
22870 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22871   if (attr == DW_AT_MIPS_fde)
22872     return "DW_AT_MIPS_fde";
22873 #else
22874   if (attr == DW_AT_HP_block_index)
22875     return "DW_AT_HP_block_index";
22876 #endif
22877
22878   name = get_DW_AT_name (attr);
22879
22880   if (name == NULL)
22881     return dwarf_unknown ("AT", attr);
22882
22883   return name;
22884 }
22885
22886 /* Convert a DWARF value form code into its string name.  */
22887
22888 static const char *
22889 dwarf_form_name (unsigned form)
22890 {
22891   const char *name = get_DW_FORM_name (form);
22892
22893   if (name == NULL)
22894     return dwarf_unknown ("FORM", form);
22895
22896   return name;
22897 }
22898
22899 static const char *
22900 dwarf_bool_name (unsigned mybool)
22901 {
22902   if (mybool)
22903     return "TRUE";
22904   else
22905     return "FALSE";
22906 }
22907
22908 /* Convert a DWARF type code into its string name.  */
22909
22910 static const char *
22911 dwarf_type_encoding_name (unsigned enc)
22912 {
22913   const char *name = get_DW_ATE_name (enc);
22914
22915   if (name == NULL)
22916     return dwarf_unknown ("ATE", enc);
22917
22918   return name;
22919 }
22920
22921 static void
22922 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22923 {
22924   unsigned int i;
22925
22926   print_spaces (indent, f);
22927   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22928                       dwarf_tag_name (die->tag), die->abbrev,
22929                       sect_offset_str (die->sect_off));
22930
22931   if (die->parent != NULL)
22932     {
22933       print_spaces (indent, f);
22934       fprintf_unfiltered (f, "  parent at offset: %s\n",
22935                           sect_offset_str (die->parent->sect_off));
22936     }
22937
22938   print_spaces (indent, f);
22939   fprintf_unfiltered (f, "  has children: %s\n",
22940            dwarf_bool_name (die->child != NULL));
22941
22942   print_spaces (indent, f);
22943   fprintf_unfiltered (f, "  attributes:\n");
22944
22945   for (i = 0; i < die->num_attrs; ++i)
22946     {
22947       print_spaces (indent, f);
22948       fprintf_unfiltered (f, "    %s (%s) ",
22949                dwarf_attr_name (die->attrs[i].name),
22950                dwarf_form_name (die->attrs[i].form));
22951
22952       switch (die->attrs[i].form)
22953         {
22954         case DW_FORM_addr:
22955         case DW_FORM_addrx:
22956         case DW_FORM_GNU_addr_index:
22957           fprintf_unfiltered (f, "address: ");
22958           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22959           break;
22960         case DW_FORM_block2:
22961         case DW_FORM_block4:
22962         case DW_FORM_block:
22963         case DW_FORM_block1:
22964           fprintf_unfiltered (f, "block: size %s",
22965                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22966           break;
22967         case DW_FORM_exprloc:
22968           fprintf_unfiltered (f, "expression: size %s",
22969                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22970           break;
22971         case DW_FORM_data16:
22972           fprintf_unfiltered (f, "constant of 16 bytes");
22973           break;
22974         case DW_FORM_ref_addr:
22975           fprintf_unfiltered (f, "ref address: ");
22976           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22977           break;
22978         case DW_FORM_GNU_ref_alt:
22979           fprintf_unfiltered (f, "alt ref address: ");
22980           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22981           break;
22982         case DW_FORM_ref1:
22983         case DW_FORM_ref2:
22984         case DW_FORM_ref4:
22985         case DW_FORM_ref8:
22986         case DW_FORM_ref_udata:
22987           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22988                               (long) (DW_UNSND (&die->attrs[i])));
22989           break;
22990         case DW_FORM_data1:
22991         case DW_FORM_data2:
22992         case DW_FORM_data4:
22993         case DW_FORM_data8:
22994         case DW_FORM_udata:
22995         case DW_FORM_sdata:
22996           fprintf_unfiltered (f, "constant: %s",
22997                               pulongest (DW_UNSND (&die->attrs[i])));
22998           break;
22999         case DW_FORM_sec_offset:
23000           fprintf_unfiltered (f, "section offset: %s",
23001                               pulongest (DW_UNSND (&die->attrs[i])));
23002           break;
23003         case DW_FORM_ref_sig8:
23004           fprintf_unfiltered (f, "signature: %s",
23005                               hex_string (DW_SIGNATURE (&die->attrs[i])));
23006           break;
23007         case DW_FORM_string:
23008         case DW_FORM_strp:
23009         case DW_FORM_line_strp:
23010         case DW_FORM_strx:
23011         case DW_FORM_GNU_str_index:
23012         case DW_FORM_GNU_strp_alt:
23013           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
23014                    DW_STRING (&die->attrs[i])
23015                    ? DW_STRING (&die->attrs[i]) : "",
23016                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
23017           break;
23018         case DW_FORM_flag:
23019           if (DW_UNSND (&die->attrs[i]))
23020             fprintf_unfiltered (f, "flag: TRUE");
23021           else
23022             fprintf_unfiltered (f, "flag: FALSE");
23023           break;
23024         case DW_FORM_flag_present:
23025           fprintf_unfiltered (f, "flag: TRUE");
23026           break;
23027         case DW_FORM_indirect:
23028           /* The reader will have reduced the indirect form to
23029              the "base form" so this form should not occur.  */
23030           fprintf_unfiltered (f, 
23031                               "unexpected attribute form: DW_FORM_indirect");
23032           break;
23033         case DW_FORM_implicit_const:
23034           fprintf_unfiltered (f, "constant: %s",
23035                               plongest (DW_SND (&die->attrs[i])));
23036           break;
23037         default:
23038           fprintf_unfiltered (f, "unsupported attribute form: %d.",
23039                    die->attrs[i].form);
23040           break;
23041         }
23042       fprintf_unfiltered (f, "\n");
23043     }
23044 }
23045
23046 static void
23047 dump_die_for_error (struct die_info *die)
23048 {
23049   dump_die_shallow (gdb_stderr, 0, die);
23050 }
23051
23052 static void
23053 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
23054 {
23055   int indent = level * 4;
23056
23057   gdb_assert (die != NULL);
23058
23059   if (level >= max_level)
23060     return;
23061
23062   dump_die_shallow (f, indent, die);
23063
23064   if (die->child != NULL)
23065     {
23066       print_spaces (indent, f);
23067       fprintf_unfiltered (f, "  Children:");
23068       if (level + 1 < max_level)
23069         {
23070           fprintf_unfiltered (f, "\n");
23071           dump_die_1 (f, level + 1, max_level, die->child);
23072         }
23073       else
23074         {
23075           fprintf_unfiltered (f,
23076                               " [not printed, max nesting level reached]\n");
23077         }
23078     }
23079
23080   if (die->sibling != NULL && level > 0)
23081     {
23082       dump_die_1 (f, level, max_level, die->sibling);
23083     }
23084 }
23085
23086 /* This is called from the pdie macro in gdbinit.in.
23087    It's not static so gcc will keep a copy callable from gdb.  */
23088
23089 void
23090 dump_die (struct die_info *die, int max_level)
23091 {
23092   dump_die_1 (gdb_stdlog, 0, max_level, die);
23093 }
23094
23095 static void
23096 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
23097 {
23098   void **slot;
23099
23100   slot = htab_find_slot_with_hash (cu->die_hash, die,
23101                                    to_underlying (die->sect_off),
23102                                    INSERT);
23103
23104   *slot = die;
23105 }
23106
23107 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
23108    required kind.  */
23109
23110 static sect_offset
23111 dwarf2_get_ref_die_offset (const struct attribute *attr)
23112 {
23113   if (attr_form_is_ref (attr))
23114     return (sect_offset) DW_UNSND (attr);
23115
23116   complaint (_("unsupported die ref attribute form: '%s'"),
23117              dwarf_form_name (attr->form));
23118   return {};
23119 }
23120
23121 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
23122  * the value held by the attribute is not constant.  */
23123
23124 static LONGEST
23125 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
23126 {
23127   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
23128     return DW_SND (attr);
23129   else if (attr->form == DW_FORM_udata
23130            || attr->form == DW_FORM_data1
23131            || attr->form == DW_FORM_data2
23132            || attr->form == DW_FORM_data4
23133            || attr->form == DW_FORM_data8)
23134     return DW_UNSND (attr);
23135   else
23136     {
23137       /* For DW_FORM_data16 see attr_form_is_constant.  */
23138       complaint (_("Attribute value is not a constant (%s)"),
23139                  dwarf_form_name (attr->form));
23140       return default_value;
23141     }
23142 }
23143
23144 /* Follow reference or signature attribute ATTR of SRC_DIE.
23145    On entry *REF_CU is the CU of SRC_DIE.
23146    On exit *REF_CU is the CU of the result.  */
23147
23148 static struct die_info *
23149 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23150                        struct dwarf2_cu **ref_cu)
23151 {
23152   struct die_info *die;
23153
23154   if (attr_form_is_ref (attr))
23155     die = follow_die_ref (src_die, attr, ref_cu);
23156   else if (attr->form == DW_FORM_ref_sig8)
23157     die = follow_die_sig (src_die, attr, ref_cu);
23158   else
23159     {
23160       dump_die_for_error (src_die);
23161       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23162              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23163     }
23164
23165   return die;
23166 }
23167
23168 /* Follow reference OFFSET.
23169    On entry *REF_CU is the CU of the source die referencing OFFSET.
23170    On exit *REF_CU is the CU of the result.
23171    Returns NULL if OFFSET is invalid.  */
23172
23173 static struct die_info *
23174 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23175                    struct dwarf2_cu **ref_cu)
23176 {
23177   struct die_info temp_die;
23178   struct dwarf2_cu *target_cu, *cu = *ref_cu;
23179   struct dwarf2_per_objfile *dwarf2_per_objfile
23180     = cu->per_cu->dwarf2_per_objfile;
23181
23182   gdb_assert (cu->per_cu != NULL);
23183
23184   target_cu = cu;
23185
23186   if (cu->per_cu->is_debug_types)
23187     {
23188       /* .debug_types CUs cannot reference anything outside their CU.
23189          If they need to, they have to reference a signatured type via
23190          DW_FORM_ref_sig8.  */
23191       if (!offset_in_cu_p (&cu->header, sect_off))
23192         return NULL;
23193     }
23194   else if (offset_in_dwz != cu->per_cu->is_dwz
23195            || !offset_in_cu_p (&cu->header, sect_off))
23196     {
23197       struct dwarf2_per_cu_data *per_cu;
23198
23199       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23200                                                  dwarf2_per_objfile);
23201
23202       /* If necessary, add it to the queue and load its DIEs.  */
23203       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23204         load_full_comp_unit (per_cu, false, cu->language);
23205
23206       target_cu = per_cu->cu;
23207     }
23208   else if (cu->dies == NULL)
23209     {
23210       /* We're loading full DIEs during partial symbol reading.  */
23211       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23212       load_full_comp_unit (cu->per_cu, false, language_minimal);
23213     }
23214
23215   *ref_cu = target_cu;
23216   temp_die.sect_off = sect_off;
23217
23218   if (target_cu != cu)
23219     target_cu->ancestor = cu;
23220
23221   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23222                                                   &temp_die,
23223                                                   to_underlying (sect_off));
23224 }
23225
23226 /* Follow reference attribute ATTR of SRC_DIE.
23227    On entry *REF_CU is the CU of SRC_DIE.
23228    On exit *REF_CU is the CU of the result.  */
23229
23230 static struct die_info *
23231 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23232                 struct dwarf2_cu **ref_cu)
23233 {
23234   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23235   struct dwarf2_cu *cu = *ref_cu;
23236   struct die_info *die;
23237
23238   die = follow_die_offset (sect_off,
23239                            (attr->form == DW_FORM_GNU_ref_alt
23240                             || cu->per_cu->is_dwz),
23241                            ref_cu);
23242   if (!die)
23243     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23244            "at %s [in module %s]"),
23245            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23246            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23247
23248   return die;
23249 }
23250
23251 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23252    Returned value is intended for DW_OP_call*.  Returned
23253    dwarf2_locexpr_baton->data has lifetime of
23254    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23255
23256 struct dwarf2_locexpr_baton
23257 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23258                                struct dwarf2_per_cu_data *per_cu,
23259                                CORE_ADDR (*get_frame_pc) (void *baton),
23260                                void *baton, bool resolve_abstract_p)
23261 {
23262   struct dwarf2_cu *cu;
23263   struct die_info *die;
23264   struct attribute *attr;
23265   struct dwarf2_locexpr_baton retval;
23266   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23267   struct objfile *objfile = dwarf2_per_objfile->objfile;
23268
23269   if (per_cu->cu == NULL)
23270     load_cu (per_cu, false);
23271   cu = per_cu->cu;
23272   if (cu == NULL)
23273     {
23274       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23275          Instead just throw an error, not much else we can do.  */
23276       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23277              sect_offset_str (sect_off), objfile_name (objfile));
23278     }
23279
23280   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23281   if (!die)
23282     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23283            sect_offset_str (sect_off), objfile_name (objfile));
23284
23285   attr = dwarf2_attr (die, DW_AT_location, cu);
23286   if (!attr && resolve_abstract_p
23287       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23288           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23289     {
23290       CORE_ADDR pc = (*get_frame_pc) (baton);
23291
23292       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23293         {
23294           if (!cand->parent
23295               || cand->parent->tag != DW_TAG_subprogram)
23296             continue;
23297
23298           CORE_ADDR pc_low, pc_high;
23299           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23300           if (pc_low == ((CORE_ADDR) -1)
23301               || !(pc_low <= pc && pc < pc_high))
23302             continue;
23303
23304           die = cand;
23305           attr = dwarf2_attr (die, DW_AT_location, cu);
23306           break;
23307         }
23308     }
23309
23310   if (!attr)
23311     {
23312       /* DWARF: "If there is no such attribute, then there is no effect.".
23313          DATA is ignored if SIZE is 0.  */
23314
23315       retval.data = NULL;
23316       retval.size = 0;
23317     }
23318   else if (attr_form_is_section_offset (attr))
23319     {
23320       struct dwarf2_loclist_baton loclist_baton;
23321       CORE_ADDR pc = (*get_frame_pc) (baton);
23322       size_t size;
23323
23324       fill_in_loclist_baton (cu, &loclist_baton, attr);
23325
23326       retval.data = dwarf2_find_location_expression (&loclist_baton,
23327                                                      &size, pc);
23328       retval.size = size;
23329     }
23330   else
23331     {
23332       if (!attr_form_is_block (attr))
23333         error (_("Dwarf Error: DIE at %s referenced in module %s "
23334                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23335                sect_offset_str (sect_off), objfile_name (objfile));
23336
23337       retval.data = DW_BLOCK (attr)->data;
23338       retval.size = DW_BLOCK (attr)->size;
23339     }
23340   retval.per_cu = cu->per_cu;
23341
23342   age_cached_comp_units (dwarf2_per_objfile);
23343
23344   return retval;
23345 }
23346
23347 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23348    offset.  */
23349
23350 struct dwarf2_locexpr_baton
23351 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23352                              struct dwarf2_per_cu_data *per_cu,
23353                              CORE_ADDR (*get_frame_pc) (void *baton),
23354                              void *baton)
23355 {
23356   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23357
23358   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23359 }
23360
23361 /* Write a constant of a given type as target-ordered bytes into
23362    OBSTACK.  */
23363
23364 static const gdb_byte *
23365 write_constant_as_bytes (struct obstack *obstack,
23366                          enum bfd_endian byte_order,
23367                          struct type *type,
23368                          ULONGEST value,
23369                          LONGEST *len)
23370 {
23371   gdb_byte *result;
23372
23373   *len = TYPE_LENGTH (type);
23374   result = (gdb_byte *) obstack_alloc (obstack, *len);
23375   store_unsigned_integer (result, *len, byte_order, value);
23376
23377   return result;
23378 }
23379
23380 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23381    pointer to the constant bytes and set LEN to the length of the
23382    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23383    does not have a DW_AT_const_value, return NULL.  */
23384
23385 const gdb_byte *
23386 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23387                              struct dwarf2_per_cu_data *per_cu,
23388                              struct obstack *obstack,
23389                              LONGEST *len)
23390 {
23391   struct dwarf2_cu *cu;
23392   struct die_info *die;
23393   struct attribute *attr;
23394   const gdb_byte *result = NULL;
23395   struct type *type;
23396   LONGEST value;
23397   enum bfd_endian byte_order;
23398   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23399
23400   if (per_cu->cu == NULL)
23401     load_cu (per_cu, false);
23402   cu = per_cu->cu;
23403   if (cu == NULL)
23404     {
23405       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23406          Instead just throw an error, not much else we can do.  */
23407       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23408              sect_offset_str (sect_off), objfile_name (objfile));
23409     }
23410
23411   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23412   if (!die)
23413     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23414            sect_offset_str (sect_off), objfile_name (objfile));
23415
23416   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23417   if (attr == NULL)
23418     return NULL;
23419
23420   byte_order = (bfd_big_endian (objfile->obfd)
23421                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23422
23423   switch (attr->form)
23424     {
23425     case DW_FORM_addr:
23426     case DW_FORM_addrx:
23427     case DW_FORM_GNU_addr_index:
23428       {
23429         gdb_byte *tem;
23430
23431         *len = cu->header.addr_size;
23432         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23433         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23434         result = tem;
23435       }
23436       break;
23437     case DW_FORM_string:
23438     case DW_FORM_strp:
23439     case DW_FORM_strx:
23440     case DW_FORM_GNU_str_index:
23441     case DW_FORM_GNU_strp_alt:
23442       /* DW_STRING is already allocated on the objfile obstack, point
23443          directly to it.  */
23444       result = (const gdb_byte *) DW_STRING (attr);
23445       *len = strlen (DW_STRING (attr));
23446       break;
23447     case DW_FORM_block1:
23448     case DW_FORM_block2:
23449     case DW_FORM_block4:
23450     case DW_FORM_block:
23451     case DW_FORM_exprloc:
23452     case DW_FORM_data16:
23453       result = DW_BLOCK (attr)->data;
23454       *len = DW_BLOCK (attr)->size;
23455       break;
23456
23457       /* The DW_AT_const_value attributes are supposed to carry the
23458          symbol's value "represented as it would be on the target
23459          architecture."  By the time we get here, it's already been
23460          converted to host endianness, so we just need to sign- or
23461          zero-extend it as appropriate.  */
23462     case DW_FORM_data1:
23463       type = die_type (die, cu);
23464       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23465       if (result == NULL)
23466         result = write_constant_as_bytes (obstack, byte_order,
23467                                           type, value, len);
23468       break;
23469     case DW_FORM_data2:
23470       type = die_type (die, cu);
23471       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23472       if (result == NULL)
23473         result = write_constant_as_bytes (obstack, byte_order,
23474                                           type, value, len);
23475       break;
23476     case DW_FORM_data4:
23477       type = die_type (die, cu);
23478       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23479       if (result == NULL)
23480         result = write_constant_as_bytes (obstack, byte_order,
23481                                           type, value, len);
23482       break;
23483     case DW_FORM_data8:
23484       type = die_type (die, cu);
23485       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23486       if (result == NULL)
23487         result = write_constant_as_bytes (obstack, byte_order,
23488                                           type, value, len);
23489       break;
23490
23491     case DW_FORM_sdata:
23492     case DW_FORM_implicit_const:
23493       type = die_type (die, cu);
23494       result = write_constant_as_bytes (obstack, byte_order,
23495                                         type, DW_SND (attr), len);
23496       break;
23497
23498     case DW_FORM_udata:
23499       type = die_type (die, cu);
23500       result = write_constant_as_bytes (obstack, byte_order,
23501                                         type, DW_UNSND (attr), len);
23502       break;
23503
23504     default:
23505       complaint (_("unsupported const value attribute form: '%s'"),
23506                  dwarf_form_name (attr->form));
23507       break;
23508     }
23509
23510   return result;
23511 }
23512
23513 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23514    valid type for this die is found.  */
23515
23516 struct type *
23517 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23518                                 struct dwarf2_per_cu_data *per_cu)
23519 {
23520   struct dwarf2_cu *cu;
23521   struct die_info *die;
23522
23523   if (per_cu->cu == NULL)
23524     load_cu (per_cu, false);
23525   cu = per_cu->cu;
23526   if (!cu)
23527     return NULL;
23528
23529   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23530   if (!die)
23531     return NULL;
23532
23533   return die_type (die, cu);
23534 }
23535
23536 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23537    PER_CU.  */
23538
23539 struct type *
23540 dwarf2_get_die_type (cu_offset die_offset,
23541                      struct dwarf2_per_cu_data *per_cu)
23542 {
23543   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23544   return get_die_type_at_offset (die_offset_sect, per_cu);
23545 }
23546
23547 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23548    On entry *REF_CU is the CU of SRC_DIE.
23549    On exit *REF_CU is the CU of the result.
23550    Returns NULL if the referenced DIE isn't found.  */
23551
23552 static struct die_info *
23553 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23554                   struct dwarf2_cu **ref_cu)
23555 {
23556   struct die_info temp_die;
23557   struct dwarf2_cu *sig_cu, *cu = *ref_cu;
23558   struct die_info *die;
23559
23560   /* While it might be nice to assert sig_type->type == NULL here,
23561      we can get here for DW_AT_imported_declaration where we need
23562      the DIE not the type.  */
23563
23564   /* If necessary, add it to the queue and load its DIEs.  */
23565
23566   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23567     read_signatured_type (sig_type);
23568
23569   sig_cu = sig_type->per_cu.cu;
23570   gdb_assert (sig_cu != NULL);
23571   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23572   temp_die.sect_off = sig_type->type_offset_in_section;
23573   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23574                                                  to_underlying (temp_die.sect_off));
23575   if (die)
23576     {
23577       struct dwarf2_per_objfile *dwarf2_per_objfile
23578         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23579
23580       /* For .gdb_index version 7 keep track of included TUs.
23581          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23582       if (dwarf2_per_objfile->index_table != NULL
23583           && dwarf2_per_objfile->index_table->version <= 7)
23584         {
23585           VEC_safe_push (dwarf2_per_cu_ptr,
23586                          (*ref_cu)->per_cu->imported_symtabs,
23587                          sig_cu->per_cu);
23588         }
23589
23590       *ref_cu = sig_cu;
23591       if (sig_cu != cu)
23592         sig_cu->ancestor = cu;
23593
23594       return die;
23595     }
23596
23597   return NULL;
23598 }
23599
23600 /* Follow signatured type referenced by ATTR in SRC_DIE.
23601    On entry *REF_CU is the CU of SRC_DIE.
23602    On exit *REF_CU is the CU of the result.
23603    The result is the DIE of the type.
23604    If the referenced type cannot be found an error is thrown.  */
23605
23606 static struct die_info *
23607 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23608                 struct dwarf2_cu **ref_cu)
23609 {
23610   ULONGEST signature = DW_SIGNATURE (attr);
23611   struct signatured_type *sig_type;
23612   struct die_info *die;
23613
23614   gdb_assert (attr->form == DW_FORM_ref_sig8);
23615
23616   sig_type = lookup_signatured_type (*ref_cu, signature);
23617   /* sig_type will be NULL if the signatured type is missing from
23618      the debug info.  */
23619   if (sig_type == NULL)
23620     {
23621       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23622                " from DIE at %s [in module %s]"),
23623              hex_string (signature), sect_offset_str (src_die->sect_off),
23624              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23625     }
23626
23627   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23628   if (die == NULL)
23629     {
23630       dump_die_for_error (src_die);
23631       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23632                " from DIE at %s [in module %s]"),
23633              hex_string (signature), sect_offset_str (src_die->sect_off),
23634              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23635     }
23636
23637   return die;
23638 }
23639
23640 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23641    reading in and processing the type unit if necessary.  */
23642
23643 static struct type *
23644 get_signatured_type (struct die_info *die, ULONGEST signature,
23645                      struct dwarf2_cu *cu)
23646 {
23647   struct dwarf2_per_objfile *dwarf2_per_objfile
23648     = cu->per_cu->dwarf2_per_objfile;
23649   struct signatured_type *sig_type;
23650   struct dwarf2_cu *type_cu;
23651   struct die_info *type_die;
23652   struct type *type;
23653
23654   sig_type = lookup_signatured_type (cu, signature);
23655   /* sig_type will be NULL if the signatured type is missing from
23656      the debug info.  */
23657   if (sig_type == NULL)
23658     {
23659       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23660                    " from DIE at %s [in module %s]"),
23661                  hex_string (signature), sect_offset_str (die->sect_off),
23662                  objfile_name (dwarf2_per_objfile->objfile));
23663       return build_error_marker_type (cu, die);
23664     }
23665
23666   /* If we already know the type we're done.  */
23667   if (sig_type->type != NULL)
23668     return sig_type->type;
23669
23670   type_cu = cu;
23671   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23672   if (type_die != NULL)
23673     {
23674       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23675          is created.  This is important, for example, because for c++ classes
23676          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23677       type = read_type_die (type_die, type_cu);
23678       if (type == NULL)
23679         {
23680           complaint (_("Dwarf Error: Cannot build signatured type %s"
23681                        " referenced from DIE at %s [in module %s]"),
23682                      hex_string (signature), sect_offset_str (die->sect_off),
23683                      objfile_name (dwarf2_per_objfile->objfile));
23684           type = build_error_marker_type (cu, die);
23685         }
23686     }
23687   else
23688     {
23689       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23690                    " from DIE at %s [in module %s]"),
23691                  hex_string (signature), sect_offset_str (die->sect_off),
23692                  objfile_name (dwarf2_per_objfile->objfile));
23693       type = build_error_marker_type (cu, die);
23694     }
23695   sig_type->type = type;
23696
23697   return type;
23698 }
23699
23700 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23701    reading in and processing the type unit if necessary.  */
23702
23703 static struct type *
23704 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23705                           struct dwarf2_cu *cu) /* ARI: editCase function */
23706 {
23707   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23708   if (attr_form_is_ref (attr))
23709     {
23710       struct dwarf2_cu *type_cu = cu;
23711       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23712
23713       return read_type_die (type_die, type_cu);
23714     }
23715   else if (attr->form == DW_FORM_ref_sig8)
23716     {
23717       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23718     }
23719   else
23720     {
23721       struct dwarf2_per_objfile *dwarf2_per_objfile
23722         = cu->per_cu->dwarf2_per_objfile;
23723
23724       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23725                    " at %s [in module %s]"),
23726                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23727                  objfile_name (dwarf2_per_objfile->objfile));
23728       return build_error_marker_type (cu, die);
23729     }
23730 }
23731
23732 /* Load the DIEs associated with type unit PER_CU into memory.  */
23733
23734 static void
23735 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23736 {
23737   struct signatured_type *sig_type;
23738
23739   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23740   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23741
23742   /* We have the per_cu, but we need the signatured_type.
23743      Fortunately this is an easy translation.  */
23744   gdb_assert (per_cu->is_debug_types);
23745   sig_type = (struct signatured_type *) per_cu;
23746
23747   gdb_assert (per_cu->cu == NULL);
23748
23749   read_signatured_type (sig_type);
23750
23751   gdb_assert (per_cu->cu != NULL);
23752 }
23753
23754 /* die_reader_func for read_signatured_type.
23755    This is identical to load_full_comp_unit_reader,
23756    but is kept separate for now.  */
23757
23758 static void
23759 read_signatured_type_reader (const struct die_reader_specs *reader,
23760                              const gdb_byte *info_ptr,
23761                              struct die_info *comp_unit_die,
23762                              int has_children,
23763                              void *data)
23764 {
23765   struct dwarf2_cu *cu = reader->cu;
23766
23767   gdb_assert (cu->die_hash == NULL);
23768   cu->die_hash =
23769     htab_create_alloc_ex (cu->header.length / 12,
23770                           die_hash,
23771                           die_eq,
23772                           NULL,
23773                           &cu->comp_unit_obstack,
23774                           hashtab_obstack_allocate,
23775                           dummy_obstack_deallocate);
23776
23777   if (has_children)
23778     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23779                                                   &info_ptr, comp_unit_die);
23780   cu->dies = comp_unit_die;
23781   /* comp_unit_die is not stored in die_hash, no need.  */
23782
23783   /* We try not to read any attributes in this function, because not
23784      all CUs needed for references have been loaded yet, and symbol
23785      table processing isn't initialized.  But we have to set the CU language,
23786      or we won't be able to build types correctly.
23787      Similarly, if we do not read the producer, we can not apply
23788      producer-specific interpretation.  */
23789   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23790 }
23791
23792 /* Read in a signatured type and build its CU and DIEs.
23793    If the type is a stub for the real type in a DWO file,
23794    read in the real type from the DWO file as well.  */
23795
23796 static void
23797 read_signatured_type (struct signatured_type *sig_type)
23798 {
23799   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23800
23801   gdb_assert (per_cu->is_debug_types);
23802   gdb_assert (per_cu->cu == NULL);
23803
23804   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23805                            read_signatured_type_reader, NULL);
23806   sig_type->per_cu.tu_read = 1;
23807 }
23808
23809 /* Decode simple location descriptions.
23810    Given a pointer to a dwarf block that defines a location, compute
23811    the location and return the value.
23812
23813    NOTE drow/2003-11-18: This function is called in two situations
23814    now: for the address of static or global variables (partial symbols
23815    only) and for offsets into structures which are expected to be
23816    (more or less) constant.  The partial symbol case should go away,
23817    and only the constant case should remain.  That will let this
23818    function complain more accurately.  A few special modes are allowed
23819    without complaint for global variables (for instance, global
23820    register values and thread-local values).
23821
23822    A location description containing no operations indicates that the
23823    object is optimized out.  The return value is 0 for that case.
23824    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23825    callers will only want a very basic result and this can become a
23826    complaint.
23827
23828    Note that stack[0] is unused except as a default error return.  */
23829
23830 static CORE_ADDR
23831 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23832 {
23833   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23834   size_t i;
23835   size_t size = blk->size;
23836   const gdb_byte *data = blk->data;
23837   CORE_ADDR stack[64];
23838   int stacki;
23839   unsigned int bytes_read, unsnd;
23840   gdb_byte op;
23841
23842   i = 0;
23843   stacki = 0;
23844   stack[stacki] = 0;
23845   stack[++stacki] = 0;
23846
23847   while (i < size)
23848     {
23849       op = data[i++];
23850       switch (op)
23851         {
23852         case DW_OP_lit0:
23853         case DW_OP_lit1:
23854         case DW_OP_lit2:
23855         case DW_OP_lit3:
23856         case DW_OP_lit4:
23857         case DW_OP_lit5:
23858         case DW_OP_lit6:
23859         case DW_OP_lit7:
23860         case DW_OP_lit8:
23861         case DW_OP_lit9:
23862         case DW_OP_lit10:
23863         case DW_OP_lit11:
23864         case DW_OP_lit12:
23865         case DW_OP_lit13:
23866         case DW_OP_lit14:
23867         case DW_OP_lit15:
23868         case DW_OP_lit16:
23869         case DW_OP_lit17:
23870         case DW_OP_lit18:
23871         case DW_OP_lit19:
23872         case DW_OP_lit20:
23873         case DW_OP_lit21:
23874         case DW_OP_lit22:
23875         case DW_OP_lit23:
23876         case DW_OP_lit24:
23877         case DW_OP_lit25:
23878         case DW_OP_lit26:
23879         case DW_OP_lit27:
23880         case DW_OP_lit28:
23881         case DW_OP_lit29:
23882         case DW_OP_lit30:
23883         case DW_OP_lit31:
23884           stack[++stacki] = op - DW_OP_lit0;
23885           break;
23886
23887         case DW_OP_reg0:
23888         case DW_OP_reg1:
23889         case DW_OP_reg2:
23890         case DW_OP_reg3:
23891         case DW_OP_reg4:
23892         case DW_OP_reg5:
23893         case DW_OP_reg6:
23894         case DW_OP_reg7:
23895         case DW_OP_reg8:
23896         case DW_OP_reg9:
23897         case DW_OP_reg10:
23898         case DW_OP_reg11:
23899         case DW_OP_reg12:
23900         case DW_OP_reg13:
23901         case DW_OP_reg14:
23902         case DW_OP_reg15:
23903         case DW_OP_reg16:
23904         case DW_OP_reg17:
23905         case DW_OP_reg18:
23906         case DW_OP_reg19:
23907         case DW_OP_reg20:
23908         case DW_OP_reg21:
23909         case DW_OP_reg22:
23910         case DW_OP_reg23:
23911         case DW_OP_reg24:
23912         case DW_OP_reg25:
23913         case DW_OP_reg26:
23914         case DW_OP_reg27:
23915         case DW_OP_reg28:
23916         case DW_OP_reg29:
23917         case DW_OP_reg30:
23918         case DW_OP_reg31:
23919           stack[++stacki] = op - DW_OP_reg0;
23920           if (i < size)
23921             dwarf2_complex_location_expr_complaint ();
23922           break;
23923
23924         case DW_OP_regx:
23925           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23926           i += bytes_read;
23927           stack[++stacki] = unsnd;
23928           if (i < size)
23929             dwarf2_complex_location_expr_complaint ();
23930           break;
23931
23932         case DW_OP_addr:
23933           stack[++stacki] = read_address (objfile->obfd, &data[i],
23934                                           cu, &bytes_read);
23935           i += bytes_read;
23936           break;
23937
23938         case DW_OP_const1u:
23939           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23940           i += 1;
23941           break;
23942
23943         case DW_OP_const1s:
23944           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23945           i += 1;
23946           break;
23947
23948         case DW_OP_const2u:
23949           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23950           i += 2;
23951           break;
23952
23953         case DW_OP_const2s:
23954           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23955           i += 2;
23956           break;
23957
23958         case DW_OP_const4u:
23959           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23960           i += 4;
23961           break;
23962
23963         case DW_OP_const4s:
23964           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23965           i += 4;
23966           break;
23967
23968         case DW_OP_const8u:
23969           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23970           i += 8;
23971           break;
23972
23973         case DW_OP_constu:
23974           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23975                                                   &bytes_read);
23976           i += bytes_read;
23977           break;
23978
23979         case DW_OP_consts:
23980           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23981           i += bytes_read;
23982           break;
23983
23984         case DW_OP_dup:
23985           stack[stacki + 1] = stack[stacki];
23986           stacki++;
23987           break;
23988
23989         case DW_OP_plus:
23990           stack[stacki - 1] += stack[stacki];
23991           stacki--;
23992           break;
23993
23994         case DW_OP_plus_uconst:
23995           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23996                                                  &bytes_read);
23997           i += bytes_read;
23998           break;
23999
24000         case DW_OP_minus:
24001           stack[stacki - 1] -= stack[stacki];
24002           stacki--;
24003           break;
24004
24005         case DW_OP_deref:
24006           /* If we're not the last op, then we definitely can't encode
24007              this using GDB's address_class enum.  This is valid for partial
24008              global symbols, although the variable's address will be bogus
24009              in the psymtab.  */
24010           if (i < size)
24011             dwarf2_complex_location_expr_complaint ();
24012           break;
24013
24014         case DW_OP_GNU_push_tls_address:
24015         case DW_OP_form_tls_address:
24016           /* The top of the stack has the offset from the beginning
24017              of the thread control block at which the variable is located.  */
24018           /* Nothing should follow this operator, so the top of stack would
24019              be returned.  */
24020           /* This is valid for partial global symbols, but the variable's
24021              address will be bogus in the psymtab.  Make it always at least
24022              non-zero to not look as a variable garbage collected by linker
24023              which have DW_OP_addr 0.  */
24024           if (i < size)
24025             dwarf2_complex_location_expr_complaint ();
24026           stack[stacki]++;
24027           break;
24028
24029         case DW_OP_GNU_uninit:
24030           break;
24031
24032         case DW_OP_addrx:
24033         case DW_OP_GNU_addr_index:
24034         case DW_OP_GNU_const_index:
24035           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
24036                                                          &bytes_read);
24037           i += bytes_read;
24038           break;
24039
24040         default:
24041           {
24042             const char *name = get_DW_OP_name (op);
24043
24044             if (name)
24045               complaint (_("unsupported stack op: '%s'"),
24046                          name);
24047             else
24048               complaint (_("unsupported stack op: '%02x'"),
24049                          op);
24050           }
24051
24052           return (stack[stacki]);
24053         }
24054
24055       /* Enforce maximum stack depth of SIZE-1 to avoid writing
24056          outside of the allocated space.  Also enforce minimum>0.  */
24057       if (stacki >= ARRAY_SIZE (stack) - 1)
24058         {
24059           complaint (_("location description stack overflow"));
24060           return 0;
24061         }
24062
24063       if (stacki <= 0)
24064         {
24065           complaint (_("location description stack underflow"));
24066           return 0;
24067         }
24068     }
24069   return (stack[stacki]);
24070 }
24071
24072 /* memory allocation interface */
24073
24074 static struct dwarf_block *
24075 dwarf_alloc_block (struct dwarf2_cu *cu)
24076 {
24077   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
24078 }
24079
24080 static struct die_info *
24081 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
24082 {
24083   struct die_info *die;
24084   size_t size = sizeof (struct die_info);
24085
24086   if (num_attrs > 1)
24087     size += (num_attrs - 1) * sizeof (struct attribute);
24088
24089   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
24090   memset (die, 0, sizeof (struct die_info));
24091   return (die);
24092 }
24093
24094 \f
24095 /* Macro support.  */
24096
24097 /* Return file name relative to the compilation directory of file number I in
24098    *LH's file name table.  The result is allocated using xmalloc; the caller is
24099    responsible for freeing it.  */
24100
24101 static char *
24102 file_file_name (int file, struct line_header *lh)
24103 {
24104   /* Is the file number a valid index into the line header's file name
24105      table?  Remember that file numbers start with one, not zero.  */
24106   if (1 <= file && file <= lh->file_names.size ())
24107     {
24108       const file_entry &fe = lh->file_names[file - 1];
24109
24110       if (!IS_ABSOLUTE_PATH (fe.name))
24111         {
24112           const char *dir = fe.include_dir (lh);
24113           if (dir != NULL)
24114             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
24115         }
24116       return xstrdup (fe.name);
24117     }
24118   else
24119     {
24120       /* The compiler produced a bogus file number.  We can at least
24121          record the macro definitions made in the file, even if we
24122          won't be able to find the file by name.  */
24123       char fake_name[80];
24124
24125       xsnprintf (fake_name, sizeof (fake_name),
24126                  "<bad macro file number %d>", file);
24127
24128       complaint (_("bad file number in macro information (%d)"),
24129                  file);
24130
24131       return xstrdup (fake_name);
24132     }
24133 }
24134
24135 /* Return the full name of file number I in *LH's file name table.
24136    Use COMP_DIR as the name of the current directory of the
24137    compilation.  The result is allocated using xmalloc; the caller is
24138    responsible for freeing it.  */
24139 static char *
24140 file_full_name (int file, struct line_header *lh, const char *comp_dir)
24141 {
24142   /* Is the file number a valid index into the line header's file name
24143      table?  Remember that file numbers start with one, not zero.  */
24144   if (1 <= file && file <= lh->file_names.size ())
24145     {
24146       char *relative = file_file_name (file, lh);
24147
24148       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
24149         return relative;
24150       return reconcat (relative, comp_dir, SLASH_STRING,
24151                        relative, (char *) NULL);
24152     }
24153   else
24154     return file_file_name (file, lh);
24155 }
24156
24157
24158 static struct macro_source_file *
24159 macro_start_file (struct dwarf2_cu *cu,
24160                   int file, int line,
24161                   struct macro_source_file *current_file,
24162                   struct line_header *lh)
24163 {
24164   /* File name relative to the compilation directory of this source file.  */
24165   char *file_name = file_file_name (file, lh);
24166
24167   if (! current_file)
24168     {
24169       /* Note: We don't create a macro table for this compilation unit
24170          at all until we actually get a filename.  */
24171       struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
24172
24173       /* If we have no current file, then this must be the start_file
24174          directive for the compilation unit's main source file.  */
24175       current_file = macro_set_main (macro_table, file_name);
24176       macro_define_special (macro_table);
24177     }
24178   else
24179     current_file = macro_include (current_file, line, file_name);
24180
24181   xfree (file_name);
24182
24183   return current_file;
24184 }
24185
24186 static const char *
24187 consume_improper_spaces (const char *p, const char *body)
24188 {
24189   if (*p == ' ')
24190     {
24191       complaint (_("macro definition contains spaces "
24192                    "in formal argument list:\n`%s'"),
24193                  body);
24194
24195       while (*p == ' ')
24196         p++;
24197     }
24198
24199   return p;
24200 }
24201
24202
24203 static void
24204 parse_macro_definition (struct macro_source_file *file, int line,
24205                         const char *body)
24206 {
24207   const char *p;
24208
24209   /* The body string takes one of two forms.  For object-like macro
24210      definitions, it should be:
24211
24212         <macro name> " " <definition>
24213
24214      For function-like macro definitions, it should be:
24215
24216         <macro name> "() " <definition>
24217      or
24218         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24219
24220      Spaces may appear only where explicitly indicated, and in the
24221      <definition>.
24222
24223      The Dwarf 2 spec says that an object-like macro's name is always
24224      followed by a space, but versions of GCC around March 2002 omit
24225      the space when the macro's definition is the empty string.
24226
24227      The Dwarf 2 spec says that there should be no spaces between the
24228      formal arguments in a function-like macro's formal argument list,
24229      but versions of GCC around March 2002 include spaces after the
24230      commas.  */
24231
24232
24233   /* Find the extent of the macro name.  The macro name is terminated
24234      by either a space or null character (for an object-like macro) or
24235      an opening paren (for a function-like macro).  */
24236   for (p = body; *p; p++)
24237     if (*p == ' ' || *p == '(')
24238       break;
24239
24240   if (*p == ' ' || *p == '\0')
24241     {
24242       /* It's an object-like macro.  */
24243       int name_len = p - body;
24244       char *name = savestring (body, name_len);
24245       const char *replacement;
24246
24247       if (*p == ' ')
24248         replacement = body + name_len + 1;
24249       else
24250         {
24251           dwarf2_macro_malformed_definition_complaint (body);
24252           replacement = body + name_len;
24253         }
24254
24255       macro_define_object (file, line, name, replacement);
24256
24257       xfree (name);
24258     }
24259   else if (*p == '(')
24260     {
24261       /* It's a function-like macro.  */
24262       char *name = savestring (body, p - body);
24263       int argc = 0;
24264       int argv_size = 1;
24265       char **argv = XNEWVEC (char *, argv_size);
24266
24267       p++;
24268
24269       p = consume_improper_spaces (p, body);
24270
24271       /* Parse the formal argument list.  */
24272       while (*p && *p != ')')
24273         {
24274           /* Find the extent of the current argument name.  */
24275           const char *arg_start = p;
24276
24277           while (*p && *p != ',' && *p != ')' && *p != ' ')
24278             p++;
24279
24280           if (! *p || p == arg_start)
24281             dwarf2_macro_malformed_definition_complaint (body);
24282           else
24283             {
24284               /* Make sure argv has room for the new argument.  */
24285               if (argc >= argv_size)
24286                 {
24287                   argv_size *= 2;
24288                   argv = XRESIZEVEC (char *, argv, argv_size);
24289                 }
24290
24291               argv[argc++] = savestring (arg_start, p - arg_start);
24292             }
24293
24294           p = consume_improper_spaces (p, body);
24295
24296           /* Consume the comma, if present.  */
24297           if (*p == ',')
24298             {
24299               p++;
24300
24301               p = consume_improper_spaces (p, body);
24302             }
24303         }
24304
24305       if (*p == ')')
24306         {
24307           p++;
24308
24309           if (*p == ' ')
24310             /* Perfectly formed definition, no complaints.  */
24311             macro_define_function (file, line, name,
24312                                    argc, (const char **) argv,
24313                                    p + 1);
24314           else if (*p == '\0')
24315             {
24316               /* Complain, but do define it.  */
24317               dwarf2_macro_malformed_definition_complaint (body);
24318               macro_define_function (file, line, name,
24319                                      argc, (const char **) argv,
24320                                      p);
24321             }
24322           else
24323             /* Just complain.  */
24324             dwarf2_macro_malformed_definition_complaint (body);
24325         }
24326       else
24327         /* Just complain.  */
24328         dwarf2_macro_malformed_definition_complaint (body);
24329
24330       xfree (name);
24331       {
24332         int i;
24333
24334         for (i = 0; i < argc; i++)
24335           xfree (argv[i]);
24336       }
24337       xfree (argv);
24338     }
24339   else
24340     dwarf2_macro_malformed_definition_complaint (body);
24341 }
24342
24343 /* Skip some bytes from BYTES according to the form given in FORM.
24344    Returns the new pointer.  */
24345
24346 static const gdb_byte *
24347 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24348                  enum dwarf_form form,
24349                  unsigned int offset_size,
24350                  struct dwarf2_section_info *section)
24351 {
24352   unsigned int bytes_read;
24353
24354   switch (form)
24355     {
24356     case DW_FORM_data1:
24357     case DW_FORM_flag:
24358       ++bytes;
24359       break;
24360
24361     case DW_FORM_data2:
24362       bytes += 2;
24363       break;
24364
24365     case DW_FORM_data4:
24366       bytes += 4;
24367       break;
24368
24369     case DW_FORM_data8:
24370       bytes += 8;
24371       break;
24372
24373     case DW_FORM_data16:
24374       bytes += 16;
24375       break;
24376
24377     case DW_FORM_string:
24378       read_direct_string (abfd, bytes, &bytes_read);
24379       bytes += bytes_read;
24380       break;
24381
24382     case DW_FORM_sec_offset:
24383     case DW_FORM_strp:
24384     case DW_FORM_GNU_strp_alt:
24385       bytes += offset_size;
24386       break;
24387
24388     case DW_FORM_block:
24389       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24390       bytes += bytes_read;
24391       break;
24392
24393     case DW_FORM_block1:
24394       bytes += 1 + read_1_byte (abfd, bytes);
24395       break;
24396     case DW_FORM_block2:
24397       bytes += 2 + read_2_bytes (abfd, bytes);
24398       break;
24399     case DW_FORM_block4:
24400       bytes += 4 + read_4_bytes (abfd, bytes);
24401       break;
24402
24403     case DW_FORM_addrx:
24404     case DW_FORM_sdata:
24405     case DW_FORM_strx:
24406     case DW_FORM_udata:
24407     case DW_FORM_GNU_addr_index:
24408     case DW_FORM_GNU_str_index:
24409       bytes = gdb_skip_leb128 (bytes, buffer_end);
24410       if (bytes == NULL)
24411         {
24412           dwarf2_section_buffer_overflow_complaint (section);
24413           return NULL;
24414         }
24415       break;
24416
24417     case DW_FORM_implicit_const:
24418       break;
24419
24420     default:
24421       {
24422         complaint (_("invalid form 0x%x in `%s'"),
24423                    form, get_section_name (section));
24424         return NULL;
24425       }
24426     }
24427
24428   return bytes;
24429 }
24430
24431 /* A helper for dwarf_decode_macros that handles skipping an unknown
24432    opcode.  Returns an updated pointer to the macro data buffer; or,
24433    on error, issues a complaint and returns NULL.  */
24434
24435 static const gdb_byte *
24436 skip_unknown_opcode (unsigned int opcode,
24437                      const gdb_byte **opcode_definitions,
24438                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24439                      bfd *abfd,
24440                      unsigned int offset_size,
24441                      struct dwarf2_section_info *section)
24442 {
24443   unsigned int bytes_read, i;
24444   unsigned long arg;
24445   const gdb_byte *defn;
24446
24447   if (opcode_definitions[opcode] == NULL)
24448     {
24449       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24450                  opcode);
24451       return NULL;
24452     }
24453
24454   defn = opcode_definitions[opcode];
24455   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24456   defn += bytes_read;
24457
24458   for (i = 0; i < arg; ++i)
24459     {
24460       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24461                                  (enum dwarf_form) defn[i], offset_size,
24462                                  section);
24463       if (mac_ptr == NULL)
24464         {
24465           /* skip_form_bytes already issued the complaint.  */
24466           return NULL;
24467         }
24468     }
24469
24470   return mac_ptr;
24471 }
24472
24473 /* A helper function which parses the header of a macro section.
24474    If the macro section is the extended (for now called "GNU") type,
24475    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24476    the header, or issues a complaint and returns NULL on error.  */
24477
24478 static const gdb_byte *
24479 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24480                           bfd *abfd,
24481                           const gdb_byte *mac_ptr,
24482                           unsigned int *offset_size,
24483                           int section_is_gnu)
24484 {
24485   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24486
24487   if (section_is_gnu)
24488     {
24489       unsigned int version, flags;
24490
24491       version = read_2_bytes (abfd, mac_ptr);
24492       if (version != 4 && version != 5)
24493         {
24494           complaint (_("unrecognized version `%d' in .debug_macro section"),
24495                      version);
24496           return NULL;
24497         }
24498       mac_ptr += 2;
24499
24500       flags = read_1_byte (abfd, mac_ptr);
24501       ++mac_ptr;
24502       *offset_size = (flags & 1) ? 8 : 4;
24503
24504       if ((flags & 2) != 0)
24505         /* We don't need the line table offset.  */
24506         mac_ptr += *offset_size;
24507
24508       /* Vendor opcode descriptions.  */
24509       if ((flags & 4) != 0)
24510         {
24511           unsigned int i, count;
24512
24513           count = read_1_byte (abfd, mac_ptr);
24514           ++mac_ptr;
24515           for (i = 0; i < count; ++i)
24516             {
24517               unsigned int opcode, bytes_read;
24518               unsigned long arg;
24519
24520               opcode = read_1_byte (abfd, mac_ptr);
24521               ++mac_ptr;
24522               opcode_definitions[opcode] = mac_ptr;
24523               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24524               mac_ptr += bytes_read;
24525               mac_ptr += arg;
24526             }
24527         }
24528     }
24529
24530   return mac_ptr;
24531 }
24532
24533 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24534    including DW_MACRO_import.  */
24535
24536 static void
24537 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24538                           bfd *abfd,
24539                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24540                           struct macro_source_file *current_file,
24541                           struct line_header *lh,
24542                           struct dwarf2_section_info *section,
24543                           int section_is_gnu, int section_is_dwz,
24544                           unsigned int offset_size,
24545                           htab_t include_hash)
24546 {
24547   struct dwarf2_per_objfile *dwarf2_per_objfile
24548     = cu->per_cu->dwarf2_per_objfile;
24549   struct objfile *objfile = dwarf2_per_objfile->objfile;
24550   enum dwarf_macro_record_type macinfo_type;
24551   int at_commandline;
24552   const gdb_byte *opcode_definitions[256];
24553
24554   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24555                                       &offset_size, section_is_gnu);
24556   if (mac_ptr == NULL)
24557     {
24558       /* We already issued a complaint.  */
24559       return;
24560     }
24561
24562   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24563      GDB is still reading the definitions from command line.  First
24564      DW_MACINFO_start_file will need to be ignored as it was already executed
24565      to create CURRENT_FILE for the main source holding also the command line
24566      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24567      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24568
24569   at_commandline = 1;
24570
24571   do
24572     {
24573       /* Do we at least have room for a macinfo type byte?  */
24574       if (mac_ptr >= mac_end)
24575         {
24576           dwarf2_section_buffer_overflow_complaint (section);
24577           break;
24578         }
24579
24580       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24581       mac_ptr++;
24582
24583       /* Note that we rely on the fact that the corresponding GNU and
24584          DWARF constants are the same.  */
24585       DIAGNOSTIC_PUSH
24586       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24587       switch (macinfo_type)
24588         {
24589           /* A zero macinfo type indicates the end of the macro
24590              information.  */
24591         case 0:
24592           break;
24593
24594         case DW_MACRO_define:
24595         case DW_MACRO_undef:
24596         case DW_MACRO_define_strp:
24597         case DW_MACRO_undef_strp:
24598         case DW_MACRO_define_sup:
24599         case DW_MACRO_undef_sup:
24600           {
24601             unsigned int bytes_read;
24602             int line;
24603             const char *body;
24604             int is_define;
24605
24606             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24607             mac_ptr += bytes_read;
24608
24609             if (macinfo_type == DW_MACRO_define
24610                 || macinfo_type == DW_MACRO_undef)
24611               {
24612                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24613                 mac_ptr += bytes_read;
24614               }
24615             else
24616               {
24617                 LONGEST str_offset;
24618
24619                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24620                 mac_ptr += offset_size;
24621
24622                 if (macinfo_type == DW_MACRO_define_sup
24623                     || macinfo_type == DW_MACRO_undef_sup
24624                     || section_is_dwz)
24625                   {
24626                     struct dwz_file *dwz
24627                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24628
24629                     body = read_indirect_string_from_dwz (objfile,
24630                                                           dwz, str_offset);
24631                   }
24632                 else
24633                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24634                                                          abfd, str_offset);
24635               }
24636
24637             is_define = (macinfo_type == DW_MACRO_define
24638                          || macinfo_type == DW_MACRO_define_strp
24639                          || macinfo_type == DW_MACRO_define_sup);
24640             if (! current_file)
24641               {
24642                 /* DWARF violation as no main source is present.  */
24643                 complaint (_("debug info with no main source gives macro %s "
24644                              "on line %d: %s"),
24645                            is_define ? _("definition") : _("undefinition"),
24646                            line, body);
24647                 break;
24648               }
24649             if ((line == 0 && !at_commandline)
24650                 || (line != 0 && at_commandline))
24651               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24652                          at_commandline ? _("command-line") : _("in-file"),
24653                          is_define ? _("definition") : _("undefinition"),
24654                          line == 0 ? _("zero") : _("non-zero"), line, body);
24655
24656             if (body == NULL)
24657               {
24658                 /* Fedora's rpm-build's "debugedit" binary
24659                    corrupted .debug_macro sections.
24660
24661                    For more info, see
24662                    https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
24663                 complaint (_("debug info gives %s invalid macro %s "
24664                              "without body (corrupted?) at line %d "
24665                              "on file %s"),
24666                            at_commandline ? _("command-line") : _("in-file"),
24667                            is_define ? _("definition") : _("undefinition"),
24668                            line, current_file->filename);
24669               }
24670             else if (is_define)
24671               parse_macro_definition (current_file, line, body);
24672             else
24673               {
24674                 gdb_assert (macinfo_type == DW_MACRO_undef
24675                             || macinfo_type == DW_MACRO_undef_strp
24676                             || macinfo_type == DW_MACRO_undef_sup);
24677                 macro_undef (current_file, line, body);
24678               }
24679           }
24680           break;
24681
24682         case DW_MACRO_start_file:
24683           {
24684             unsigned int bytes_read;
24685             int line, file;
24686
24687             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24688             mac_ptr += bytes_read;
24689             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24690             mac_ptr += bytes_read;
24691
24692             if ((line == 0 && !at_commandline)
24693                 || (line != 0 && at_commandline))
24694               complaint (_("debug info gives source %d included "
24695                            "from %s at %s line %d"),
24696                          file, at_commandline ? _("command-line") : _("file"),
24697                          line == 0 ? _("zero") : _("non-zero"), line);
24698
24699             if (at_commandline)
24700               {
24701                 /* This DW_MACRO_start_file was executed in the
24702                    pass one.  */
24703                 at_commandline = 0;
24704               }
24705             else
24706               current_file = macro_start_file (cu, file, line, current_file,
24707                                                lh);
24708           }
24709           break;
24710
24711         case DW_MACRO_end_file:
24712           if (! current_file)
24713             complaint (_("macro debug info has an unmatched "
24714                          "`close_file' directive"));
24715           else
24716             {
24717               current_file = current_file->included_by;
24718               if (! current_file)
24719                 {
24720                   enum dwarf_macro_record_type next_type;
24721
24722                   /* GCC circa March 2002 doesn't produce the zero
24723                      type byte marking the end of the compilation
24724                      unit.  Complain if it's not there, but exit no
24725                      matter what.  */
24726
24727                   /* Do we at least have room for a macinfo type byte?  */
24728                   if (mac_ptr >= mac_end)
24729                     {
24730                       dwarf2_section_buffer_overflow_complaint (section);
24731                       return;
24732                     }
24733
24734                   /* We don't increment mac_ptr here, so this is just
24735                      a look-ahead.  */
24736                   next_type
24737                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24738                                                                   mac_ptr);
24739                   if (next_type != 0)
24740                     complaint (_("no terminating 0-type entry for "
24741                                  "macros in `.debug_macinfo' section"));
24742
24743                   return;
24744                 }
24745             }
24746           break;
24747
24748         case DW_MACRO_import:
24749         case DW_MACRO_import_sup:
24750           {
24751             LONGEST offset;
24752             void **slot;
24753             bfd *include_bfd = abfd;
24754             struct dwarf2_section_info *include_section = section;
24755             const gdb_byte *include_mac_end = mac_end;
24756             int is_dwz = section_is_dwz;
24757             const gdb_byte *new_mac_ptr;
24758
24759             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24760             mac_ptr += offset_size;
24761
24762             if (macinfo_type == DW_MACRO_import_sup)
24763               {
24764                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24765
24766                 dwarf2_read_section (objfile, &dwz->macro);
24767
24768                 include_section = &dwz->macro;
24769                 include_bfd = get_section_bfd_owner (include_section);
24770                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24771                 is_dwz = 1;
24772               }
24773
24774             new_mac_ptr = include_section->buffer + offset;
24775             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24776
24777             if (*slot != NULL)
24778               {
24779                 /* This has actually happened; see
24780                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24781                 complaint (_("recursive DW_MACRO_import in "
24782                              ".debug_macro section"));
24783               }
24784             else
24785               {
24786                 *slot = (void *) new_mac_ptr;
24787
24788                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24789                                           include_mac_end, current_file, lh,
24790                                           section, section_is_gnu, is_dwz,
24791                                           offset_size, include_hash);
24792
24793                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24794               }
24795           }
24796           break;
24797
24798         case DW_MACINFO_vendor_ext:
24799           if (!section_is_gnu)
24800             {
24801               unsigned int bytes_read;
24802
24803               /* This reads the constant, but since we don't recognize
24804                  any vendor extensions, we ignore it.  */
24805               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24806               mac_ptr += bytes_read;
24807               read_direct_string (abfd, mac_ptr, &bytes_read);
24808               mac_ptr += bytes_read;
24809
24810               /* We don't recognize any vendor extensions.  */
24811               break;
24812             }
24813           /* FALLTHROUGH */
24814
24815         default:
24816           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24817                                          mac_ptr, mac_end, abfd, offset_size,
24818                                          section);
24819           if (mac_ptr == NULL)
24820             return;
24821           break;
24822         }
24823       DIAGNOSTIC_POP
24824     } while (macinfo_type != 0);
24825 }
24826
24827 static void
24828 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24829                      int section_is_gnu)
24830 {
24831   struct dwarf2_per_objfile *dwarf2_per_objfile
24832     = cu->per_cu->dwarf2_per_objfile;
24833   struct objfile *objfile = dwarf2_per_objfile->objfile;
24834   struct line_header *lh = cu->line_header;
24835   bfd *abfd;
24836   const gdb_byte *mac_ptr, *mac_end;
24837   struct macro_source_file *current_file = 0;
24838   enum dwarf_macro_record_type macinfo_type;
24839   unsigned int offset_size = cu->header.offset_size;
24840   const gdb_byte *opcode_definitions[256];
24841   void **slot;
24842   struct dwarf2_section_info *section;
24843   const char *section_name;
24844
24845   if (cu->dwo_unit != NULL)
24846     {
24847       if (section_is_gnu)
24848         {
24849           section = &cu->dwo_unit->dwo_file->sections.macro;
24850           section_name = ".debug_macro.dwo";
24851         }
24852       else
24853         {
24854           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24855           section_name = ".debug_macinfo.dwo";
24856         }
24857     }
24858   else
24859     {
24860       if (section_is_gnu)
24861         {
24862           section = &dwarf2_per_objfile->macro;
24863           section_name = ".debug_macro";
24864         }
24865       else
24866         {
24867           section = &dwarf2_per_objfile->macinfo;
24868           section_name = ".debug_macinfo";
24869         }
24870     }
24871
24872   dwarf2_read_section (objfile, section);
24873   if (section->buffer == NULL)
24874     {
24875       complaint (_("missing %s section"), section_name);
24876       return;
24877     }
24878   abfd = get_section_bfd_owner (section);
24879
24880   /* First pass: Find the name of the base filename.
24881      This filename is needed in order to process all macros whose definition
24882      (or undefinition) comes from the command line.  These macros are defined
24883      before the first DW_MACINFO_start_file entry, and yet still need to be
24884      associated to the base file.
24885
24886      To determine the base file name, we scan the macro definitions until we
24887      reach the first DW_MACINFO_start_file entry.  We then initialize
24888      CURRENT_FILE accordingly so that any macro definition found before the
24889      first DW_MACINFO_start_file can still be associated to the base file.  */
24890
24891   mac_ptr = section->buffer + offset;
24892   mac_end = section->buffer + section->size;
24893
24894   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24895                                       &offset_size, section_is_gnu);
24896   if (mac_ptr == NULL)
24897     {
24898       /* We already issued a complaint.  */
24899       return;
24900     }
24901
24902   do
24903     {
24904       /* Do we at least have room for a macinfo type byte?  */
24905       if (mac_ptr >= mac_end)
24906         {
24907           /* Complaint is printed during the second pass as GDB will probably
24908              stop the first pass earlier upon finding
24909              DW_MACINFO_start_file.  */
24910           break;
24911         }
24912
24913       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24914       mac_ptr++;
24915
24916       /* Note that we rely on the fact that the corresponding GNU and
24917          DWARF constants are the same.  */
24918       DIAGNOSTIC_PUSH
24919       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24920       switch (macinfo_type)
24921         {
24922           /* A zero macinfo type indicates the end of the macro
24923              information.  */
24924         case 0:
24925           break;
24926
24927         case DW_MACRO_define:
24928         case DW_MACRO_undef:
24929           /* Only skip the data by MAC_PTR.  */
24930           {
24931             unsigned int bytes_read;
24932
24933             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24934             mac_ptr += bytes_read;
24935             read_direct_string (abfd, mac_ptr, &bytes_read);
24936             mac_ptr += bytes_read;
24937           }
24938           break;
24939
24940         case DW_MACRO_start_file:
24941           {
24942             unsigned int bytes_read;
24943             int line, file;
24944
24945             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24946             mac_ptr += bytes_read;
24947             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24948             mac_ptr += bytes_read;
24949
24950             current_file = macro_start_file (cu, file, line, current_file, lh);
24951           }
24952           break;
24953
24954         case DW_MACRO_end_file:
24955           /* No data to skip by MAC_PTR.  */
24956           break;
24957
24958         case DW_MACRO_define_strp:
24959         case DW_MACRO_undef_strp:
24960         case DW_MACRO_define_sup:
24961         case DW_MACRO_undef_sup:
24962           {
24963             unsigned int bytes_read;
24964
24965             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24966             mac_ptr += bytes_read;
24967             mac_ptr += offset_size;
24968           }
24969           break;
24970
24971         case DW_MACRO_import:
24972         case DW_MACRO_import_sup:
24973           /* Note that, according to the spec, a transparent include
24974              chain cannot call DW_MACRO_start_file.  So, we can just
24975              skip this opcode.  */
24976           mac_ptr += offset_size;
24977           break;
24978
24979         case DW_MACINFO_vendor_ext:
24980           /* Only skip the data by MAC_PTR.  */
24981           if (!section_is_gnu)
24982             {
24983               unsigned int bytes_read;
24984
24985               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24986               mac_ptr += bytes_read;
24987               read_direct_string (abfd, mac_ptr, &bytes_read);
24988               mac_ptr += bytes_read;
24989             }
24990           /* FALLTHROUGH */
24991
24992         default:
24993           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24994                                          mac_ptr, mac_end, abfd, offset_size,
24995                                          section);
24996           if (mac_ptr == NULL)
24997             return;
24998           break;
24999         }
25000       DIAGNOSTIC_POP
25001     } while (macinfo_type != 0 && current_file == NULL);
25002
25003   /* Second pass: Process all entries.
25004
25005      Use the AT_COMMAND_LINE flag to determine whether we are still processing
25006      command-line macro definitions/undefinitions.  This flag is unset when we
25007      reach the first DW_MACINFO_start_file entry.  */
25008
25009   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
25010                                            htab_eq_pointer,
25011                                            NULL, xcalloc, xfree));
25012   mac_ptr = section->buffer + offset;
25013   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
25014   *slot = (void *) mac_ptr;
25015   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
25016                             current_file, lh, section,
25017                             section_is_gnu, 0, offset_size,
25018                             include_hash.get ());
25019 }
25020
25021 /* Check if the attribute's form is a DW_FORM_block*
25022    if so return true else false.  */
25023
25024 static int
25025 attr_form_is_block (const struct attribute *attr)
25026 {
25027   return (attr == NULL ? 0 :
25028       attr->form == DW_FORM_block1
25029       || attr->form == DW_FORM_block2
25030       || attr->form == DW_FORM_block4
25031       || attr->form == DW_FORM_block
25032       || attr->form == DW_FORM_exprloc);
25033 }
25034
25035 /* Return non-zero if ATTR's value is a section offset --- classes
25036    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
25037    You may use DW_UNSND (attr) to retrieve such offsets.
25038
25039    Section 7.5.4, "Attribute Encodings", explains that no attribute
25040    may have a value that belongs to more than one of these classes; it
25041    would be ambiguous if we did, because we use the same forms for all
25042    of them.  */
25043
25044 static int
25045 attr_form_is_section_offset (const struct attribute *attr)
25046 {
25047   return (attr->form == DW_FORM_data4
25048           || attr->form == DW_FORM_data8
25049           || attr->form == DW_FORM_sec_offset);
25050 }
25051
25052 /* Return non-zero if ATTR's value falls in the 'constant' class, or
25053    zero otherwise.  When this function returns true, you can apply
25054    dwarf2_get_attr_constant_value to it.
25055
25056    However, note that for some attributes you must check
25057    attr_form_is_section_offset before using this test.  DW_FORM_data4
25058    and DW_FORM_data8 are members of both the constant class, and of
25059    the classes that contain offsets into other debug sections
25060    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
25061    that, if an attribute's can be either a constant or one of the
25062    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
25063    taken as section offsets, not constants.
25064
25065    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
25066    cannot handle that.  */
25067
25068 static int
25069 attr_form_is_constant (const struct attribute *attr)
25070 {
25071   switch (attr->form)
25072     {
25073     case DW_FORM_sdata:
25074     case DW_FORM_udata:
25075     case DW_FORM_data1:
25076     case DW_FORM_data2:
25077     case DW_FORM_data4:
25078     case DW_FORM_data8:
25079     case DW_FORM_implicit_const:
25080       return 1;
25081     default:
25082       return 0;
25083     }
25084 }
25085
25086
25087 /* DW_ADDR is always stored already as sect_offset; despite for the forms
25088    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
25089
25090 static int
25091 attr_form_is_ref (const struct attribute *attr)
25092 {
25093   switch (attr->form)
25094     {
25095     case DW_FORM_ref_addr:
25096     case DW_FORM_ref1:
25097     case DW_FORM_ref2:
25098     case DW_FORM_ref4:
25099     case DW_FORM_ref8:
25100     case DW_FORM_ref_udata:
25101     case DW_FORM_GNU_ref_alt:
25102       return 1;
25103     default:
25104       return 0;
25105     }
25106 }
25107
25108 /* Return the .debug_loc section to use for CU.
25109    For DWO files use .debug_loc.dwo.  */
25110
25111 static struct dwarf2_section_info *
25112 cu_debug_loc_section (struct dwarf2_cu *cu)
25113 {
25114   struct dwarf2_per_objfile *dwarf2_per_objfile
25115     = cu->per_cu->dwarf2_per_objfile;
25116
25117   if (cu->dwo_unit)
25118     {
25119       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
25120       
25121       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
25122     }
25123   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
25124                                   : &dwarf2_per_objfile->loc);
25125 }
25126
25127 /* A helper function that fills in a dwarf2_loclist_baton.  */
25128
25129 static void
25130 fill_in_loclist_baton (struct dwarf2_cu *cu,
25131                        struct dwarf2_loclist_baton *baton,
25132                        const struct attribute *attr)
25133 {
25134   struct dwarf2_per_objfile *dwarf2_per_objfile
25135     = cu->per_cu->dwarf2_per_objfile;
25136   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25137
25138   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
25139
25140   baton->per_cu = cu->per_cu;
25141   gdb_assert (baton->per_cu);
25142   /* We don't know how long the location list is, but make sure we
25143      don't run off the edge of the section.  */
25144   baton->size = section->size - DW_UNSND (attr);
25145   baton->data = section->buffer + DW_UNSND (attr);
25146   baton->base_address = cu->base_address;
25147   baton->from_dwo = cu->dwo_unit != NULL;
25148 }
25149
25150 static void
25151 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
25152                              struct dwarf2_cu *cu, int is_block)
25153 {
25154   struct dwarf2_per_objfile *dwarf2_per_objfile
25155     = cu->per_cu->dwarf2_per_objfile;
25156   struct objfile *objfile = dwarf2_per_objfile->objfile;
25157   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25158
25159   if (attr_form_is_section_offset (attr)
25160       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
25161          the section.  If so, fall through to the complaint in the
25162          other branch.  */
25163       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
25164     {
25165       struct dwarf2_loclist_baton *baton;
25166
25167       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25168
25169       fill_in_loclist_baton (cu, baton, attr);
25170
25171       if (cu->base_known == 0)
25172         complaint (_("Location list used without "
25173                      "specifying the CU base address."));
25174
25175       SYMBOL_ACLASS_INDEX (sym) = (is_block
25176                                    ? dwarf2_loclist_block_index
25177                                    : dwarf2_loclist_index);
25178       SYMBOL_LOCATION_BATON (sym) = baton;
25179     }
25180   else
25181     {
25182       struct dwarf2_locexpr_baton *baton;
25183
25184       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25185       baton->per_cu = cu->per_cu;
25186       gdb_assert (baton->per_cu);
25187
25188       if (attr_form_is_block (attr))
25189         {
25190           /* Note that we're just copying the block's data pointer
25191              here, not the actual data.  We're still pointing into the
25192              info_buffer for SYM's objfile; right now we never release
25193              that buffer, but when we do clean up properly this may
25194              need to change.  */
25195           baton->size = DW_BLOCK (attr)->size;
25196           baton->data = DW_BLOCK (attr)->data;
25197         }
25198       else
25199         {
25200           dwarf2_invalid_attrib_class_complaint ("location description",
25201                                                  SYMBOL_NATURAL_NAME (sym));
25202           baton->size = 0;
25203         }
25204
25205       SYMBOL_ACLASS_INDEX (sym) = (is_block
25206                                    ? dwarf2_locexpr_block_index
25207                                    : dwarf2_locexpr_index);
25208       SYMBOL_LOCATION_BATON (sym) = baton;
25209     }
25210 }
25211
25212 /* Return the OBJFILE associated with the compilation unit CU.  If CU
25213    came from a separate debuginfo file, then the master objfile is
25214    returned.  */
25215
25216 struct objfile *
25217 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25218 {
25219   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25220
25221   /* Return the master objfile, so that we can report and look up the
25222      correct file containing this variable.  */
25223   if (objfile->separate_debug_objfile_backlink)
25224     objfile = objfile->separate_debug_objfile_backlink;
25225
25226   return objfile;
25227 }
25228
25229 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25230    (CU_HEADERP is unused in such case) or prepare a temporary copy at
25231    CU_HEADERP first.  */
25232
25233 static const struct comp_unit_head *
25234 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25235                        struct dwarf2_per_cu_data *per_cu)
25236 {
25237   const gdb_byte *info_ptr;
25238
25239   if (per_cu->cu)
25240     return &per_cu->cu->header;
25241
25242   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25243
25244   memset (cu_headerp, 0, sizeof (*cu_headerp));
25245   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25246                        rcuh_kind::COMPILE);
25247
25248   return cu_headerp;
25249 }
25250
25251 /* Return the address size given in the compilation unit header for CU.  */
25252
25253 int
25254 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25255 {
25256   struct comp_unit_head cu_header_local;
25257   const struct comp_unit_head *cu_headerp;
25258
25259   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25260
25261   return cu_headerp->addr_size;
25262 }
25263
25264 /* Return the offset size given in the compilation unit header for CU.  */
25265
25266 int
25267 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25268 {
25269   struct comp_unit_head cu_header_local;
25270   const struct comp_unit_head *cu_headerp;
25271
25272   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25273
25274   return cu_headerp->offset_size;
25275 }
25276
25277 /* See its dwarf2loc.h declaration.  */
25278
25279 int
25280 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25281 {
25282   struct comp_unit_head cu_header_local;
25283   const struct comp_unit_head *cu_headerp;
25284
25285   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25286
25287   if (cu_headerp->version == 2)
25288     return cu_headerp->addr_size;
25289   else
25290     return cu_headerp->offset_size;
25291 }
25292
25293 /* Return the text offset of the CU.  The returned offset comes from
25294    this CU's objfile.  If this objfile came from a separate debuginfo
25295    file, then the offset may be different from the corresponding
25296    offset in the parent objfile.  */
25297
25298 CORE_ADDR
25299 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25300 {
25301   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25302
25303   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25304 }
25305
25306 /* Return DWARF version number of PER_CU.  */
25307
25308 short
25309 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25310 {
25311   return per_cu->dwarf_version;
25312 }
25313
25314 /* Locate the .debug_info compilation unit from CU's objfile which contains
25315    the DIE at OFFSET.  Raises an error on failure.  */
25316
25317 static struct dwarf2_per_cu_data *
25318 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25319                                   unsigned int offset_in_dwz,
25320                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25321 {
25322   struct dwarf2_per_cu_data *this_cu;
25323   int low, high;
25324
25325   low = 0;
25326   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25327   while (high > low)
25328     {
25329       struct dwarf2_per_cu_data *mid_cu;
25330       int mid = low + (high - low) / 2;
25331
25332       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25333       if (mid_cu->is_dwz > offset_in_dwz
25334           || (mid_cu->is_dwz == offset_in_dwz
25335               && mid_cu->sect_off + mid_cu->length >= sect_off))
25336         high = mid;
25337       else
25338         low = mid + 1;
25339     }
25340   gdb_assert (low == high);
25341   this_cu = dwarf2_per_objfile->all_comp_units[low];
25342   if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
25343     {
25344       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25345         error (_("Dwarf Error: could not find partial DIE containing "
25346                "offset %s [in module %s]"),
25347                sect_offset_str (sect_off),
25348                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25349
25350       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25351                   <= sect_off);
25352       return dwarf2_per_objfile->all_comp_units[low-1];
25353     }
25354   else
25355     {
25356       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25357           && sect_off >= this_cu->sect_off + this_cu->length)
25358         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25359       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25360       return this_cu;
25361     }
25362 }
25363
25364 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25365
25366 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25367   : per_cu (per_cu_),
25368     mark (false),
25369     has_loclist (false),
25370     checked_producer (false),
25371     producer_is_gxx_lt_4_6 (false),
25372     producer_is_gcc_lt_4_3 (false),
25373     producer_is_icc (false),
25374     producer_is_icc_lt_14 (false),
25375     producer_is_codewarrior (false),
25376     processing_has_namespace_info (false)
25377 {
25378   per_cu->cu = this;
25379 }
25380
25381 /* Destroy a dwarf2_cu.  */
25382
25383 dwarf2_cu::~dwarf2_cu ()
25384 {
25385   per_cu->cu = NULL;
25386 }
25387
25388 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25389
25390 static void
25391 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25392                        enum language pretend_language)
25393 {
25394   struct attribute *attr;
25395
25396   /* Set the language we're debugging.  */
25397   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25398   if (attr)
25399     set_cu_language (DW_UNSND (attr), cu);
25400   else
25401     {
25402       cu->language = pretend_language;
25403       cu->language_defn = language_def (cu->language);
25404     }
25405
25406   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25407 }
25408
25409 /* Increase the age counter on each cached compilation unit, and free
25410    any that are too old.  */
25411
25412 static void
25413 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25414 {
25415   struct dwarf2_per_cu_data *per_cu, **last_chain;
25416
25417   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25418   per_cu = dwarf2_per_objfile->read_in_chain;
25419   while (per_cu != NULL)
25420     {
25421       per_cu->cu->last_used ++;
25422       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25423         dwarf2_mark (per_cu->cu);
25424       per_cu = per_cu->cu->read_in_chain;
25425     }
25426
25427   per_cu = dwarf2_per_objfile->read_in_chain;
25428   last_chain = &dwarf2_per_objfile->read_in_chain;
25429   while (per_cu != NULL)
25430     {
25431       struct dwarf2_per_cu_data *next_cu;
25432
25433       next_cu = per_cu->cu->read_in_chain;
25434
25435       if (!per_cu->cu->mark)
25436         {
25437           delete per_cu->cu;
25438           *last_chain = next_cu;
25439         }
25440       else
25441         last_chain = &per_cu->cu->read_in_chain;
25442
25443       per_cu = next_cu;
25444     }
25445 }
25446
25447 /* Remove a single compilation unit from the cache.  */
25448
25449 static void
25450 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25451 {
25452   struct dwarf2_per_cu_data *per_cu, **last_chain;
25453   struct dwarf2_per_objfile *dwarf2_per_objfile
25454     = target_per_cu->dwarf2_per_objfile;
25455
25456   per_cu = dwarf2_per_objfile->read_in_chain;
25457   last_chain = &dwarf2_per_objfile->read_in_chain;
25458   while (per_cu != NULL)
25459     {
25460       struct dwarf2_per_cu_data *next_cu;
25461
25462       next_cu = per_cu->cu->read_in_chain;
25463
25464       if (per_cu == target_per_cu)
25465         {
25466           delete per_cu->cu;
25467           per_cu->cu = NULL;
25468           *last_chain = next_cu;
25469           break;
25470         }
25471       else
25472         last_chain = &per_cu->cu->read_in_chain;
25473
25474       per_cu = next_cu;
25475     }
25476 }
25477
25478 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25479    We store these in a hash table separate from the DIEs, and preserve them
25480    when the DIEs are flushed out of cache.
25481
25482    The CU "per_cu" pointer is needed because offset alone is not enough to
25483    uniquely identify the type.  A file may have multiple .debug_types sections,
25484    or the type may come from a DWO file.  Furthermore, while it's more logical
25485    to use per_cu->section+offset, with Fission the section with the data is in
25486    the DWO file but we don't know that section at the point we need it.
25487    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25488    because we can enter the lookup routine, get_die_type_at_offset, from
25489    outside this file, and thus won't necessarily have PER_CU->cu.
25490    Fortunately, PER_CU is stable for the life of the objfile.  */
25491
25492 struct dwarf2_per_cu_offset_and_type
25493 {
25494   const struct dwarf2_per_cu_data *per_cu;
25495   sect_offset sect_off;
25496   struct type *type;
25497 };
25498
25499 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25500
25501 static hashval_t
25502 per_cu_offset_and_type_hash (const void *item)
25503 {
25504   const struct dwarf2_per_cu_offset_and_type *ofs
25505     = (const struct dwarf2_per_cu_offset_and_type *) item;
25506
25507   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25508 }
25509
25510 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25511
25512 static int
25513 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25514 {
25515   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25516     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25517   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25518     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25519
25520   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25521           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25522 }
25523
25524 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25525    table if necessary.  For convenience, return TYPE.
25526
25527    The DIEs reading must have careful ordering to:
25528     * Not cause infite loops trying to read in DIEs as a prerequisite for
25529       reading current DIE.
25530     * Not trying to dereference contents of still incompletely read in types
25531       while reading in other DIEs.
25532     * Enable referencing still incompletely read in types just by a pointer to
25533       the type without accessing its fields.
25534
25535    Therefore caller should follow these rules:
25536      * Try to fetch any prerequisite types we may need to build this DIE type
25537        before building the type and calling set_die_type.
25538      * After building type call set_die_type for current DIE as soon as
25539        possible before fetching more types to complete the current type.
25540      * Make the type as complete as possible before fetching more types.  */
25541
25542 static struct type *
25543 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25544 {
25545   struct dwarf2_per_objfile *dwarf2_per_objfile
25546     = cu->per_cu->dwarf2_per_objfile;
25547   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25548   struct objfile *objfile = dwarf2_per_objfile->objfile;
25549   struct attribute *attr;
25550   struct dynamic_prop prop;
25551
25552   /* For Ada types, make sure that the gnat-specific data is always
25553      initialized (if not already set).  There are a few types where
25554      we should not be doing so, because the type-specific area is
25555      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25556      where the type-specific area is used to store the floatformat).
25557      But this is not a problem, because the gnat-specific information
25558      is actually not needed for these types.  */
25559   if (need_gnat_info (cu)
25560       && TYPE_CODE (type) != TYPE_CODE_FUNC
25561       && TYPE_CODE (type) != TYPE_CODE_FLT
25562       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25563       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25564       && TYPE_CODE (type) != TYPE_CODE_METHOD
25565       && !HAVE_GNAT_AUX_INFO (type))
25566     INIT_GNAT_SPECIFIC (type);
25567
25568   /* Read DW_AT_allocated and set in type.  */
25569   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25570   if (attr_form_is_block (attr))
25571     {
25572       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25573         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25574     }
25575   else if (attr != NULL)
25576     {
25577       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25578                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25579                  sect_offset_str (die->sect_off));
25580     }
25581
25582   /* Read DW_AT_associated and set in type.  */
25583   attr = dwarf2_attr (die, DW_AT_associated, cu);
25584   if (attr_form_is_block (attr))
25585     {
25586       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25587         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25588     }
25589   else if (attr != NULL)
25590     {
25591       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25592                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25593                  sect_offset_str (die->sect_off));
25594     }
25595
25596   /* Read DW_AT_data_location and set in type.  */
25597   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25598   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25599     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25600
25601   if (dwarf2_per_objfile->die_type_hash == NULL)
25602     {
25603       dwarf2_per_objfile->die_type_hash =
25604         htab_create_alloc_ex (127,
25605                               per_cu_offset_and_type_hash,
25606                               per_cu_offset_and_type_eq,
25607                               NULL,
25608                               &objfile->objfile_obstack,
25609                               hashtab_obstack_allocate,
25610                               dummy_obstack_deallocate);
25611     }
25612
25613   ofs.per_cu = cu->per_cu;
25614   ofs.sect_off = die->sect_off;
25615   ofs.type = type;
25616   slot = (struct dwarf2_per_cu_offset_and_type **)
25617     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25618   if (*slot)
25619     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25620                sect_offset_str (die->sect_off));
25621   *slot = XOBNEW (&objfile->objfile_obstack,
25622                   struct dwarf2_per_cu_offset_and_type);
25623   **slot = ofs;
25624   return type;
25625 }
25626
25627 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25628    or return NULL if the die does not have a saved type.  */
25629
25630 static struct type *
25631 get_die_type_at_offset (sect_offset sect_off,
25632                         struct dwarf2_per_cu_data *per_cu)
25633 {
25634   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25635   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25636
25637   if (dwarf2_per_objfile->die_type_hash == NULL)
25638     return NULL;
25639
25640   ofs.per_cu = per_cu;
25641   ofs.sect_off = sect_off;
25642   slot = ((struct dwarf2_per_cu_offset_and_type *)
25643           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25644   if (slot)
25645     return slot->type;
25646   else
25647     return NULL;
25648 }
25649
25650 /* Look up the type for DIE in CU in die_type_hash,
25651    or return NULL if DIE does not have a saved type.  */
25652
25653 static struct type *
25654 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25655 {
25656   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25657 }
25658
25659 /* Add a dependence relationship from CU to REF_PER_CU.  */
25660
25661 static void
25662 dwarf2_add_dependence (struct dwarf2_cu *cu,
25663                        struct dwarf2_per_cu_data *ref_per_cu)
25664 {
25665   void **slot;
25666
25667   if (cu->dependencies == NULL)
25668     cu->dependencies
25669       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25670                               NULL, &cu->comp_unit_obstack,
25671                               hashtab_obstack_allocate,
25672                               dummy_obstack_deallocate);
25673
25674   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25675   if (*slot == NULL)
25676     *slot = ref_per_cu;
25677 }
25678
25679 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25680    Set the mark field in every compilation unit in the
25681    cache that we must keep because we are keeping CU.  */
25682
25683 static int
25684 dwarf2_mark_helper (void **slot, void *data)
25685 {
25686   struct dwarf2_per_cu_data *per_cu;
25687
25688   per_cu = (struct dwarf2_per_cu_data *) *slot;
25689
25690   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25691      reading of the chain.  As such dependencies remain valid it is not much
25692      useful to track and undo them during QUIT cleanups.  */
25693   if (per_cu->cu == NULL)
25694     return 1;
25695
25696   if (per_cu->cu->mark)
25697     return 1;
25698   per_cu->cu->mark = true;
25699
25700   if (per_cu->cu->dependencies != NULL)
25701     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25702
25703   return 1;
25704 }
25705
25706 /* Set the mark field in CU and in every other compilation unit in the
25707    cache that we must keep because we are keeping CU.  */
25708
25709 static void
25710 dwarf2_mark (struct dwarf2_cu *cu)
25711 {
25712   if (cu->mark)
25713     return;
25714   cu->mark = true;
25715   if (cu->dependencies != NULL)
25716     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25717 }
25718
25719 static void
25720 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25721 {
25722   while (per_cu)
25723     {
25724       per_cu->cu->mark = false;
25725       per_cu = per_cu->cu->read_in_chain;
25726     }
25727 }
25728
25729 /* Trivial hash function for partial_die_info: the hash value of a DIE
25730    is its offset in .debug_info for this objfile.  */
25731
25732 static hashval_t
25733 partial_die_hash (const void *item)
25734 {
25735   const struct partial_die_info *part_die
25736     = (const struct partial_die_info *) item;
25737
25738   return to_underlying (part_die->sect_off);
25739 }
25740
25741 /* Trivial comparison function for partial_die_info structures: two DIEs
25742    are equal if they have the same offset.  */
25743
25744 static int
25745 partial_die_eq (const void *item_lhs, const void *item_rhs)
25746 {
25747   const struct partial_die_info *part_die_lhs
25748     = (const struct partial_die_info *) item_lhs;
25749   const struct partial_die_info *part_die_rhs
25750     = (const struct partial_die_info *) item_rhs;
25751
25752   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25753 }
25754
25755 struct cmd_list_element *set_dwarf_cmdlist;
25756 struct cmd_list_element *show_dwarf_cmdlist;
25757
25758 static void
25759 set_dwarf_cmd (const char *args, int from_tty)
25760 {
25761   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25762              gdb_stdout);
25763 }
25764
25765 static void
25766 show_dwarf_cmd (const char *args, int from_tty)
25767 {
25768   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25769 }
25770
25771 int dwarf_always_disassemble;
25772
25773 static void
25774 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25775                                struct cmd_list_element *c, const char *value)
25776 {
25777   fprintf_filtered (file,
25778                     _("Whether to always disassemble "
25779                       "DWARF expressions is %s.\n"),
25780                     value);
25781 }
25782
25783 static void
25784 show_check_physname (struct ui_file *file, int from_tty,
25785                      struct cmd_list_element *c, const char *value)
25786 {
25787   fprintf_filtered (file,
25788                     _("Whether to check \"physname\" is %s.\n"),
25789                     value);
25790 }
25791
25792 void
25793 _initialize_dwarf2_read (void)
25794 {
25795   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25796 Set DWARF specific variables.\n\
25797 Configure DWARF variables such as the cache size"),
25798                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25799                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25800
25801   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25802 Show DWARF specific variables\n\
25803 Show DWARF variables such as the cache size"),
25804                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25805                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25806
25807   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25808                             &dwarf_max_cache_age, _("\
25809 Set the upper bound on the age of cached DWARF compilation units."), _("\
25810 Show the upper bound on the age of cached DWARF compilation units."), _("\
25811 A higher limit means that cached compilation units will be stored\n\
25812 in memory longer, and more total memory will be used.  Zero disables\n\
25813 caching, which can slow down startup."),
25814                             NULL,
25815                             show_dwarf_max_cache_age,
25816                             &set_dwarf_cmdlist,
25817                             &show_dwarf_cmdlist);
25818
25819   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25820                            &dwarf_always_disassemble, _("\
25821 Set whether `info address' always disassembles DWARF expressions."), _("\
25822 Show whether `info address' always disassembles DWARF expressions."), _("\
25823 When enabled, DWARF expressions are always printed in an assembly-like\n\
25824 syntax.  When disabled, expressions will be printed in a more\n\
25825 conversational style, when possible."),
25826                            NULL,
25827                            show_dwarf_always_disassemble,
25828                            &set_dwarf_cmdlist,
25829                            &show_dwarf_cmdlist);
25830
25831   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25832 Set debugging of the DWARF reader."), _("\
25833 Show debugging of the DWARF reader."), _("\
25834 When enabled (non-zero), debugging messages are printed during DWARF\n\
25835 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25836 information.  A value greater than 1 provides more verbose information."),
25837                             NULL,
25838                             NULL,
25839                             &setdebuglist, &showdebuglist);
25840
25841   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25842 Set debugging of the DWARF DIE reader."), _("\
25843 Show debugging of the DWARF DIE reader."), _("\
25844 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25845 The value is the maximum depth to print."),
25846                              NULL,
25847                              NULL,
25848                              &setdebuglist, &showdebuglist);
25849
25850   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25851 Set debugging of the dwarf line reader."), _("\
25852 Show debugging of the dwarf line reader."), _("\
25853 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25854 A value of 1 (one) provides basic information.\n\
25855 A value greater than 1 provides more verbose information."),
25856                              NULL,
25857                              NULL,
25858                              &setdebuglist, &showdebuglist);
25859
25860   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25861 Set cross-checking of \"physname\" code against demangler."), _("\
25862 Show cross-checking of \"physname\" code against demangler."), _("\
25863 When enabled, GDB's internal \"physname\" code is checked against\n\
25864 the demangler."),
25865                            NULL, show_check_physname,
25866                            &setdebuglist, &showdebuglist);
25867
25868   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25869                            no_class, &use_deprecated_index_sections, _("\
25870 Set whether to use deprecated gdb_index sections."), _("\
25871 Show whether to use deprecated gdb_index sections."), _("\
25872 When enabled, deprecated .gdb_index sections are used anyway.\n\
25873 Normally they are ignored either because of a missing feature or\n\
25874 performance issue.\n\
25875 Warning: This option must be enabled before gdb reads the file."),
25876                            NULL,
25877                            NULL,
25878                            &setlist, &showlist);
25879
25880   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25881                                                         &dwarf2_locexpr_funcs);
25882   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25883                                                         &dwarf2_loclist_funcs);
25884
25885   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25886                                         &dwarf2_block_frame_base_locexpr_funcs);
25887   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25888                                         &dwarf2_block_frame_base_loclist_funcs);
25889
25890 #if GDB_SELF_TEST
25891   selftests::register_test ("dw2_expand_symtabs_matching",
25892                             selftests::dw2_expand_symtabs_matching::run_test);
25893 #endif
25894 }