gdb: Add constructor to struct cu_partial_die_info
[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;
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 %d for DIE at %s"),
8835                  parent->tag, sect_offset_str (pdi->sect_off));
8836       parent->scope = grandparent_scope;
8837     }
8838
8839   parent->scope_set = 1;
8840   return parent->scope;
8841 }
8842
8843 /* Return the fully scoped name associated with PDI, from compilation unit
8844    CU.  The result will be allocated with malloc.  */
8845
8846 static char *
8847 partial_die_full_name (struct partial_die_info *pdi,
8848                        struct dwarf2_cu *cu)
8849 {
8850   const char *parent_scope;
8851
8852   /* If this is a template instantiation, we can not work out the
8853      template arguments from partial DIEs.  So, unfortunately, we have
8854      to go through the full DIEs.  At least any work we do building
8855      types here will be reused if full symbols are loaded later.  */
8856   if (pdi->has_template_arguments)
8857     {
8858       pdi->fixup (cu);
8859
8860       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8861         {
8862           struct die_info *die;
8863           struct attribute attr;
8864           struct dwarf2_cu *ref_cu = cu;
8865
8866           /* DW_FORM_ref_addr is using section offset.  */
8867           attr.name = (enum dwarf_attribute) 0;
8868           attr.form = DW_FORM_ref_addr;
8869           attr.u.unsnd = to_underlying (pdi->sect_off);
8870           die = follow_die_ref (NULL, &attr, &ref_cu);
8871
8872           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8873         }
8874     }
8875
8876   parent_scope = partial_die_parent_scope (pdi, cu);
8877   if (parent_scope == NULL)
8878     return NULL;
8879   else
8880     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8881 }
8882
8883 static void
8884 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8885 {
8886   struct dwarf2_per_objfile *dwarf2_per_objfile
8887     = cu->per_cu->dwarf2_per_objfile;
8888   struct objfile *objfile = dwarf2_per_objfile->objfile;
8889   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8890   CORE_ADDR addr = 0;
8891   const char *actual_name = NULL;
8892   CORE_ADDR baseaddr;
8893   char *built_actual_name;
8894
8895   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8896
8897   built_actual_name = partial_die_full_name (pdi, cu);
8898   if (built_actual_name != NULL)
8899     actual_name = built_actual_name;
8900
8901   if (actual_name == NULL)
8902     actual_name = pdi->name;
8903
8904   switch (pdi->tag)
8905     {
8906     case DW_TAG_inlined_subroutine:
8907     case DW_TAG_subprogram:
8908       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8909               - baseaddr);
8910       if (pdi->is_external || cu->language == language_ada)
8911         {
8912           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8913              of the global scope.  But in Ada, we want to be able to access
8914              nested procedures globally.  So all Ada subprograms are stored
8915              in the global scope.  */
8916           add_psymbol_to_list (actual_name, strlen (actual_name),
8917                                built_actual_name != NULL,
8918                                VAR_DOMAIN, LOC_BLOCK,
8919                                SECT_OFF_TEXT (objfile),
8920                                psymbol_placement::GLOBAL,
8921                                addr,
8922                                cu->language, objfile);
8923         }
8924       else
8925         {
8926           add_psymbol_to_list (actual_name, strlen (actual_name),
8927                                built_actual_name != NULL,
8928                                VAR_DOMAIN, LOC_BLOCK,
8929                                SECT_OFF_TEXT (objfile),
8930                                psymbol_placement::STATIC,
8931                                addr, cu->language, objfile);
8932         }
8933
8934       if (pdi->main_subprogram && actual_name != NULL)
8935         set_objfile_main_name (objfile, actual_name, cu->language);
8936       break;
8937     case DW_TAG_constant:
8938       add_psymbol_to_list (actual_name, strlen (actual_name),
8939                            built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8940                            -1, (pdi->is_external
8941                                 ? psymbol_placement::GLOBAL
8942                                 : psymbol_placement::STATIC),
8943                            0, cu->language, objfile);
8944       break;
8945     case DW_TAG_variable:
8946       if (pdi->d.locdesc)
8947         addr = decode_locdesc (pdi->d.locdesc, cu);
8948
8949       if (pdi->d.locdesc
8950           && addr == 0
8951           && !dwarf2_per_objfile->has_section_at_zero)
8952         {
8953           /* A global or static variable may also have been stripped
8954              out by the linker if unused, in which case its address
8955              will be nullified; do not add such variables into partial
8956              symbol table then.  */
8957         }
8958       else if (pdi->is_external)
8959         {
8960           /* Global Variable.
8961              Don't enter into the minimal symbol tables as there is
8962              a minimal symbol table entry from the ELF symbols already.
8963              Enter into partial symbol table if it has a location
8964              descriptor or a type.
8965              If the location descriptor is missing, new_symbol will create
8966              a LOC_UNRESOLVED symbol, the address of the variable will then
8967              be determined from the minimal symbol table whenever the variable
8968              is referenced.
8969              The address for the partial symbol table entry is not
8970              used by GDB, but it comes in handy for debugging partial symbol
8971              table building.  */
8972
8973           if (pdi->d.locdesc || pdi->has_type)
8974             add_psymbol_to_list (actual_name, strlen (actual_name),
8975                                  built_actual_name != NULL,
8976                                  VAR_DOMAIN, LOC_STATIC,
8977                                  SECT_OFF_TEXT (objfile),
8978                                  psymbol_placement::GLOBAL,
8979                                  addr, cu->language, objfile);
8980         }
8981       else
8982         {
8983           int has_loc = pdi->d.locdesc != NULL;
8984
8985           /* Static Variable.  Skip symbols whose value we cannot know (those
8986              without location descriptors or constant values).  */
8987           if (!has_loc && !pdi->has_const_value)
8988             {
8989               xfree (built_actual_name);
8990               return;
8991             }
8992
8993           add_psymbol_to_list (actual_name, strlen (actual_name),
8994                                built_actual_name != NULL,
8995                                VAR_DOMAIN, LOC_STATIC,
8996                                SECT_OFF_TEXT (objfile),
8997                                psymbol_placement::STATIC,
8998                                has_loc ? addr : 0,
8999                                cu->language, objfile);
9000         }
9001       break;
9002     case DW_TAG_typedef:
9003     case DW_TAG_base_type:
9004     case DW_TAG_subrange_type:
9005       add_psymbol_to_list (actual_name, strlen (actual_name),
9006                            built_actual_name != NULL,
9007                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9008                            psymbol_placement::STATIC,
9009                            0, cu->language, objfile);
9010       break;
9011     case DW_TAG_imported_declaration:
9012     case DW_TAG_namespace:
9013       add_psymbol_to_list (actual_name, strlen (actual_name),
9014                            built_actual_name != NULL,
9015                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9016                            psymbol_placement::GLOBAL,
9017                            0, cu->language, objfile);
9018       break;
9019     case DW_TAG_module:
9020       add_psymbol_to_list (actual_name, strlen (actual_name),
9021                            built_actual_name != NULL,
9022                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9023                            psymbol_placement::GLOBAL,
9024                            0, cu->language, objfile);
9025       break;
9026     case DW_TAG_class_type:
9027     case DW_TAG_interface_type:
9028     case DW_TAG_structure_type:
9029     case DW_TAG_union_type:
9030     case DW_TAG_enumeration_type:
9031       /* Skip external references.  The DWARF standard says in the section
9032          about "Structure, Union, and Class Type Entries": "An incomplete
9033          structure, union or class type is represented by a structure,
9034          union or class entry that does not have a byte size attribute
9035          and that has a DW_AT_declaration attribute."  */
9036       if (!pdi->has_byte_size && pdi->is_declaration)
9037         {
9038           xfree (built_actual_name);
9039           return;
9040         }
9041
9042       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9043          static vs. global.  */
9044       add_psymbol_to_list (actual_name, strlen (actual_name),
9045                            built_actual_name != NULL,
9046                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9047                            cu->language == language_cplus
9048                            ? psymbol_placement::GLOBAL
9049                            : psymbol_placement::STATIC,
9050                            0, cu->language, objfile);
9051
9052       break;
9053     case DW_TAG_enumerator:
9054       add_psymbol_to_list (actual_name, strlen (actual_name),
9055                            built_actual_name != NULL,
9056                            VAR_DOMAIN, LOC_CONST, -1,
9057                            cu->language == language_cplus
9058                            ? psymbol_placement::GLOBAL
9059                            : psymbol_placement::STATIC,
9060                            0, cu->language, objfile);
9061       break;
9062     default:
9063       break;
9064     }
9065
9066   xfree (built_actual_name);
9067 }
9068
9069 /* Read a partial die corresponding to a namespace; also, add a symbol
9070    corresponding to that namespace to the symbol table.  NAMESPACE is
9071    the name of the enclosing namespace.  */
9072
9073 static void
9074 add_partial_namespace (struct partial_die_info *pdi,
9075                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9076                        int set_addrmap, struct dwarf2_cu *cu)
9077 {
9078   /* Add a symbol for the namespace.  */
9079
9080   add_partial_symbol (pdi, cu);
9081
9082   /* Now scan partial symbols in that namespace.  */
9083
9084   if (pdi->has_children)
9085     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9086 }
9087
9088 /* Read a partial die corresponding to a Fortran module.  */
9089
9090 static void
9091 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9092                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9093 {
9094   /* Add a symbol for the namespace.  */
9095
9096   add_partial_symbol (pdi, cu);
9097
9098   /* Now scan partial symbols in that module.  */
9099
9100   if (pdi->has_children)
9101     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9102 }
9103
9104 /* Read a partial die corresponding to a subprogram or an inlined
9105    subprogram and create a partial symbol for that subprogram.
9106    When the CU language allows it, this routine also defines a partial
9107    symbol for each nested subprogram that this subprogram contains.
9108    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9109    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9110
9111    PDI may also be a lexical block, in which case we simply search
9112    recursively for subprograms defined inside that lexical block.
9113    Again, this is only performed when the CU language allows this
9114    type of definitions.  */
9115
9116 static void
9117 add_partial_subprogram (struct partial_die_info *pdi,
9118                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9119                         int set_addrmap, struct dwarf2_cu *cu)
9120 {
9121   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9122     {
9123       if (pdi->has_pc_info)
9124         {
9125           if (pdi->lowpc < *lowpc)
9126             *lowpc = pdi->lowpc;
9127           if (pdi->highpc > *highpc)
9128             *highpc = pdi->highpc;
9129           if (set_addrmap)
9130             {
9131               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9132               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9133               CORE_ADDR baseaddr;
9134               CORE_ADDR this_highpc;
9135               CORE_ADDR this_lowpc;
9136
9137               baseaddr = ANOFFSET (objfile->section_offsets,
9138                                    SECT_OFF_TEXT (objfile));
9139               this_lowpc
9140                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9141                                                pdi->lowpc + baseaddr)
9142                    - baseaddr);
9143               this_highpc
9144                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9145                                                pdi->highpc + baseaddr)
9146                    - baseaddr);
9147               addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
9148                                  this_lowpc, this_highpc - 1,
9149                                  cu->per_cu->v.psymtab);
9150             }
9151         }
9152
9153       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9154         {
9155           if (!pdi->is_declaration)
9156             /* Ignore subprogram DIEs that do not have a name, they are
9157                illegal.  Do not emit a complaint at this point, we will
9158                do so when we convert this psymtab into a symtab.  */
9159             if (pdi->name)
9160               add_partial_symbol (pdi, cu);
9161         }
9162     }
9163
9164   if (! pdi->has_children)
9165     return;
9166
9167   if (cu->language == language_ada)
9168     {
9169       pdi = pdi->die_child;
9170       while (pdi != NULL)
9171         {
9172           pdi->fixup (cu);
9173           if (pdi->tag == DW_TAG_subprogram
9174               || pdi->tag == DW_TAG_inlined_subroutine
9175               || pdi->tag == DW_TAG_lexical_block)
9176             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9177           pdi = pdi->die_sibling;
9178         }
9179     }
9180 }
9181
9182 /* Read a partial die corresponding to an enumeration type.  */
9183
9184 static void
9185 add_partial_enumeration (struct partial_die_info *enum_pdi,
9186                          struct dwarf2_cu *cu)
9187 {
9188   struct partial_die_info *pdi;
9189
9190   if (enum_pdi->name != NULL)
9191     add_partial_symbol (enum_pdi, cu);
9192
9193   pdi = enum_pdi->die_child;
9194   while (pdi)
9195     {
9196       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9197         complaint (_("malformed enumerator DIE ignored"));
9198       else
9199         add_partial_symbol (pdi, cu);
9200       pdi = pdi->die_sibling;
9201     }
9202 }
9203
9204 /* Return the initial uleb128 in the die at INFO_PTR.  */
9205
9206 static unsigned int
9207 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9208 {
9209   unsigned int bytes_read;
9210
9211   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9212 }
9213
9214 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9215    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9216
9217    Return the corresponding abbrev, or NULL if the number is zero (indicating
9218    an empty DIE).  In either case *BYTES_READ will be set to the length of
9219    the initial number.  */
9220
9221 static struct abbrev_info *
9222 peek_die_abbrev (const die_reader_specs &reader,
9223                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9224 {
9225   dwarf2_cu *cu = reader.cu;
9226   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9227   unsigned int abbrev_number
9228     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9229
9230   if (abbrev_number == 0)
9231     return NULL;
9232
9233   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9234   if (!abbrev)
9235     {
9236       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9237                " at offset %s [in module %s]"),
9238              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9239              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9240     }
9241
9242   return abbrev;
9243 }
9244
9245 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9246    Returns a pointer to the end of a series of DIEs, terminated by an empty
9247    DIE.  Any children of the skipped DIEs will also be skipped.  */
9248
9249 static const gdb_byte *
9250 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9251 {
9252   while (1)
9253     {
9254       unsigned int bytes_read;
9255       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9256
9257       if (abbrev == NULL)
9258         return info_ptr + bytes_read;
9259       else
9260         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9261     }
9262 }
9263
9264 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9265    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9266    abbrev corresponding to that skipped uleb128 should be passed in
9267    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9268    children.  */
9269
9270 static const gdb_byte *
9271 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9272               struct abbrev_info *abbrev)
9273 {
9274   unsigned int bytes_read;
9275   struct attribute attr;
9276   bfd *abfd = reader->abfd;
9277   struct dwarf2_cu *cu = reader->cu;
9278   const gdb_byte *buffer = reader->buffer;
9279   const gdb_byte *buffer_end = reader->buffer_end;
9280   unsigned int form, i;
9281
9282   for (i = 0; i < abbrev->num_attrs; i++)
9283     {
9284       /* The only abbrev we care about is DW_AT_sibling.  */
9285       if (abbrev->attrs[i].name == DW_AT_sibling)
9286         {
9287           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9288           if (attr.form == DW_FORM_ref_addr)
9289             complaint (_("ignoring absolute DW_AT_sibling"));
9290           else
9291             {
9292               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9293               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9294
9295               if (sibling_ptr < info_ptr)
9296                 complaint (_("DW_AT_sibling points backwards"));
9297               else if (sibling_ptr > reader->buffer_end)
9298                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9299               else
9300                 return sibling_ptr;
9301             }
9302         }
9303
9304       /* If it isn't DW_AT_sibling, skip this attribute.  */
9305       form = abbrev->attrs[i].form;
9306     skip_attribute:
9307       switch (form)
9308         {
9309         case DW_FORM_ref_addr:
9310           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9311              and later it is offset sized.  */
9312           if (cu->header.version == 2)
9313             info_ptr += cu->header.addr_size;
9314           else
9315             info_ptr += cu->header.offset_size;
9316           break;
9317         case DW_FORM_GNU_ref_alt:
9318           info_ptr += cu->header.offset_size;
9319           break;
9320         case DW_FORM_addr:
9321           info_ptr += cu->header.addr_size;
9322           break;
9323         case DW_FORM_data1:
9324         case DW_FORM_ref1:
9325         case DW_FORM_flag:
9326           info_ptr += 1;
9327           break;
9328         case DW_FORM_flag_present:
9329         case DW_FORM_implicit_const:
9330           break;
9331         case DW_FORM_data2:
9332         case DW_FORM_ref2:
9333           info_ptr += 2;
9334           break;
9335         case DW_FORM_data4:
9336         case DW_FORM_ref4:
9337           info_ptr += 4;
9338           break;
9339         case DW_FORM_data8:
9340         case DW_FORM_ref8:
9341         case DW_FORM_ref_sig8:
9342           info_ptr += 8;
9343           break;
9344         case DW_FORM_data16:
9345           info_ptr += 16;
9346           break;
9347         case DW_FORM_string:
9348           read_direct_string (abfd, info_ptr, &bytes_read);
9349           info_ptr += bytes_read;
9350           break;
9351         case DW_FORM_sec_offset:
9352         case DW_FORM_strp:
9353         case DW_FORM_GNU_strp_alt:
9354           info_ptr += cu->header.offset_size;
9355           break;
9356         case DW_FORM_exprloc:
9357         case DW_FORM_block:
9358           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9359           info_ptr += bytes_read;
9360           break;
9361         case DW_FORM_block1:
9362           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9363           break;
9364         case DW_FORM_block2:
9365           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9366           break;
9367         case DW_FORM_block4:
9368           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9369           break;
9370         case DW_FORM_addrx:
9371         case DW_FORM_strx:
9372         case DW_FORM_sdata:
9373         case DW_FORM_udata:
9374         case DW_FORM_ref_udata:
9375         case DW_FORM_GNU_addr_index:
9376         case DW_FORM_GNU_str_index:
9377           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9378           break;
9379         case DW_FORM_indirect:
9380           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9381           info_ptr += bytes_read;
9382           /* We need to continue parsing from here, so just go back to
9383              the top.  */
9384           goto skip_attribute;
9385
9386         default:
9387           error (_("Dwarf Error: Cannot handle %s "
9388                    "in DWARF reader [in module %s]"),
9389                  dwarf_form_name (form),
9390                  bfd_get_filename (abfd));
9391         }
9392     }
9393
9394   if (abbrev->has_children)
9395     return skip_children (reader, info_ptr);
9396   else
9397     return info_ptr;
9398 }
9399
9400 /* Locate ORIG_PDI's sibling.
9401    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9402
9403 static const gdb_byte *
9404 locate_pdi_sibling (const struct die_reader_specs *reader,
9405                     struct partial_die_info *orig_pdi,
9406                     const gdb_byte *info_ptr)
9407 {
9408   /* Do we know the sibling already?  */
9409
9410   if (orig_pdi->sibling)
9411     return orig_pdi->sibling;
9412
9413   /* Are there any children to deal with?  */
9414
9415   if (!orig_pdi->has_children)
9416     return info_ptr;
9417
9418   /* Skip the children the long way.  */
9419
9420   return skip_children (reader, info_ptr);
9421 }
9422
9423 /* Expand this partial symbol table into a full symbol table.  SELF is
9424    not NULL.  */
9425
9426 static void
9427 dwarf2_read_symtab (struct partial_symtab *self,
9428                     struct objfile *objfile)
9429 {
9430   struct dwarf2_per_objfile *dwarf2_per_objfile
9431     = get_dwarf2_per_objfile (objfile);
9432
9433   if (self->readin)
9434     {
9435       warning (_("bug: psymtab for %s is already read in."),
9436                self->filename);
9437     }
9438   else
9439     {
9440       if (info_verbose)
9441         {
9442           printf_filtered (_("Reading in symbols for %s..."),
9443                            self->filename);
9444           gdb_flush (gdb_stdout);
9445         }
9446
9447       /* If this psymtab is constructed from a debug-only objfile, the
9448          has_section_at_zero flag will not necessarily be correct.  We
9449          can get the correct value for this flag by looking at the data
9450          associated with the (presumably stripped) associated objfile.  */
9451       if (objfile->separate_debug_objfile_backlink)
9452         {
9453           struct dwarf2_per_objfile *dpo_backlink
9454             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9455
9456           dwarf2_per_objfile->has_section_at_zero
9457             = dpo_backlink->has_section_at_zero;
9458         }
9459
9460       dwarf2_per_objfile->reading_partial_symbols = 0;
9461
9462       psymtab_to_symtab_1 (self);
9463
9464       /* Finish up the debug error message.  */
9465       if (info_verbose)
9466         printf_filtered (_("done.\n"));
9467     }
9468
9469   process_cu_includes (dwarf2_per_objfile);
9470 }
9471 \f
9472 /* Reading in full CUs.  */
9473
9474 /* Add PER_CU to the queue.  */
9475
9476 static void
9477 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9478                  enum language pretend_language)
9479 {
9480   struct dwarf2_queue_item *item;
9481
9482   per_cu->queued = 1;
9483   item = XNEW (struct dwarf2_queue_item);
9484   item->per_cu = per_cu;
9485   item->pretend_language = pretend_language;
9486   item->next = NULL;
9487
9488   if (dwarf2_queue == NULL)
9489     dwarf2_queue = item;
9490   else
9491     dwarf2_queue_tail->next = item;
9492
9493   dwarf2_queue_tail = item;
9494 }
9495
9496 /* If PER_CU is not yet queued, add it to the queue.
9497    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9498    dependency.
9499    The result is non-zero if PER_CU was queued, otherwise the result is zero
9500    meaning either PER_CU is already queued or it is already loaded.
9501
9502    N.B. There is an invariant here that if a CU is queued then it is loaded.
9503    The caller is required to load PER_CU if we return non-zero.  */
9504
9505 static int
9506 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9507                        struct dwarf2_per_cu_data *per_cu,
9508                        enum language pretend_language)
9509 {
9510   /* We may arrive here during partial symbol reading, if we need full
9511      DIEs to process an unusual case (e.g. template arguments).  Do
9512      not queue PER_CU, just tell our caller to load its DIEs.  */
9513   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9514     {
9515       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9516         return 1;
9517       return 0;
9518     }
9519
9520   /* Mark the dependence relation so that we don't flush PER_CU
9521      too early.  */
9522   if (dependent_cu != NULL)
9523     dwarf2_add_dependence (dependent_cu, per_cu);
9524
9525   /* If it's already on the queue, we have nothing to do.  */
9526   if (per_cu->queued)
9527     return 0;
9528
9529   /* If the compilation unit is already loaded, just mark it as
9530      used.  */
9531   if (per_cu->cu != NULL)
9532     {
9533       per_cu->cu->last_used = 0;
9534       return 0;
9535     }
9536
9537   /* Add it to the queue.  */
9538   queue_comp_unit (per_cu, pretend_language);
9539
9540   return 1;
9541 }
9542
9543 /* Process the queue.  */
9544
9545 static void
9546 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9547 {
9548   struct dwarf2_queue_item *item, *next_item;
9549
9550   if (dwarf_read_debug)
9551     {
9552       fprintf_unfiltered (gdb_stdlog,
9553                           "Expanding one or more symtabs of objfile %s ...\n",
9554                           objfile_name (dwarf2_per_objfile->objfile));
9555     }
9556
9557   /* The queue starts out with one item, but following a DIE reference
9558      may load a new CU, adding it to the end of the queue.  */
9559   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9560     {
9561       if ((dwarf2_per_objfile->using_index
9562            ? !item->per_cu->v.quick->compunit_symtab
9563            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9564           /* Skip dummy CUs.  */
9565           && item->per_cu->cu != NULL)
9566         {
9567           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9568           unsigned int debug_print_threshold;
9569           char buf[100];
9570
9571           if (per_cu->is_debug_types)
9572             {
9573               struct signatured_type *sig_type =
9574                 (struct signatured_type *) per_cu;
9575
9576               sprintf (buf, "TU %s at offset %s",
9577                        hex_string (sig_type->signature),
9578                        sect_offset_str (per_cu->sect_off));
9579               /* There can be 100s of TUs.
9580                  Only print them in verbose mode.  */
9581               debug_print_threshold = 2;
9582             }
9583           else
9584             {
9585               sprintf (buf, "CU at offset %s",
9586                        sect_offset_str (per_cu->sect_off));
9587               debug_print_threshold = 1;
9588             }
9589
9590           if (dwarf_read_debug >= debug_print_threshold)
9591             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9592
9593           if (per_cu->is_debug_types)
9594             process_full_type_unit (per_cu, item->pretend_language);
9595           else
9596             process_full_comp_unit (per_cu, item->pretend_language);
9597
9598           if (dwarf_read_debug >= debug_print_threshold)
9599             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9600         }
9601
9602       item->per_cu->queued = 0;
9603       next_item = item->next;
9604       xfree (item);
9605     }
9606
9607   dwarf2_queue_tail = NULL;
9608
9609   if (dwarf_read_debug)
9610     {
9611       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9612                           objfile_name (dwarf2_per_objfile->objfile));
9613     }
9614 }
9615
9616 /* Read in full symbols for PST, and anything it depends on.  */
9617
9618 static void
9619 psymtab_to_symtab_1 (struct partial_symtab *pst)
9620 {
9621   struct dwarf2_per_cu_data *per_cu;
9622   int i;
9623
9624   if (pst->readin)
9625     return;
9626
9627   for (i = 0; i < pst->number_of_dependencies; i++)
9628     if (!pst->dependencies[i]->readin
9629         && pst->dependencies[i]->user == NULL)
9630       {
9631         /* Inform about additional files that need to be read in.  */
9632         if (info_verbose)
9633           {
9634             /* FIXME: i18n: Need to make this a single string.  */
9635             fputs_filtered (" ", gdb_stdout);
9636             wrap_here ("");
9637             fputs_filtered ("and ", gdb_stdout);
9638             wrap_here ("");
9639             printf_filtered ("%s...", pst->dependencies[i]->filename);
9640             wrap_here ("");     /* Flush output.  */
9641             gdb_flush (gdb_stdout);
9642           }
9643         psymtab_to_symtab_1 (pst->dependencies[i]);
9644       }
9645
9646   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9647
9648   if (per_cu == NULL)
9649     {
9650       /* It's an include file, no symbols to read for it.
9651          Everything is in the parent symtab.  */
9652       pst->readin = 1;
9653       return;
9654     }
9655
9656   dw2_do_instantiate_symtab (per_cu, false);
9657 }
9658
9659 /* Trivial hash function for die_info: the hash value of a DIE
9660    is its offset in .debug_info for this objfile.  */
9661
9662 static hashval_t
9663 die_hash (const void *item)
9664 {
9665   const struct die_info *die = (const struct die_info *) item;
9666
9667   return to_underlying (die->sect_off);
9668 }
9669
9670 /* Trivial comparison function for die_info structures: two DIEs
9671    are equal if they have the same offset.  */
9672
9673 static int
9674 die_eq (const void *item_lhs, const void *item_rhs)
9675 {
9676   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9677   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9678
9679   return die_lhs->sect_off == die_rhs->sect_off;
9680 }
9681
9682 /* die_reader_func for load_full_comp_unit.
9683    This is identical to read_signatured_type_reader,
9684    but is kept separate for now.  */
9685
9686 static void
9687 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9688                             const gdb_byte *info_ptr,
9689                             struct die_info *comp_unit_die,
9690                             int has_children,
9691                             void *data)
9692 {
9693   struct dwarf2_cu *cu = reader->cu;
9694   enum language *language_ptr = (enum language *) data;
9695
9696   gdb_assert (cu->die_hash == NULL);
9697   cu->die_hash =
9698     htab_create_alloc_ex (cu->header.length / 12,
9699                           die_hash,
9700                           die_eq,
9701                           NULL,
9702                           &cu->comp_unit_obstack,
9703                           hashtab_obstack_allocate,
9704                           dummy_obstack_deallocate);
9705
9706   if (has_children)
9707     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9708                                                   &info_ptr, comp_unit_die);
9709   cu->dies = comp_unit_die;
9710   /* comp_unit_die is not stored in die_hash, no need.  */
9711
9712   /* We try not to read any attributes in this function, because not
9713      all CUs needed for references have been loaded yet, and symbol
9714      table processing isn't initialized.  But we have to set the CU language,
9715      or we won't be able to build types correctly.
9716      Similarly, if we do not read the producer, we can not apply
9717      producer-specific interpretation.  */
9718   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9719 }
9720
9721 /* Load the DIEs associated with PER_CU into memory.  */
9722
9723 static void
9724 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9725                      bool skip_partial,
9726                      enum language pretend_language)
9727 {
9728   gdb_assert (! this_cu->is_debug_types);
9729
9730   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9731                            load_full_comp_unit_reader, &pretend_language);
9732 }
9733
9734 /* Add a DIE to the delayed physname list.  */
9735
9736 static void
9737 add_to_method_list (struct type *type, int fnfield_index, int index,
9738                     const char *name, struct die_info *die,
9739                     struct dwarf2_cu *cu)
9740 {
9741   struct delayed_method_info mi;
9742   mi.type = type;
9743   mi.fnfield_index = fnfield_index;
9744   mi.index = index;
9745   mi.name = name;
9746   mi.die = die;
9747   cu->method_list.push_back (mi);
9748 }
9749
9750 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9751    "const" / "volatile".  If so, decrements LEN by the length of the
9752    modifier and return true.  Otherwise return false.  */
9753
9754 template<size_t N>
9755 static bool
9756 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9757 {
9758   size_t mod_len = sizeof (mod) - 1;
9759   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9760     {
9761       len -= mod_len;
9762       return true;
9763     }
9764   return false;
9765 }
9766
9767 /* Compute the physnames of any methods on the CU's method list.
9768
9769    The computation of method physnames is delayed in order to avoid the
9770    (bad) condition that one of the method's formal parameters is of an as yet
9771    incomplete type.  */
9772
9773 static void
9774 compute_delayed_physnames (struct dwarf2_cu *cu)
9775 {
9776   /* Only C++ delays computing physnames.  */
9777   if (cu->method_list.empty ())
9778     return;
9779   gdb_assert (cu->language == language_cplus);
9780
9781   for (const delayed_method_info &mi : cu->method_list)
9782     {
9783       const char *physname;
9784       struct fn_fieldlist *fn_flp
9785         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9786       physname = dwarf2_physname (mi.name, mi.die, cu);
9787       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9788         = physname ? physname : "";
9789
9790       /* Since there's no tag to indicate whether a method is a
9791          const/volatile overload, extract that information out of the
9792          demangled name.  */
9793       if (physname != NULL)
9794         {
9795           size_t len = strlen (physname);
9796
9797           while (1)
9798             {
9799               if (physname[len] == ')') /* shortcut */
9800                 break;
9801               else if (check_modifier (physname, len, " const"))
9802                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9803               else if (check_modifier (physname, len, " volatile"))
9804                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9805               else
9806                 break;
9807             }
9808         }
9809     }
9810
9811   /* The list is no longer needed.  */
9812   cu->method_list.clear ();
9813 }
9814
9815 /* Go objects should be embedded in a DW_TAG_module DIE,
9816    and it's not clear if/how imported objects will appear.
9817    To keep Go support simple until that's worked out,
9818    go back through what we've read and create something usable.
9819    We could do this while processing each DIE, and feels kinda cleaner,
9820    but that way is more invasive.
9821    This is to, for example, allow the user to type "p var" or "b main"
9822    without having to specify the package name, and allow lookups
9823    of module.object to work in contexts that use the expression
9824    parser.  */
9825
9826 static void
9827 fixup_go_packaging (struct dwarf2_cu *cu)
9828 {
9829   char *package_name = NULL;
9830   struct pending *list;
9831   int i;
9832
9833   for (list = *cu->get_builder ()->get_global_symbols ();
9834        list != NULL;
9835        list = list->next)
9836     {
9837       for (i = 0; i < list->nsyms; ++i)
9838         {
9839           struct symbol *sym = list->symbol[i];
9840
9841           if (SYMBOL_LANGUAGE (sym) == language_go
9842               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9843             {
9844               char *this_package_name = go_symbol_package_name (sym);
9845
9846               if (this_package_name == NULL)
9847                 continue;
9848               if (package_name == NULL)
9849                 package_name = this_package_name;
9850               else
9851                 {
9852                   struct objfile *objfile
9853                     = cu->per_cu->dwarf2_per_objfile->objfile;
9854                   if (strcmp (package_name, this_package_name) != 0)
9855                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9856                                (symbol_symtab (sym) != NULL
9857                                 ? symtab_to_filename_for_display
9858                                     (symbol_symtab (sym))
9859                                 : objfile_name (objfile)),
9860                                this_package_name, package_name);
9861                   xfree (this_package_name);
9862                 }
9863             }
9864         }
9865     }
9866
9867   if (package_name != NULL)
9868     {
9869       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9870       const char *saved_package_name
9871         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9872                                         package_name,
9873                                         strlen (package_name));
9874       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9875                                      saved_package_name);
9876       struct symbol *sym;
9877
9878       sym = allocate_symbol (objfile);
9879       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9880       SYMBOL_SET_NAMES (sym, saved_package_name,
9881                         strlen (saved_package_name), 0, objfile);
9882       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9883          e.g., "main" finds the "main" module and not C's main().  */
9884       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9885       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9886       SYMBOL_TYPE (sym) = type;
9887
9888       add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9889
9890       xfree (package_name);
9891     }
9892 }
9893
9894 /* Allocate a fully-qualified name consisting of the two parts on the
9895    obstack.  */
9896
9897 static const char *
9898 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9899 {
9900   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9901 }
9902
9903 /* A helper that allocates a struct discriminant_info to attach to a
9904    union type.  */
9905
9906 static struct discriminant_info *
9907 alloc_discriminant_info (struct type *type, int discriminant_index,
9908                          int default_index)
9909 {
9910   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9911   gdb_assert (discriminant_index == -1
9912               || (discriminant_index >= 0
9913                   && discriminant_index < TYPE_NFIELDS (type)));
9914   gdb_assert (default_index == -1
9915               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9916
9917   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9918
9919   struct discriminant_info *disc
9920     = ((struct discriminant_info *)
9921        TYPE_ZALLOC (type,
9922                     offsetof (struct discriminant_info, discriminants)
9923                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9924   disc->default_index = default_index;
9925   disc->discriminant_index = discriminant_index;
9926
9927   struct dynamic_prop prop;
9928   prop.kind = PROP_UNDEFINED;
9929   prop.data.baton = disc;
9930
9931   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9932
9933   return disc;
9934 }
9935
9936 /* Some versions of rustc emitted enums in an unusual way.
9937
9938    Ordinary enums were emitted as unions.  The first element of each
9939    structure in the union was named "RUST$ENUM$DISR".  This element
9940    held the discriminant.
9941
9942    These versions of Rust also implemented the "non-zero"
9943    optimization.  When the enum had two values, and one is empty and
9944    the other holds a pointer that cannot be zero, the pointer is used
9945    as the discriminant, with a zero value meaning the empty variant.
9946    Here, the union's first member is of the form
9947    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9948    where the fieldnos are the indices of the fields that should be
9949    traversed in order to find the field (which may be several fields deep)
9950    and the variantname is the name of the variant of the case when the
9951    field is zero.
9952
9953    This function recognizes whether TYPE is of one of these forms,
9954    and, if so, smashes it to be a variant type.  */
9955
9956 static void
9957 quirk_rust_enum (struct type *type, struct objfile *objfile)
9958 {
9959   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9960
9961   /* We don't need to deal with empty enums.  */
9962   if (TYPE_NFIELDS (type) == 0)
9963     return;
9964
9965 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9966   if (TYPE_NFIELDS (type) == 1
9967       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9968     {
9969       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9970
9971       /* Decode the field name to find the offset of the
9972          discriminant.  */
9973       ULONGEST bit_offset = 0;
9974       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9975       while (name[0] >= '0' && name[0] <= '9')
9976         {
9977           char *tail;
9978           unsigned long index = strtoul (name, &tail, 10);
9979           name = tail;
9980           if (*name != '$'
9981               || index >= TYPE_NFIELDS (field_type)
9982               || (TYPE_FIELD_LOC_KIND (field_type, index)
9983                   != FIELD_LOC_KIND_BITPOS))
9984             {
9985               complaint (_("Could not parse Rust enum encoding string \"%s\""
9986                            "[in module %s]"),
9987                          TYPE_FIELD_NAME (type, 0),
9988                          objfile_name (objfile));
9989               return;
9990             }
9991           ++name;
9992
9993           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9994           field_type = TYPE_FIELD_TYPE (field_type, index);
9995         }
9996
9997       /* Make a union to hold the variants.  */
9998       struct type *union_type = alloc_type (objfile);
9999       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10000       TYPE_NFIELDS (union_type) = 3;
10001       TYPE_FIELDS (union_type)
10002         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
10003       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10004       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10005
10006       /* Put the discriminant must at index 0.  */
10007       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10008       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10009       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10010       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10011
10012       /* The order of fields doesn't really matter, so put the real
10013          field at index 1 and the data-less field at index 2.  */
10014       struct discriminant_info *disc
10015         = alloc_discriminant_info (union_type, 0, 1);
10016       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10017       TYPE_FIELD_NAME (union_type, 1)
10018         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10019       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10020         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10021                               TYPE_FIELD_NAME (union_type, 1));
10022
10023       const char *dataless_name
10024         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10025                               name);
10026       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10027                                               dataless_name);
10028       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10029       /* NAME points into the original discriminant name, which
10030          already has the correct lifetime.  */
10031       TYPE_FIELD_NAME (union_type, 2) = name;
10032       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10033       disc->discriminants[2] = 0;
10034
10035       /* Smash this type to be a structure type.  We have to do this
10036          because the type has already been recorded.  */
10037       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10038       TYPE_NFIELDS (type) = 1;
10039       TYPE_FIELDS (type)
10040         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10041
10042       /* Install the variant part.  */
10043       TYPE_FIELD_TYPE (type, 0) = union_type;
10044       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10045       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10046     }
10047   else if (TYPE_NFIELDS (type) == 1)
10048     {
10049       /* We assume that a union with a single field is a univariant
10050          enum.  */
10051       /* Smash this type to be a structure type.  We have to do this
10052          because the type has already been recorded.  */
10053       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10054
10055       /* Make a union to hold the variants.  */
10056       struct type *union_type = alloc_type (objfile);
10057       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10058       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10059       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10060       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10061       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10062
10063       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10064       const char *variant_name
10065         = rust_last_path_segment (TYPE_NAME (field_type));
10066       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10067       TYPE_NAME (field_type)
10068         = rust_fully_qualify (&objfile->objfile_obstack,
10069                               TYPE_NAME (type), variant_name);
10070
10071       /* Install the union in the outer struct type.  */
10072       TYPE_NFIELDS (type) = 1;
10073       TYPE_FIELDS (type)
10074         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10075       TYPE_FIELD_TYPE (type, 0) = union_type;
10076       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10077       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10078
10079       alloc_discriminant_info (union_type, -1, 0);
10080     }
10081   else
10082     {
10083       struct type *disr_type = nullptr;
10084       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10085         {
10086           disr_type = TYPE_FIELD_TYPE (type, i);
10087
10088           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10089             {
10090               /* All fields of a true enum will be structs.  */
10091               return;
10092             }
10093           else if (TYPE_NFIELDS (disr_type) == 0)
10094             {
10095               /* Could be data-less variant, so keep going.  */
10096               disr_type = nullptr;
10097             }
10098           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10099                            "RUST$ENUM$DISR") != 0)
10100             {
10101               /* Not a Rust enum.  */
10102               return;
10103             }
10104           else
10105             {
10106               /* Found one.  */
10107               break;
10108             }
10109         }
10110
10111       /* If we got here without a discriminant, then it's probably
10112          just a union.  */
10113       if (disr_type == nullptr)
10114         return;
10115
10116       /* Smash this type to be a structure type.  We have to do this
10117          because the type has already been recorded.  */
10118       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10119
10120       /* Make a union to hold the variants.  */
10121       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10122       struct type *union_type = alloc_type (objfile);
10123       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10124       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10125       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10126       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10127       TYPE_FIELDS (union_type)
10128         = (struct field *) TYPE_ZALLOC (union_type,
10129                                         (TYPE_NFIELDS (union_type)
10130                                          * sizeof (struct field)));
10131
10132       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10133               TYPE_NFIELDS (type) * sizeof (struct field));
10134
10135       /* Install the discriminant at index 0 in the union.  */
10136       TYPE_FIELD (union_type, 0) = *disr_field;
10137       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10138       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10139
10140       /* Install the union in the outer struct type.  */
10141       TYPE_FIELD_TYPE (type, 0) = union_type;
10142       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10143       TYPE_NFIELDS (type) = 1;
10144
10145       /* Set the size and offset of the union type.  */
10146       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10147
10148       /* We need a way to find the correct discriminant given a
10149          variant name.  For convenience we build a map here.  */
10150       struct type *enum_type = FIELD_TYPE (*disr_field);
10151       std::unordered_map<std::string, ULONGEST> discriminant_map;
10152       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10153         {
10154           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10155             {
10156               const char *name
10157                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10158               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10159             }
10160         }
10161
10162       int n_fields = TYPE_NFIELDS (union_type);
10163       struct discriminant_info *disc
10164         = alloc_discriminant_info (union_type, 0, -1);
10165       /* Skip the discriminant here.  */
10166       for (int i = 1; i < n_fields; ++i)
10167         {
10168           /* Find the final word in the name of this variant's type.
10169              That name can be used to look up the correct
10170              discriminant.  */
10171           const char *variant_name
10172             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10173                                                                   i)));
10174
10175           auto iter = discriminant_map.find (variant_name);
10176           if (iter != discriminant_map.end ())
10177             disc->discriminants[i] = iter->second;
10178
10179           /* Remove the discriminant field, if it exists.  */
10180           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10181           if (TYPE_NFIELDS (sub_type) > 0)
10182             {
10183               --TYPE_NFIELDS (sub_type);
10184               ++TYPE_FIELDS (sub_type);
10185             }
10186           TYPE_FIELD_NAME (union_type, i) = variant_name;
10187           TYPE_NAME (sub_type)
10188             = rust_fully_qualify (&objfile->objfile_obstack,
10189                                   TYPE_NAME (type), variant_name);
10190         }
10191     }
10192 }
10193
10194 /* Rewrite some Rust unions to be structures with variants parts.  */
10195
10196 static void
10197 rust_union_quirks (struct dwarf2_cu *cu)
10198 {
10199   gdb_assert (cu->language == language_rust);
10200   for (type *type_ : cu->rust_unions)
10201     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10202   /* We don't need this any more.  */
10203   cu->rust_unions.clear ();
10204 }
10205
10206 /* Return the symtab for PER_CU.  This works properly regardless of
10207    whether we're using the index or psymtabs.  */
10208
10209 static struct compunit_symtab *
10210 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10211 {
10212   return (per_cu->dwarf2_per_objfile->using_index
10213           ? per_cu->v.quick->compunit_symtab
10214           : per_cu->v.psymtab->compunit_symtab);
10215 }
10216
10217 /* A helper function for computing the list of all symbol tables
10218    included by PER_CU.  */
10219
10220 static void
10221 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
10222                                 htab_t all_children, htab_t all_type_symtabs,
10223                                 struct dwarf2_per_cu_data *per_cu,
10224                                 struct compunit_symtab *immediate_parent)
10225 {
10226   void **slot;
10227   int ix;
10228   struct compunit_symtab *cust;
10229   struct dwarf2_per_cu_data *iter;
10230
10231   slot = htab_find_slot (all_children, per_cu, INSERT);
10232   if (*slot != NULL)
10233     {
10234       /* This inclusion and its children have been processed.  */
10235       return;
10236     }
10237
10238   *slot = per_cu;
10239   /* Only add a CU if it has a symbol table.  */
10240   cust = get_compunit_symtab (per_cu);
10241   if (cust != NULL)
10242     {
10243       /* If this is a type unit only add its symbol table if we haven't
10244          seen it yet (type unit per_cu's can share symtabs).  */
10245       if (per_cu->is_debug_types)
10246         {
10247           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10248           if (*slot == NULL)
10249             {
10250               *slot = cust;
10251               result->push_back (cust);
10252               if (cust->user == NULL)
10253                 cust->user = immediate_parent;
10254             }
10255         }
10256       else
10257         {
10258           result->push_back (cust);
10259           if (cust->user == NULL)
10260             cust->user = immediate_parent;
10261         }
10262     }
10263
10264   for (ix = 0;
10265        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10266        ++ix)
10267     {
10268       recursively_compute_inclusions (result, all_children,
10269                                       all_type_symtabs, iter, cust);
10270     }
10271 }
10272
10273 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10274    PER_CU.  */
10275
10276 static void
10277 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10278 {
10279   gdb_assert (! per_cu->is_debug_types);
10280
10281   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10282     {
10283       int ix, len;
10284       struct dwarf2_per_cu_data *per_cu_iter;
10285       std::vector<compunit_symtab *> result_symtabs;
10286       htab_t all_children, all_type_symtabs;
10287       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10288
10289       /* If we don't have a symtab, we can just skip this case.  */
10290       if (cust == NULL)
10291         return;
10292
10293       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10294                                         NULL, xcalloc, xfree);
10295       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10296                                             NULL, xcalloc, xfree);
10297
10298       for (ix = 0;
10299            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10300                         ix, per_cu_iter);
10301            ++ix)
10302         {
10303           recursively_compute_inclusions (&result_symtabs, all_children,
10304                                           all_type_symtabs, per_cu_iter,
10305                                           cust);
10306         }
10307
10308       /* Now we have a transitive closure of all the included symtabs.  */
10309       len = result_symtabs.size ();
10310       cust->includes
10311         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10312                      struct compunit_symtab *, len + 1);
10313       memcpy (cust->includes, result_symtabs.data (),
10314               len * sizeof (compunit_symtab *));
10315       cust->includes[len] = NULL;
10316
10317       htab_delete (all_children);
10318       htab_delete (all_type_symtabs);
10319     }
10320 }
10321
10322 /* Compute the 'includes' field for the symtabs of all the CUs we just
10323    read.  */
10324
10325 static void
10326 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10327 {
10328   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10329     {
10330       if (! iter->is_debug_types)
10331         compute_compunit_symtab_includes (iter);
10332     }
10333
10334   dwarf2_per_objfile->just_read_cus.clear ();
10335 }
10336
10337 /* Generate full symbol information for PER_CU, whose DIEs have
10338    already been loaded into memory.  */
10339
10340 static void
10341 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10342                         enum language pretend_language)
10343 {
10344   struct dwarf2_cu *cu = per_cu->cu;
10345   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10346   struct objfile *objfile = dwarf2_per_objfile->objfile;
10347   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10348   CORE_ADDR lowpc, highpc;
10349   struct compunit_symtab *cust;
10350   CORE_ADDR baseaddr;
10351   struct block *static_block;
10352   CORE_ADDR addr;
10353
10354   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10355
10356   /* Clear the list here in case something was left over.  */
10357   cu->method_list.clear ();
10358
10359   cu->language = pretend_language;
10360   cu->language_defn = language_def (cu->language);
10361
10362   /* Do line number decoding in read_file_scope () */
10363   process_die (cu->dies, cu);
10364
10365   /* For now fudge the Go package.  */
10366   if (cu->language == language_go)
10367     fixup_go_packaging (cu);
10368
10369   /* Now that we have processed all the DIEs in the CU, all the types 
10370      should be complete, and it should now be safe to compute all of the
10371      physnames.  */
10372   compute_delayed_physnames (cu);
10373
10374   if (cu->language == language_rust)
10375     rust_union_quirks (cu);
10376
10377   /* Some compilers don't define a DW_AT_high_pc attribute for the
10378      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10379      it, by scanning the DIE's below the compilation unit.  */
10380   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10381
10382   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10383   static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
10384
10385   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10386      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10387      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10388      addrmap to help ensure it has an accurate map of pc values belonging to
10389      this comp unit.  */
10390   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10391
10392   cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10393                                                     SECT_OFF_TEXT (objfile),
10394                                                     0);
10395
10396   if (cust != NULL)
10397     {
10398       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10399
10400       /* Set symtab language to language from DW_AT_language.  If the
10401          compilation is from a C file generated by language preprocessors, do
10402          not set the language if it was already deduced by start_subfile.  */
10403       if (!(cu->language == language_c
10404             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10405         COMPUNIT_FILETABS (cust)->language = cu->language;
10406
10407       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10408          produce DW_AT_location with location lists but it can be possibly
10409          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10410          there were bugs in prologue debug info, fixed later in GCC-4.5
10411          by "unwind info for epilogues" patch (which is not directly related).
10412
10413          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10414          needed, it would be wrong due to missing DW_AT_producer there.
10415
10416          Still one can confuse GDB by using non-standard GCC compilation
10417          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10418          */ 
10419       if (cu->has_loclist && gcc_4_minor >= 5)
10420         cust->locations_valid = 1;
10421
10422       if (gcc_4_minor >= 5)
10423         cust->epilogue_unwind_valid = 1;
10424
10425       cust->call_site_htab = cu->call_site_htab;
10426     }
10427
10428   if (dwarf2_per_objfile->using_index)
10429     per_cu->v.quick->compunit_symtab = cust;
10430   else
10431     {
10432       struct partial_symtab *pst = per_cu->v.psymtab;
10433       pst->compunit_symtab = cust;
10434       pst->readin = 1;
10435     }
10436
10437   /* Push it for inclusion processing later.  */
10438   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10439
10440   /* Not needed any more.  */
10441   cu->reset_builder ();
10442 }
10443
10444 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10445    already been loaded into memory.  */
10446
10447 static void
10448 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10449                         enum language pretend_language)
10450 {
10451   struct dwarf2_cu *cu = per_cu->cu;
10452   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10453   struct objfile *objfile = dwarf2_per_objfile->objfile;
10454   struct compunit_symtab *cust;
10455   struct signatured_type *sig_type;
10456
10457   gdb_assert (per_cu->is_debug_types);
10458   sig_type = (struct signatured_type *) per_cu;
10459
10460   /* Clear the list here in case something was left over.  */
10461   cu->method_list.clear ();
10462
10463   cu->language = pretend_language;
10464   cu->language_defn = language_def (cu->language);
10465
10466   /* The symbol tables are set up in read_type_unit_scope.  */
10467   process_die (cu->dies, cu);
10468
10469   /* For now fudge the Go package.  */
10470   if (cu->language == language_go)
10471     fixup_go_packaging (cu);
10472
10473   /* Now that we have processed all the DIEs in the CU, all the types 
10474      should be complete, and it should now be safe to compute all of the
10475      physnames.  */
10476   compute_delayed_physnames (cu);
10477
10478   if (cu->language == language_rust)
10479     rust_union_quirks (cu);
10480
10481   /* TUs share symbol tables.
10482      If this is the first TU to use this symtab, complete the construction
10483      of it with end_expandable_symtab.  Otherwise, complete the addition of
10484      this TU's symbols to the existing symtab.  */
10485   if (sig_type->type_unit_group->compunit_symtab == NULL)
10486     {
10487       buildsym_compunit *builder = cu->get_builder ();
10488       cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10489       sig_type->type_unit_group->compunit_symtab = cust;
10490
10491       if (cust != NULL)
10492         {
10493           /* Set symtab language to language from DW_AT_language.  If the
10494              compilation is from a C file generated by language preprocessors,
10495              do not set the language if it was already deduced by
10496              start_subfile.  */
10497           if (!(cu->language == language_c
10498                 && COMPUNIT_FILETABS (cust)->language != language_c))
10499             COMPUNIT_FILETABS (cust)->language = cu->language;
10500         }
10501     }
10502   else
10503     {
10504       cu->get_builder ()->augment_type_symtab ();
10505       cust = sig_type->type_unit_group->compunit_symtab;
10506     }
10507
10508   if (dwarf2_per_objfile->using_index)
10509     per_cu->v.quick->compunit_symtab = cust;
10510   else
10511     {
10512       struct partial_symtab *pst = per_cu->v.psymtab;
10513       pst->compunit_symtab = cust;
10514       pst->readin = 1;
10515     }
10516
10517   /* Not needed any more.  */
10518   cu->reset_builder ();
10519 }
10520
10521 /* Process an imported unit DIE.  */
10522
10523 static void
10524 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10525 {
10526   struct attribute *attr;
10527
10528   /* For now we don't handle imported units in type units.  */
10529   if (cu->per_cu->is_debug_types)
10530     {
10531       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10532                " supported in type units [in module %s]"),
10533              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10534     }
10535
10536   attr = dwarf2_attr (die, DW_AT_import, cu);
10537   if (attr != NULL)
10538     {
10539       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10540       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10541       dwarf2_per_cu_data *per_cu
10542         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10543                                             cu->per_cu->dwarf2_per_objfile);
10544
10545       /* If necessary, add it to the queue and load its DIEs.  */
10546       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10547         load_full_comp_unit (per_cu, false, cu->language);
10548
10549       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10550                      per_cu);
10551     }
10552 }
10553
10554 /* RAII object that represents a process_die scope: i.e.,
10555    starts/finishes processing a DIE.  */
10556 class process_die_scope
10557 {
10558 public:
10559   process_die_scope (die_info *die, dwarf2_cu *cu)
10560     : m_die (die), m_cu (cu)
10561   {
10562     /* We should only be processing DIEs not already in process.  */
10563     gdb_assert (!m_die->in_process);
10564     m_die->in_process = true;
10565   }
10566
10567   ~process_die_scope ()
10568   {
10569     m_die->in_process = false;
10570
10571     /* If we're done processing the DIE for the CU that owns the line
10572        header, we don't need the line header anymore.  */
10573     if (m_cu->line_header_die_owner == m_die)
10574       {
10575         delete m_cu->line_header;
10576         m_cu->line_header = NULL;
10577         m_cu->line_header_die_owner = NULL;
10578       }
10579   }
10580
10581 private:
10582   die_info *m_die;
10583   dwarf2_cu *m_cu;
10584 };
10585
10586 /* Process a die and its children.  */
10587
10588 static void
10589 process_die (struct die_info *die, struct dwarf2_cu *cu)
10590 {
10591   process_die_scope scope (die, cu);
10592
10593   switch (die->tag)
10594     {
10595     case DW_TAG_padding:
10596       break;
10597     case DW_TAG_compile_unit:
10598     case DW_TAG_partial_unit:
10599       read_file_scope (die, cu);
10600       break;
10601     case DW_TAG_type_unit:
10602       read_type_unit_scope (die, cu);
10603       break;
10604     case DW_TAG_subprogram:
10605     case DW_TAG_inlined_subroutine:
10606       read_func_scope (die, cu);
10607       break;
10608     case DW_TAG_lexical_block:
10609     case DW_TAG_try_block:
10610     case DW_TAG_catch_block:
10611       read_lexical_block_scope (die, cu);
10612       break;
10613     case DW_TAG_call_site:
10614     case DW_TAG_GNU_call_site:
10615       read_call_site_scope (die, cu);
10616       break;
10617     case DW_TAG_class_type:
10618     case DW_TAG_interface_type:
10619     case DW_TAG_structure_type:
10620     case DW_TAG_union_type:
10621       process_structure_scope (die, cu);
10622       break;
10623     case DW_TAG_enumeration_type:
10624       process_enumeration_scope (die, cu);
10625       break;
10626
10627     /* These dies have a type, but processing them does not create
10628        a symbol or recurse to process the children.  Therefore we can
10629        read them on-demand through read_type_die.  */
10630     case DW_TAG_subroutine_type:
10631     case DW_TAG_set_type:
10632     case DW_TAG_array_type:
10633     case DW_TAG_pointer_type:
10634     case DW_TAG_ptr_to_member_type:
10635     case DW_TAG_reference_type:
10636     case DW_TAG_rvalue_reference_type:
10637     case DW_TAG_string_type:
10638       break;
10639
10640     case DW_TAG_base_type:
10641     case DW_TAG_subrange_type:
10642     case DW_TAG_typedef:
10643       /* Add a typedef symbol for the type definition, if it has a
10644          DW_AT_name.  */
10645       new_symbol (die, read_type_die (die, cu), cu);
10646       break;
10647     case DW_TAG_common_block:
10648       read_common_block (die, cu);
10649       break;
10650     case DW_TAG_common_inclusion:
10651       break;
10652     case DW_TAG_namespace:
10653       cu->processing_has_namespace_info = true;
10654       read_namespace (die, cu);
10655       break;
10656     case DW_TAG_module:
10657       cu->processing_has_namespace_info = true;
10658       read_module (die, cu);
10659       break;
10660     case DW_TAG_imported_declaration:
10661       cu->processing_has_namespace_info = true;
10662       if (read_namespace_alias (die, cu))
10663         break;
10664       /* The declaration is not a global namespace alias.  */
10665       /* Fall through.  */
10666     case DW_TAG_imported_module:
10667       cu->processing_has_namespace_info = true;
10668       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10669                                  || cu->language != language_fortran))
10670         complaint (_("Tag '%s' has unexpected children"),
10671                    dwarf_tag_name (die->tag));
10672       read_import_statement (die, cu);
10673       break;
10674
10675     case DW_TAG_imported_unit:
10676       process_imported_unit_die (die, cu);
10677       break;
10678
10679     case DW_TAG_variable:
10680       read_variable (die, cu);
10681       break;
10682
10683     default:
10684       new_symbol (die, NULL, cu);
10685       break;
10686     }
10687 }
10688 \f
10689 /* DWARF name computation.  */
10690
10691 /* A helper function for dwarf2_compute_name which determines whether DIE
10692    needs to have the name of the scope prepended to the name listed in the
10693    die.  */
10694
10695 static int
10696 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10697 {
10698   struct attribute *attr;
10699
10700   switch (die->tag)
10701     {
10702     case DW_TAG_namespace:
10703     case DW_TAG_typedef:
10704     case DW_TAG_class_type:
10705     case DW_TAG_interface_type:
10706     case DW_TAG_structure_type:
10707     case DW_TAG_union_type:
10708     case DW_TAG_enumeration_type:
10709     case DW_TAG_enumerator:
10710     case DW_TAG_subprogram:
10711     case DW_TAG_inlined_subroutine:
10712     case DW_TAG_member:
10713     case DW_TAG_imported_declaration:
10714       return 1;
10715
10716     case DW_TAG_variable:
10717     case DW_TAG_constant:
10718       /* We only need to prefix "globally" visible variables.  These include
10719          any variable marked with DW_AT_external or any variable that
10720          lives in a namespace.  [Variables in anonymous namespaces
10721          require prefixing, but they are not DW_AT_external.]  */
10722
10723       if (dwarf2_attr (die, DW_AT_specification, cu))
10724         {
10725           struct dwarf2_cu *spec_cu = cu;
10726
10727           return die_needs_namespace (die_specification (die, &spec_cu),
10728                                       spec_cu);
10729         }
10730
10731       attr = dwarf2_attr (die, DW_AT_external, cu);
10732       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10733           && die->parent->tag != DW_TAG_module)
10734         return 0;
10735       /* A variable in a lexical block of some kind does not need a
10736          namespace, even though in C++ such variables may be external
10737          and have a mangled name.  */
10738       if (die->parent->tag ==  DW_TAG_lexical_block
10739           || die->parent->tag ==  DW_TAG_try_block
10740           || die->parent->tag ==  DW_TAG_catch_block
10741           || die->parent->tag == DW_TAG_subprogram)
10742         return 0;
10743       return 1;
10744
10745     default:
10746       return 0;
10747     }
10748 }
10749
10750 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10751    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10752    defined for the given DIE.  */
10753
10754 static struct attribute *
10755 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10756 {
10757   struct attribute *attr;
10758
10759   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10760   if (attr == NULL)
10761     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10762
10763   return attr;
10764 }
10765
10766 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10767    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10768    defined for the given DIE.  */
10769
10770 static const char *
10771 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10772 {
10773   const char *linkage_name;
10774
10775   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10776   if (linkage_name == NULL)
10777     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10778
10779   return linkage_name;
10780 }
10781
10782 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10783    compute the physname for the object, which include a method's:
10784    - formal parameters (C++),
10785    - receiver type (Go),
10786
10787    The term "physname" is a bit confusing.
10788    For C++, for example, it is the demangled name.
10789    For Go, for example, it's the mangled name.
10790
10791    For Ada, return the DIE's linkage name rather than the fully qualified
10792    name.  PHYSNAME is ignored..
10793
10794    The result is allocated on the objfile_obstack and canonicalized.  */
10795
10796 static const char *
10797 dwarf2_compute_name (const char *name,
10798                      struct die_info *die, struct dwarf2_cu *cu,
10799                      int physname)
10800 {
10801   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10802
10803   if (name == NULL)
10804     name = dwarf2_name (die, cu);
10805
10806   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10807      but otherwise compute it by typename_concat inside GDB.
10808      FIXME: Actually this is not really true, or at least not always true.
10809      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10810      Fortran names because there is no mangling standard.  So new_symbol
10811      will set the demangled name to the result of dwarf2_full_name, and it is
10812      the demangled name that GDB uses if it exists.  */
10813   if (cu->language == language_ada
10814       || (cu->language == language_fortran && physname))
10815     {
10816       /* For Ada unit, we prefer the linkage name over the name, as
10817          the former contains the exported name, which the user expects
10818          to be able to reference.  Ideally, we want the user to be able
10819          to reference this entity using either natural or linkage name,
10820          but we haven't started looking at this enhancement yet.  */
10821       const char *linkage_name = dw2_linkage_name (die, cu);
10822
10823       if (linkage_name != NULL)
10824         return linkage_name;
10825     }
10826
10827   /* These are the only languages we know how to qualify names in.  */
10828   if (name != NULL
10829       && (cu->language == language_cplus
10830           || cu->language == language_fortran || cu->language == language_d
10831           || cu->language == language_rust))
10832     {
10833       if (die_needs_namespace (die, cu))
10834         {
10835           const char *prefix;
10836           const char *canonical_name = NULL;
10837
10838           string_file buf;
10839
10840           prefix = determine_prefix (die, cu);
10841           if (*prefix != '\0')
10842             {
10843               char *prefixed_name = typename_concat (NULL, prefix, name,
10844                                                      physname, cu);
10845
10846               buf.puts (prefixed_name);
10847               xfree (prefixed_name);
10848             }
10849           else
10850             buf.puts (name);
10851
10852           /* Template parameters may be specified in the DIE's DW_AT_name, or
10853              as children with DW_TAG_template_type_param or
10854              DW_TAG_value_type_param.  If the latter, add them to the name
10855              here.  If the name already has template parameters, then
10856              skip this step; some versions of GCC emit both, and
10857              it is more efficient to use the pre-computed name.
10858
10859              Something to keep in mind about this process: it is very
10860              unlikely, or in some cases downright impossible, to produce
10861              something that will match the mangled name of a function.
10862              If the definition of the function has the same debug info,
10863              we should be able to match up with it anyway.  But fallbacks
10864              using the minimal symbol, for instance to find a method
10865              implemented in a stripped copy of libstdc++, will not work.
10866              If we do not have debug info for the definition, we will have to
10867              match them up some other way.
10868
10869              When we do name matching there is a related problem with function
10870              templates; two instantiated function templates are allowed to
10871              differ only by their return types, which we do not add here.  */
10872
10873           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10874             {
10875               struct attribute *attr;
10876               struct die_info *child;
10877               int first = 1;
10878
10879               die->building_fullname = 1;
10880
10881               for (child = die->child; child != NULL; child = child->sibling)
10882                 {
10883                   struct type *type;
10884                   LONGEST value;
10885                   const gdb_byte *bytes;
10886                   struct dwarf2_locexpr_baton *baton;
10887                   struct value *v;
10888
10889                   if (child->tag != DW_TAG_template_type_param
10890                       && child->tag != DW_TAG_template_value_param)
10891                     continue;
10892
10893                   if (first)
10894                     {
10895                       buf.puts ("<");
10896                       first = 0;
10897                     }
10898                   else
10899                     buf.puts (", ");
10900
10901                   attr = dwarf2_attr (child, DW_AT_type, cu);
10902                   if (attr == NULL)
10903                     {
10904                       complaint (_("template parameter missing DW_AT_type"));
10905                       buf.puts ("UNKNOWN_TYPE");
10906                       continue;
10907                     }
10908                   type = die_type (child, cu);
10909
10910                   if (child->tag == DW_TAG_template_type_param)
10911                     {
10912                       c_print_type (type, "", &buf, -1, 0, cu->language,
10913                                     &type_print_raw_options);
10914                       continue;
10915                     }
10916
10917                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10918                   if (attr == NULL)
10919                     {
10920                       complaint (_("template parameter missing "
10921                                    "DW_AT_const_value"));
10922                       buf.puts ("UNKNOWN_VALUE");
10923                       continue;
10924                     }
10925
10926                   dwarf2_const_value_attr (attr, type, name,
10927                                            &cu->comp_unit_obstack, cu,
10928                                            &value, &bytes, &baton);
10929
10930                   if (TYPE_NOSIGN (type))
10931                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10932                        changed, this can use value_print instead.  */
10933                     c_printchar (value, type, &buf);
10934                   else
10935                     {
10936                       struct value_print_options opts;
10937
10938                       if (baton != NULL)
10939                         v = dwarf2_evaluate_loc_desc (type, NULL,
10940                                                       baton->data,
10941                                                       baton->size,
10942                                                       baton->per_cu);
10943                       else if (bytes != NULL)
10944                         {
10945                           v = allocate_value (type);
10946                           memcpy (value_contents_writeable (v), bytes,
10947                                   TYPE_LENGTH (type));
10948                         }
10949                       else
10950                         v = value_from_longest (type, value);
10951
10952                       /* Specify decimal so that we do not depend on
10953                          the radix.  */
10954                       get_formatted_print_options (&opts, 'd');
10955                       opts.raw = 1;
10956                       value_print (v, &buf, &opts);
10957                       release_value (v);
10958                     }
10959                 }
10960
10961               die->building_fullname = 0;
10962
10963               if (!first)
10964                 {
10965                   /* Close the argument list, with a space if necessary
10966                      (nested templates).  */
10967                   if (!buf.empty () && buf.string ().back () == '>')
10968                     buf.puts (" >");
10969                   else
10970                     buf.puts (">");
10971                 }
10972             }
10973
10974           /* For C++ methods, append formal parameter type
10975              information, if PHYSNAME.  */
10976
10977           if (physname && die->tag == DW_TAG_subprogram
10978               && cu->language == language_cplus)
10979             {
10980               struct type *type = read_type_die (die, cu);
10981
10982               c_type_print_args (type, &buf, 1, cu->language,
10983                                  &type_print_raw_options);
10984
10985               if (cu->language == language_cplus)
10986                 {
10987                   /* Assume that an artificial first parameter is
10988                      "this", but do not crash if it is not.  RealView
10989                      marks unnamed (and thus unused) parameters as
10990                      artificial; there is no way to differentiate
10991                      the two cases.  */
10992                   if (TYPE_NFIELDS (type) > 0
10993                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10994                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10995                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10996                                                                         0))))
10997                     buf.puts (" const");
10998                 }
10999             }
11000
11001           const std::string &intermediate_name = buf.string ();
11002
11003           if (cu->language == language_cplus)
11004             canonical_name
11005               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11006                                           &objfile->per_bfd->storage_obstack);
11007
11008           /* If we only computed INTERMEDIATE_NAME, or if
11009              INTERMEDIATE_NAME is already canonical, then we need to
11010              copy it to the appropriate obstack.  */
11011           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11012             name = ((const char *)
11013                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11014                                    intermediate_name.c_str (),
11015                                    intermediate_name.length ()));
11016           else
11017             name = canonical_name;
11018         }
11019     }
11020
11021   return name;
11022 }
11023
11024 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11025    If scope qualifiers are appropriate they will be added.  The result
11026    will be allocated on the storage_obstack, or NULL if the DIE does
11027    not have a name.  NAME may either be from a previous call to
11028    dwarf2_name or NULL.
11029
11030    The output string will be canonicalized (if C++).  */
11031
11032 static const char *
11033 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11034 {
11035   return dwarf2_compute_name (name, die, cu, 0);
11036 }
11037
11038 /* Construct a physname for the given DIE in CU.  NAME may either be
11039    from a previous call to dwarf2_name or NULL.  The result will be
11040    allocated on the objfile_objstack or NULL if the DIE does not have a
11041    name.
11042
11043    The output string will be canonicalized (if C++).  */
11044
11045 static const char *
11046 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11047 {
11048   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11049   const char *retval, *mangled = NULL, *canon = NULL;
11050   int need_copy = 1;
11051
11052   /* In this case dwarf2_compute_name is just a shortcut not building anything
11053      on its own.  */
11054   if (!die_needs_namespace (die, cu))
11055     return dwarf2_compute_name (name, die, cu, 1);
11056
11057   mangled = dw2_linkage_name (die, cu);
11058
11059   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11060      See https://github.com/rust-lang/rust/issues/32925.  */
11061   if (cu->language == language_rust && mangled != NULL
11062       && strchr (mangled, '{') != NULL)
11063     mangled = NULL;
11064
11065   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11066      has computed.  */
11067   gdb::unique_xmalloc_ptr<char> demangled;
11068   if (mangled != NULL)
11069     {
11070
11071       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11072         {
11073           /* Do nothing (do not demangle the symbol name).  */
11074         }
11075       else if (cu->language == language_go)
11076         {
11077           /* This is a lie, but we already lie to the caller new_symbol.
11078              new_symbol assumes we return the mangled name.
11079              This just undoes that lie until things are cleaned up.  */
11080         }
11081       else
11082         {
11083           /* Use DMGL_RET_DROP for C++ template functions to suppress
11084              their return type.  It is easier for GDB users to search
11085              for such functions as `name(params)' than `long name(params)'.
11086              In such case the minimal symbol names do not match the full
11087              symbol names but for template functions there is never a need
11088              to look up their definition from their declaration so
11089              the only disadvantage remains the minimal symbol variant
11090              `long name(params)' does not have the proper inferior type.  */
11091           demangled.reset (gdb_demangle (mangled,
11092                                          (DMGL_PARAMS | DMGL_ANSI
11093                                           | DMGL_RET_DROP)));
11094         }
11095       if (demangled)
11096         canon = demangled.get ();
11097       else
11098         {
11099           canon = mangled;
11100           need_copy = 0;
11101         }
11102     }
11103
11104   if (canon == NULL || check_physname)
11105     {
11106       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11107
11108       if (canon != NULL && strcmp (physname, canon) != 0)
11109         {
11110           /* It may not mean a bug in GDB.  The compiler could also
11111              compute DW_AT_linkage_name incorrectly.  But in such case
11112              GDB would need to be bug-to-bug compatible.  */
11113
11114           complaint (_("Computed physname <%s> does not match demangled <%s> "
11115                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11116                      physname, canon, mangled, sect_offset_str (die->sect_off),
11117                      objfile_name (objfile));
11118
11119           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11120              is available here - over computed PHYSNAME.  It is safer
11121              against both buggy GDB and buggy compilers.  */
11122
11123           retval = canon;
11124         }
11125       else
11126         {
11127           retval = physname;
11128           need_copy = 0;
11129         }
11130     }
11131   else
11132     retval = canon;
11133
11134   if (need_copy)
11135     retval = ((const char *)
11136               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11137                              retval, strlen (retval)));
11138
11139   return retval;
11140 }
11141
11142 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11143    a new symbol for it.
11144
11145    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11146
11147 static int
11148 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11149 {
11150   struct attribute *attr;
11151
11152   /* If the die does not have a name, this is not a namespace
11153      alias.  */
11154   attr = dwarf2_attr (die, DW_AT_name, cu);
11155   if (attr != NULL)
11156     {
11157       int num;
11158       struct die_info *d = die;
11159       struct dwarf2_cu *imported_cu = cu;
11160
11161       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11162          keep inspecting DIEs until we hit the underlying import.  */
11163 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11164       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11165         {
11166           attr = dwarf2_attr (d, DW_AT_import, cu);
11167           if (attr == NULL)
11168             break;
11169
11170           d = follow_die_ref (d, attr, &imported_cu);
11171           if (d->tag != DW_TAG_imported_declaration)
11172             break;
11173         }
11174
11175       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11176         {
11177           complaint (_("DIE at %s has too many recursively imported "
11178                        "declarations"), sect_offset_str (d->sect_off));
11179           return 0;
11180         }
11181
11182       if (attr != NULL)
11183         {
11184           struct type *type;
11185           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11186
11187           type = get_die_type_at_offset (sect_off, cu->per_cu);
11188           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11189             {
11190               /* This declaration is a global namespace alias.  Add
11191                  a symbol for it whose type is the aliased namespace.  */
11192               new_symbol (die, type, cu);
11193               return 1;
11194             }
11195         }
11196     }
11197
11198   return 0;
11199 }
11200
11201 /* Return the using directives repository (global or local?) to use in the
11202    current context for CU.
11203
11204    For Ada, imported declarations can materialize renamings, which *may* be
11205    global.  However it is impossible (for now?) in DWARF to distinguish
11206    "external" imported declarations and "static" ones.  As all imported
11207    declarations seem to be static in all other languages, make them all CU-wide
11208    global only in Ada.  */
11209
11210 static struct using_direct **
11211 using_directives (struct dwarf2_cu *cu)
11212 {
11213   if (cu->language == language_ada
11214       && cu->get_builder ()->outermost_context_p ())
11215     return cu->get_builder ()->get_global_using_directives ();
11216   else
11217     return cu->get_builder ()->get_local_using_directives ();
11218 }
11219
11220 /* Read the import statement specified by the given die and record it.  */
11221
11222 static void
11223 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11224 {
11225   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11226   struct attribute *import_attr;
11227   struct die_info *imported_die, *child_die;
11228   struct dwarf2_cu *imported_cu;
11229   const char *imported_name;
11230   const char *imported_name_prefix;
11231   const char *canonical_name;
11232   const char *import_alias;
11233   const char *imported_declaration = NULL;
11234   const char *import_prefix;
11235   std::vector<const char *> excludes;
11236
11237   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11238   if (import_attr == NULL)
11239     {
11240       complaint (_("Tag '%s' has no DW_AT_import"),
11241                  dwarf_tag_name (die->tag));
11242       return;
11243     }
11244
11245   imported_cu = cu;
11246   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11247   imported_name = dwarf2_name (imported_die, imported_cu);
11248   if (imported_name == NULL)
11249     {
11250       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11251
11252         The import in the following code:
11253         namespace A
11254           {
11255             typedef int B;
11256           }
11257
11258         int main ()
11259           {
11260             using A::B;
11261             B b;
11262             return b;
11263           }
11264
11265         ...
11266          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11267             <52>   DW_AT_decl_file   : 1
11268             <53>   DW_AT_decl_line   : 6
11269             <54>   DW_AT_import      : <0x75>
11270          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11271             <59>   DW_AT_name        : B
11272             <5b>   DW_AT_decl_file   : 1
11273             <5c>   DW_AT_decl_line   : 2
11274             <5d>   DW_AT_type        : <0x6e>
11275         ...
11276          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11277             <76>   DW_AT_byte_size   : 4
11278             <77>   DW_AT_encoding    : 5        (signed)
11279
11280         imports the wrong die ( 0x75 instead of 0x58 ).
11281         This case will be ignored until the gcc bug is fixed.  */
11282       return;
11283     }
11284
11285   /* Figure out the local name after import.  */
11286   import_alias = dwarf2_name (die, cu);
11287
11288   /* Figure out where the statement is being imported to.  */
11289   import_prefix = determine_prefix (die, cu);
11290
11291   /* Figure out what the scope of the imported die is and prepend it
11292      to the name of the imported die.  */
11293   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11294
11295   if (imported_die->tag != DW_TAG_namespace
11296       && imported_die->tag != DW_TAG_module)
11297     {
11298       imported_declaration = imported_name;
11299       canonical_name = imported_name_prefix;
11300     }
11301   else if (strlen (imported_name_prefix) > 0)
11302     canonical_name = obconcat (&objfile->objfile_obstack,
11303                                imported_name_prefix,
11304                                (cu->language == language_d ? "." : "::"),
11305                                imported_name, (char *) NULL);
11306   else
11307     canonical_name = imported_name;
11308
11309   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11310     for (child_die = die->child; child_die && child_die->tag;
11311          child_die = sibling_die (child_die))
11312       {
11313         /* DWARF-4: A Fortran use statement with a “rename list” may be
11314            represented by an imported module entry with an import attribute
11315            referring to the module and owned entries corresponding to those
11316            entities that are renamed as part of being imported.  */
11317
11318         if (child_die->tag != DW_TAG_imported_declaration)
11319           {
11320             complaint (_("child DW_TAG_imported_declaration expected "
11321                          "- DIE at %s [in module %s]"),
11322                        sect_offset_str (child_die->sect_off),
11323                        objfile_name (objfile));
11324             continue;
11325           }
11326
11327         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11328         if (import_attr == NULL)
11329           {
11330             complaint (_("Tag '%s' has no DW_AT_import"),
11331                        dwarf_tag_name (child_die->tag));
11332             continue;
11333           }
11334
11335         imported_cu = cu;
11336         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11337                                               &imported_cu);
11338         imported_name = dwarf2_name (imported_die, imported_cu);
11339         if (imported_name == NULL)
11340           {
11341             complaint (_("child DW_TAG_imported_declaration has unknown "
11342                          "imported name - DIE at %s [in module %s]"),
11343                        sect_offset_str (child_die->sect_off),
11344                        objfile_name (objfile));
11345             continue;
11346           }
11347
11348         excludes.push_back (imported_name);
11349
11350         process_die (child_die, cu);
11351       }
11352
11353   add_using_directive (using_directives (cu),
11354                        import_prefix,
11355                        canonical_name,
11356                        import_alias,
11357                        imported_declaration,
11358                        excludes,
11359                        0,
11360                        &objfile->objfile_obstack);
11361 }
11362
11363 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11364    types, but gives them a size of zero.  Starting with version 14,
11365    ICC is compatible with GCC.  */
11366
11367 static bool
11368 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11369 {
11370   if (!cu->checked_producer)
11371     check_producer (cu);
11372
11373   return cu->producer_is_icc_lt_14;
11374 }
11375
11376 /* ICC generates a DW_AT_type for C void functions.  This was observed on
11377    ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11378    which says that void functions should not have a DW_AT_type.  */
11379
11380 static bool
11381 producer_is_icc (struct dwarf2_cu *cu)
11382 {
11383   if (!cu->checked_producer)
11384     check_producer (cu);
11385
11386   return cu->producer_is_icc;
11387 }
11388
11389 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11390    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11391    this, it was first present in GCC release 4.3.0.  */
11392
11393 static bool
11394 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11395 {
11396   if (!cu->checked_producer)
11397     check_producer (cu);
11398
11399   return cu->producer_is_gcc_lt_4_3;
11400 }
11401
11402 static file_and_directory
11403 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11404 {
11405   file_and_directory res;
11406
11407   /* Find the filename.  Do not use dwarf2_name here, since the filename
11408      is not a source language identifier.  */
11409   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11410   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11411
11412   if (res.comp_dir == NULL
11413       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11414       && IS_ABSOLUTE_PATH (res.name))
11415     {
11416       res.comp_dir_storage = ldirname (res.name);
11417       if (!res.comp_dir_storage.empty ())
11418         res.comp_dir = res.comp_dir_storage.c_str ();
11419     }
11420   if (res.comp_dir != NULL)
11421     {
11422       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11423          directory, get rid of it.  */
11424       const char *cp = strchr (res.comp_dir, ':');
11425
11426       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11427         res.comp_dir = cp + 1;
11428     }
11429
11430   if (res.name == NULL)
11431     res.name = "<unknown>";
11432
11433   return res;
11434 }
11435
11436 /* Handle DW_AT_stmt_list for a compilation unit.
11437    DIE is the DW_TAG_compile_unit die for CU.
11438    COMP_DIR is the compilation directory.  LOWPC is passed to
11439    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11440
11441 static void
11442 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11443                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11444 {
11445   struct dwarf2_per_objfile *dwarf2_per_objfile
11446     = cu->per_cu->dwarf2_per_objfile;
11447   struct objfile *objfile = dwarf2_per_objfile->objfile;
11448   struct attribute *attr;
11449   struct line_header line_header_local;
11450   hashval_t line_header_local_hash;
11451   void **slot;
11452   int decode_mapping;
11453
11454   gdb_assert (! cu->per_cu->is_debug_types);
11455
11456   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11457   if (attr == NULL)
11458     return;
11459
11460   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11461
11462   /* The line header hash table is only created if needed (it exists to
11463      prevent redundant reading of the line table for partial_units).
11464      If we're given a partial_unit, we'll need it.  If we're given a
11465      compile_unit, then use the line header hash table if it's already
11466      created, but don't create one just yet.  */
11467
11468   if (dwarf2_per_objfile->line_header_hash == NULL
11469       && die->tag == DW_TAG_partial_unit)
11470     {
11471       dwarf2_per_objfile->line_header_hash
11472         = htab_create_alloc_ex (127, line_header_hash_voidp,
11473                                 line_header_eq_voidp,
11474                                 free_line_header_voidp,
11475                                 &objfile->objfile_obstack,
11476                                 hashtab_obstack_allocate,
11477                                 dummy_obstack_deallocate);
11478     }
11479
11480   line_header_local.sect_off = line_offset;
11481   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11482   line_header_local_hash = line_header_hash (&line_header_local);
11483   if (dwarf2_per_objfile->line_header_hash != NULL)
11484     {
11485       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11486                                        &line_header_local,
11487                                        line_header_local_hash, NO_INSERT);
11488
11489       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11490          is not present in *SLOT (since if there is something in *SLOT then
11491          it will be for a partial_unit).  */
11492       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11493         {
11494           gdb_assert (*slot != NULL);
11495           cu->line_header = (struct line_header *) *slot;
11496           return;
11497         }
11498     }
11499
11500   /* dwarf_decode_line_header does not yet provide sufficient information.
11501      We always have to call also dwarf_decode_lines for it.  */
11502   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11503   if (lh == NULL)
11504     return;
11505
11506   cu->line_header = lh.release ();
11507   cu->line_header_die_owner = die;
11508
11509   if (dwarf2_per_objfile->line_header_hash == NULL)
11510     slot = NULL;
11511   else
11512     {
11513       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11514                                        &line_header_local,
11515                                        line_header_local_hash, INSERT);
11516       gdb_assert (slot != NULL);
11517     }
11518   if (slot != NULL && *slot == NULL)
11519     {
11520       /* This newly decoded line number information unit will be owned
11521          by line_header_hash hash table.  */
11522       *slot = cu->line_header;
11523       cu->line_header_die_owner = NULL;
11524     }
11525   else
11526     {
11527       /* We cannot free any current entry in (*slot) as that struct line_header
11528          may be already used by multiple CUs.  Create only temporary decoded
11529          line_header for this CU - it may happen at most once for each line
11530          number information unit.  And if we're not using line_header_hash
11531          then this is what we want as well.  */
11532       gdb_assert (die->tag != DW_TAG_partial_unit);
11533     }
11534   decode_mapping = (die->tag != DW_TAG_partial_unit);
11535   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11536                       decode_mapping);
11537
11538 }
11539
11540 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11541
11542 static void
11543 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11544 {
11545   struct dwarf2_per_objfile *dwarf2_per_objfile
11546     = cu->per_cu->dwarf2_per_objfile;
11547   struct objfile *objfile = dwarf2_per_objfile->objfile;
11548   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11549   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11550   CORE_ADDR highpc = ((CORE_ADDR) 0);
11551   struct attribute *attr;
11552   struct die_info *child_die;
11553   CORE_ADDR baseaddr;
11554
11555   prepare_one_comp_unit (cu, die, cu->language);
11556   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11557
11558   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11559
11560   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11561      from finish_block.  */
11562   if (lowpc == ((CORE_ADDR) -1))
11563     lowpc = highpc;
11564   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11565
11566   file_and_directory fnd = find_file_and_directory (die, cu);
11567
11568   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11569      standardised yet.  As a workaround for the language detection we fall
11570      back to the DW_AT_producer string.  */
11571   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11572     cu->language = language_opencl;
11573
11574   /* Similar hack for Go.  */
11575   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11576     set_cu_language (DW_LANG_Go, cu);
11577
11578   cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11579
11580   /* Decode line number information if present.  We do this before
11581      processing child DIEs, so that the line header table is available
11582      for DW_AT_decl_file.  */
11583   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11584
11585   /* Process all dies in compilation unit.  */
11586   if (die->child != NULL)
11587     {
11588       child_die = die->child;
11589       while (child_die && child_die->tag)
11590         {
11591           process_die (child_die, cu);
11592           child_die = sibling_die (child_die);
11593         }
11594     }
11595
11596   /* Decode macro information, if present.  Dwarf 2 macro information
11597      refers to information in the line number info statement program
11598      header, so we can only read it if we've read the header
11599      successfully.  */
11600   attr = dwarf2_attr (die, DW_AT_macros, cu);
11601   if (attr == NULL)
11602     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11603   if (attr && cu->line_header)
11604     {
11605       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11606         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11607
11608       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11609     }
11610   else
11611     {
11612       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11613       if (attr && cu->line_header)
11614         {
11615           unsigned int macro_offset = DW_UNSND (attr);
11616
11617           dwarf_decode_macros (cu, macro_offset, 0);
11618         }
11619     }
11620 }
11621
11622 void
11623 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11624 {
11625   struct type_unit_group *tu_group;
11626   int first_time;
11627   struct attribute *attr;
11628   unsigned int i;
11629   struct signatured_type *sig_type;
11630
11631   gdb_assert (per_cu->is_debug_types);
11632   sig_type = (struct signatured_type *) per_cu;
11633
11634   attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11635
11636   /* If we're using .gdb_index (includes -readnow) then
11637      per_cu->type_unit_group may not have been set up yet.  */
11638   if (sig_type->type_unit_group == NULL)
11639     sig_type->type_unit_group = get_type_unit_group (this, attr);
11640   tu_group = sig_type->type_unit_group;
11641
11642   /* If we've already processed this stmt_list there's no real need to
11643      do it again, we could fake it and just recreate the part we need
11644      (file name,index -> symtab mapping).  If data shows this optimization
11645      is useful we can do it then.  */
11646   first_time = tu_group->compunit_symtab == NULL;
11647
11648   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11649      debug info.  */
11650   line_header_up lh;
11651   if (attr != NULL)
11652     {
11653       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11654       lh = dwarf_decode_line_header (line_offset, this);
11655     }
11656   if (lh == NULL)
11657     {
11658       if (first_time)
11659         start_symtab ("", NULL, 0);
11660       else
11661         {
11662           gdb_assert (tu_group->symtabs == NULL);
11663           gdb_assert (m_builder == nullptr);
11664           struct compunit_symtab *cust = tu_group->compunit_symtab;
11665           m_builder.reset (new struct buildsym_compunit
11666                            (COMPUNIT_OBJFILE (cust), "",
11667                             COMPUNIT_DIRNAME (cust),
11668                             compunit_language (cust),
11669                             0, cust));
11670         }
11671       return;
11672     }
11673
11674   line_header = lh.release ();
11675   line_header_die_owner = die;
11676
11677   if (first_time)
11678     {
11679       struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11680
11681       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11682          still initializing it, and our caller (a few levels up)
11683          process_full_type_unit still needs to know if this is the first
11684          time.  */
11685
11686       tu_group->num_symtabs = line_header->file_names.size ();
11687       tu_group->symtabs = XNEWVEC (struct symtab *,
11688                                    line_header->file_names.size ());
11689
11690       for (i = 0; i < line_header->file_names.size (); ++i)
11691         {
11692           file_entry &fe = line_header->file_names[i];
11693
11694           dwarf2_start_subfile (this, fe.name,
11695                                 fe.include_dir (line_header));
11696           buildsym_compunit *b = get_builder ();
11697           if (b->get_current_subfile ()->symtab == NULL)
11698             {
11699               /* NOTE: start_subfile will recognize when it's been
11700                  passed a file it has already seen.  So we can't
11701                  assume there's a simple mapping from
11702                  cu->line_header->file_names to subfiles, plus
11703                  cu->line_header->file_names may contain dups.  */
11704               b->get_current_subfile ()->symtab
11705                 = allocate_symtab (cust, b->get_current_subfile ()->name);
11706             }
11707
11708           fe.symtab = b->get_current_subfile ()->symtab;
11709           tu_group->symtabs[i] = fe.symtab;
11710         }
11711     }
11712   else
11713     {
11714       gdb_assert (m_builder == nullptr);
11715       struct compunit_symtab *cust = tu_group->compunit_symtab;
11716       m_builder.reset (new struct buildsym_compunit
11717                        (COMPUNIT_OBJFILE (cust), "",
11718                         COMPUNIT_DIRNAME (cust),
11719                         compunit_language (cust),
11720                         0, cust));
11721
11722       for (i = 0; i < line_header->file_names.size (); ++i)
11723         {
11724           file_entry &fe = line_header->file_names[i];
11725
11726           fe.symtab = tu_group->symtabs[i];
11727         }
11728     }
11729
11730   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11731      so they don't have a "real" (so to speak) symtab anyway.
11732      There is later code that will assign the main symtab to all symbols
11733      that don't have one.  We need to handle the case of a symbol with a
11734      missing symtab (DW_AT_decl_file) anyway.  */
11735 }
11736
11737 /* Process DW_TAG_type_unit.
11738    For TUs we want to skip the first top level sibling if it's not the
11739    actual type being defined by this TU.  In this case the first top
11740    level sibling is there to provide context only.  */
11741
11742 static void
11743 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11744 {
11745   struct die_info *child_die;
11746
11747   prepare_one_comp_unit (cu, die, language_minimal);
11748
11749   /* Initialize (or reinitialize) the machinery for building symtabs.
11750      We do this before processing child DIEs, so that the line header table
11751      is available for DW_AT_decl_file.  */
11752   cu->setup_type_unit_groups (die);
11753
11754   if (die->child != NULL)
11755     {
11756       child_die = die->child;
11757       while (child_die && child_die->tag)
11758         {
11759           process_die (child_die, cu);
11760           child_die = sibling_die (child_die);
11761         }
11762     }
11763 }
11764 \f
11765 /* DWO/DWP files.
11766
11767    http://gcc.gnu.org/wiki/DebugFission
11768    http://gcc.gnu.org/wiki/DebugFissionDWP
11769
11770    To simplify handling of both DWO files ("object" files with the DWARF info)
11771    and DWP files (a file with the DWOs packaged up into one file), we treat
11772    DWP files as having a collection of virtual DWO files.  */
11773
11774 static hashval_t
11775 hash_dwo_file (const void *item)
11776 {
11777   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11778   hashval_t hash;
11779
11780   hash = htab_hash_string (dwo_file->dwo_name);
11781   if (dwo_file->comp_dir != NULL)
11782     hash += htab_hash_string (dwo_file->comp_dir);
11783   return hash;
11784 }
11785
11786 static int
11787 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11788 {
11789   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11790   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11791
11792   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11793     return 0;
11794   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11795     return lhs->comp_dir == rhs->comp_dir;
11796   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11797 }
11798
11799 /* Allocate a hash table for DWO files.  */
11800
11801 static htab_t
11802 allocate_dwo_file_hash_table (struct objfile *objfile)
11803 {
11804   return htab_create_alloc_ex (41,
11805                                hash_dwo_file,
11806                                eq_dwo_file,
11807                                NULL,
11808                                &objfile->objfile_obstack,
11809                                hashtab_obstack_allocate,
11810                                dummy_obstack_deallocate);
11811 }
11812
11813 /* Lookup DWO file DWO_NAME.  */
11814
11815 static void **
11816 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11817                       const char *dwo_name,
11818                       const char *comp_dir)
11819 {
11820   struct dwo_file find_entry;
11821   void **slot;
11822
11823   if (dwarf2_per_objfile->dwo_files == NULL)
11824     dwarf2_per_objfile->dwo_files
11825       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11826
11827   memset (&find_entry, 0, sizeof (find_entry));
11828   find_entry.dwo_name = dwo_name;
11829   find_entry.comp_dir = comp_dir;
11830   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11831
11832   return slot;
11833 }
11834
11835 static hashval_t
11836 hash_dwo_unit (const void *item)
11837 {
11838   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11839
11840   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11841   return dwo_unit->signature;
11842 }
11843
11844 static int
11845 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11846 {
11847   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11848   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11849
11850   /* The signature is assumed to be unique within the DWO file.
11851      So while object file CU dwo_id's always have the value zero,
11852      that's OK, assuming each object file DWO file has only one CU,
11853      and that's the rule for now.  */
11854   return lhs->signature == rhs->signature;
11855 }
11856
11857 /* Allocate a hash table for DWO CUs,TUs.
11858    There is one of these tables for each of CUs,TUs for each DWO file.  */
11859
11860 static htab_t
11861 allocate_dwo_unit_table (struct objfile *objfile)
11862 {
11863   /* Start out with a pretty small number.
11864      Generally DWO files contain only one CU and maybe some TUs.  */
11865   return htab_create_alloc_ex (3,
11866                                hash_dwo_unit,
11867                                eq_dwo_unit,
11868                                NULL,
11869                                &objfile->objfile_obstack,
11870                                hashtab_obstack_allocate,
11871                                dummy_obstack_deallocate);
11872 }
11873
11874 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11875
11876 struct create_dwo_cu_data
11877 {
11878   struct dwo_file *dwo_file;
11879   struct dwo_unit dwo_unit;
11880 };
11881
11882 /* die_reader_func for create_dwo_cu.  */
11883
11884 static void
11885 create_dwo_cu_reader (const struct die_reader_specs *reader,
11886                       const gdb_byte *info_ptr,
11887                       struct die_info *comp_unit_die,
11888                       int has_children,
11889                       void *datap)
11890 {
11891   struct dwarf2_cu *cu = reader->cu;
11892   sect_offset sect_off = cu->per_cu->sect_off;
11893   struct dwarf2_section_info *section = cu->per_cu->section;
11894   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11895   struct dwo_file *dwo_file = data->dwo_file;
11896   struct dwo_unit *dwo_unit = &data->dwo_unit;
11897   struct attribute *attr;
11898
11899   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11900   if (attr == NULL)
11901     {
11902       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11903                    " its dwo_id [in module %s]"),
11904                  sect_offset_str (sect_off), dwo_file->dwo_name);
11905       return;
11906     }
11907
11908   dwo_unit->dwo_file = dwo_file;
11909   dwo_unit->signature = DW_UNSND (attr);
11910   dwo_unit->section = section;
11911   dwo_unit->sect_off = sect_off;
11912   dwo_unit->length = cu->per_cu->length;
11913
11914   if (dwarf_read_debug)
11915     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11916                         sect_offset_str (sect_off),
11917                         hex_string (dwo_unit->signature));
11918 }
11919
11920 /* Create the dwo_units for the CUs in a DWO_FILE.
11921    Note: This function processes DWO files only, not DWP files.  */
11922
11923 static void
11924 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11925                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11926                        htab_t &cus_htab)
11927 {
11928   struct objfile *objfile = dwarf2_per_objfile->objfile;
11929   const gdb_byte *info_ptr, *end_ptr;
11930
11931   dwarf2_read_section (objfile, &section);
11932   info_ptr = section.buffer;
11933
11934   if (info_ptr == NULL)
11935     return;
11936
11937   if (dwarf_read_debug)
11938     {
11939       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11940                           get_section_name (&section),
11941                           get_section_file_name (&section));
11942     }
11943
11944   end_ptr = info_ptr + section.size;
11945   while (info_ptr < end_ptr)
11946     {
11947       struct dwarf2_per_cu_data per_cu;
11948       struct create_dwo_cu_data create_dwo_cu_data;
11949       struct dwo_unit *dwo_unit;
11950       void **slot;
11951       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11952
11953       memset (&create_dwo_cu_data.dwo_unit, 0,
11954               sizeof (create_dwo_cu_data.dwo_unit));
11955       memset (&per_cu, 0, sizeof (per_cu));
11956       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11957       per_cu.is_debug_types = 0;
11958       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11959       per_cu.section = &section;
11960       create_dwo_cu_data.dwo_file = &dwo_file;
11961
11962       init_cutu_and_read_dies_no_follow (
11963           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11964       info_ptr += per_cu.length;
11965
11966       // If the unit could not be parsed, skip it.
11967       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11968         continue;
11969
11970       if (cus_htab == NULL)
11971         cus_htab = allocate_dwo_unit_table (objfile);
11972
11973       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11974       *dwo_unit = create_dwo_cu_data.dwo_unit;
11975       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11976       gdb_assert (slot != NULL);
11977       if (*slot != NULL)
11978         {
11979           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11980           sect_offset dup_sect_off = dup_cu->sect_off;
11981
11982           complaint (_("debug cu entry at offset %s is duplicate to"
11983                        " the entry at offset %s, signature %s"),
11984                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11985                      hex_string (dwo_unit->signature));
11986         }
11987       *slot = (void *)dwo_unit;
11988     }
11989 }
11990
11991 /* DWP file .debug_{cu,tu}_index section format:
11992    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11993
11994    DWP Version 1:
11995
11996    Both index sections have the same format, and serve to map a 64-bit
11997    signature to a set of section numbers.  Each section begins with a header,
11998    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11999    indexes, and a pool of 32-bit section numbers.  The index sections will be
12000    aligned at 8-byte boundaries in the file.
12001
12002    The index section header consists of:
12003
12004     V, 32 bit version number
12005     -, 32 bits unused
12006     N, 32 bit number of compilation units or type units in the index
12007     M, 32 bit number of slots in the hash table
12008
12009    Numbers are recorded using the byte order of the application binary.
12010
12011    The hash table begins at offset 16 in the section, and consists of an array
12012    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12013    order of the application binary).  Unused slots in the hash table are 0.
12014    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12015
12016    The parallel table begins immediately after the hash table
12017    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12018    array of 32-bit indexes (using the byte order of the application binary),
12019    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12020    table contains a 32-bit index into the pool of section numbers.  For unused
12021    hash table slots, the corresponding entry in the parallel table will be 0.
12022
12023    The pool of section numbers begins immediately following the hash table
12024    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12025    section numbers consists of an array of 32-bit words (using the byte order
12026    of the application binary).  Each item in the array is indexed starting
12027    from 0.  The hash table entry provides the index of the first section
12028    number in the set.  Additional section numbers in the set follow, and the
12029    set is terminated by a 0 entry (section number 0 is not used in ELF).
12030
12031    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12032    section must be the first entry in the set, and the .debug_abbrev.dwo must
12033    be the second entry. Other members of the set may follow in any order.
12034
12035    ---
12036
12037    DWP Version 2:
12038
12039    DWP Version 2 combines all the .debug_info, etc. sections into one,
12040    and the entries in the index tables are now offsets into these sections.
12041    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12042    section.
12043
12044    Index Section Contents:
12045     Header
12046     Hash Table of Signatures   dwp_hash_table.hash_table
12047     Parallel Table of Indices  dwp_hash_table.unit_table
12048     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12049     Table of Section Sizes     dwp_hash_table.v2.sizes
12050
12051    The index section header consists of:
12052
12053     V, 32 bit version number
12054     L, 32 bit number of columns in the table of section offsets
12055     N, 32 bit number of compilation units or type units in the index
12056     M, 32 bit number of slots in the hash table
12057
12058    Numbers are recorded using the byte order of the application binary.
12059
12060    The hash table has the same format as version 1.
12061    The parallel table of indices has the same format as version 1,
12062    except that the entries are origin-1 indices into the table of sections
12063    offsets and the table of section sizes.
12064
12065    The table of offsets begins immediately following the parallel table
12066    (at offset 16 + 12 * M from the beginning of the section).  The table is
12067    a two-dimensional array of 32-bit words (using the byte order of the
12068    application binary), with L columns and N+1 rows, in row-major order.
12069    Each row in the array is indexed starting from 0.  The first row provides
12070    a key to the remaining rows: each column in this row provides an identifier
12071    for a debug section, and the offsets in the same column of subsequent rows
12072    refer to that section.  The section identifiers are:
12073
12074     DW_SECT_INFO         1  .debug_info.dwo
12075     DW_SECT_TYPES        2  .debug_types.dwo
12076     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12077     DW_SECT_LINE         4  .debug_line.dwo
12078     DW_SECT_LOC          5  .debug_loc.dwo
12079     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12080     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12081     DW_SECT_MACRO        8  .debug_macro.dwo
12082
12083    The offsets provided by the CU and TU index sections are the base offsets
12084    for the contributions made by each CU or TU to the corresponding section
12085    in the package file.  Each CU and TU header contains an abbrev_offset
12086    field, used to find the abbreviations table for that CU or TU within the
12087    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12088    be interpreted as relative to the base offset given in the index section.
12089    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12090    should be interpreted as relative to the base offset for .debug_line.dwo,
12091    and offsets into other debug sections obtained from DWARF attributes should
12092    also be interpreted as relative to the corresponding base offset.
12093
12094    The table of sizes begins immediately following the table of offsets.
12095    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12096    with L columns and N rows, in row-major order.  Each row in the array is
12097    indexed starting from 1 (row 0 is shared by the two tables).
12098
12099    ---
12100
12101    Hash table lookup is handled the same in version 1 and 2:
12102
12103    We assume that N and M will not exceed 2^32 - 1.
12104    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12105
12106    Given a 64-bit compilation unit signature or a type signature S, an entry
12107    in the hash table is located as follows:
12108
12109    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12110       the low-order k bits all set to 1.
12111
12112    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12113
12114    3) If the hash table entry at index H matches the signature, use that
12115       entry.  If the hash table entry at index H is unused (all zeroes),
12116       terminate the search: the signature is not present in the table.
12117
12118    4) Let H = (H + H') modulo M. Repeat at Step 3.
12119
12120    Because M > N and H' and M are relatively prime, the search is guaranteed
12121    to stop at an unused slot or find the match.  */
12122
12123 /* Create a hash table to map DWO IDs to their CU/TU entry in
12124    .debug_{info,types}.dwo in DWP_FILE.
12125    Returns NULL if there isn't one.
12126    Note: This function processes DWP files only, not DWO files.  */
12127
12128 static struct dwp_hash_table *
12129 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12130                        struct dwp_file *dwp_file, int is_debug_types)
12131 {
12132   struct objfile *objfile = dwarf2_per_objfile->objfile;
12133   bfd *dbfd = dwp_file->dbfd.get ();
12134   const gdb_byte *index_ptr, *index_end;
12135   struct dwarf2_section_info *index;
12136   uint32_t version, nr_columns, nr_units, nr_slots;
12137   struct dwp_hash_table *htab;
12138
12139   if (is_debug_types)
12140     index = &dwp_file->sections.tu_index;
12141   else
12142     index = &dwp_file->sections.cu_index;
12143
12144   if (dwarf2_section_empty_p (index))
12145     return NULL;
12146   dwarf2_read_section (objfile, index);
12147
12148   index_ptr = index->buffer;
12149   index_end = index_ptr + index->size;
12150
12151   version = read_4_bytes (dbfd, index_ptr);
12152   index_ptr += 4;
12153   if (version == 2)
12154     nr_columns = read_4_bytes (dbfd, index_ptr);
12155   else
12156     nr_columns = 0;
12157   index_ptr += 4;
12158   nr_units = read_4_bytes (dbfd, index_ptr);
12159   index_ptr += 4;
12160   nr_slots = read_4_bytes (dbfd, index_ptr);
12161   index_ptr += 4;
12162
12163   if (version != 1 && version != 2)
12164     {
12165       error (_("Dwarf Error: unsupported DWP file version (%s)"
12166                " [in module %s]"),
12167              pulongest (version), dwp_file->name);
12168     }
12169   if (nr_slots != (nr_slots & -nr_slots))
12170     {
12171       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12172                " is not power of 2 [in module %s]"),
12173              pulongest (nr_slots), dwp_file->name);
12174     }
12175
12176   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12177   htab->version = version;
12178   htab->nr_columns = nr_columns;
12179   htab->nr_units = nr_units;
12180   htab->nr_slots = nr_slots;
12181   htab->hash_table = index_ptr;
12182   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12183
12184   /* Exit early if the table is empty.  */
12185   if (nr_slots == 0 || nr_units == 0
12186       || (version == 2 && nr_columns == 0))
12187     {
12188       /* All must be zero.  */
12189       if (nr_slots != 0 || nr_units != 0
12190           || (version == 2 && nr_columns != 0))
12191         {
12192           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12193                        " all zero [in modules %s]"),
12194                      dwp_file->name);
12195         }
12196       return htab;
12197     }
12198
12199   if (version == 1)
12200     {
12201       htab->section_pool.v1.indices =
12202         htab->unit_table + sizeof (uint32_t) * nr_slots;
12203       /* It's harder to decide whether the section is too small in v1.
12204          V1 is deprecated anyway so we punt.  */
12205     }
12206   else
12207     {
12208       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12209       int *ids = htab->section_pool.v2.section_ids;
12210       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12211       /* Reverse map for error checking.  */
12212       int ids_seen[DW_SECT_MAX + 1];
12213       int i;
12214
12215       if (nr_columns < 2)
12216         {
12217           error (_("Dwarf Error: bad DWP hash table, too few columns"
12218                    " in section table [in module %s]"),
12219                  dwp_file->name);
12220         }
12221       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12222         {
12223           error (_("Dwarf Error: bad DWP hash table, too many columns"
12224                    " in section table [in module %s]"),
12225                  dwp_file->name);
12226         }
12227       memset (ids, 255, sizeof_ids);
12228       memset (ids_seen, 255, sizeof (ids_seen));
12229       for (i = 0; i < nr_columns; ++i)
12230         {
12231           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12232
12233           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12234             {
12235               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12236                        " in section table [in module %s]"),
12237                      id, dwp_file->name);
12238             }
12239           if (ids_seen[id] != -1)
12240             {
12241               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12242                        " id %d in section table [in module %s]"),
12243                      id, dwp_file->name);
12244             }
12245           ids_seen[id] = i;
12246           ids[i] = id;
12247         }
12248       /* Must have exactly one info or types section.  */
12249       if (((ids_seen[DW_SECT_INFO] != -1)
12250            + (ids_seen[DW_SECT_TYPES] != -1))
12251           != 1)
12252         {
12253           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12254                    " DWO info/types section [in module %s]"),
12255                  dwp_file->name);
12256         }
12257       /* Must have an abbrev section.  */
12258       if (ids_seen[DW_SECT_ABBREV] == -1)
12259         {
12260           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12261                    " section [in module %s]"),
12262                  dwp_file->name);
12263         }
12264       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12265       htab->section_pool.v2.sizes =
12266         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12267                                          * nr_units * nr_columns);
12268       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12269                                           * nr_units * nr_columns))
12270           > index_end)
12271         {
12272           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12273                    " [in module %s]"),
12274                  dwp_file->name);
12275         }
12276     }
12277
12278   return htab;
12279 }
12280
12281 /* Update SECTIONS with the data from SECTP.
12282
12283    This function is like the other "locate" section routines that are
12284    passed to bfd_map_over_sections, but in this context the sections to
12285    read comes from the DWP V1 hash table, not the full ELF section table.
12286
12287    The result is non-zero for success, or zero if an error was found.  */
12288
12289 static int
12290 locate_v1_virtual_dwo_sections (asection *sectp,
12291                                 struct virtual_v1_dwo_sections *sections)
12292 {
12293   const struct dwop_section_names *names = &dwop_section_names;
12294
12295   if (section_is_p (sectp->name, &names->abbrev_dwo))
12296     {
12297       /* There can be only one.  */
12298       if (sections->abbrev.s.section != NULL)
12299         return 0;
12300       sections->abbrev.s.section = sectp;
12301       sections->abbrev.size = bfd_get_section_size (sectp);
12302     }
12303   else if (section_is_p (sectp->name, &names->info_dwo)
12304            || section_is_p (sectp->name, &names->types_dwo))
12305     {
12306       /* There can be only one.  */
12307       if (sections->info_or_types.s.section != NULL)
12308         return 0;
12309       sections->info_or_types.s.section = sectp;
12310       sections->info_or_types.size = bfd_get_section_size (sectp);
12311     }
12312   else if (section_is_p (sectp->name, &names->line_dwo))
12313     {
12314       /* There can be only one.  */
12315       if (sections->line.s.section != NULL)
12316         return 0;
12317       sections->line.s.section = sectp;
12318       sections->line.size = bfd_get_section_size (sectp);
12319     }
12320   else if (section_is_p (sectp->name, &names->loc_dwo))
12321     {
12322       /* There can be only one.  */
12323       if (sections->loc.s.section != NULL)
12324         return 0;
12325       sections->loc.s.section = sectp;
12326       sections->loc.size = bfd_get_section_size (sectp);
12327     }
12328   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12329     {
12330       /* There can be only one.  */
12331       if (sections->macinfo.s.section != NULL)
12332         return 0;
12333       sections->macinfo.s.section = sectp;
12334       sections->macinfo.size = bfd_get_section_size (sectp);
12335     }
12336   else if (section_is_p (sectp->name, &names->macro_dwo))
12337     {
12338       /* There can be only one.  */
12339       if (sections->macro.s.section != NULL)
12340         return 0;
12341       sections->macro.s.section = sectp;
12342       sections->macro.size = bfd_get_section_size (sectp);
12343     }
12344   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12345     {
12346       /* There can be only one.  */
12347       if (sections->str_offsets.s.section != NULL)
12348         return 0;
12349       sections->str_offsets.s.section = sectp;
12350       sections->str_offsets.size = bfd_get_section_size (sectp);
12351     }
12352   else
12353     {
12354       /* No other kind of section is valid.  */
12355       return 0;
12356     }
12357
12358   return 1;
12359 }
12360
12361 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12362    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12363    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12364    This is for DWP version 1 files.  */
12365
12366 static struct dwo_unit *
12367 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12368                            struct dwp_file *dwp_file,
12369                            uint32_t unit_index,
12370                            const char *comp_dir,
12371                            ULONGEST signature, int is_debug_types)
12372 {
12373   struct objfile *objfile = dwarf2_per_objfile->objfile;
12374   const struct dwp_hash_table *dwp_htab =
12375     is_debug_types ? dwp_file->tus : dwp_file->cus;
12376   bfd *dbfd = dwp_file->dbfd.get ();
12377   const char *kind = is_debug_types ? "TU" : "CU";
12378   struct dwo_file *dwo_file;
12379   struct dwo_unit *dwo_unit;
12380   struct virtual_v1_dwo_sections sections;
12381   void **dwo_file_slot;
12382   int i;
12383
12384   gdb_assert (dwp_file->version == 1);
12385
12386   if (dwarf_read_debug)
12387     {
12388       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12389                           kind,
12390                           pulongest (unit_index), hex_string (signature),
12391                           dwp_file->name);
12392     }
12393
12394   /* Fetch the sections of this DWO unit.
12395      Put a limit on the number of sections we look for so that bad data
12396      doesn't cause us to loop forever.  */
12397
12398 #define MAX_NR_V1_DWO_SECTIONS \
12399   (1 /* .debug_info or .debug_types */ \
12400    + 1 /* .debug_abbrev */ \
12401    + 1 /* .debug_line */ \
12402    + 1 /* .debug_loc */ \
12403    + 1 /* .debug_str_offsets */ \
12404    + 1 /* .debug_macro or .debug_macinfo */ \
12405    + 1 /* trailing zero */)
12406
12407   memset (&sections, 0, sizeof (sections));
12408
12409   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12410     {
12411       asection *sectp;
12412       uint32_t section_nr =
12413         read_4_bytes (dbfd,
12414                       dwp_htab->section_pool.v1.indices
12415                       + (unit_index + i) * sizeof (uint32_t));
12416
12417       if (section_nr == 0)
12418         break;
12419       if (section_nr >= dwp_file->num_sections)
12420         {
12421           error (_("Dwarf Error: bad DWP hash table, section number too large"
12422                    " [in module %s]"),
12423                  dwp_file->name);
12424         }
12425
12426       sectp = dwp_file->elf_sections[section_nr];
12427       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12428         {
12429           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12430                    " [in module %s]"),
12431                  dwp_file->name);
12432         }
12433     }
12434
12435   if (i < 2
12436       || dwarf2_section_empty_p (&sections.info_or_types)
12437       || dwarf2_section_empty_p (&sections.abbrev))
12438     {
12439       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12440                " [in module %s]"),
12441              dwp_file->name);
12442     }
12443   if (i == MAX_NR_V1_DWO_SECTIONS)
12444     {
12445       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12446                " [in module %s]"),
12447              dwp_file->name);
12448     }
12449
12450   /* It's easier for the rest of the code if we fake a struct dwo_file and
12451      have dwo_unit "live" in that.  At least for now.
12452
12453      The DWP file can be made up of a random collection of CUs and TUs.
12454      However, for each CU + set of TUs that came from the same original DWO
12455      file, we can combine them back into a virtual DWO file to save space
12456      (fewer struct dwo_file objects to allocate).  Remember that for really
12457      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12458
12459   std::string virtual_dwo_name =
12460     string_printf ("virtual-dwo/%d-%d-%d-%d",
12461                    get_section_id (&sections.abbrev),
12462                    get_section_id (&sections.line),
12463                    get_section_id (&sections.loc),
12464                    get_section_id (&sections.str_offsets));
12465   /* Can we use an existing virtual DWO file?  */
12466   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12467                                         virtual_dwo_name.c_str (),
12468                                         comp_dir);
12469   /* Create one if necessary.  */
12470   if (*dwo_file_slot == NULL)
12471     {
12472       if (dwarf_read_debug)
12473         {
12474           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12475                               virtual_dwo_name.c_str ());
12476         }
12477       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12478       dwo_file->dwo_name
12479         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12480                                         virtual_dwo_name.c_str (),
12481                                         virtual_dwo_name.size ());
12482       dwo_file->comp_dir = comp_dir;
12483       dwo_file->sections.abbrev = sections.abbrev;
12484       dwo_file->sections.line = sections.line;
12485       dwo_file->sections.loc = sections.loc;
12486       dwo_file->sections.macinfo = sections.macinfo;
12487       dwo_file->sections.macro = sections.macro;
12488       dwo_file->sections.str_offsets = sections.str_offsets;
12489       /* The "str" section is global to the entire DWP file.  */
12490       dwo_file->sections.str = dwp_file->sections.str;
12491       /* The info or types section is assigned below to dwo_unit,
12492          there's no need to record it in dwo_file.
12493          Also, we can't simply record type sections in dwo_file because
12494          we record a pointer into the vector in dwo_unit.  As we collect more
12495          types we'll grow the vector and eventually have to reallocate space
12496          for it, invalidating all copies of pointers into the previous
12497          contents.  */
12498       *dwo_file_slot = dwo_file;
12499     }
12500   else
12501     {
12502       if (dwarf_read_debug)
12503         {
12504           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12505                               virtual_dwo_name.c_str ());
12506         }
12507       dwo_file = (struct dwo_file *) *dwo_file_slot;
12508     }
12509
12510   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12511   dwo_unit->dwo_file = dwo_file;
12512   dwo_unit->signature = signature;
12513   dwo_unit->section =
12514     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12515   *dwo_unit->section = sections.info_or_types;
12516   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12517
12518   return dwo_unit;
12519 }
12520
12521 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12522    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12523    piece within that section used by a TU/CU, return a virtual section
12524    of just that piece.  */
12525
12526 static struct dwarf2_section_info
12527 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12528                        struct dwarf2_section_info *section,
12529                        bfd_size_type offset, bfd_size_type size)
12530 {
12531   struct dwarf2_section_info result;
12532   asection *sectp;
12533
12534   gdb_assert (section != NULL);
12535   gdb_assert (!section->is_virtual);
12536
12537   memset (&result, 0, sizeof (result));
12538   result.s.containing_section = section;
12539   result.is_virtual = 1;
12540
12541   if (size == 0)
12542     return result;
12543
12544   sectp = get_section_bfd_section (section);
12545
12546   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12547      bounds of the real section.  This is a pretty-rare event, so just
12548      flag an error (easier) instead of a warning and trying to cope.  */
12549   if (sectp == NULL
12550       || offset + size > bfd_get_section_size (sectp))
12551     {
12552       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12553                " in section %s [in module %s]"),
12554              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12555              objfile_name (dwarf2_per_objfile->objfile));
12556     }
12557
12558   result.virtual_offset = offset;
12559   result.size = size;
12560   return result;
12561 }
12562
12563 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12564    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12565    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12566    This is for DWP version 2 files.  */
12567
12568 static struct dwo_unit *
12569 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12570                            struct dwp_file *dwp_file,
12571                            uint32_t unit_index,
12572                            const char *comp_dir,
12573                            ULONGEST signature, int is_debug_types)
12574 {
12575   struct objfile *objfile = dwarf2_per_objfile->objfile;
12576   const struct dwp_hash_table *dwp_htab =
12577     is_debug_types ? dwp_file->tus : dwp_file->cus;
12578   bfd *dbfd = dwp_file->dbfd.get ();
12579   const char *kind = is_debug_types ? "TU" : "CU";
12580   struct dwo_file *dwo_file;
12581   struct dwo_unit *dwo_unit;
12582   struct virtual_v2_dwo_sections sections;
12583   void **dwo_file_slot;
12584   int i;
12585
12586   gdb_assert (dwp_file->version == 2);
12587
12588   if (dwarf_read_debug)
12589     {
12590       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12591                           kind,
12592                           pulongest (unit_index), hex_string (signature),
12593                           dwp_file->name);
12594     }
12595
12596   /* Fetch the section offsets of this DWO unit.  */
12597
12598   memset (&sections, 0, sizeof (sections));
12599
12600   for (i = 0; i < dwp_htab->nr_columns; ++i)
12601     {
12602       uint32_t offset = read_4_bytes (dbfd,
12603                                       dwp_htab->section_pool.v2.offsets
12604                                       + (((unit_index - 1) * dwp_htab->nr_columns
12605                                           + i)
12606                                          * sizeof (uint32_t)));
12607       uint32_t size = read_4_bytes (dbfd,
12608                                     dwp_htab->section_pool.v2.sizes
12609                                     + (((unit_index - 1) * dwp_htab->nr_columns
12610                                         + i)
12611                                        * sizeof (uint32_t)));
12612
12613       switch (dwp_htab->section_pool.v2.section_ids[i])
12614         {
12615         case DW_SECT_INFO:
12616         case DW_SECT_TYPES:
12617           sections.info_or_types_offset = offset;
12618           sections.info_or_types_size = size;
12619           break;
12620         case DW_SECT_ABBREV:
12621           sections.abbrev_offset = offset;
12622           sections.abbrev_size = size;
12623           break;
12624         case DW_SECT_LINE:
12625           sections.line_offset = offset;
12626           sections.line_size = size;
12627           break;
12628         case DW_SECT_LOC:
12629           sections.loc_offset = offset;
12630           sections.loc_size = size;
12631           break;
12632         case DW_SECT_STR_OFFSETS:
12633           sections.str_offsets_offset = offset;
12634           sections.str_offsets_size = size;
12635           break;
12636         case DW_SECT_MACINFO:
12637           sections.macinfo_offset = offset;
12638           sections.macinfo_size = size;
12639           break;
12640         case DW_SECT_MACRO:
12641           sections.macro_offset = offset;
12642           sections.macro_size = size;
12643           break;
12644         }
12645     }
12646
12647   /* It's easier for the rest of the code if we fake a struct dwo_file and
12648      have dwo_unit "live" in that.  At least for now.
12649
12650      The DWP file can be made up of a random collection of CUs and TUs.
12651      However, for each CU + set of TUs that came from the same original DWO
12652      file, we can combine them back into a virtual DWO file to save space
12653      (fewer struct dwo_file objects to allocate).  Remember that for really
12654      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12655
12656   std::string virtual_dwo_name =
12657     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12658                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12659                    (long) (sections.line_size ? sections.line_offset : 0),
12660                    (long) (sections.loc_size ? sections.loc_offset : 0),
12661                    (long) (sections.str_offsets_size
12662                            ? sections.str_offsets_offset : 0));
12663   /* Can we use an existing virtual DWO file?  */
12664   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12665                                         virtual_dwo_name.c_str (),
12666                                         comp_dir);
12667   /* Create one if necessary.  */
12668   if (*dwo_file_slot == NULL)
12669     {
12670       if (dwarf_read_debug)
12671         {
12672           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12673                               virtual_dwo_name.c_str ());
12674         }
12675       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12676       dwo_file->dwo_name
12677         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12678                                         virtual_dwo_name.c_str (),
12679                                         virtual_dwo_name.size ());
12680       dwo_file->comp_dir = comp_dir;
12681       dwo_file->sections.abbrev =
12682         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12683                                sections.abbrev_offset, sections.abbrev_size);
12684       dwo_file->sections.line =
12685         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12686                                sections.line_offset, sections.line_size);
12687       dwo_file->sections.loc =
12688         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12689                                sections.loc_offset, sections.loc_size);
12690       dwo_file->sections.macinfo =
12691         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12692                                sections.macinfo_offset, sections.macinfo_size);
12693       dwo_file->sections.macro =
12694         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12695                                sections.macro_offset, sections.macro_size);
12696       dwo_file->sections.str_offsets =
12697         create_dwp_v2_section (dwarf2_per_objfile,
12698                                &dwp_file->sections.str_offsets,
12699                                sections.str_offsets_offset,
12700                                sections.str_offsets_size);
12701       /* The "str" section is global to the entire DWP file.  */
12702       dwo_file->sections.str = dwp_file->sections.str;
12703       /* The info or types section is assigned below to dwo_unit,
12704          there's no need to record it in dwo_file.
12705          Also, we can't simply record type sections in dwo_file because
12706          we record a pointer into the vector in dwo_unit.  As we collect more
12707          types we'll grow the vector and eventually have to reallocate space
12708          for it, invalidating all copies of pointers into the previous
12709          contents.  */
12710       *dwo_file_slot = dwo_file;
12711     }
12712   else
12713     {
12714       if (dwarf_read_debug)
12715         {
12716           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12717                               virtual_dwo_name.c_str ());
12718         }
12719       dwo_file = (struct dwo_file *) *dwo_file_slot;
12720     }
12721
12722   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12723   dwo_unit->dwo_file = dwo_file;
12724   dwo_unit->signature = signature;
12725   dwo_unit->section =
12726     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12727   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12728                                               is_debug_types
12729                                               ? &dwp_file->sections.types
12730                                               : &dwp_file->sections.info,
12731                                               sections.info_or_types_offset,
12732                                               sections.info_or_types_size);
12733   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12734
12735   return dwo_unit;
12736 }
12737
12738 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12739    Returns NULL if the signature isn't found.  */
12740
12741 static struct dwo_unit *
12742 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12743                         struct dwp_file *dwp_file, const char *comp_dir,
12744                         ULONGEST signature, int is_debug_types)
12745 {
12746   const struct dwp_hash_table *dwp_htab =
12747     is_debug_types ? dwp_file->tus : dwp_file->cus;
12748   bfd *dbfd = dwp_file->dbfd.get ();
12749   uint32_t mask = dwp_htab->nr_slots - 1;
12750   uint32_t hash = signature & mask;
12751   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12752   unsigned int i;
12753   void **slot;
12754   struct dwo_unit find_dwo_cu;
12755
12756   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12757   find_dwo_cu.signature = signature;
12758   slot = htab_find_slot (is_debug_types
12759                          ? dwp_file->loaded_tus
12760                          : dwp_file->loaded_cus,
12761                          &find_dwo_cu, INSERT);
12762
12763   if (*slot != NULL)
12764     return (struct dwo_unit *) *slot;
12765
12766   /* Use a for loop so that we don't loop forever on bad debug info.  */
12767   for (i = 0; i < dwp_htab->nr_slots; ++i)
12768     {
12769       ULONGEST signature_in_table;
12770
12771       signature_in_table =
12772         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12773       if (signature_in_table == signature)
12774         {
12775           uint32_t unit_index =
12776             read_4_bytes (dbfd,
12777                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12778
12779           if (dwp_file->version == 1)
12780             {
12781               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12782                                                  dwp_file, unit_index,
12783                                                  comp_dir, signature,
12784                                                  is_debug_types);
12785             }
12786           else
12787             {
12788               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12789                                                  dwp_file, unit_index,
12790                                                  comp_dir, signature,
12791                                                  is_debug_types);
12792             }
12793           return (struct dwo_unit *) *slot;
12794         }
12795       if (signature_in_table == 0)
12796         return NULL;
12797       hash = (hash + hash2) & mask;
12798     }
12799
12800   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12801            " [in module %s]"),
12802          dwp_file->name);
12803 }
12804
12805 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12806    Open the file specified by FILE_NAME and hand it off to BFD for
12807    preliminary analysis.  Return a newly initialized bfd *, which
12808    includes a canonicalized copy of FILE_NAME.
12809    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12810    SEARCH_CWD is true if the current directory is to be searched.
12811    It will be searched before debug-file-directory.
12812    If successful, the file is added to the bfd include table of the
12813    objfile's bfd (see gdb_bfd_record_inclusion).
12814    If unable to find/open the file, return NULL.
12815    NOTE: This function is derived from symfile_bfd_open.  */
12816
12817 static gdb_bfd_ref_ptr
12818 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12819                     const char *file_name, int is_dwp, int search_cwd)
12820 {
12821   int desc;
12822   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12823      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12824      to debug_file_directory.  */
12825   const char *search_path;
12826   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12827
12828   gdb::unique_xmalloc_ptr<char> search_path_holder;
12829   if (search_cwd)
12830     {
12831       if (*debug_file_directory != '\0')
12832         {
12833           search_path_holder.reset (concat (".", dirname_separator_string,
12834                                             debug_file_directory,
12835                                             (char *) NULL));
12836           search_path = search_path_holder.get ();
12837         }
12838       else
12839         search_path = ".";
12840     }
12841   else
12842     search_path = debug_file_directory;
12843
12844   openp_flags flags = OPF_RETURN_REALPATH;
12845   if (is_dwp)
12846     flags |= OPF_SEARCH_IN_PATH;
12847
12848   gdb::unique_xmalloc_ptr<char> absolute_name;
12849   desc = openp (search_path, flags, file_name,
12850                 O_RDONLY | O_BINARY, &absolute_name);
12851   if (desc < 0)
12852     return NULL;
12853
12854   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12855                                          gnutarget, desc));
12856   if (sym_bfd == NULL)
12857     return NULL;
12858   bfd_set_cacheable (sym_bfd.get (), 1);
12859
12860   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12861     return NULL;
12862
12863   /* Success.  Record the bfd as having been included by the objfile's bfd.
12864      This is important because things like demangled_names_hash lives in the
12865      objfile's per_bfd space and may have references to things like symbol
12866      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12867   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12868
12869   return sym_bfd;
12870 }
12871
12872 /* Try to open DWO file FILE_NAME.
12873    COMP_DIR is the DW_AT_comp_dir attribute.
12874    The result is the bfd handle of the file.
12875    If there is a problem finding or opening the file, return NULL.
12876    Upon success, the canonicalized path of the file is stored in the bfd,
12877    same as symfile_bfd_open.  */
12878
12879 static gdb_bfd_ref_ptr
12880 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12881                const char *file_name, const char *comp_dir)
12882 {
12883   if (IS_ABSOLUTE_PATH (file_name))
12884     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12885                                0 /*is_dwp*/, 0 /*search_cwd*/);
12886
12887   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12888
12889   if (comp_dir != NULL)
12890     {
12891       char *path_to_try = concat (comp_dir, SLASH_STRING,
12892                                   file_name, (char *) NULL);
12893
12894       /* NOTE: If comp_dir is a relative path, this will also try the
12895          search path, which seems useful.  */
12896       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12897                                                 path_to_try,
12898                                                 0 /*is_dwp*/,
12899                                                 1 /*search_cwd*/));
12900       xfree (path_to_try);
12901       if (abfd != NULL)
12902         return abfd;
12903     }
12904
12905   /* That didn't work, try debug-file-directory, which, despite its name,
12906      is a list of paths.  */
12907
12908   if (*debug_file_directory == '\0')
12909     return NULL;
12910
12911   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12912                              0 /*is_dwp*/, 1 /*search_cwd*/);
12913 }
12914
12915 /* This function is mapped across the sections and remembers the offset and
12916    size of each of the DWO debugging sections we are interested in.  */
12917
12918 static void
12919 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12920 {
12921   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12922   const struct dwop_section_names *names = &dwop_section_names;
12923
12924   if (section_is_p (sectp->name, &names->abbrev_dwo))
12925     {
12926       dwo_sections->abbrev.s.section = sectp;
12927       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12928     }
12929   else if (section_is_p (sectp->name, &names->info_dwo))
12930     {
12931       dwo_sections->info.s.section = sectp;
12932       dwo_sections->info.size = bfd_get_section_size (sectp);
12933     }
12934   else if (section_is_p (sectp->name, &names->line_dwo))
12935     {
12936       dwo_sections->line.s.section = sectp;
12937       dwo_sections->line.size = bfd_get_section_size (sectp);
12938     }
12939   else if (section_is_p (sectp->name, &names->loc_dwo))
12940     {
12941       dwo_sections->loc.s.section = sectp;
12942       dwo_sections->loc.size = bfd_get_section_size (sectp);
12943     }
12944   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12945     {
12946       dwo_sections->macinfo.s.section = sectp;
12947       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12948     }
12949   else if (section_is_p (sectp->name, &names->macro_dwo))
12950     {
12951       dwo_sections->macro.s.section = sectp;
12952       dwo_sections->macro.size = bfd_get_section_size (sectp);
12953     }
12954   else if (section_is_p (sectp->name, &names->str_dwo))
12955     {
12956       dwo_sections->str.s.section = sectp;
12957       dwo_sections->str.size = bfd_get_section_size (sectp);
12958     }
12959   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12960     {
12961       dwo_sections->str_offsets.s.section = sectp;
12962       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12963     }
12964   else if (section_is_p (sectp->name, &names->types_dwo))
12965     {
12966       struct dwarf2_section_info type_section;
12967
12968       memset (&type_section, 0, sizeof (type_section));
12969       type_section.s.section = sectp;
12970       type_section.size = bfd_get_section_size (sectp);
12971       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12972                      &type_section);
12973     }
12974 }
12975
12976 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12977    by PER_CU.  This is for the non-DWP case.
12978    The result is NULL if DWO_NAME can't be found.  */
12979
12980 static struct dwo_file *
12981 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12982                         const char *dwo_name, const char *comp_dir)
12983 {
12984   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12985   struct objfile *objfile = dwarf2_per_objfile->objfile;
12986
12987   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12988   if (dbfd == NULL)
12989     {
12990       if (dwarf_read_debug)
12991         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12992       return NULL;
12993     }
12994
12995   /* We use a unique pointer here, despite the obstack allocation,
12996      because a dwo_file needs some cleanup if it is abandoned.  */
12997   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12998                                         struct dwo_file));
12999   dwo_file->dwo_name = dwo_name;
13000   dwo_file->comp_dir = comp_dir;
13001   dwo_file->dbfd = dbfd.release ();
13002
13003   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
13004                          &dwo_file->sections);
13005
13006   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
13007                          dwo_file->cus);
13008
13009   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
13010                                  dwo_file->sections.types, dwo_file->tus);
13011
13012   if (dwarf_read_debug)
13013     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13014
13015   return dwo_file.release ();
13016 }
13017
13018 /* This function is mapped across the sections and remembers the offset and
13019    size of each of the DWP debugging sections common to version 1 and 2 that
13020    we are interested in.  */
13021
13022 static void
13023 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13024                                    void *dwp_file_ptr)
13025 {
13026   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13027   const struct dwop_section_names *names = &dwop_section_names;
13028   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13029
13030   /* Record the ELF section number for later lookup: this is what the
13031      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13032   gdb_assert (elf_section_nr < dwp_file->num_sections);
13033   dwp_file->elf_sections[elf_section_nr] = sectp;
13034
13035   /* Look for specific sections that we need.  */
13036   if (section_is_p (sectp->name, &names->str_dwo))
13037     {
13038       dwp_file->sections.str.s.section = sectp;
13039       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13040     }
13041   else if (section_is_p (sectp->name, &names->cu_index))
13042     {
13043       dwp_file->sections.cu_index.s.section = sectp;
13044       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13045     }
13046   else if (section_is_p (sectp->name, &names->tu_index))
13047     {
13048       dwp_file->sections.tu_index.s.section = sectp;
13049       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13050     }
13051 }
13052
13053 /* This function is mapped across the sections and remembers the offset and
13054    size of each of the DWP version 2 debugging sections that we are interested
13055    in.  This is split into a separate function because we don't know if we
13056    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13057
13058 static void
13059 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13060 {
13061   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13062   const struct dwop_section_names *names = &dwop_section_names;
13063   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13064
13065   /* Record the ELF section number for later lookup: this is what the
13066      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13067   gdb_assert (elf_section_nr < dwp_file->num_sections);
13068   dwp_file->elf_sections[elf_section_nr] = sectp;
13069
13070   /* Look for specific sections that we need.  */
13071   if (section_is_p (sectp->name, &names->abbrev_dwo))
13072     {
13073       dwp_file->sections.abbrev.s.section = sectp;
13074       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13075     }
13076   else if (section_is_p (sectp->name, &names->info_dwo))
13077     {
13078       dwp_file->sections.info.s.section = sectp;
13079       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13080     }
13081   else if (section_is_p (sectp->name, &names->line_dwo))
13082     {
13083       dwp_file->sections.line.s.section = sectp;
13084       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13085     }
13086   else if (section_is_p (sectp->name, &names->loc_dwo))
13087     {
13088       dwp_file->sections.loc.s.section = sectp;
13089       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13090     }
13091   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13092     {
13093       dwp_file->sections.macinfo.s.section = sectp;
13094       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13095     }
13096   else if (section_is_p (sectp->name, &names->macro_dwo))
13097     {
13098       dwp_file->sections.macro.s.section = sectp;
13099       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13100     }
13101   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13102     {
13103       dwp_file->sections.str_offsets.s.section = sectp;
13104       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13105     }
13106   else if (section_is_p (sectp->name, &names->types_dwo))
13107     {
13108       dwp_file->sections.types.s.section = sectp;
13109       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13110     }
13111 }
13112
13113 /* Hash function for dwp_file loaded CUs/TUs.  */
13114
13115 static hashval_t
13116 hash_dwp_loaded_cutus (const void *item)
13117 {
13118   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13119
13120   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13121   return dwo_unit->signature;
13122 }
13123
13124 /* Equality function for dwp_file loaded CUs/TUs.  */
13125
13126 static int
13127 eq_dwp_loaded_cutus (const void *a, const void *b)
13128 {
13129   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13130   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13131
13132   return dua->signature == dub->signature;
13133 }
13134
13135 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13136
13137 static htab_t
13138 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13139 {
13140   return htab_create_alloc_ex (3,
13141                                hash_dwp_loaded_cutus,
13142                                eq_dwp_loaded_cutus,
13143                                NULL,
13144                                &objfile->objfile_obstack,
13145                                hashtab_obstack_allocate,
13146                                dummy_obstack_deallocate);
13147 }
13148
13149 /* Try to open DWP file FILE_NAME.
13150    The result is the bfd handle of the file.
13151    If there is a problem finding or opening the file, return NULL.
13152    Upon success, the canonicalized path of the file is stored in the bfd,
13153    same as symfile_bfd_open.  */
13154
13155 static gdb_bfd_ref_ptr
13156 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13157                const char *file_name)
13158 {
13159   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13160                                             1 /*is_dwp*/,
13161                                             1 /*search_cwd*/));
13162   if (abfd != NULL)
13163     return abfd;
13164
13165   /* Work around upstream bug 15652.
13166      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13167      [Whether that's a "bug" is debatable, but it is getting in our way.]
13168      We have no real idea where the dwp file is, because gdb's realpath-ing
13169      of the executable's path may have discarded the needed info.
13170      [IWBN if the dwp file name was recorded in the executable, akin to
13171      .gnu_debuglink, but that doesn't exist yet.]
13172      Strip the directory from FILE_NAME and search again.  */
13173   if (*debug_file_directory != '\0')
13174     {
13175       /* Don't implicitly search the current directory here.
13176          If the user wants to search "." to handle this case,
13177          it must be added to debug-file-directory.  */
13178       return try_open_dwop_file (dwarf2_per_objfile,
13179                                  lbasename (file_name), 1 /*is_dwp*/,
13180                                  0 /*search_cwd*/);
13181     }
13182
13183   return NULL;
13184 }
13185
13186 /* Initialize the use of the DWP file for the current objfile.
13187    By convention the name of the DWP file is ${objfile}.dwp.
13188    The result is NULL if it can't be found.  */
13189
13190 static std::unique_ptr<struct dwp_file>
13191 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13192 {
13193   struct objfile *objfile = dwarf2_per_objfile->objfile;
13194
13195   /* Try to find first .dwp for the binary file before any symbolic links
13196      resolving.  */
13197
13198   /* If the objfile is a debug file, find the name of the real binary
13199      file and get the name of dwp file from there.  */
13200   std::string dwp_name;
13201   if (objfile->separate_debug_objfile_backlink != NULL)
13202     {
13203       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13204       const char *backlink_basename = lbasename (backlink->original_name);
13205
13206       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13207     }
13208   else
13209     dwp_name = objfile->original_name;
13210
13211   dwp_name += ".dwp";
13212
13213   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13214   if (dbfd == NULL
13215       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13216     {
13217       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13218       dwp_name = objfile_name (objfile);
13219       dwp_name += ".dwp";
13220       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13221     }
13222
13223   if (dbfd == NULL)
13224     {
13225       if (dwarf_read_debug)
13226         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13227       return std::unique_ptr<dwp_file> ();
13228     }
13229
13230   const char *name = bfd_get_filename (dbfd.get ());
13231   std::unique_ptr<struct dwp_file> dwp_file
13232     (new struct dwp_file (name, std::move (dbfd)));
13233
13234   dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
13235   dwp_file->elf_sections =
13236     OBSTACK_CALLOC (&objfile->objfile_obstack,
13237                     dwp_file->num_sections, asection *);
13238
13239   bfd_map_over_sections (dwp_file->dbfd.get (),
13240                          dwarf2_locate_common_dwp_sections,
13241                          dwp_file.get ());
13242
13243   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13244                                          0);
13245
13246   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13247                                          1);
13248
13249   /* The DWP file version is stored in the hash table.  Oh well.  */
13250   if (dwp_file->cus && dwp_file->tus
13251       && dwp_file->cus->version != dwp_file->tus->version)
13252     {
13253       /* Technically speaking, we should try to limp along, but this is
13254          pretty bizarre.  We use pulongest here because that's the established
13255          portability solution (e.g, we cannot use %u for uint32_t).  */
13256       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13257                " TU version %s [in DWP file %s]"),
13258              pulongest (dwp_file->cus->version),
13259              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13260     }
13261
13262   if (dwp_file->cus)
13263     dwp_file->version = dwp_file->cus->version;
13264   else if (dwp_file->tus)
13265     dwp_file->version = dwp_file->tus->version;
13266   else
13267     dwp_file->version = 2;
13268
13269   if (dwp_file->version == 2)
13270     bfd_map_over_sections (dwp_file->dbfd.get (),
13271                            dwarf2_locate_v2_dwp_sections,
13272                            dwp_file.get ());
13273
13274   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13275   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13276
13277   if (dwarf_read_debug)
13278     {
13279       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13280       fprintf_unfiltered (gdb_stdlog,
13281                           "    %s CUs, %s TUs\n",
13282                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13283                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13284     }
13285
13286   return dwp_file;
13287 }
13288
13289 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13290
13291 static struct dwp_file *
13292 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13293 {
13294   if (! dwarf2_per_objfile->dwp_checked)
13295     {
13296       dwarf2_per_objfile->dwp_file
13297         = open_and_init_dwp_file (dwarf2_per_objfile);
13298       dwarf2_per_objfile->dwp_checked = 1;
13299     }
13300   return dwarf2_per_objfile->dwp_file.get ();
13301 }
13302
13303 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13304    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13305    or in the DWP file for the objfile, referenced by THIS_UNIT.
13306    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13307    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13308
13309    This is called, for example, when wanting to read a variable with a
13310    complex location.  Therefore we don't want to do file i/o for every call.
13311    Therefore we don't want to look for a DWO file on every call.
13312    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13313    then we check if we've already seen DWO_NAME, and only THEN do we check
13314    for a DWO file.
13315
13316    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13317    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13318
13319 static struct dwo_unit *
13320 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13321                  const char *dwo_name, const char *comp_dir,
13322                  ULONGEST signature, int is_debug_types)
13323 {
13324   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13325   struct objfile *objfile = dwarf2_per_objfile->objfile;
13326   const char *kind = is_debug_types ? "TU" : "CU";
13327   void **dwo_file_slot;
13328   struct dwo_file *dwo_file;
13329   struct dwp_file *dwp_file;
13330
13331   /* First see if there's a DWP file.
13332      If we have a DWP file but didn't find the DWO inside it, don't
13333      look for the original DWO file.  It makes gdb behave differently
13334      depending on whether one is debugging in the build tree.  */
13335
13336   dwp_file = get_dwp_file (dwarf2_per_objfile);
13337   if (dwp_file != NULL)
13338     {
13339       const struct dwp_hash_table *dwp_htab =
13340         is_debug_types ? dwp_file->tus : dwp_file->cus;
13341
13342       if (dwp_htab != NULL)
13343         {
13344           struct dwo_unit *dwo_cutu =
13345             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13346                                     signature, is_debug_types);
13347
13348           if (dwo_cutu != NULL)
13349             {
13350               if (dwarf_read_debug)
13351                 {
13352                   fprintf_unfiltered (gdb_stdlog,
13353                                       "Virtual DWO %s %s found: @%s\n",
13354                                       kind, hex_string (signature),
13355                                       host_address_to_string (dwo_cutu));
13356                 }
13357               return dwo_cutu;
13358             }
13359         }
13360     }
13361   else
13362     {
13363       /* No DWP file, look for the DWO file.  */
13364
13365       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13366                                             dwo_name, comp_dir);
13367       if (*dwo_file_slot == NULL)
13368         {
13369           /* Read in the file and build a table of the CUs/TUs it contains.  */
13370           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13371         }
13372       /* NOTE: This will be NULL if unable to open the file.  */
13373       dwo_file = (struct dwo_file *) *dwo_file_slot;
13374
13375       if (dwo_file != NULL)
13376         {
13377           struct dwo_unit *dwo_cutu = NULL;
13378
13379           if (is_debug_types && dwo_file->tus)
13380             {
13381               struct dwo_unit find_dwo_cutu;
13382
13383               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13384               find_dwo_cutu.signature = signature;
13385               dwo_cutu
13386                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13387             }
13388           else if (!is_debug_types && dwo_file->cus)
13389             {
13390               struct dwo_unit find_dwo_cutu;
13391
13392               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13393               find_dwo_cutu.signature = signature;
13394               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13395                                                        &find_dwo_cutu);
13396             }
13397
13398           if (dwo_cutu != NULL)
13399             {
13400               if (dwarf_read_debug)
13401                 {
13402                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13403                                       kind, dwo_name, hex_string (signature),
13404                                       host_address_to_string (dwo_cutu));
13405                 }
13406               return dwo_cutu;
13407             }
13408         }
13409     }
13410
13411   /* We didn't find it.  This could mean a dwo_id mismatch, or
13412      someone deleted the DWO/DWP file, or the search path isn't set up
13413      correctly to find the file.  */
13414
13415   if (dwarf_read_debug)
13416     {
13417       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13418                           kind, dwo_name, hex_string (signature));
13419     }
13420
13421   /* This is a warning and not a complaint because it can be caused by
13422      pilot error (e.g., user accidentally deleting the DWO).  */
13423   {
13424     /* Print the name of the DWP file if we looked there, helps the user
13425        better diagnose the problem.  */
13426     std::string dwp_text;
13427
13428     if (dwp_file != NULL)
13429       dwp_text = string_printf (" [in DWP file %s]",
13430                                 lbasename (dwp_file->name));
13431
13432     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13433                " [in module %s]"),
13434              kind, dwo_name, hex_string (signature),
13435              dwp_text.c_str (),
13436              this_unit->is_debug_types ? "TU" : "CU",
13437              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13438   }
13439   return NULL;
13440 }
13441
13442 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13443    See lookup_dwo_cutu_unit for details.  */
13444
13445 static struct dwo_unit *
13446 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13447                       const char *dwo_name, const char *comp_dir,
13448                       ULONGEST signature)
13449 {
13450   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13451 }
13452
13453 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13454    See lookup_dwo_cutu_unit for details.  */
13455
13456 static struct dwo_unit *
13457 lookup_dwo_type_unit (struct signatured_type *this_tu,
13458                       const char *dwo_name, const char *comp_dir)
13459 {
13460   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13461 }
13462
13463 /* Traversal function for queue_and_load_all_dwo_tus.  */
13464
13465 static int
13466 queue_and_load_dwo_tu (void **slot, void *info)
13467 {
13468   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13469   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13470   ULONGEST signature = dwo_unit->signature;
13471   struct signatured_type *sig_type =
13472     lookup_dwo_signatured_type (per_cu->cu, signature);
13473
13474   if (sig_type != NULL)
13475     {
13476       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13477
13478       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13479          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13480          while processing PER_CU.  */
13481       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13482         load_full_type_unit (sig_cu);
13483       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13484     }
13485
13486   return 1;
13487 }
13488
13489 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13490    The DWO may have the only definition of the type, though it may not be
13491    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13492    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13493
13494 static void
13495 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13496 {
13497   struct dwo_unit *dwo_unit;
13498   struct dwo_file *dwo_file;
13499
13500   gdb_assert (!per_cu->is_debug_types);
13501   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13502   gdb_assert (per_cu->cu != NULL);
13503
13504   dwo_unit = per_cu->cu->dwo_unit;
13505   gdb_assert (dwo_unit != NULL);
13506
13507   dwo_file = dwo_unit->dwo_file;
13508   if (dwo_file->tus != NULL)
13509     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13510 }
13511
13512 /* Free all resources associated with DWO_FILE.
13513    Close the DWO file and munmap the sections.  */
13514
13515 static void
13516 free_dwo_file (struct dwo_file *dwo_file)
13517 {
13518   /* Note: dbfd is NULL for virtual DWO files.  */
13519   gdb_bfd_unref (dwo_file->dbfd);
13520
13521   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13522 }
13523
13524 /* Traversal function for free_dwo_files.  */
13525
13526 static int
13527 free_dwo_file_from_slot (void **slot, void *info)
13528 {
13529   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13530
13531   free_dwo_file (dwo_file);
13532
13533   return 1;
13534 }
13535
13536 /* Free all resources associated with DWO_FILES.  */
13537
13538 static void
13539 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13540 {
13541   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13542 }
13543 \f
13544 /* Read in various DIEs.  */
13545
13546 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13547    Inherit only the children of the DW_AT_abstract_origin DIE not being
13548    already referenced by DW_AT_abstract_origin from the children of the
13549    current DIE.  */
13550
13551 static void
13552 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13553 {
13554   struct die_info *child_die;
13555   sect_offset *offsetp;
13556   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13557   struct die_info *origin_die;
13558   /* Iterator of the ORIGIN_DIE children.  */
13559   struct die_info *origin_child_die;
13560   struct attribute *attr;
13561   struct dwarf2_cu *origin_cu;
13562   struct pending **origin_previous_list_in_scope;
13563
13564   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13565   if (!attr)
13566     return;
13567
13568   /* Note that following die references may follow to a die in a
13569      different cu.  */
13570
13571   origin_cu = cu;
13572   origin_die = follow_die_ref (die, attr, &origin_cu);
13573
13574   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13575      symbols in.  */
13576   origin_previous_list_in_scope = origin_cu->list_in_scope;
13577   origin_cu->list_in_scope = cu->list_in_scope;
13578
13579   if (die->tag != origin_die->tag
13580       && !(die->tag == DW_TAG_inlined_subroutine
13581            && origin_die->tag == DW_TAG_subprogram))
13582     complaint (_("DIE %s and its abstract origin %s have different tags"),
13583                sect_offset_str (die->sect_off),
13584                sect_offset_str (origin_die->sect_off));
13585
13586   std::vector<sect_offset> offsets;
13587
13588   for (child_die = die->child;
13589        child_die && child_die->tag;
13590        child_die = sibling_die (child_die))
13591     {
13592       struct die_info *child_origin_die;
13593       struct dwarf2_cu *child_origin_cu;
13594
13595       /* We are trying to process concrete instance entries:
13596          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13597          it's not relevant to our analysis here. i.e. detecting DIEs that are
13598          present in the abstract instance but not referenced in the concrete
13599          one.  */
13600       if (child_die->tag == DW_TAG_call_site
13601           || child_die->tag == DW_TAG_GNU_call_site)
13602         continue;
13603
13604       /* For each CHILD_DIE, find the corresponding child of
13605          ORIGIN_DIE.  If there is more than one layer of
13606          DW_AT_abstract_origin, follow them all; there shouldn't be,
13607          but GCC versions at least through 4.4 generate this (GCC PR
13608          40573).  */
13609       child_origin_die = child_die;
13610       child_origin_cu = cu;
13611       while (1)
13612         {
13613           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13614                               child_origin_cu);
13615           if (attr == NULL)
13616             break;
13617           child_origin_die = follow_die_ref (child_origin_die, attr,
13618                                              &child_origin_cu);
13619         }
13620
13621       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13622          counterpart may exist.  */
13623       if (child_origin_die != child_die)
13624         {
13625           if (child_die->tag != child_origin_die->tag
13626               && !(child_die->tag == DW_TAG_inlined_subroutine
13627                    && child_origin_die->tag == DW_TAG_subprogram))
13628             complaint (_("Child DIE %s and its abstract origin %s have "
13629                          "different tags"),
13630                        sect_offset_str (child_die->sect_off),
13631                        sect_offset_str (child_origin_die->sect_off));
13632           if (child_origin_die->parent != origin_die)
13633             complaint (_("Child DIE %s and its abstract origin %s have "
13634                          "different parents"),
13635                        sect_offset_str (child_die->sect_off),
13636                        sect_offset_str (child_origin_die->sect_off));
13637           else
13638             offsets.push_back (child_origin_die->sect_off);
13639         }
13640     }
13641   std::sort (offsets.begin (), offsets.end ());
13642   sect_offset *offsets_end = offsets.data () + offsets.size ();
13643   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13644     if (offsetp[-1] == *offsetp)
13645       complaint (_("Multiple children of DIE %s refer "
13646                    "to DIE %s as their abstract origin"),
13647                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13648
13649   offsetp = offsets.data ();
13650   origin_child_die = origin_die->child;
13651   while (origin_child_die && origin_child_die->tag)
13652     {
13653       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13654       while (offsetp < offsets_end
13655              && *offsetp < origin_child_die->sect_off)
13656         offsetp++;
13657       if (offsetp >= offsets_end
13658           || *offsetp > origin_child_die->sect_off)
13659         {
13660           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13661              Check whether we're already processing ORIGIN_CHILD_DIE.
13662              This can happen with mutually referenced abstract_origins.
13663              PR 16581.  */
13664           if (!origin_child_die->in_process)
13665             process_die (origin_child_die, origin_cu);
13666         }
13667       origin_child_die = sibling_die (origin_child_die);
13668     }
13669   origin_cu->list_in_scope = origin_previous_list_in_scope;
13670 }
13671
13672 static void
13673 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13674 {
13675   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13676   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13677   struct context_stack *newobj;
13678   CORE_ADDR lowpc;
13679   CORE_ADDR highpc;
13680   struct die_info *child_die;
13681   struct attribute *attr, *call_line, *call_file;
13682   const char *name;
13683   CORE_ADDR baseaddr;
13684   struct block *block;
13685   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13686   std::vector<struct symbol *> template_args;
13687   struct template_symbol *templ_func = NULL;
13688
13689   if (inlined_func)
13690     {
13691       /* If we do not have call site information, we can't show the
13692          caller of this inlined function.  That's too confusing, so
13693          only use the scope for local variables.  */
13694       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13695       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13696       if (call_line == NULL || call_file == NULL)
13697         {
13698           read_lexical_block_scope (die, cu);
13699           return;
13700         }
13701     }
13702
13703   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13704
13705   name = dwarf2_name (die, cu);
13706
13707   /* Ignore functions with missing or empty names.  These are actually
13708      illegal according to the DWARF standard.  */
13709   if (name == NULL)
13710     {
13711       complaint (_("missing name for subprogram DIE at %s"),
13712                  sect_offset_str (die->sect_off));
13713       return;
13714     }
13715
13716   /* Ignore functions with missing or invalid low and high pc attributes.  */
13717   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13718       <= PC_BOUNDS_INVALID)
13719     {
13720       attr = dwarf2_attr (die, DW_AT_external, cu);
13721       if (!attr || !DW_UNSND (attr))
13722         complaint (_("cannot get low and high bounds "
13723                      "for subprogram DIE at %s"),
13724                    sect_offset_str (die->sect_off));
13725       return;
13726     }
13727
13728   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13729   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13730
13731   /* If we have any template arguments, then we must allocate a
13732      different sort of symbol.  */
13733   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13734     {
13735       if (child_die->tag == DW_TAG_template_type_param
13736           || child_die->tag == DW_TAG_template_value_param)
13737         {
13738           templ_func = allocate_template_symbol (objfile);
13739           templ_func->subclass = SYMBOL_TEMPLATE;
13740           break;
13741         }
13742     }
13743
13744   newobj = cu->get_builder ()->push_context (0, lowpc);
13745   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13746                              (struct symbol *) templ_func);
13747
13748   /* If there is a location expression for DW_AT_frame_base, record
13749      it.  */
13750   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13751   if (attr)
13752     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13753
13754   /* If there is a location for the static link, record it.  */
13755   newobj->static_link = NULL;
13756   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13757   if (attr)
13758     {
13759       newobj->static_link
13760         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13761       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13762     }
13763
13764   cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13765
13766   if (die->child != NULL)
13767     {
13768       child_die = die->child;
13769       while (child_die && child_die->tag)
13770         {
13771           if (child_die->tag == DW_TAG_template_type_param
13772               || child_die->tag == DW_TAG_template_value_param)
13773             {
13774               struct symbol *arg = new_symbol (child_die, NULL, cu);
13775
13776               if (arg != NULL)
13777                 template_args.push_back (arg);
13778             }
13779           else
13780             process_die (child_die, cu);
13781           child_die = sibling_die (child_die);
13782         }
13783     }
13784
13785   inherit_abstract_dies (die, cu);
13786
13787   /* If we have a DW_AT_specification, we might need to import using
13788      directives from the context of the specification DIE.  See the
13789      comment in determine_prefix.  */
13790   if (cu->language == language_cplus
13791       && dwarf2_attr (die, DW_AT_specification, cu))
13792     {
13793       struct dwarf2_cu *spec_cu = cu;
13794       struct die_info *spec_die = die_specification (die, &spec_cu);
13795
13796       while (spec_die)
13797         {
13798           child_die = spec_die->child;
13799           while (child_die && child_die->tag)
13800             {
13801               if (child_die->tag == DW_TAG_imported_module)
13802                 process_die (child_die, spec_cu);
13803               child_die = sibling_die (child_die);
13804             }
13805
13806           /* In some cases, GCC generates specification DIEs that
13807              themselves contain DW_AT_specification attributes.  */
13808           spec_die = die_specification (spec_die, &spec_cu);
13809         }
13810     }
13811
13812   struct context_stack cstk = cu->get_builder ()->pop_context ();
13813   /* Make a block for the local symbols within.  */
13814   block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13815                                      cstk.static_link, lowpc, highpc);
13816
13817   /* For C++, set the block's scope.  */
13818   if ((cu->language == language_cplus
13819        || cu->language == language_fortran
13820        || cu->language == language_d
13821        || cu->language == language_rust)
13822       && cu->processing_has_namespace_info)
13823     block_set_scope (block, determine_prefix (die, cu),
13824                      &objfile->objfile_obstack);
13825
13826   /* If we have address ranges, record them.  */
13827   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13828
13829   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13830
13831   /* Attach template arguments to function.  */
13832   if (!template_args.empty ())
13833     {
13834       gdb_assert (templ_func != NULL);
13835
13836       templ_func->n_template_arguments = template_args.size ();
13837       templ_func->template_arguments
13838         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13839                      templ_func->n_template_arguments);
13840       memcpy (templ_func->template_arguments,
13841               template_args.data (),
13842               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13843
13844       /* Make sure that the symtab is set on the new symbols.  Even
13845          though they don't appear in this symtab directly, other parts
13846          of gdb assume that symbols do, and this is reasonably
13847          true.  */
13848       for (symbol *sym : template_args)
13849         symbol_set_symtab (sym, symbol_symtab (templ_func));
13850     }
13851
13852   /* In C++, we can have functions nested inside functions (e.g., when
13853      a function declares a class that has methods).  This means that
13854      when we finish processing a function scope, we may need to go
13855      back to building a containing block's symbol lists.  */
13856   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13857   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13858
13859   /* If we've finished processing a top-level function, subsequent
13860      symbols go in the file symbol list.  */
13861   if (cu->get_builder ()->outermost_context_p ())
13862     cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13863 }
13864
13865 /* Process all the DIES contained within a lexical block scope.  Start
13866    a new scope, process the dies, and then close the scope.  */
13867
13868 static void
13869 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13870 {
13871   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13872   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13873   CORE_ADDR lowpc, highpc;
13874   struct die_info *child_die;
13875   CORE_ADDR baseaddr;
13876
13877   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13878
13879   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13880   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13881      as multiple lexical blocks?  Handling children in a sane way would
13882      be nasty.  Might be easier to properly extend generic blocks to
13883      describe ranges.  */
13884   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13885     {
13886     case PC_BOUNDS_NOT_PRESENT:
13887       /* DW_TAG_lexical_block has no attributes, process its children as if
13888          there was no wrapping by that DW_TAG_lexical_block.
13889          GCC does no longer produces such DWARF since GCC r224161.  */
13890       for (child_die = die->child;
13891            child_die != NULL && child_die->tag;
13892            child_die = sibling_die (child_die))
13893         process_die (child_die, cu);
13894       return;
13895     case PC_BOUNDS_INVALID:
13896       return;
13897     }
13898   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13899   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13900
13901   cu->get_builder ()->push_context (0, lowpc);
13902   if (die->child != NULL)
13903     {
13904       child_die = die->child;
13905       while (child_die && child_die->tag)
13906         {
13907           process_die (child_die, cu);
13908           child_die = sibling_die (child_die);
13909         }
13910     }
13911   inherit_abstract_dies (die, cu);
13912   struct context_stack cstk = cu->get_builder ()->pop_context ();
13913
13914   if (*cu->get_builder ()->get_local_symbols () != NULL
13915       || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13916     {
13917       struct block *block
13918         = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13919                                      cstk.start_addr, highpc);
13920
13921       /* Note that recording ranges after traversing children, as we
13922          do here, means that recording a parent's ranges entails
13923          walking across all its children's ranges as they appear in
13924          the address map, which is quadratic behavior.
13925
13926          It would be nicer to record the parent's ranges before
13927          traversing its children, simply overriding whatever you find
13928          there.  But since we don't even decide whether to create a
13929          block until after we've traversed its children, that's hard
13930          to do.  */
13931       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13932     }
13933   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13934   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13935 }
13936
13937 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13938
13939 static void
13940 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13941 {
13942   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13943   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13944   CORE_ADDR pc, baseaddr;
13945   struct attribute *attr;
13946   struct call_site *call_site, call_site_local;
13947   void **slot;
13948   int nparams;
13949   struct die_info *child_die;
13950
13951   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13952
13953   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13954   if (attr == NULL)
13955     {
13956       /* This was a pre-DWARF-5 GNU extension alias
13957          for DW_AT_call_return_pc.  */
13958       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13959     }
13960   if (!attr)
13961     {
13962       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13963                    "DIE %s [in module %s]"),
13964                  sect_offset_str (die->sect_off), objfile_name (objfile));
13965       return;
13966     }
13967   pc = attr_value_as_address (attr) + baseaddr;
13968   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13969
13970   if (cu->call_site_htab == NULL)
13971     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13972                                                NULL, &objfile->objfile_obstack,
13973                                                hashtab_obstack_allocate, NULL);
13974   call_site_local.pc = pc;
13975   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13976   if (*slot != NULL)
13977     {
13978       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13979                    "DIE %s [in module %s]"),
13980                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13981                  objfile_name (objfile));
13982       return;
13983     }
13984
13985   /* Count parameters at the caller.  */
13986
13987   nparams = 0;
13988   for (child_die = die->child; child_die && child_die->tag;
13989        child_die = sibling_die (child_die))
13990     {
13991       if (child_die->tag != DW_TAG_call_site_parameter
13992           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13993         {
13994           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13995                        "DW_TAG_call_site child DIE %s [in module %s]"),
13996                      child_die->tag, sect_offset_str (child_die->sect_off),
13997                      objfile_name (objfile));
13998           continue;
13999         }
14000
14001       nparams++;
14002     }
14003
14004   call_site
14005     = ((struct call_site *)
14006        obstack_alloc (&objfile->objfile_obstack,
14007                       sizeof (*call_site)
14008                       + (sizeof (*call_site->parameter) * (nparams - 1))));
14009   *slot = call_site;
14010   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14011   call_site->pc = pc;
14012
14013   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14014       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14015     {
14016       struct die_info *func_die;
14017
14018       /* Skip also over DW_TAG_inlined_subroutine.  */
14019       for (func_die = die->parent;
14020            func_die && func_die->tag != DW_TAG_subprogram
14021            && func_die->tag != DW_TAG_subroutine_type;
14022            func_die = func_die->parent);
14023
14024       /* DW_AT_call_all_calls is a superset
14025          of DW_AT_call_all_tail_calls.  */
14026       if (func_die
14027           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14028           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14029           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14030           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14031         {
14032           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14033              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14034              both the initial caller containing the real return address PC and
14035              the final callee containing the current PC of a chain of tail
14036              calls do not need to have the tail call list complete.  But any
14037              function candidate for a virtual tail call frame searched via
14038              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14039              determined unambiguously.  */
14040         }
14041       else
14042         {
14043           struct type *func_type = NULL;
14044
14045           if (func_die)
14046             func_type = get_die_type (func_die, cu);
14047           if (func_type != NULL)
14048             {
14049               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14050
14051               /* Enlist this call site to the function.  */
14052               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14053               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14054             }
14055           else
14056             complaint (_("Cannot find function owning DW_TAG_call_site "
14057                          "DIE %s [in module %s]"),
14058                        sect_offset_str (die->sect_off), objfile_name (objfile));
14059         }
14060     }
14061
14062   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14063   if (attr == NULL)
14064     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14065   if (attr == NULL)
14066     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14067   if (attr == NULL)
14068     {
14069       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14070       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14071     }
14072   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14073   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14074     /* Keep NULL DWARF_BLOCK.  */;
14075   else if (attr_form_is_block (attr))
14076     {
14077       struct dwarf2_locexpr_baton *dlbaton;
14078
14079       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14080       dlbaton->data = DW_BLOCK (attr)->data;
14081       dlbaton->size = DW_BLOCK (attr)->size;
14082       dlbaton->per_cu = cu->per_cu;
14083
14084       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14085     }
14086   else if (attr_form_is_ref (attr))
14087     {
14088       struct dwarf2_cu *target_cu = cu;
14089       struct die_info *target_die;
14090
14091       target_die = follow_die_ref (die, attr, &target_cu);
14092       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14093       if (die_is_declaration (target_die, target_cu))
14094         {
14095           const char *target_physname;
14096
14097           /* Prefer the mangled name; otherwise compute the demangled one.  */
14098           target_physname = dw2_linkage_name (target_die, target_cu);
14099           if (target_physname == NULL)
14100             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14101           if (target_physname == NULL)
14102             complaint (_("DW_AT_call_target target DIE has invalid "
14103                          "physname, for referencing DIE %s [in module %s]"),
14104                        sect_offset_str (die->sect_off), objfile_name (objfile));
14105           else
14106             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14107         }
14108       else
14109         {
14110           CORE_ADDR lowpc;
14111
14112           /* DW_AT_entry_pc should be preferred.  */
14113           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14114               <= PC_BOUNDS_INVALID)
14115             complaint (_("DW_AT_call_target target DIE has invalid "
14116                          "low pc, for referencing DIE %s [in module %s]"),
14117                        sect_offset_str (die->sect_off), objfile_name (objfile));
14118           else
14119             {
14120               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14121               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14122             }
14123         }
14124     }
14125   else
14126     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14127                  "block nor reference, for DIE %s [in module %s]"),
14128                sect_offset_str (die->sect_off), objfile_name (objfile));
14129
14130   call_site->per_cu = cu->per_cu;
14131
14132   for (child_die = die->child;
14133        child_die && child_die->tag;
14134        child_die = sibling_die (child_die))
14135     {
14136       struct call_site_parameter *parameter;
14137       struct attribute *loc, *origin;
14138
14139       if (child_die->tag != DW_TAG_call_site_parameter
14140           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14141         {
14142           /* Already printed the complaint above.  */
14143           continue;
14144         }
14145
14146       gdb_assert (call_site->parameter_count < nparams);
14147       parameter = &call_site->parameter[call_site->parameter_count];
14148
14149       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14150          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14151          register is contained in DW_AT_call_value.  */
14152
14153       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14154       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14155       if (origin == NULL)
14156         {
14157           /* This was a pre-DWARF-5 GNU extension alias
14158              for DW_AT_call_parameter.  */
14159           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14160         }
14161       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14162         {
14163           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14164
14165           sect_offset sect_off
14166             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14167           if (!offset_in_cu_p (&cu->header, sect_off))
14168             {
14169               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14170                  binding can be done only inside one CU.  Such referenced DIE
14171                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14172               complaint (_("DW_AT_call_parameter offset is not in CU for "
14173                            "DW_TAG_call_site child DIE %s [in module %s]"),
14174                          sect_offset_str (child_die->sect_off),
14175                          objfile_name (objfile));
14176               continue;
14177             }
14178           parameter->u.param_cu_off
14179             = (cu_offset) (sect_off - cu->header.sect_off);
14180         }
14181       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14182         {
14183           complaint (_("No DW_FORM_block* DW_AT_location for "
14184                        "DW_TAG_call_site child DIE %s [in module %s]"),
14185                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14186           continue;
14187         }
14188       else
14189         {
14190           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14191             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14192           if (parameter->u.dwarf_reg != -1)
14193             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14194           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14195                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14196                                              &parameter->u.fb_offset))
14197             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14198           else
14199             {
14200               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14201                            "for DW_FORM_block* DW_AT_location is supported for "
14202                            "DW_TAG_call_site child DIE %s "
14203                            "[in module %s]"),
14204                          sect_offset_str (child_die->sect_off),
14205                          objfile_name (objfile));
14206               continue;
14207             }
14208         }
14209
14210       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14211       if (attr == NULL)
14212         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14213       if (!attr_form_is_block (attr))
14214         {
14215           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14216                        "DW_TAG_call_site child DIE %s [in module %s]"),
14217                      sect_offset_str (child_die->sect_off),
14218                      objfile_name (objfile));
14219           continue;
14220         }
14221       parameter->value = DW_BLOCK (attr)->data;
14222       parameter->value_size = DW_BLOCK (attr)->size;
14223
14224       /* Parameters are not pre-cleared by memset above.  */
14225       parameter->data_value = NULL;
14226       parameter->data_value_size = 0;
14227       call_site->parameter_count++;
14228
14229       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14230       if (attr == NULL)
14231         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14232       if (attr)
14233         {
14234           if (!attr_form_is_block (attr))
14235             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14236                          "DW_TAG_call_site child DIE %s [in module %s]"),
14237                        sect_offset_str (child_die->sect_off),
14238                        objfile_name (objfile));
14239           else
14240             {
14241               parameter->data_value = DW_BLOCK (attr)->data;
14242               parameter->data_value_size = DW_BLOCK (attr)->size;
14243             }
14244         }
14245     }
14246 }
14247
14248 /* Helper function for read_variable.  If DIE represents a virtual
14249    table, then return the type of the concrete object that is
14250    associated with the virtual table.  Otherwise, return NULL.  */
14251
14252 static struct type *
14253 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14254 {
14255   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14256   if (attr == NULL)
14257     return NULL;
14258
14259   /* Find the type DIE.  */
14260   struct die_info *type_die = NULL;
14261   struct dwarf2_cu *type_cu = cu;
14262
14263   if (attr_form_is_ref (attr))
14264     type_die = follow_die_ref (die, attr, &type_cu);
14265   if (type_die == NULL)
14266     return NULL;
14267
14268   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14269     return NULL;
14270   return die_containing_type (type_die, type_cu);
14271 }
14272
14273 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14274
14275 static void
14276 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14277 {
14278   struct rust_vtable_symbol *storage = NULL;
14279
14280   if (cu->language == language_rust)
14281     {
14282       struct type *containing_type = rust_containing_type (die, cu);
14283
14284       if (containing_type != NULL)
14285         {
14286           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14287
14288           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14289                                     struct rust_vtable_symbol);
14290           initialize_objfile_symbol (storage);
14291           storage->concrete_type = containing_type;
14292           storage->subclass = SYMBOL_RUST_VTABLE;
14293         }
14294     }
14295
14296   struct symbol *res = new_symbol (die, NULL, cu, storage);
14297   struct attribute *abstract_origin
14298     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14299   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14300   if (res == NULL && loc && abstract_origin)
14301     {
14302       /* We have a variable without a name, but with a location and an abstract
14303          origin.  This may be a concrete instance of an abstract variable
14304          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14305          later.  */
14306       struct dwarf2_cu *origin_cu = cu;
14307       struct die_info *origin_die
14308         = follow_die_ref (die, abstract_origin, &origin_cu);
14309       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14310       dpo->abstract_to_concrete[origin_die].push_back (die);
14311     }
14312 }
14313
14314 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14315    reading .debug_rnglists.
14316    Callback's type should be:
14317     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14318    Return true if the attributes are present and valid, otherwise,
14319    return false.  */
14320
14321 template <typename Callback>
14322 static bool
14323 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14324                          Callback &&callback)
14325 {
14326   struct dwarf2_per_objfile *dwarf2_per_objfile
14327     = cu->per_cu->dwarf2_per_objfile;
14328   struct objfile *objfile = dwarf2_per_objfile->objfile;
14329   bfd *obfd = objfile->obfd;
14330   /* Base address selection entry.  */
14331   CORE_ADDR base;
14332   int found_base;
14333   const gdb_byte *buffer;
14334   CORE_ADDR baseaddr;
14335   bool overflow = false;
14336
14337   found_base = cu->base_known;
14338   base = cu->base_address;
14339
14340   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14341   if (offset >= dwarf2_per_objfile->rnglists.size)
14342     {
14343       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14344                  offset);
14345       return false;
14346     }
14347   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14348
14349   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14350
14351   while (1)
14352     {
14353       /* Initialize it due to a false compiler warning.  */
14354       CORE_ADDR range_beginning = 0, range_end = 0;
14355       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14356                                  + dwarf2_per_objfile->rnglists.size);
14357       unsigned int bytes_read;
14358
14359       if (buffer == buf_end)
14360         {
14361           overflow = true;
14362           break;
14363         }
14364       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14365       switch (rlet)
14366         {
14367         case DW_RLE_end_of_list:
14368           break;
14369         case DW_RLE_base_address:
14370           if (buffer + cu->header.addr_size > buf_end)
14371             {
14372               overflow = true;
14373               break;
14374             }
14375           base = read_address (obfd, buffer, cu, &bytes_read);
14376           found_base = 1;
14377           buffer += bytes_read;
14378           break;
14379         case DW_RLE_start_length:
14380           if (buffer + cu->header.addr_size > buf_end)
14381             {
14382               overflow = true;
14383               break;
14384             }
14385           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14386           buffer += bytes_read;
14387           range_end = (range_beginning
14388                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14389           buffer += bytes_read;
14390           if (buffer > buf_end)
14391             {
14392               overflow = true;
14393               break;
14394             }
14395           break;
14396         case DW_RLE_offset_pair:
14397           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14398           buffer += bytes_read;
14399           if (buffer > buf_end)
14400             {
14401               overflow = true;
14402               break;
14403             }
14404           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14405           buffer += bytes_read;
14406           if (buffer > buf_end)
14407             {
14408               overflow = true;
14409               break;
14410             }
14411           break;
14412         case DW_RLE_start_end:
14413           if (buffer + 2 * cu->header.addr_size > buf_end)
14414             {
14415               overflow = true;
14416               break;
14417             }
14418           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14419           buffer += bytes_read;
14420           range_end = read_address (obfd, buffer, cu, &bytes_read);
14421           buffer += bytes_read;
14422           break;
14423         default:
14424           complaint (_("Invalid .debug_rnglists data (no base address)"));
14425           return false;
14426         }
14427       if (rlet == DW_RLE_end_of_list || overflow)
14428         break;
14429       if (rlet == DW_RLE_base_address)
14430         continue;
14431
14432       if (!found_base)
14433         {
14434           /* We have no valid base address for the ranges
14435              data.  */
14436           complaint (_("Invalid .debug_rnglists data (no base address)"));
14437           return false;
14438         }
14439
14440       if (range_beginning > range_end)
14441         {
14442           /* Inverted range entries are invalid.  */
14443           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14444           return false;
14445         }
14446
14447       /* Empty range entries have no effect.  */
14448       if (range_beginning == range_end)
14449         continue;
14450
14451       range_beginning += base;
14452       range_end += base;
14453
14454       /* A not-uncommon case of bad debug info.
14455          Don't pollute the addrmap with bad data.  */
14456       if (range_beginning + baseaddr == 0
14457           && !dwarf2_per_objfile->has_section_at_zero)
14458         {
14459           complaint (_(".debug_rnglists entry has start address of zero"
14460                        " [in module %s]"), objfile_name (objfile));
14461           continue;
14462         }
14463
14464       callback (range_beginning, range_end);
14465     }
14466
14467   if (overflow)
14468     {
14469       complaint (_("Offset %d is not terminated "
14470                    "for DW_AT_ranges attribute"),
14471                  offset);
14472       return false;
14473     }
14474
14475   return true;
14476 }
14477
14478 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14479    Callback's type should be:
14480     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14481    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14482
14483 template <typename Callback>
14484 static int
14485 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14486                        Callback &&callback)
14487 {
14488   struct dwarf2_per_objfile *dwarf2_per_objfile
14489       = cu->per_cu->dwarf2_per_objfile;
14490   struct objfile *objfile = dwarf2_per_objfile->objfile;
14491   struct comp_unit_head *cu_header = &cu->header;
14492   bfd *obfd = objfile->obfd;
14493   unsigned int addr_size = cu_header->addr_size;
14494   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14495   /* Base address selection entry.  */
14496   CORE_ADDR base;
14497   int found_base;
14498   unsigned int dummy;
14499   const gdb_byte *buffer;
14500   CORE_ADDR baseaddr;
14501
14502   if (cu_header->version >= 5)
14503     return dwarf2_rnglists_process (offset, cu, callback);
14504
14505   found_base = cu->base_known;
14506   base = cu->base_address;
14507
14508   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14509   if (offset >= dwarf2_per_objfile->ranges.size)
14510     {
14511       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14512                  offset);
14513       return 0;
14514     }
14515   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14516
14517   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14518
14519   while (1)
14520     {
14521       CORE_ADDR range_beginning, range_end;
14522
14523       range_beginning = read_address (obfd, buffer, cu, &dummy);
14524       buffer += addr_size;
14525       range_end = read_address (obfd, buffer, cu, &dummy);
14526       buffer += addr_size;
14527       offset += 2 * addr_size;
14528
14529       /* An end of list marker is a pair of zero addresses.  */
14530       if (range_beginning == 0 && range_end == 0)
14531         /* Found the end of list entry.  */
14532         break;
14533
14534       /* Each base address selection entry is a pair of 2 values.
14535          The first is the largest possible address, the second is
14536          the base address.  Check for a base address here.  */
14537       if ((range_beginning & mask) == mask)
14538         {
14539           /* If we found the largest possible address, then we already
14540              have the base address in range_end.  */
14541           base = range_end;
14542           found_base = 1;
14543           continue;
14544         }
14545
14546       if (!found_base)
14547         {
14548           /* We have no valid base address for the ranges
14549              data.  */
14550           complaint (_("Invalid .debug_ranges data (no base address)"));
14551           return 0;
14552         }
14553
14554       if (range_beginning > range_end)
14555         {
14556           /* Inverted range entries are invalid.  */
14557           complaint (_("Invalid .debug_ranges data (inverted range)"));
14558           return 0;
14559         }
14560
14561       /* Empty range entries have no effect.  */
14562       if (range_beginning == range_end)
14563         continue;
14564
14565       range_beginning += base;
14566       range_end += base;
14567
14568       /* A not-uncommon case of bad debug info.
14569          Don't pollute the addrmap with bad data.  */
14570       if (range_beginning + baseaddr == 0
14571           && !dwarf2_per_objfile->has_section_at_zero)
14572         {
14573           complaint (_(".debug_ranges entry has start address of zero"
14574                        " [in module %s]"), objfile_name (objfile));
14575           continue;
14576         }
14577
14578       callback (range_beginning, range_end);
14579     }
14580
14581   return 1;
14582 }
14583
14584 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14585    Return 1 if the attributes are present and valid, otherwise, return 0.
14586    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14587
14588 static int
14589 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14590                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14591                     struct partial_symtab *ranges_pst)
14592 {
14593   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14594   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14595   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14596                                        SECT_OFF_TEXT (objfile));
14597   int low_set = 0;
14598   CORE_ADDR low = 0;
14599   CORE_ADDR high = 0;
14600   int retval;
14601
14602   retval = dwarf2_ranges_process (offset, cu,
14603     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14604     {
14605       if (ranges_pst != NULL)
14606         {
14607           CORE_ADDR lowpc;
14608           CORE_ADDR highpc;
14609
14610           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14611                                                range_beginning + baseaddr)
14612                    - baseaddr);
14613           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14614                                                 range_end + baseaddr)
14615                     - baseaddr);
14616           addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14617                              lowpc, highpc - 1, ranges_pst);
14618         }
14619
14620       /* FIXME: This is recording everything as a low-high
14621          segment of consecutive addresses.  We should have a
14622          data structure for discontiguous block ranges
14623          instead.  */
14624       if (! low_set)
14625         {
14626           low = range_beginning;
14627           high = range_end;
14628           low_set = 1;
14629         }
14630       else
14631         {
14632           if (range_beginning < low)
14633             low = range_beginning;
14634           if (range_end > high)
14635             high = range_end;
14636         }
14637     });
14638   if (!retval)
14639     return 0;
14640
14641   if (! low_set)
14642     /* If the first entry is an end-of-list marker, the range
14643        describes an empty scope, i.e. no instructions.  */
14644     return 0;
14645
14646   if (low_return)
14647     *low_return = low;
14648   if (high_return)
14649     *high_return = high;
14650   return 1;
14651 }
14652
14653 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14654    definition for the return value.  *LOWPC and *HIGHPC are set iff
14655    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14656
14657 static enum pc_bounds_kind
14658 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14659                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14660                       struct partial_symtab *pst)
14661 {
14662   struct dwarf2_per_objfile *dwarf2_per_objfile
14663     = cu->per_cu->dwarf2_per_objfile;
14664   struct attribute *attr;
14665   struct attribute *attr_high;
14666   CORE_ADDR low = 0;
14667   CORE_ADDR high = 0;
14668   enum pc_bounds_kind ret;
14669
14670   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14671   if (attr_high)
14672     {
14673       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14674       if (attr)
14675         {
14676           low = attr_value_as_address (attr);
14677           high = attr_value_as_address (attr_high);
14678           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14679             high += low;
14680         }
14681       else
14682         /* Found high w/o low attribute.  */
14683         return PC_BOUNDS_INVALID;
14684
14685       /* Found consecutive range of addresses.  */
14686       ret = PC_BOUNDS_HIGH_LOW;
14687     }
14688   else
14689     {
14690       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14691       if (attr != NULL)
14692         {
14693           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14694              We take advantage of the fact that DW_AT_ranges does not appear
14695              in DW_TAG_compile_unit of DWO files.  */
14696           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14697           unsigned int ranges_offset = (DW_UNSND (attr)
14698                                         + (need_ranges_base
14699                                            ? cu->ranges_base
14700                                            : 0));
14701
14702           /* Value of the DW_AT_ranges attribute is the offset in the
14703              .debug_ranges section.  */
14704           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14705             return PC_BOUNDS_INVALID;
14706           /* Found discontinuous range of addresses.  */
14707           ret = PC_BOUNDS_RANGES;
14708         }
14709       else
14710         return PC_BOUNDS_NOT_PRESENT;
14711     }
14712
14713   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14714   if (high <= low)
14715     return PC_BOUNDS_INVALID;
14716
14717   /* When using the GNU linker, .gnu.linkonce. sections are used to
14718      eliminate duplicate copies of functions and vtables and such.
14719      The linker will arbitrarily choose one and discard the others.
14720      The AT_*_pc values for such functions refer to local labels in
14721      these sections.  If the section from that file was discarded, the
14722      labels are not in the output, so the relocs get a value of 0.
14723      If this is a discarded function, mark the pc bounds as invalid,
14724      so that GDB will ignore it.  */
14725   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14726     return PC_BOUNDS_INVALID;
14727
14728   *lowpc = low;
14729   if (highpc)
14730     *highpc = high;
14731   return ret;
14732 }
14733
14734 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14735    its low and high PC addresses.  Do nothing if these addresses could not
14736    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14737    and HIGHPC to the high address if greater than HIGHPC.  */
14738
14739 static void
14740 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14741                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14742                                  struct dwarf2_cu *cu)
14743 {
14744   CORE_ADDR low, high;
14745   struct die_info *child = die->child;
14746
14747   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14748     {
14749       *lowpc = std::min (*lowpc, low);
14750       *highpc = std::max (*highpc, high);
14751     }
14752
14753   /* If the language does not allow nested subprograms (either inside
14754      subprograms or lexical blocks), we're done.  */
14755   if (cu->language != language_ada)
14756     return;
14757
14758   /* Check all the children of the given DIE.  If it contains nested
14759      subprograms, then check their pc bounds.  Likewise, we need to
14760      check lexical blocks as well, as they may also contain subprogram
14761      definitions.  */
14762   while (child && child->tag)
14763     {
14764       if (child->tag == DW_TAG_subprogram
14765           || child->tag == DW_TAG_lexical_block)
14766         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14767       child = sibling_die (child);
14768     }
14769 }
14770
14771 /* Get the low and high pc's represented by the scope DIE, and store
14772    them in *LOWPC and *HIGHPC.  If the correct values can't be
14773    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14774
14775 static void
14776 get_scope_pc_bounds (struct die_info *die,
14777                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14778                      struct dwarf2_cu *cu)
14779 {
14780   CORE_ADDR best_low = (CORE_ADDR) -1;
14781   CORE_ADDR best_high = (CORE_ADDR) 0;
14782   CORE_ADDR current_low, current_high;
14783
14784   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14785       >= PC_BOUNDS_RANGES)
14786     {
14787       best_low = current_low;
14788       best_high = current_high;
14789     }
14790   else
14791     {
14792       struct die_info *child = die->child;
14793
14794       while (child && child->tag)
14795         {
14796           switch (child->tag) {
14797           case DW_TAG_subprogram:
14798             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14799             break;
14800           case DW_TAG_namespace:
14801           case DW_TAG_module:
14802             /* FIXME: carlton/2004-01-16: Should we do this for
14803                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14804                that current GCC's always emit the DIEs corresponding
14805                to definitions of methods of classes as children of a
14806                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14807                the DIEs giving the declarations, which could be
14808                anywhere).  But I don't see any reason why the
14809                standards says that they have to be there.  */
14810             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14811
14812             if (current_low != ((CORE_ADDR) -1))
14813               {
14814                 best_low = std::min (best_low, current_low);
14815                 best_high = std::max (best_high, current_high);
14816               }
14817             break;
14818           default:
14819             /* Ignore.  */
14820             break;
14821           }
14822
14823           child = sibling_die (child);
14824         }
14825     }
14826
14827   *lowpc = best_low;
14828   *highpc = best_high;
14829 }
14830
14831 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14832    in DIE.  */
14833
14834 static void
14835 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14836                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14837 {
14838   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14839   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14840   struct attribute *attr;
14841   struct attribute *attr_high;
14842
14843   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14844   if (attr_high)
14845     {
14846       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14847       if (attr)
14848         {
14849           CORE_ADDR low = attr_value_as_address (attr);
14850           CORE_ADDR high = attr_value_as_address (attr_high);
14851
14852           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14853             high += low;
14854
14855           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14856           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14857           cu->get_builder ()->record_block_range (block, low, high - 1);
14858         }
14859     }
14860
14861   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14862   if (attr)
14863     {
14864       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14865          We take advantage of the fact that DW_AT_ranges does not appear
14866          in DW_TAG_compile_unit of DWO files.  */
14867       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14868
14869       /* The value of the DW_AT_ranges attribute is the offset of the
14870          address range list in the .debug_ranges section.  */
14871       unsigned long offset = (DW_UNSND (attr)
14872                               + (need_ranges_base ? cu->ranges_base : 0));
14873
14874       std::vector<blockrange> blockvec;
14875       dwarf2_ranges_process (offset, cu,
14876         [&] (CORE_ADDR start, CORE_ADDR end)
14877         {
14878           start += baseaddr;
14879           end += baseaddr;
14880           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14881           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14882           cu->get_builder ()->record_block_range (block, start, end - 1);
14883           blockvec.emplace_back (start, end);
14884         });
14885
14886       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14887     }
14888 }
14889
14890 /* Check whether the producer field indicates either of GCC < 4.6, or the
14891    Intel C/C++ compiler, and cache the result in CU.  */
14892
14893 static void
14894 check_producer (struct dwarf2_cu *cu)
14895 {
14896   int major, minor;
14897
14898   if (cu->producer == NULL)
14899     {
14900       /* For unknown compilers expect their behavior is DWARF version
14901          compliant.
14902
14903          GCC started to support .debug_types sections by -gdwarf-4 since
14904          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14905          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14906          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14907          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14908     }
14909   else if (producer_is_gcc (cu->producer, &major, &minor))
14910     {
14911       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14912       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14913     }
14914   else if (producer_is_icc (cu->producer, &major, &minor))
14915     {
14916       cu->producer_is_icc = true;
14917       cu->producer_is_icc_lt_14 = major < 14;
14918     }
14919   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14920     cu->producer_is_codewarrior = true;
14921   else
14922     {
14923       /* For other non-GCC compilers, expect their behavior is DWARF version
14924          compliant.  */
14925     }
14926
14927   cu->checked_producer = true;
14928 }
14929
14930 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14931    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14932    during 4.6.0 experimental.  */
14933
14934 static bool
14935 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14936 {
14937   if (!cu->checked_producer)
14938     check_producer (cu);
14939
14940   return cu->producer_is_gxx_lt_4_6;
14941 }
14942
14943
14944 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14945    with incorrect is_stmt attributes.  */
14946
14947 static bool
14948 producer_is_codewarrior (struct dwarf2_cu *cu)
14949 {
14950   if (!cu->checked_producer)
14951     check_producer (cu);
14952
14953   return cu->producer_is_codewarrior;
14954 }
14955
14956 /* Return the default accessibility type if it is not overriden by
14957    DW_AT_accessibility.  */
14958
14959 static enum dwarf_access_attribute
14960 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14961 {
14962   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14963     {
14964       /* The default DWARF 2 accessibility for members is public, the default
14965          accessibility for inheritance is private.  */
14966
14967       if (die->tag != DW_TAG_inheritance)
14968         return DW_ACCESS_public;
14969       else
14970         return DW_ACCESS_private;
14971     }
14972   else
14973     {
14974       /* DWARF 3+ defines the default accessibility a different way.  The same
14975          rules apply now for DW_TAG_inheritance as for the members and it only
14976          depends on the container kind.  */
14977
14978       if (die->parent->tag == DW_TAG_class_type)
14979         return DW_ACCESS_private;
14980       else
14981         return DW_ACCESS_public;
14982     }
14983 }
14984
14985 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14986    offset.  If the attribute was not found return 0, otherwise return
14987    1.  If it was found but could not properly be handled, set *OFFSET
14988    to 0.  */
14989
14990 static int
14991 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14992                              LONGEST *offset)
14993 {
14994   struct attribute *attr;
14995
14996   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14997   if (attr != NULL)
14998     {
14999       *offset = 0;
15000
15001       /* Note that we do not check for a section offset first here.
15002          This is because DW_AT_data_member_location is new in DWARF 4,
15003          so if we see it, we can assume that a constant form is really
15004          a constant and not a section offset.  */
15005       if (attr_form_is_constant (attr))
15006         *offset = dwarf2_get_attr_constant_value (attr, 0);
15007       else if (attr_form_is_section_offset (attr))
15008         dwarf2_complex_location_expr_complaint ();
15009       else if (attr_form_is_block (attr))
15010         *offset = decode_locdesc (DW_BLOCK (attr), cu);
15011       else
15012         dwarf2_complex_location_expr_complaint ();
15013
15014       return 1;
15015     }
15016
15017   return 0;
15018 }
15019
15020 /* Add an aggregate field to the field list.  */
15021
15022 static void
15023 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15024                   struct dwarf2_cu *cu)
15025 {
15026   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15027   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15028   struct nextfield *new_field;
15029   struct attribute *attr;
15030   struct field *fp;
15031   const char *fieldname = "";
15032
15033   if (die->tag == DW_TAG_inheritance)
15034     {
15035       fip->baseclasses.emplace_back ();
15036       new_field = &fip->baseclasses.back ();
15037     }
15038   else
15039     {
15040       fip->fields.emplace_back ();
15041       new_field = &fip->fields.back ();
15042     }
15043
15044   fip->nfields++;
15045
15046   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15047   if (attr)
15048     new_field->accessibility = DW_UNSND (attr);
15049   else
15050     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15051   if (new_field->accessibility != DW_ACCESS_public)
15052     fip->non_public_fields = 1;
15053
15054   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15055   if (attr)
15056     new_field->virtuality = DW_UNSND (attr);
15057   else
15058     new_field->virtuality = DW_VIRTUALITY_none;
15059
15060   fp = &new_field->field;
15061
15062   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15063     {
15064       LONGEST offset;
15065
15066       /* Data member other than a C++ static data member.  */
15067
15068       /* Get type of field.  */
15069       fp->type = die_type (die, cu);
15070
15071       SET_FIELD_BITPOS (*fp, 0);
15072
15073       /* Get bit size of field (zero if none).  */
15074       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15075       if (attr)
15076         {
15077           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15078         }
15079       else
15080         {
15081           FIELD_BITSIZE (*fp) = 0;
15082         }
15083
15084       /* Get bit offset of field.  */
15085       if (handle_data_member_location (die, cu, &offset))
15086         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15087       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15088       if (attr)
15089         {
15090           if (gdbarch_bits_big_endian (gdbarch))
15091             {
15092               /* For big endian bits, the DW_AT_bit_offset gives the
15093                  additional bit offset from the MSB of the containing
15094                  anonymous object to the MSB of the field.  We don't
15095                  have to do anything special since we don't need to
15096                  know the size of the anonymous object.  */
15097               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15098             }
15099           else
15100             {
15101               /* For little endian bits, compute the bit offset to the
15102                  MSB of the anonymous object, subtract off the number of
15103                  bits from the MSB of the field to the MSB of the
15104                  object, and then subtract off the number of bits of
15105                  the field itself.  The result is the bit offset of
15106                  the LSB of the field.  */
15107               int anonymous_size;
15108               int bit_offset = DW_UNSND (attr);
15109
15110               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15111               if (attr)
15112                 {
15113                   /* The size of the anonymous object containing
15114                      the bit field is explicit, so use the
15115                      indicated size (in bytes).  */
15116                   anonymous_size = DW_UNSND (attr);
15117                 }
15118               else
15119                 {
15120                   /* The size of the anonymous object containing
15121                      the bit field must be inferred from the type
15122                      attribute of the data member containing the
15123                      bit field.  */
15124                   anonymous_size = TYPE_LENGTH (fp->type);
15125                 }
15126               SET_FIELD_BITPOS (*fp,
15127                                 (FIELD_BITPOS (*fp)
15128                                  + anonymous_size * bits_per_byte
15129                                  - bit_offset - FIELD_BITSIZE (*fp)));
15130             }
15131         }
15132       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15133       if (attr != NULL)
15134         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15135                                 + dwarf2_get_attr_constant_value (attr, 0)));
15136
15137       /* Get name of field.  */
15138       fieldname = dwarf2_name (die, cu);
15139       if (fieldname == NULL)
15140         fieldname = "";
15141
15142       /* The name is already allocated along with this objfile, so we don't
15143          need to duplicate it for the type.  */
15144       fp->name = fieldname;
15145
15146       /* Change accessibility for artificial fields (e.g. virtual table
15147          pointer or virtual base class pointer) to private.  */
15148       if (dwarf2_attr (die, DW_AT_artificial, cu))
15149         {
15150           FIELD_ARTIFICIAL (*fp) = 1;
15151           new_field->accessibility = DW_ACCESS_private;
15152           fip->non_public_fields = 1;
15153         }
15154     }
15155   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15156     {
15157       /* C++ static member.  */
15158
15159       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15160          is a declaration, but all versions of G++ as of this writing
15161          (so through at least 3.2.1) incorrectly generate
15162          DW_TAG_variable tags.  */
15163
15164       const char *physname;
15165
15166       /* Get name of field.  */
15167       fieldname = dwarf2_name (die, cu);
15168       if (fieldname == NULL)
15169         return;
15170
15171       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15172       if (attr
15173           /* Only create a symbol if this is an external value.
15174              new_symbol checks this and puts the value in the global symbol
15175              table, which we want.  If it is not external, new_symbol
15176              will try to put the value in cu->list_in_scope which is wrong.  */
15177           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15178         {
15179           /* A static const member, not much different than an enum as far as
15180              we're concerned, except that we can support more types.  */
15181           new_symbol (die, NULL, cu);
15182         }
15183
15184       /* Get physical name.  */
15185       physname = dwarf2_physname (fieldname, die, cu);
15186
15187       /* The name is already allocated along with this objfile, so we don't
15188          need to duplicate it for the type.  */
15189       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15190       FIELD_TYPE (*fp) = die_type (die, cu);
15191       FIELD_NAME (*fp) = fieldname;
15192     }
15193   else if (die->tag == DW_TAG_inheritance)
15194     {
15195       LONGEST offset;
15196
15197       /* C++ base class field.  */
15198       if (handle_data_member_location (die, cu, &offset))
15199         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15200       FIELD_BITSIZE (*fp) = 0;
15201       FIELD_TYPE (*fp) = die_type (die, cu);
15202       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15203     }
15204   else if (die->tag == DW_TAG_variant_part)
15205     {
15206       /* process_structure_scope will treat this DIE as a union.  */
15207       process_structure_scope (die, cu);
15208
15209       /* The variant part is relative to the start of the enclosing
15210          structure.  */
15211       SET_FIELD_BITPOS (*fp, 0);
15212       fp->type = get_die_type (die, cu);
15213       fp->artificial = 1;
15214       fp->name = "<<variant>>";
15215
15216       /* Normally a DW_TAG_variant_part won't have a size, but our
15217          representation requires one, so set it to the maximum of the
15218          child sizes.  */
15219       if (TYPE_LENGTH (fp->type) == 0)
15220         {
15221           unsigned max = 0;
15222           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15223             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15224               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15225           TYPE_LENGTH (fp->type) = max;
15226         }
15227     }
15228   else
15229     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15230 }
15231
15232 /* Can the type given by DIE define another type?  */
15233
15234 static bool
15235 type_can_define_types (const struct die_info *die)
15236 {
15237   switch (die->tag)
15238     {
15239     case DW_TAG_typedef:
15240     case DW_TAG_class_type:
15241     case DW_TAG_structure_type:
15242     case DW_TAG_union_type:
15243     case DW_TAG_enumeration_type:
15244       return true;
15245
15246     default:
15247       return false;
15248     }
15249 }
15250
15251 /* Add a type definition defined in the scope of the FIP's class.  */
15252
15253 static void
15254 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15255                       struct dwarf2_cu *cu)
15256 {
15257   struct decl_field fp;
15258   memset (&fp, 0, sizeof (fp));
15259
15260   gdb_assert (type_can_define_types (die));
15261
15262   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15263   fp.name = dwarf2_name (die, cu);
15264   fp.type = read_type_die (die, cu);
15265
15266   /* Save accessibility.  */
15267   enum dwarf_access_attribute accessibility;
15268   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15269   if (attr != NULL)
15270     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15271   else
15272     accessibility = dwarf2_default_access_attribute (die, cu);
15273   switch (accessibility)
15274     {
15275     case DW_ACCESS_public:
15276       /* The assumed value if neither private nor protected.  */
15277       break;
15278     case DW_ACCESS_private:
15279       fp.is_private = 1;
15280       break;
15281     case DW_ACCESS_protected:
15282       fp.is_protected = 1;
15283       break;
15284     default:
15285       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15286     }
15287
15288   if (die->tag == DW_TAG_typedef)
15289     fip->typedef_field_list.push_back (fp);
15290   else
15291     fip->nested_types_list.push_back (fp);
15292 }
15293
15294 /* Create the vector of fields, and attach it to the type.  */
15295
15296 static void
15297 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15298                               struct dwarf2_cu *cu)
15299 {
15300   int nfields = fip->nfields;
15301
15302   /* Record the field count, allocate space for the array of fields,
15303      and create blank accessibility bitfields if necessary.  */
15304   TYPE_NFIELDS (type) = nfields;
15305   TYPE_FIELDS (type) = (struct field *)
15306     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15307
15308   if (fip->non_public_fields && cu->language != language_ada)
15309     {
15310       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15311
15312       TYPE_FIELD_PRIVATE_BITS (type) =
15313         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15314       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15315
15316       TYPE_FIELD_PROTECTED_BITS (type) =
15317         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15318       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15319
15320       TYPE_FIELD_IGNORE_BITS (type) =
15321         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15322       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15323     }
15324
15325   /* If the type has baseclasses, allocate and clear a bit vector for
15326      TYPE_FIELD_VIRTUAL_BITS.  */
15327   if (!fip->baseclasses.empty () && cu->language != language_ada)
15328     {
15329       int num_bytes = B_BYTES (fip->baseclasses.size ());
15330       unsigned char *pointer;
15331
15332       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15333       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15334       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15335       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15336       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15337     }
15338
15339   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15340     {
15341       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15342
15343       for (int index = 0; index < nfields; ++index)
15344         {
15345           struct nextfield &field = fip->fields[index];
15346
15347           if (field.variant.is_discriminant)
15348             di->discriminant_index = index;
15349           else if (field.variant.default_branch)
15350             di->default_index = index;
15351           else
15352             di->discriminants[index] = field.variant.discriminant_value;
15353         }
15354     }
15355
15356   /* Copy the saved-up fields into the field vector.  */
15357   for (int i = 0; i < nfields; ++i)
15358     {
15359       struct nextfield &field
15360         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15361            : fip->fields[i - fip->baseclasses.size ()]);
15362
15363       TYPE_FIELD (type, i) = field.field;
15364       switch (field.accessibility)
15365         {
15366         case DW_ACCESS_private:
15367           if (cu->language != language_ada)
15368             SET_TYPE_FIELD_PRIVATE (type, i);
15369           break;
15370
15371         case DW_ACCESS_protected:
15372           if (cu->language != language_ada)
15373             SET_TYPE_FIELD_PROTECTED (type, i);
15374           break;
15375
15376         case DW_ACCESS_public:
15377           break;
15378
15379         default:
15380           /* Unknown accessibility.  Complain and treat it as public.  */
15381           {
15382             complaint (_("unsupported accessibility %d"),
15383                        field.accessibility);
15384           }
15385           break;
15386         }
15387       if (i < fip->baseclasses.size ())
15388         {
15389           switch (field.virtuality)
15390             {
15391             case DW_VIRTUALITY_virtual:
15392             case DW_VIRTUALITY_pure_virtual:
15393               if (cu->language == language_ada)
15394                 error (_("unexpected virtuality in component of Ada type"));
15395               SET_TYPE_FIELD_VIRTUAL (type, i);
15396               break;
15397             }
15398         }
15399     }
15400 }
15401
15402 /* Return true if this member function is a constructor, false
15403    otherwise.  */
15404
15405 static int
15406 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15407 {
15408   const char *fieldname;
15409   const char *type_name;
15410   int len;
15411
15412   if (die->parent == NULL)
15413     return 0;
15414
15415   if (die->parent->tag != DW_TAG_structure_type
15416       && die->parent->tag != DW_TAG_union_type
15417       && die->parent->tag != DW_TAG_class_type)
15418     return 0;
15419
15420   fieldname = dwarf2_name (die, cu);
15421   type_name = dwarf2_name (die->parent, cu);
15422   if (fieldname == NULL || type_name == NULL)
15423     return 0;
15424
15425   len = strlen (fieldname);
15426   return (strncmp (fieldname, type_name, len) == 0
15427           && (type_name[len] == '\0' || type_name[len] == '<'));
15428 }
15429
15430 /* Add a member function to the proper fieldlist.  */
15431
15432 static void
15433 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15434                       struct type *type, struct dwarf2_cu *cu)
15435 {
15436   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15437   struct attribute *attr;
15438   int i;
15439   struct fnfieldlist *flp = nullptr;
15440   struct fn_field *fnp;
15441   const char *fieldname;
15442   struct type *this_type;
15443   enum dwarf_access_attribute accessibility;
15444
15445   if (cu->language == language_ada)
15446     error (_("unexpected member function in Ada type"));
15447
15448   /* Get name of member function.  */
15449   fieldname = dwarf2_name (die, cu);
15450   if (fieldname == NULL)
15451     return;
15452
15453   /* Look up member function name in fieldlist.  */
15454   for (i = 0; i < fip->fnfieldlists.size (); i++)
15455     {
15456       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15457         {
15458           flp = &fip->fnfieldlists[i];
15459           break;
15460         }
15461     }
15462
15463   /* Create a new fnfieldlist if necessary.  */
15464   if (flp == nullptr)
15465     {
15466       fip->fnfieldlists.emplace_back ();
15467       flp = &fip->fnfieldlists.back ();
15468       flp->name = fieldname;
15469       i = fip->fnfieldlists.size () - 1;
15470     }
15471
15472   /* Create a new member function field and add it to the vector of
15473      fnfieldlists.  */
15474   flp->fnfields.emplace_back ();
15475   fnp = &flp->fnfields.back ();
15476
15477   /* Delay processing of the physname until later.  */
15478   if (cu->language == language_cplus)
15479     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15480                         die, cu);
15481   else
15482     {
15483       const char *physname = dwarf2_physname (fieldname, die, cu);
15484       fnp->physname = physname ? physname : "";
15485     }
15486
15487   fnp->type = alloc_type (objfile);
15488   this_type = read_type_die (die, cu);
15489   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15490     {
15491       int nparams = TYPE_NFIELDS (this_type);
15492
15493       /* TYPE is the domain of this method, and THIS_TYPE is the type
15494            of the method itself (TYPE_CODE_METHOD).  */
15495       smash_to_method_type (fnp->type, type,
15496                             TYPE_TARGET_TYPE (this_type),
15497                             TYPE_FIELDS (this_type),
15498                             TYPE_NFIELDS (this_type),
15499                             TYPE_VARARGS (this_type));
15500
15501       /* Handle static member functions.
15502          Dwarf2 has no clean way to discern C++ static and non-static
15503          member functions.  G++ helps GDB by marking the first
15504          parameter for non-static member functions (which is the this
15505          pointer) as artificial.  We obtain this information from
15506          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15507       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15508         fnp->voffset = VOFFSET_STATIC;
15509     }
15510   else
15511     complaint (_("member function type missing for '%s'"),
15512                dwarf2_full_name (fieldname, die, cu));
15513
15514   /* Get fcontext from DW_AT_containing_type if present.  */
15515   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15516     fnp->fcontext = die_containing_type (die, cu);
15517
15518   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15519      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15520
15521   /* Get accessibility.  */
15522   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15523   if (attr)
15524     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15525   else
15526     accessibility = dwarf2_default_access_attribute (die, cu);
15527   switch (accessibility)
15528     {
15529     case DW_ACCESS_private:
15530       fnp->is_private = 1;
15531       break;
15532     case DW_ACCESS_protected:
15533       fnp->is_protected = 1;
15534       break;
15535     }
15536
15537   /* Check for artificial methods.  */
15538   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15539   if (attr && DW_UNSND (attr) != 0)
15540     fnp->is_artificial = 1;
15541
15542   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15543
15544   /* Get index in virtual function table if it is a virtual member
15545      function.  For older versions of GCC, this is an offset in the
15546      appropriate virtual table, as specified by DW_AT_containing_type.
15547      For everyone else, it is an expression to be evaluated relative
15548      to the object address.  */
15549
15550   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15551   if (attr)
15552     {
15553       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15554         {
15555           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15556             {
15557               /* Old-style GCC.  */
15558               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15559             }
15560           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15561                    || (DW_BLOCK (attr)->size > 1
15562                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15563                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15564             {
15565               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15566               if ((fnp->voffset % cu->header.addr_size) != 0)
15567                 dwarf2_complex_location_expr_complaint ();
15568               else
15569                 fnp->voffset /= cu->header.addr_size;
15570               fnp->voffset += 2;
15571             }
15572           else
15573             dwarf2_complex_location_expr_complaint ();
15574
15575           if (!fnp->fcontext)
15576             {
15577               /* If there is no `this' field and no DW_AT_containing_type,
15578                  we cannot actually find a base class context for the
15579                  vtable!  */
15580               if (TYPE_NFIELDS (this_type) == 0
15581                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15582                 {
15583                   complaint (_("cannot determine context for virtual member "
15584                                "function \"%s\" (offset %s)"),
15585                              fieldname, sect_offset_str (die->sect_off));
15586                 }
15587               else
15588                 {
15589                   fnp->fcontext
15590                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15591                 }
15592             }
15593         }
15594       else if (attr_form_is_section_offset (attr))
15595         {
15596           dwarf2_complex_location_expr_complaint ();
15597         }
15598       else
15599         {
15600           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15601                                                  fieldname);
15602         }
15603     }
15604   else
15605     {
15606       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15607       if (attr && DW_UNSND (attr))
15608         {
15609           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15610           complaint (_("Member function \"%s\" (offset %s) is virtual "
15611                        "but the vtable offset is not specified"),
15612                      fieldname, sect_offset_str (die->sect_off));
15613           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15614           TYPE_CPLUS_DYNAMIC (type) = 1;
15615         }
15616     }
15617 }
15618
15619 /* Create the vector of member function fields, and attach it to the type.  */
15620
15621 static void
15622 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15623                                  struct dwarf2_cu *cu)
15624 {
15625   if (cu->language == language_ada)
15626     error (_("unexpected member functions in Ada type"));
15627
15628   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15629   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15630     TYPE_ALLOC (type,
15631                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15632
15633   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15634     {
15635       struct fnfieldlist &nf = fip->fnfieldlists[i];
15636       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15637
15638       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15639       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15640       fn_flp->fn_fields = (struct fn_field *)
15641         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15642
15643       for (int k = 0; k < nf.fnfields.size (); ++k)
15644         fn_flp->fn_fields[k] = nf.fnfields[k];
15645     }
15646
15647   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15648 }
15649
15650 /* Returns non-zero if NAME is the name of a vtable member in CU's
15651    language, zero otherwise.  */
15652 static int
15653 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15654 {
15655   static const char vptr[] = "_vptr";
15656
15657   /* Look for the C++ form of the vtable.  */
15658   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15659     return 1;
15660
15661   return 0;
15662 }
15663
15664 /* GCC outputs unnamed structures that are really pointers to member
15665    functions, with the ABI-specified layout.  If TYPE describes
15666    such a structure, smash it into a member function type.
15667
15668    GCC shouldn't do this; it should just output pointer to member DIEs.
15669    This is GCC PR debug/28767.  */
15670
15671 static void
15672 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15673 {
15674   struct type *pfn_type, *self_type, *new_type;
15675
15676   /* Check for a structure with no name and two children.  */
15677   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15678     return;
15679
15680   /* Check for __pfn and __delta members.  */
15681   if (TYPE_FIELD_NAME (type, 0) == NULL
15682       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15683       || TYPE_FIELD_NAME (type, 1) == NULL
15684       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15685     return;
15686
15687   /* Find the type of the method.  */
15688   pfn_type = TYPE_FIELD_TYPE (type, 0);
15689   if (pfn_type == NULL
15690       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15691       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15692     return;
15693
15694   /* Look for the "this" argument.  */
15695   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15696   if (TYPE_NFIELDS (pfn_type) == 0
15697       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15698       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15699     return;
15700
15701   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15702   new_type = alloc_type (objfile);
15703   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15704                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15705                         TYPE_VARARGS (pfn_type));
15706   smash_to_methodptr_type (type, new_type);
15707 }
15708
15709 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15710    appropriate error checking and issuing complaints if there is a
15711    problem.  */
15712
15713 static ULONGEST
15714 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15715 {
15716   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15717
15718   if (attr == nullptr)
15719     return 0;
15720
15721   if (!attr_form_is_constant (attr))
15722     {
15723       complaint (_("DW_AT_alignment must have constant form"
15724                    " - DIE at %s [in module %s]"),
15725                  sect_offset_str (die->sect_off),
15726                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15727       return 0;
15728     }
15729
15730   ULONGEST align;
15731   if (attr->form == DW_FORM_sdata)
15732     {
15733       LONGEST val = DW_SND (attr);
15734       if (val < 0)
15735         {
15736           complaint (_("DW_AT_alignment value must not be negative"
15737                        " - DIE at %s [in module %s]"),
15738                      sect_offset_str (die->sect_off),
15739                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15740           return 0;
15741         }
15742       align = val;
15743     }
15744   else
15745     align = DW_UNSND (attr);
15746
15747   if (align == 0)
15748     {
15749       complaint (_("DW_AT_alignment value must not be zero"
15750                    " - DIE at %s [in module %s]"),
15751                  sect_offset_str (die->sect_off),
15752                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15753       return 0;
15754     }
15755   if ((align & (align - 1)) != 0)
15756     {
15757       complaint (_("DW_AT_alignment value must be a power of 2"
15758                    " - DIE at %s [in module %s]"),
15759                  sect_offset_str (die->sect_off),
15760                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15761       return 0;
15762     }
15763
15764   return align;
15765 }
15766
15767 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15768    the alignment for TYPE.  */
15769
15770 static void
15771 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15772                      struct type *type)
15773 {
15774   if (!set_type_align (type, get_alignment (cu, die)))
15775     complaint (_("DW_AT_alignment value too large"
15776                  " - DIE at %s [in module %s]"),
15777                sect_offset_str (die->sect_off),
15778                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15779 }
15780
15781 /* Called when we find the DIE that starts a structure or union scope
15782    (definition) to create a type for the structure or union.  Fill in
15783    the type's name and general properties; the members will not be
15784    processed until process_structure_scope.  A symbol table entry for
15785    the type will also not be done until process_structure_scope (assuming
15786    the type has a name).
15787
15788    NOTE: we need to call these functions regardless of whether or not the
15789    DIE has a DW_AT_name attribute, since it might be an anonymous
15790    structure or union.  This gets the type entered into our set of
15791    user defined types.  */
15792
15793 static struct type *
15794 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15795 {
15796   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15797   struct type *type;
15798   struct attribute *attr;
15799   const char *name;
15800
15801   /* If the definition of this type lives in .debug_types, read that type.
15802      Don't follow DW_AT_specification though, that will take us back up
15803      the chain and we want to go down.  */
15804   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15805   if (attr)
15806     {
15807       type = get_DW_AT_signature_type (die, attr, cu);
15808
15809       /* The type's CU may not be the same as CU.
15810          Ensure TYPE is recorded with CU in die_type_hash.  */
15811       return set_die_type (die, type, cu);
15812     }
15813
15814   type = alloc_type (objfile);
15815   INIT_CPLUS_SPECIFIC (type);
15816
15817   name = dwarf2_name (die, cu);
15818   if (name != NULL)
15819     {
15820       if (cu->language == language_cplus
15821           || cu->language == language_d
15822           || cu->language == language_rust)
15823         {
15824           const char *full_name = dwarf2_full_name (name, die, cu);
15825
15826           /* dwarf2_full_name might have already finished building the DIE's
15827              type.  If so, there is no need to continue.  */
15828           if (get_die_type (die, cu) != NULL)
15829             return get_die_type (die, cu);
15830
15831           TYPE_NAME (type) = full_name;
15832         }
15833       else
15834         {
15835           /* The name is already allocated along with this objfile, so
15836              we don't need to duplicate it for the type.  */
15837           TYPE_NAME (type) = name;
15838         }
15839     }
15840
15841   if (die->tag == DW_TAG_structure_type)
15842     {
15843       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15844     }
15845   else if (die->tag == DW_TAG_union_type)
15846     {
15847       TYPE_CODE (type) = TYPE_CODE_UNION;
15848     }
15849   else if (die->tag == DW_TAG_variant_part)
15850     {
15851       TYPE_CODE (type) = TYPE_CODE_UNION;
15852       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15853     }
15854   else
15855     {
15856       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15857     }
15858
15859   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15860     TYPE_DECLARED_CLASS (type) = 1;
15861
15862   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15863   if (attr)
15864     {
15865       if (attr_form_is_constant (attr))
15866         TYPE_LENGTH (type) = DW_UNSND (attr);
15867       else
15868         {
15869           /* For the moment, dynamic type sizes are not supported
15870              by GDB's struct type.  The actual size is determined
15871              on-demand when resolving the type of a given object,
15872              so set the type's length to zero for now.  Otherwise,
15873              we record an expression as the length, and that expression
15874              could lead to a very large value, which could eventually
15875              lead to us trying to allocate that much memory when creating
15876              a value of that type.  */
15877           TYPE_LENGTH (type) = 0;
15878         }
15879     }
15880   else
15881     {
15882       TYPE_LENGTH (type) = 0;
15883     }
15884
15885   maybe_set_alignment (cu, die, type);
15886
15887   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15888     {
15889       /* ICC<14 does not output the required DW_AT_declaration on
15890          incomplete types, but gives them a size of zero.  */
15891       TYPE_STUB (type) = 1;
15892     }
15893   else
15894     TYPE_STUB_SUPPORTED (type) = 1;
15895
15896   if (die_is_declaration (die, cu))
15897     TYPE_STUB (type) = 1;
15898   else if (attr == NULL && die->child == NULL
15899            && producer_is_realview (cu->producer))
15900     /* RealView does not output the required DW_AT_declaration
15901        on incomplete types.  */
15902     TYPE_STUB (type) = 1;
15903
15904   /* We need to add the type field to the die immediately so we don't
15905      infinitely recurse when dealing with pointers to the structure
15906      type within the structure itself.  */
15907   set_die_type (die, type, cu);
15908
15909   /* set_die_type should be already done.  */
15910   set_descriptive_type (type, die, cu);
15911
15912   return type;
15913 }
15914
15915 /* A helper for process_structure_scope that handles a single member
15916    DIE.  */
15917
15918 static void
15919 handle_struct_member_die (struct die_info *child_die, struct type *type,
15920                           struct field_info *fi,
15921                           std::vector<struct symbol *> *template_args,
15922                           struct dwarf2_cu *cu)
15923 {
15924   if (child_die->tag == DW_TAG_member
15925       || child_die->tag == DW_TAG_variable
15926       || child_die->tag == DW_TAG_variant_part)
15927     {
15928       /* NOTE: carlton/2002-11-05: A C++ static data member
15929          should be a DW_TAG_member that is a declaration, but
15930          all versions of G++ as of this writing (so through at
15931          least 3.2.1) incorrectly generate DW_TAG_variable
15932          tags for them instead.  */
15933       dwarf2_add_field (fi, child_die, cu);
15934     }
15935   else if (child_die->tag == DW_TAG_subprogram)
15936     {
15937       /* Rust doesn't have member functions in the C++ sense.
15938          However, it does emit ordinary functions as children
15939          of a struct DIE.  */
15940       if (cu->language == language_rust)
15941         read_func_scope (child_die, cu);
15942       else
15943         {
15944           /* C++ member function.  */
15945           dwarf2_add_member_fn (fi, child_die, type, cu);
15946         }
15947     }
15948   else if (child_die->tag == DW_TAG_inheritance)
15949     {
15950       /* C++ base class field.  */
15951       dwarf2_add_field (fi, child_die, cu);
15952     }
15953   else if (type_can_define_types (child_die))
15954     dwarf2_add_type_defn (fi, child_die, cu);
15955   else if (child_die->tag == DW_TAG_template_type_param
15956            || child_die->tag == DW_TAG_template_value_param)
15957     {
15958       struct symbol *arg = new_symbol (child_die, NULL, cu);
15959
15960       if (arg != NULL)
15961         template_args->push_back (arg);
15962     }
15963   else if (child_die->tag == DW_TAG_variant)
15964     {
15965       /* In a variant we want to get the discriminant and also add a
15966          field for our sole member child.  */
15967       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15968
15969       for (die_info *variant_child = child_die->child;
15970            variant_child != NULL;
15971            variant_child = sibling_die (variant_child))
15972         {
15973           if (variant_child->tag == DW_TAG_member)
15974             {
15975               handle_struct_member_die (variant_child, type, fi,
15976                                         template_args, cu);
15977               /* Only handle the one.  */
15978               break;
15979             }
15980         }
15981
15982       /* We don't handle this but we might as well report it if we see
15983          it.  */
15984       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15985           complaint (_("DW_AT_discr_list is not supported yet"
15986                        " - DIE at %s [in module %s]"),
15987                      sect_offset_str (child_die->sect_off),
15988                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15989
15990       /* The first field was just added, so we can stash the
15991          discriminant there.  */
15992       gdb_assert (!fi->fields.empty ());
15993       if (discr == NULL)
15994         fi->fields.back ().variant.default_branch = true;
15995       else
15996         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15997     }
15998 }
15999
16000 /* Finish creating a structure or union type, including filling in
16001    its members and creating a symbol for it.  */
16002
16003 static void
16004 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
16005 {
16006   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16007   struct die_info *child_die;
16008   struct type *type;
16009
16010   type = get_die_type (die, cu);
16011   if (type == NULL)
16012     type = read_structure_type (die, cu);
16013
16014   /* When reading a DW_TAG_variant_part, we need to notice when we
16015      read the discriminant member, so we can record it later in the
16016      discriminant_info.  */
16017   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16018   sect_offset discr_offset;
16019   bool has_template_parameters = false;
16020
16021   if (is_variant_part)
16022     {
16023       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16024       if (discr == NULL)
16025         {
16026           /* Maybe it's a univariant form, an extension we support.
16027              In this case arrange not to check the offset.  */
16028           is_variant_part = false;
16029         }
16030       else if (attr_form_is_ref (discr))
16031         {
16032           struct dwarf2_cu *target_cu = cu;
16033           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16034
16035           discr_offset = target_die->sect_off;
16036         }
16037       else
16038         {
16039           complaint (_("DW_AT_discr does not have DIE reference form"
16040                        " - DIE at %s [in module %s]"),
16041                      sect_offset_str (die->sect_off),
16042                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16043           is_variant_part = false;
16044         }
16045     }
16046
16047   if (die->child != NULL && ! die_is_declaration (die, cu))
16048     {
16049       struct field_info fi;
16050       std::vector<struct symbol *> template_args;
16051
16052       child_die = die->child;
16053
16054       while (child_die && child_die->tag)
16055         {
16056           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16057
16058           if (is_variant_part && discr_offset == child_die->sect_off)
16059             fi.fields.back ().variant.is_discriminant = true;
16060
16061           child_die = sibling_die (child_die);
16062         }
16063
16064       /* Attach template arguments to type.  */
16065       if (!template_args.empty ())
16066         {
16067           has_template_parameters = true;
16068           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16069           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16070           TYPE_TEMPLATE_ARGUMENTS (type)
16071             = XOBNEWVEC (&objfile->objfile_obstack,
16072                          struct symbol *,
16073                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16074           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16075                   template_args.data (),
16076                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16077                    * sizeof (struct symbol *)));
16078         }
16079
16080       /* Attach fields and member functions to the type.  */
16081       if (fi.nfields)
16082         dwarf2_attach_fields_to_type (&fi, type, cu);
16083       if (!fi.fnfieldlists.empty ())
16084         {
16085           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16086
16087           /* Get the type which refers to the base class (possibly this
16088              class itself) which contains the vtable pointer for the current
16089              class from the DW_AT_containing_type attribute.  This use of
16090              DW_AT_containing_type is a GNU extension.  */
16091
16092           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16093             {
16094               struct type *t = die_containing_type (die, cu);
16095
16096               set_type_vptr_basetype (type, t);
16097               if (type == t)
16098                 {
16099                   int i;
16100
16101                   /* Our own class provides vtbl ptr.  */
16102                   for (i = TYPE_NFIELDS (t) - 1;
16103                        i >= TYPE_N_BASECLASSES (t);
16104                        --i)
16105                     {
16106                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16107
16108                       if (is_vtable_name (fieldname, cu))
16109                         {
16110                           set_type_vptr_fieldno (type, i);
16111                           break;
16112                         }
16113                     }
16114
16115                   /* Complain if virtual function table field not found.  */
16116                   if (i < TYPE_N_BASECLASSES (t))
16117                     complaint (_("virtual function table pointer "
16118                                  "not found when defining class '%s'"),
16119                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16120                 }
16121               else
16122                 {
16123                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16124                 }
16125             }
16126           else if (cu->producer
16127                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16128             {
16129               /* The IBM XLC compiler does not provide direct indication
16130                  of the containing type, but the vtable pointer is
16131                  always named __vfp.  */
16132
16133               int i;
16134
16135               for (i = TYPE_NFIELDS (type) - 1;
16136                    i >= TYPE_N_BASECLASSES (type);
16137                    --i)
16138                 {
16139                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16140                     {
16141                       set_type_vptr_fieldno (type, i);
16142                       set_type_vptr_basetype (type, type);
16143                       break;
16144                     }
16145                 }
16146             }
16147         }
16148
16149       /* Copy fi.typedef_field_list linked list elements content into the
16150          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16151       if (!fi.typedef_field_list.empty ())
16152         {
16153           int count = fi.typedef_field_list.size ();
16154
16155           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16156           TYPE_TYPEDEF_FIELD_ARRAY (type)
16157             = ((struct decl_field *)
16158                TYPE_ALLOC (type,
16159                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16160           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16161
16162           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16163             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16164         }
16165
16166       /* Copy fi.nested_types_list linked list elements content into the
16167          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16168       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16169         {
16170           int count = fi.nested_types_list.size ();
16171
16172           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16173           TYPE_NESTED_TYPES_ARRAY (type)
16174             = ((struct decl_field *)
16175                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16176           TYPE_NESTED_TYPES_COUNT (type) = count;
16177
16178           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16179             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16180         }
16181     }
16182
16183   quirk_gcc_member_function_pointer (type, objfile);
16184   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16185     cu->rust_unions.push_back (type);
16186
16187   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16188      snapshots) has been known to create a die giving a declaration
16189      for a class that has, as a child, a die giving a definition for a
16190      nested class.  So we have to process our children even if the
16191      current die is a declaration.  Normally, of course, a declaration
16192      won't have any children at all.  */
16193
16194   child_die = die->child;
16195
16196   while (child_die != NULL && child_die->tag)
16197     {
16198       if (child_die->tag == DW_TAG_member
16199           || child_die->tag == DW_TAG_variable
16200           || child_die->tag == DW_TAG_inheritance
16201           || child_die->tag == DW_TAG_template_value_param
16202           || child_die->tag == DW_TAG_template_type_param)
16203         {
16204           /* Do nothing.  */
16205         }
16206       else
16207         process_die (child_die, cu);
16208
16209       child_die = sibling_die (child_die);
16210     }
16211
16212   /* Do not consider external references.  According to the DWARF standard,
16213      these DIEs are identified by the fact that they have no byte_size
16214      attribute, and a declaration attribute.  */
16215   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16216       || !die_is_declaration (die, cu))
16217     {
16218       struct symbol *sym = new_symbol (die, type, cu);
16219
16220       if (has_template_parameters)
16221         {
16222           struct symtab *symtab;
16223           if (sym != nullptr)
16224             symtab = symbol_symtab (sym);
16225           else if (cu->line_header != nullptr)
16226             {
16227               /* Any related symtab will do.  */
16228               symtab
16229                 = cu->line_header->file_name_at (file_name_index (1))->symtab;
16230             }
16231           else
16232             {
16233               symtab = nullptr;
16234               complaint (_("could not find suitable "
16235                            "symtab for template parameter"
16236                            " - DIE at %s [in module %s]"),
16237                          sect_offset_str (die->sect_off),
16238                          objfile_name (objfile));
16239             }
16240
16241           if (symtab != nullptr)
16242             {
16243               /* Make sure that the symtab is set on the new symbols.
16244                  Even though they don't appear in this symtab directly,
16245                  other parts of gdb assume that symbols do, and this is
16246                  reasonably true.  */
16247               for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16248                 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
16249             }
16250         }
16251     }
16252 }
16253
16254 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16255    update TYPE using some information only available in DIE's children.  */
16256
16257 static void
16258 update_enumeration_type_from_children (struct die_info *die,
16259                                        struct type *type,
16260                                        struct dwarf2_cu *cu)
16261 {
16262   struct die_info *child_die;
16263   int unsigned_enum = 1;
16264   int flag_enum = 1;
16265   ULONGEST mask = 0;
16266
16267   auto_obstack obstack;
16268
16269   for (child_die = die->child;
16270        child_die != NULL && child_die->tag;
16271        child_die = sibling_die (child_die))
16272     {
16273       struct attribute *attr;
16274       LONGEST value;
16275       const gdb_byte *bytes;
16276       struct dwarf2_locexpr_baton *baton;
16277       const char *name;
16278
16279       if (child_die->tag != DW_TAG_enumerator)
16280         continue;
16281
16282       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16283       if (attr == NULL)
16284         continue;
16285
16286       name = dwarf2_name (child_die, cu);
16287       if (name == NULL)
16288         name = "<anonymous enumerator>";
16289
16290       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16291                                &value, &bytes, &baton);
16292       if (value < 0)
16293         {
16294           unsigned_enum = 0;
16295           flag_enum = 0;
16296         }
16297       else if ((mask & value) != 0)
16298         flag_enum = 0;
16299       else
16300         mask |= value;
16301
16302       /* If we already know that the enum type is neither unsigned, nor
16303          a flag type, no need to look at the rest of the enumerates.  */
16304       if (!unsigned_enum && !flag_enum)
16305         break;
16306     }
16307
16308   if (unsigned_enum)
16309     TYPE_UNSIGNED (type) = 1;
16310   if (flag_enum)
16311     TYPE_FLAG_ENUM (type) = 1;
16312 }
16313
16314 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16315    complete the type's fields yet, or create any symbols.  */
16316
16317 static struct type *
16318 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16319 {
16320   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16321   struct type *type;
16322   struct attribute *attr;
16323   const char *name;
16324
16325   /* If the definition of this type lives in .debug_types, read that type.
16326      Don't follow DW_AT_specification though, that will take us back up
16327      the chain and we want to go down.  */
16328   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16329   if (attr)
16330     {
16331       type = get_DW_AT_signature_type (die, attr, cu);
16332
16333       /* The type's CU may not be the same as CU.
16334          Ensure TYPE is recorded with CU in die_type_hash.  */
16335       return set_die_type (die, type, cu);
16336     }
16337
16338   type = alloc_type (objfile);
16339
16340   TYPE_CODE (type) = TYPE_CODE_ENUM;
16341   name = dwarf2_full_name (NULL, die, cu);
16342   if (name != NULL)
16343     TYPE_NAME (type) = name;
16344
16345   attr = dwarf2_attr (die, DW_AT_type, cu);
16346   if (attr != NULL)
16347     {
16348       struct type *underlying_type = die_type (die, cu);
16349
16350       TYPE_TARGET_TYPE (type) = underlying_type;
16351     }
16352
16353   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16354   if (attr)
16355     {
16356       TYPE_LENGTH (type) = DW_UNSND (attr);
16357     }
16358   else
16359     {
16360       TYPE_LENGTH (type) = 0;
16361     }
16362
16363   maybe_set_alignment (cu, die, type);
16364
16365   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16366      declared as private in the package spec, and then defined only
16367      inside the package body.  Such types are known as Taft Amendment
16368      Types.  When another package uses such a type, an incomplete DIE
16369      may be generated by the compiler.  */
16370   if (die_is_declaration (die, cu))
16371     TYPE_STUB (type) = 1;
16372
16373   /* Finish the creation of this type by using the enum's children.
16374      We must call this even when the underlying type has been provided
16375      so that we can determine if we're looking at a "flag" enum.  */
16376   update_enumeration_type_from_children (die, type, cu);
16377
16378   /* If this type has an underlying type that is not a stub, then we
16379      may use its attributes.  We always use the "unsigned" attribute
16380      in this situation, because ordinarily we guess whether the type
16381      is unsigned -- but the guess can be wrong and the underlying type
16382      can tell us the reality.  However, we defer to a local size
16383      attribute if one exists, because this lets the compiler override
16384      the underlying type if needed.  */
16385   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16386     {
16387       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16388       if (TYPE_LENGTH (type) == 0)
16389         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16390       if (TYPE_RAW_ALIGN (type) == 0
16391           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16392         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16393     }
16394
16395   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16396
16397   return set_die_type (die, type, cu);
16398 }
16399
16400 /* Given a pointer to a die which begins an enumeration, process all
16401    the dies that define the members of the enumeration, and create the
16402    symbol for the enumeration type.
16403
16404    NOTE: We reverse the order of the element list.  */
16405
16406 static void
16407 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16408 {
16409   struct type *this_type;
16410
16411   this_type = get_die_type (die, cu);
16412   if (this_type == NULL)
16413     this_type = read_enumeration_type (die, cu);
16414
16415   if (die->child != NULL)
16416     {
16417       struct die_info *child_die;
16418       struct symbol *sym;
16419       struct field *fields = NULL;
16420       int num_fields = 0;
16421       const char *name;
16422
16423       child_die = die->child;
16424       while (child_die && child_die->tag)
16425         {
16426           if (child_die->tag != DW_TAG_enumerator)
16427             {
16428               process_die (child_die, cu);
16429             }
16430           else
16431             {
16432               name = dwarf2_name (child_die, cu);
16433               if (name)
16434                 {
16435                   sym = new_symbol (child_die, this_type, cu);
16436
16437                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16438                     {
16439                       fields = (struct field *)
16440                         xrealloc (fields,
16441                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16442                                   * sizeof (struct field));
16443                     }
16444
16445                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16446                   FIELD_TYPE (fields[num_fields]) = NULL;
16447                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16448                   FIELD_BITSIZE (fields[num_fields]) = 0;
16449
16450                   num_fields++;
16451                 }
16452             }
16453
16454           child_die = sibling_die (child_die);
16455         }
16456
16457       if (num_fields)
16458         {
16459           TYPE_NFIELDS (this_type) = num_fields;
16460           TYPE_FIELDS (this_type) = (struct field *)
16461             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16462           memcpy (TYPE_FIELDS (this_type), fields,
16463                   sizeof (struct field) * num_fields);
16464           xfree (fields);
16465         }
16466     }
16467
16468   /* If we are reading an enum from a .debug_types unit, and the enum
16469      is a declaration, and the enum is not the signatured type in the
16470      unit, then we do not want to add a symbol for it.  Adding a
16471      symbol would in some cases obscure the true definition of the
16472      enum, giving users an incomplete type when the definition is
16473      actually available.  Note that we do not want to do this for all
16474      enums which are just declarations, because C++0x allows forward
16475      enum declarations.  */
16476   if (cu->per_cu->is_debug_types
16477       && die_is_declaration (die, cu))
16478     {
16479       struct signatured_type *sig_type;
16480
16481       sig_type = (struct signatured_type *) cu->per_cu;
16482       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16483       if (sig_type->type_offset_in_section != die->sect_off)
16484         return;
16485     }
16486
16487   new_symbol (die, this_type, cu);
16488 }
16489
16490 /* Extract all information from a DW_TAG_array_type DIE and put it in
16491    the DIE's type field.  For now, this only handles one dimensional
16492    arrays.  */
16493
16494 static struct type *
16495 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16496 {
16497   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16498   struct die_info *child_die;
16499   struct type *type;
16500   struct type *element_type, *range_type, *index_type;
16501   struct attribute *attr;
16502   const char *name;
16503   struct dynamic_prop *byte_stride_prop = NULL;
16504   unsigned int bit_stride = 0;
16505
16506   element_type = die_type (die, cu);
16507
16508   /* The die_type call above may have already set the type for this DIE.  */
16509   type = get_die_type (die, cu);
16510   if (type)
16511     return type;
16512
16513   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16514   if (attr != NULL)
16515     {
16516       int stride_ok;
16517
16518       byte_stride_prop
16519         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16520       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16521       if (!stride_ok)
16522         {
16523           complaint (_("unable to read array DW_AT_byte_stride "
16524                        " - DIE at %s [in module %s]"),
16525                      sect_offset_str (die->sect_off),
16526                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16527           /* Ignore this attribute.  We will likely not be able to print
16528              arrays of this type correctly, but there is little we can do
16529              to help if we cannot read the attribute's value.  */
16530           byte_stride_prop = NULL;
16531         }
16532     }
16533
16534   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16535   if (attr != NULL)
16536     bit_stride = DW_UNSND (attr);
16537
16538   /* Irix 6.2 native cc creates array types without children for
16539      arrays with unspecified length.  */
16540   if (die->child == NULL)
16541     {
16542       index_type = objfile_type (objfile)->builtin_int;
16543       range_type = create_static_range_type (NULL, index_type, 0, -1);
16544       type = create_array_type_with_stride (NULL, element_type, range_type,
16545                                             byte_stride_prop, bit_stride);
16546       return set_die_type (die, type, cu);
16547     }
16548
16549   std::vector<struct type *> range_types;
16550   child_die = die->child;
16551   while (child_die && child_die->tag)
16552     {
16553       if (child_die->tag == DW_TAG_subrange_type)
16554         {
16555           struct type *child_type = read_type_die (child_die, cu);
16556
16557           if (child_type != NULL)
16558             {
16559               /* The range type was succesfully read.  Save it for the
16560                  array type creation.  */
16561               range_types.push_back (child_type);
16562             }
16563         }
16564       child_die = sibling_die (child_die);
16565     }
16566
16567   /* Dwarf2 dimensions are output from left to right, create the
16568      necessary array types in backwards order.  */
16569
16570   type = element_type;
16571
16572   if (read_array_order (die, cu) == DW_ORD_col_major)
16573     {
16574       int i = 0;
16575
16576       while (i < range_types.size ())
16577         type = create_array_type_with_stride (NULL, type, range_types[i++],
16578                                               byte_stride_prop, bit_stride);
16579     }
16580   else
16581     {
16582       size_t ndim = range_types.size ();
16583       while (ndim-- > 0)
16584         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16585                                               byte_stride_prop, bit_stride);
16586     }
16587
16588   /* Understand Dwarf2 support for vector types (like they occur on
16589      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16590      array type.  This is not part of the Dwarf2/3 standard yet, but a
16591      custom vendor extension.  The main difference between a regular
16592      array and the vector variant is that vectors are passed by value
16593      to functions.  */
16594   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16595   if (attr)
16596     make_vector_type (type);
16597
16598   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16599      implementation may choose to implement triple vectors using this
16600      attribute.  */
16601   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16602   if (attr)
16603     {
16604       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16605         TYPE_LENGTH (type) = DW_UNSND (attr);
16606       else
16607         complaint (_("DW_AT_byte_size for array type smaller "
16608                      "than the total size of elements"));
16609     }
16610
16611   name = dwarf2_name (die, cu);
16612   if (name)
16613     TYPE_NAME (type) = name;
16614
16615   maybe_set_alignment (cu, die, type);
16616
16617   /* Install the type in the die.  */
16618   set_die_type (die, type, cu);
16619
16620   /* set_die_type should be already done.  */
16621   set_descriptive_type (type, die, cu);
16622
16623   return type;
16624 }
16625
16626 static enum dwarf_array_dim_ordering
16627 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16628 {
16629   struct attribute *attr;
16630
16631   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16632
16633   if (attr)
16634     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16635
16636   /* GNU F77 is a special case, as at 08/2004 array type info is the
16637      opposite order to the dwarf2 specification, but data is still
16638      laid out as per normal fortran.
16639
16640      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16641      version checking.  */
16642
16643   if (cu->language == language_fortran
16644       && cu->producer && strstr (cu->producer, "GNU F77"))
16645     {
16646       return DW_ORD_row_major;
16647     }
16648
16649   switch (cu->language_defn->la_array_ordering)
16650     {
16651     case array_column_major:
16652       return DW_ORD_col_major;
16653     case array_row_major:
16654     default:
16655       return DW_ORD_row_major;
16656     };
16657 }
16658
16659 /* Extract all information from a DW_TAG_set_type DIE and put it in
16660    the DIE's type field.  */
16661
16662 static struct type *
16663 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16664 {
16665   struct type *domain_type, *set_type;
16666   struct attribute *attr;
16667
16668   domain_type = die_type (die, cu);
16669
16670   /* The die_type call above may have already set the type for this DIE.  */
16671   set_type = get_die_type (die, cu);
16672   if (set_type)
16673     return set_type;
16674
16675   set_type = create_set_type (NULL, domain_type);
16676
16677   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16678   if (attr)
16679     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16680
16681   maybe_set_alignment (cu, die, set_type);
16682
16683   return set_die_type (die, set_type, cu);
16684 }
16685
16686 /* A helper for read_common_block that creates a locexpr baton.
16687    SYM is the symbol which we are marking as computed.
16688    COMMON_DIE is the DIE for the common block.
16689    COMMON_LOC is the location expression attribute for the common
16690    block itself.
16691    MEMBER_LOC is the location expression attribute for the particular
16692    member of the common block that we are processing.
16693    CU is the CU from which the above come.  */
16694
16695 static void
16696 mark_common_block_symbol_computed (struct symbol *sym,
16697                                    struct die_info *common_die,
16698                                    struct attribute *common_loc,
16699                                    struct attribute *member_loc,
16700                                    struct dwarf2_cu *cu)
16701 {
16702   struct dwarf2_per_objfile *dwarf2_per_objfile
16703     = cu->per_cu->dwarf2_per_objfile;
16704   struct objfile *objfile = dwarf2_per_objfile->objfile;
16705   struct dwarf2_locexpr_baton *baton;
16706   gdb_byte *ptr;
16707   unsigned int cu_off;
16708   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16709   LONGEST offset = 0;
16710
16711   gdb_assert (common_loc && member_loc);
16712   gdb_assert (attr_form_is_block (common_loc));
16713   gdb_assert (attr_form_is_block (member_loc)
16714               || attr_form_is_constant (member_loc));
16715
16716   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16717   baton->per_cu = cu->per_cu;
16718   gdb_assert (baton->per_cu);
16719
16720   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16721
16722   if (attr_form_is_constant (member_loc))
16723     {
16724       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16725       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16726     }
16727   else
16728     baton->size += DW_BLOCK (member_loc)->size;
16729
16730   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16731   baton->data = ptr;
16732
16733   *ptr++ = DW_OP_call4;
16734   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16735   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16736   ptr += 4;
16737
16738   if (attr_form_is_constant (member_loc))
16739     {
16740       *ptr++ = DW_OP_addr;
16741       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16742       ptr += cu->header.addr_size;
16743     }
16744   else
16745     {
16746       /* We have to copy the data here, because DW_OP_call4 will only
16747          use a DW_AT_location attribute.  */
16748       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16749       ptr += DW_BLOCK (member_loc)->size;
16750     }
16751
16752   *ptr++ = DW_OP_plus;
16753   gdb_assert (ptr - baton->data == baton->size);
16754
16755   SYMBOL_LOCATION_BATON (sym) = baton;
16756   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16757 }
16758
16759 /* Create appropriate locally-scoped variables for all the
16760    DW_TAG_common_block entries.  Also create a struct common_block
16761    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16762    is used to sepate the common blocks name namespace from regular
16763    variable names.  */
16764
16765 static void
16766 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16767 {
16768   struct attribute *attr;
16769
16770   attr = dwarf2_attr (die, DW_AT_location, cu);
16771   if (attr)
16772     {
16773       /* Support the .debug_loc offsets.  */
16774       if (attr_form_is_block (attr))
16775         {
16776           /* Ok.  */
16777         }
16778       else if (attr_form_is_section_offset (attr))
16779         {
16780           dwarf2_complex_location_expr_complaint ();
16781           attr = NULL;
16782         }
16783       else
16784         {
16785           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16786                                                  "common block member");
16787           attr = NULL;
16788         }
16789     }
16790
16791   if (die->child != NULL)
16792     {
16793       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16794       struct die_info *child_die;
16795       size_t n_entries = 0, size;
16796       struct common_block *common_block;
16797       struct symbol *sym;
16798
16799       for (child_die = die->child;
16800            child_die && child_die->tag;
16801            child_die = sibling_die (child_die))
16802         ++n_entries;
16803
16804       size = (sizeof (struct common_block)
16805               + (n_entries - 1) * sizeof (struct symbol *));
16806       common_block
16807         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16808                                                  size);
16809       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16810       common_block->n_entries = 0;
16811
16812       for (child_die = die->child;
16813            child_die && child_die->tag;
16814            child_die = sibling_die (child_die))
16815         {
16816           /* Create the symbol in the DW_TAG_common_block block in the current
16817              symbol scope.  */
16818           sym = new_symbol (child_die, NULL, cu);
16819           if (sym != NULL)
16820             {
16821               struct attribute *member_loc;
16822
16823               common_block->contents[common_block->n_entries++] = sym;
16824
16825               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16826                                         cu);
16827               if (member_loc)
16828                 {
16829                   /* GDB has handled this for a long time, but it is
16830                      not specified by DWARF.  It seems to have been
16831                      emitted by gfortran at least as recently as:
16832                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16833                   complaint (_("Variable in common block has "
16834                                "DW_AT_data_member_location "
16835                                "- DIE at %s [in module %s]"),
16836                                sect_offset_str (child_die->sect_off),
16837                              objfile_name (objfile));
16838
16839                   if (attr_form_is_section_offset (member_loc))
16840                     dwarf2_complex_location_expr_complaint ();
16841                   else if (attr_form_is_constant (member_loc)
16842                            || attr_form_is_block (member_loc))
16843                     {
16844                       if (attr)
16845                         mark_common_block_symbol_computed (sym, die, attr,
16846                                                            member_loc, cu);
16847                     }
16848                   else
16849                     dwarf2_complex_location_expr_complaint ();
16850                 }
16851             }
16852         }
16853
16854       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16855       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16856     }
16857 }
16858
16859 /* Create a type for a C++ namespace.  */
16860
16861 static struct type *
16862 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16863 {
16864   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16865   const char *previous_prefix, *name;
16866   int is_anonymous;
16867   struct type *type;
16868
16869   /* For extensions, reuse the type of the original namespace.  */
16870   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16871     {
16872       struct die_info *ext_die;
16873       struct dwarf2_cu *ext_cu = cu;
16874
16875       ext_die = dwarf2_extension (die, &ext_cu);
16876       type = read_type_die (ext_die, ext_cu);
16877
16878       /* EXT_CU may not be the same as CU.
16879          Ensure TYPE is recorded with CU in die_type_hash.  */
16880       return set_die_type (die, type, cu);
16881     }
16882
16883   name = namespace_name (die, &is_anonymous, cu);
16884
16885   /* Now build the name of the current namespace.  */
16886
16887   previous_prefix = determine_prefix (die, cu);
16888   if (previous_prefix[0] != '\0')
16889     name = typename_concat (&objfile->objfile_obstack,
16890                             previous_prefix, name, 0, cu);
16891
16892   /* Create the type.  */
16893   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16894
16895   return set_die_type (die, type, cu);
16896 }
16897
16898 /* Read a namespace scope.  */
16899
16900 static void
16901 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16902 {
16903   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16904   int is_anonymous;
16905
16906   /* Add a symbol associated to this if we haven't seen the namespace
16907      before.  Also, add a using directive if it's an anonymous
16908      namespace.  */
16909
16910   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16911     {
16912       struct type *type;
16913
16914       type = read_type_die (die, cu);
16915       new_symbol (die, type, cu);
16916
16917       namespace_name (die, &is_anonymous, cu);
16918       if (is_anonymous)
16919         {
16920           const char *previous_prefix = determine_prefix (die, cu);
16921
16922           std::vector<const char *> excludes;
16923           add_using_directive (using_directives (cu),
16924                                previous_prefix, TYPE_NAME (type), NULL,
16925                                NULL, excludes, 0, &objfile->objfile_obstack);
16926         }
16927     }
16928
16929   if (die->child != NULL)
16930     {
16931       struct die_info *child_die = die->child;
16932
16933       while (child_die && child_die->tag)
16934         {
16935           process_die (child_die, cu);
16936           child_die = sibling_die (child_die);
16937         }
16938     }
16939 }
16940
16941 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16942    imported module.  Still we need that type as local Fortran "use ... only"
16943    declaration imports depend on the created type in determine_prefix.  */
16944
16945 static struct type *
16946 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16947 {
16948   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16949   const char *module_name;
16950   struct type *type;
16951
16952   module_name = dwarf2_name (die, cu);
16953   if (!module_name)
16954     complaint (_("DW_TAG_module has no name, offset %s"),
16955                sect_offset_str (die->sect_off));
16956   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16957
16958   return set_die_type (die, type, cu);
16959 }
16960
16961 /* Read a Fortran module.  */
16962
16963 static void
16964 read_module (struct die_info *die, struct dwarf2_cu *cu)
16965 {
16966   struct die_info *child_die = die->child;
16967   struct type *type;
16968
16969   type = read_type_die (die, cu);
16970   new_symbol (die, type, cu);
16971
16972   while (child_die && child_die->tag)
16973     {
16974       process_die (child_die, cu);
16975       child_die = sibling_die (child_die);
16976     }
16977 }
16978
16979 /* Return the name of the namespace represented by DIE.  Set
16980    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16981    namespace.  */
16982
16983 static const char *
16984 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16985 {
16986   struct die_info *current_die;
16987   const char *name = NULL;
16988
16989   /* Loop through the extensions until we find a name.  */
16990
16991   for (current_die = die;
16992        current_die != NULL;
16993        current_die = dwarf2_extension (die, &cu))
16994     {
16995       /* We don't use dwarf2_name here so that we can detect the absence
16996          of a name -> anonymous namespace.  */
16997       name = dwarf2_string_attr (die, DW_AT_name, cu);
16998
16999       if (name != NULL)
17000         break;
17001     }
17002
17003   /* Is it an anonymous namespace?  */
17004
17005   *is_anonymous = (name == NULL);
17006   if (*is_anonymous)
17007     name = CP_ANONYMOUS_NAMESPACE_STR;
17008
17009   return name;
17010 }
17011
17012 /* Extract all information from a DW_TAG_pointer_type DIE and add to
17013    the user defined type vector.  */
17014
17015 static struct type *
17016 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
17017 {
17018   struct gdbarch *gdbarch
17019     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
17020   struct comp_unit_head *cu_header = &cu->header;
17021   struct type *type;
17022   struct attribute *attr_byte_size;
17023   struct attribute *attr_address_class;
17024   int byte_size, addr_class;
17025   struct type *target_type;
17026
17027   target_type = die_type (die, cu);
17028
17029   /* The die_type call above may have already set the type for this DIE.  */
17030   type = get_die_type (die, cu);
17031   if (type)
17032     return type;
17033
17034   type = lookup_pointer_type (target_type);
17035
17036   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17037   if (attr_byte_size)
17038     byte_size = DW_UNSND (attr_byte_size);
17039   else
17040     byte_size = cu_header->addr_size;
17041
17042   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17043   if (attr_address_class)
17044     addr_class = DW_UNSND (attr_address_class);
17045   else
17046     addr_class = DW_ADDR_none;
17047
17048   ULONGEST alignment = get_alignment (cu, die);
17049
17050   /* If the pointer size, alignment, or address class is different
17051      than the default, create a type variant marked as such and set
17052      the length accordingly.  */
17053   if (TYPE_LENGTH (type) != byte_size
17054       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17055           && alignment != TYPE_RAW_ALIGN (type))
17056       || addr_class != DW_ADDR_none)
17057     {
17058       if (gdbarch_address_class_type_flags_p (gdbarch))
17059         {
17060           int type_flags;
17061
17062           type_flags = gdbarch_address_class_type_flags
17063                          (gdbarch, byte_size, addr_class);
17064           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17065                       == 0);
17066           type = make_type_with_address_space (type, type_flags);
17067         }
17068       else if (TYPE_LENGTH (type) != byte_size)
17069         {
17070           complaint (_("invalid pointer size %d"), byte_size);
17071         }
17072       else if (TYPE_RAW_ALIGN (type) != alignment)
17073         {
17074           complaint (_("Invalid DW_AT_alignment"
17075                        " - DIE at %s [in module %s]"),
17076                      sect_offset_str (die->sect_off),
17077                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17078         }
17079       else
17080         {
17081           /* Should we also complain about unhandled address classes?  */
17082         }
17083     }
17084
17085   TYPE_LENGTH (type) = byte_size;
17086   set_type_align (type, alignment);
17087   return set_die_type (die, type, cu);
17088 }
17089
17090 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17091    the user defined type vector.  */
17092
17093 static struct type *
17094 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17095 {
17096   struct type *type;
17097   struct type *to_type;
17098   struct type *domain;
17099
17100   to_type = die_type (die, cu);
17101   domain = die_containing_type (die, cu);
17102
17103   /* The calls above may have already set the type for this DIE.  */
17104   type = get_die_type (die, cu);
17105   if (type)
17106     return type;
17107
17108   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17109     type = lookup_methodptr_type (to_type);
17110   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17111     {
17112       struct type *new_type
17113         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17114
17115       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17116                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17117                             TYPE_VARARGS (to_type));
17118       type = lookup_methodptr_type (new_type);
17119     }
17120   else
17121     type = lookup_memberptr_type (to_type, domain);
17122
17123   return set_die_type (die, type, cu);
17124 }
17125
17126 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17127    the user defined type vector.  */
17128
17129 static struct type *
17130 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17131                           enum type_code refcode)
17132 {
17133   struct comp_unit_head *cu_header = &cu->header;
17134   struct type *type, *target_type;
17135   struct attribute *attr;
17136
17137   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17138
17139   target_type = die_type (die, cu);
17140
17141   /* The die_type call above may have already set the type for this DIE.  */
17142   type = get_die_type (die, cu);
17143   if (type)
17144     return type;
17145
17146   type = lookup_reference_type (target_type, refcode);
17147   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17148   if (attr)
17149     {
17150       TYPE_LENGTH (type) = DW_UNSND (attr);
17151     }
17152   else
17153     {
17154       TYPE_LENGTH (type) = cu_header->addr_size;
17155     }
17156   maybe_set_alignment (cu, die, type);
17157   return set_die_type (die, type, cu);
17158 }
17159
17160 /* Add the given cv-qualifiers to the element type of the array.  GCC
17161    outputs DWARF type qualifiers that apply to an array, not the
17162    element type.  But GDB relies on the array element type to carry
17163    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17164    specification.  */
17165
17166 static struct type *
17167 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17168                    struct type *base_type, int cnst, int voltl)
17169 {
17170   struct type *el_type, *inner_array;
17171
17172   base_type = copy_type (base_type);
17173   inner_array = base_type;
17174
17175   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17176     {
17177       TYPE_TARGET_TYPE (inner_array) =
17178         copy_type (TYPE_TARGET_TYPE (inner_array));
17179       inner_array = TYPE_TARGET_TYPE (inner_array);
17180     }
17181
17182   el_type = TYPE_TARGET_TYPE (inner_array);
17183   cnst |= TYPE_CONST (el_type);
17184   voltl |= TYPE_VOLATILE (el_type);
17185   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17186
17187   return set_die_type (die, base_type, cu);
17188 }
17189
17190 static struct type *
17191 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17192 {
17193   struct type *base_type, *cv_type;
17194
17195   base_type = die_type (die, cu);
17196
17197   /* The die_type call above may have already set the type for this DIE.  */
17198   cv_type = get_die_type (die, cu);
17199   if (cv_type)
17200     return cv_type;
17201
17202   /* In case the const qualifier is applied to an array type, the element type
17203      is so qualified, not the array type (section 6.7.3 of C99).  */
17204   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17205     return add_array_cv_type (die, cu, base_type, 1, 0);
17206
17207   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17208   return set_die_type (die, cv_type, cu);
17209 }
17210
17211 static struct type *
17212 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17213 {
17214   struct type *base_type, *cv_type;
17215
17216   base_type = die_type (die, cu);
17217
17218   /* The die_type call above may have already set the type for this DIE.  */
17219   cv_type = get_die_type (die, cu);
17220   if (cv_type)
17221     return cv_type;
17222
17223   /* In case the volatile qualifier is applied to an array type, the
17224      element type is so qualified, not the array type (section 6.7.3
17225      of C99).  */
17226   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17227     return add_array_cv_type (die, cu, base_type, 0, 1);
17228
17229   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17230   return set_die_type (die, cv_type, cu);
17231 }
17232
17233 /* Handle DW_TAG_restrict_type.  */
17234
17235 static struct type *
17236 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17237 {
17238   struct type *base_type, *cv_type;
17239
17240   base_type = die_type (die, cu);
17241
17242   /* The die_type call above may have already set the type for this DIE.  */
17243   cv_type = get_die_type (die, cu);
17244   if (cv_type)
17245     return cv_type;
17246
17247   cv_type = make_restrict_type (base_type);
17248   return set_die_type (die, cv_type, cu);
17249 }
17250
17251 /* Handle DW_TAG_atomic_type.  */
17252
17253 static struct type *
17254 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17255 {
17256   struct type *base_type, *cv_type;
17257
17258   base_type = die_type (die, cu);
17259
17260   /* The die_type call above may have already set the type for this DIE.  */
17261   cv_type = get_die_type (die, cu);
17262   if (cv_type)
17263     return cv_type;
17264
17265   cv_type = make_atomic_type (base_type);
17266   return set_die_type (die, cv_type, cu);
17267 }
17268
17269 /* Extract all information from a DW_TAG_string_type DIE and add to
17270    the user defined type vector.  It isn't really a user defined type,
17271    but it behaves like one, with other DIE's using an AT_user_def_type
17272    attribute to reference it.  */
17273
17274 static struct type *
17275 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17276 {
17277   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17278   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17279   struct type *type, *range_type, *index_type, *char_type;
17280   struct attribute *attr;
17281   unsigned int length;
17282
17283   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17284   if (attr)
17285     {
17286       length = DW_UNSND (attr);
17287     }
17288   else
17289     {
17290       /* Check for the DW_AT_byte_size attribute.  */
17291       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17292       if (attr)
17293         {
17294           length = DW_UNSND (attr);
17295         }
17296       else
17297         {
17298           length = 1;
17299         }
17300     }
17301
17302   index_type = objfile_type (objfile)->builtin_int;
17303   range_type = create_static_range_type (NULL, index_type, 1, length);
17304   char_type = language_string_char_type (cu->language_defn, gdbarch);
17305   type = create_string_type (NULL, char_type, range_type);
17306
17307   return set_die_type (die, type, cu);
17308 }
17309
17310 /* Assuming that DIE corresponds to a function, returns nonzero
17311    if the function is prototyped.  */
17312
17313 static int
17314 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17315 {
17316   struct attribute *attr;
17317
17318   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17319   if (attr && (DW_UNSND (attr) != 0))
17320     return 1;
17321
17322   /* The DWARF standard implies that the DW_AT_prototyped attribute
17323      is only meaninful for C, but the concept also extends to other
17324      languages that allow unprototyped functions (Eg: Objective C).
17325      For all other languages, assume that functions are always
17326      prototyped.  */
17327   if (cu->language != language_c
17328       && cu->language != language_objc
17329       && cu->language != language_opencl)
17330     return 1;
17331
17332   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17333      prototyped and unprototyped functions; default to prototyped,
17334      since that is more common in modern code (and RealView warns
17335      about unprototyped functions).  */
17336   if (producer_is_realview (cu->producer))
17337     return 1;
17338
17339   return 0;
17340 }
17341
17342 /* Handle DIES due to C code like:
17343
17344    struct foo
17345    {
17346    int (*funcp)(int a, long l);
17347    int b;
17348    };
17349
17350    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17351
17352 static struct type *
17353 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17354 {
17355   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17356   struct type *type;            /* Type that this function returns.  */
17357   struct type *ftype;           /* Function that returns above type.  */
17358   struct attribute *attr;
17359
17360   type = die_type (die, cu);
17361
17362   /* The die_type call above may have already set the type for this DIE.  */
17363   ftype = get_die_type (die, cu);
17364   if (ftype)
17365     return ftype;
17366
17367   ftype = lookup_function_type (type);
17368
17369   if (prototyped_function_p (die, cu))
17370     TYPE_PROTOTYPED (ftype) = 1;
17371
17372   /* Store the calling convention in the type if it's available in
17373      the subroutine die.  Otherwise set the calling convention to
17374      the default value DW_CC_normal.  */
17375   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17376   if (attr)
17377     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17378   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17379     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17380   else
17381     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17382
17383   /* Record whether the function returns normally to its caller or not
17384      if the DWARF producer set that information.  */
17385   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17386   if (attr && (DW_UNSND (attr) != 0))
17387     TYPE_NO_RETURN (ftype) = 1;
17388
17389   /* We need to add the subroutine type to the die immediately so
17390      we don't infinitely recurse when dealing with parameters
17391      declared as the same subroutine type.  */
17392   set_die_type (die, ftype, cu);
17393
17394   if (die->child != NULL)
17395     {
17396       struct type *void_type = objfile_type (objfile)->builtin_void;
17397       struct die_info *child_die;
17398       int nparams, iparams;
17399
17400       /* Count the number of parameters.
17401          FIXME: GDB currently ignores vararg functions, but knows about
17402          vararg member functions.  */
17403       nparams = 0;
17404       child_die = die->child;
17405       while (child_die && child_die->tag)
17406         {
17407           if (child_die->tag == DW_TAG_formal_parameter)
17408             nparams++;
17409           else if (child_die->tag == DW_TAG_unspecified_parameters)
17410             TYPE_VARARGS (ftype) = 1;
17411           child_die = sibling_die (child_die);
17412         }
17413
17414       /* Allocate storage for parameters and fill them in.  */
17415       TYPE_NFIELDS (ftype) = nparams;
17416       TYPE_FIELDS (ftype) = (struct field *)
17417         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17418
17419       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17420          even if we error out during the parameters reading below.  */
17421       for (iparams = 0; iparams < nparams; iparams++)
17422         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17423
17424       iparams = 0;
17425       child_die = die->child;
17426       while (child_die && child_die->tag)
17427         {
17428           if (child_die->tag == DW_TAG_formal_parameter)
17429             {
17430               struct type *arg_type;
17431
17432               /* DWARF version 2 has no clean way to discern C++
17433                  static and non-static member functions.  G++ helps
17434                  GDB by marking the first parameter for non-static
17435                  member functions (which is the this pointer) as
17436                  artificial.  We pass this information to
17437                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17438
17439                  DWARF version 3 added DW_AT_object_pointer, which GCC
17440                  4.5 does not yet generate.  */
17441               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17442               if (attr)
17443                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17444               else
17445                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17446               arg_type = die_type (child_die, cu);
17447
17448               /* RealView does not mark THIS as const, which the testsuite
17449                  expects.  GCC marks THIS as const in method definitions,
17450                  but not in the class specifications (GCC PR 43053).  */
17451               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17452                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17453                 {
17454                   int is_this = 0;
17455                   struct dwarf2_cu *arg_cu = cu;
17456                   const char *name = dwarf2_name (child_die, cu);
17457
17458                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17459                   if (attr)
17460                     {
17461                       /* If the compiler emits this, use it.  */
17462                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17463                         is_this = 1;
17464                     }
17465                   else if (name && strcmp (name, "this") == 0)
17466                     /* Function definitions will have the argument names.  */
17467                     is_this = 1;
17468                   else if (name == NULL && iparams == 0)
17469                     /* Declarations may not have the names, so like
17470                        elsewhere in GDB, assume an artificial first
17471                        argument is "this".  */
17472                     is_this = 1;
17473
17474                   if (is_this)
17475                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17476                                              arg_type, 0);
17477                 }
17478
17479               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17480               iparams++;
17481             }
17482           child_die = sibling_die (child_die);
17483         }
17484     }
17485
17486   return ftype;
17487 }
17488
17489 static struct type *
17490 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17491 {
17492   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17493   const char *name = NULL;
17494   struct type *this_type, *target_type;
17495
17496   name = dwarf2_full_name (NULL, die, cu);
17497   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17498   TYPE_TARGET_STUB (this_type) = 1;
17499   set_die_type (die, this_type, cu);
17500   target_type = die_type (die, cu);
17501   if (target_type != this_type)
17502     TYPE_TARGET_TYPE (this_type) = target_type;
17503   else
17504     {
17505       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17506          spec and cause infinite loops in GDB.  */
17507       complaint (_("Self-referential DW_TAG_typedef "
17508                    "- DIE at %s [in module %s]"),
17509                  sect_offset_str (die->sect_off), objfile_name (objfile));
17510       TYPE_TARGET_TYPE (this_type) = NULL;
17511     }
17512   return this_type;
17513 }
17514
17515 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17516    (which may be different from NAME) to the architecture back-end to allow
17517    it to guess the correct format if necessary.  */
17518
17519 static struct type *
17520 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17521                         const char *name_hint)
17522 {
17523   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17524   const struct floatformat **format;
17525   struct type *type;
17526
17527   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17528   if (format)
17529     type = init_float_type (objfile, bits, name, format);
17530   else
17531     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17532
17533   return type;
17534 }
17535
17536 /* Allocate an integer type of size BITS and name NAME.  */
17537
17538 static struct type *
17539 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17540                           int bits, int unsigned_p, const char *name)
17541 {
17542   struct type *type;
17543
17544   /* Versions of Intel's C Compiler generate an integer type called "void"
17545      instead of using DW_TAG_unspecified_type.  This has been seen on
17546      at least versions 14, 17, and 18.  */
17547   if (bits == 0 && producer_is_icc (cu) && name != nullptr
17548       && strcmp (name, "void") == 0)
17549     type = objfile_type (objfile)->builtin_void;
17550   else
17551     type = init_integer_type (objfile, bits, unsigned_p, name);
17552
17553   return type;
17554 }
17555
17556 /* Initialise and return a floating point type of size BITS suitable for
17557    use as a component of a complex number.  The NAME_HINT is passed through
17558    when initialising the floating point type and is the name of the complex
17559    type.
17560
17561    As DWARF doesn't currently provide an explicit name for the components
17562    of a complex number, but it can be helpful to have these components
17563    named, we try to select a suitable name based on the size of the
17564    component.  */
17565 static struct type *
17566 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17567                                  struct objfile *objfile,
17568                                  int bits, const char *name_hint)
17569 {
17570   gdbarch *gdbarch = get_objfile_arch (objfile);
17571   struct type *tt = nullptr;
17572
17573   /* Try to find a suitable floating point builtin type of size BITS.
17574      We're going to use the name of this type as the name for the complex
17575      target type that we are about to create.  */
17576   switch (cu->language)
17577     {
17578     case language_fortran:
17579       switch (bits)
17580         {
17581         case 32:
17582           tt = builtin_f_type (gdbarch)->builtin_real;
17583           break;
17584         case 64:
17585           tt = builtin_f_type (gdbarch)->builtin_real_s8;
17586           break;
17587         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17588         case 128:
17589           tt = builtin_f_type (gdbarch)->builtin_real_s16;
17590           break;
17591         }
17592       break;
17593     default:
17594       switch (bits)
17595         {
17596         case 32:
17597           tt = builtin_type (gdbarch)->builtin_float;
17598           break;
17599         case 64:
17600           tt = builtin_type (gdbarch)->builtin_double;
17601           break;
17602         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17603         case 128:
17604           tt = builtin_type (gdbarch)->builtin_long_double;
17605           break;
17606         }
17607       break;
17608     }
17609
17610   /* If the type we found doesn't match the size we were looking for, then
17611      pretend we didn't find a type at all, the complex target type we
17612      create will then be nameless.  */
17613   if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17614     tt = nullptr;
17615
17616   const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17617   return dwarf2_init_float_type (objfile, bits, name, name_hint);
17618 }
17619
17620 /* Find a representation of a given base type and install
17621    it in the TYPE field of the die.  */
17622
17623 static struct type *
17624 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17625 {
17626   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17627   struct type *type;
17628   struct attribute *attr;
17629   int encoding = 0, bits = 0;
17630   const char *name;
17631
17632   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17633   if (attr)
17634     {
17635       encoding = DW_UNSND (attr);
17636     }
17637   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17638   if (attr)
17639     {
17640       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17641     }
17642   name = dwarf2_name (die, cu);
17643   if (!name)
17644     {
17645       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17646     }
17647
17648   switch (encoding)
17649     {
17650       case DW_ATE_address:
17651         /* Turn DW_ATE_address into a void * pointer.  */
17652         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17653         type = init_pointer_type (objfile, bits, name, type);
17654         break;
17655       case DW_ATE_boolean:
17656         type = init_boolean_type (objfile, bits, 1, name);
17657         break;
17658       case DW_ATE_complex_float:
17659         type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name);
17660         type = init_complex_type (objfile, name, type);
17661         break;
17662       case DW_ATE_decimal_float:
17663         type = init_decfloat_type (objfile, bits, name);
17664         break;
17665       case DW_ATE_float:
17666         type = dwarf2_init_float_type (objfile, bits, name, name);
17667         break;
17668       case DW_ATE_signed:
17669         type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17670         break;
17671       case DW_ATE_unsigned:
17672         if (cu->language == language_fortran
17673             && name
17674             && startswith (name, "character("))
17675           type = init_character_type (objfile, bits, 1, name);
17676         else
17677           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17678         break;
17679       case DW_ATE_signed_char:
17680         if (cu->language == language_ada || cu->language == language_m2
17681             || cu->language == language_pascal
17682             || cu->language == language_fortran)
17683           type = init_character_type (objfile, bits, 0, name);
17684         else
17685           type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17686         break;
17687       case DW_ATE_unsigned_char:
17688         if (cu->language == language_ada || cu->language == language_m2
17689             || cu->language == language_pascal
17690             || cu->language == language_fortran
17691             || cu->language == language_rust)
17692           type = init_character_type (objfile, bits, 1, name);
17693         else
17694           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17695         break;
17696       case DW_ATE_UTF:
17697         {
17698           gdbarch *arch = get_objfile_arch (objfile);
17699
17700           if (bits == 16)
17701             type = builtin_type (arch)->builtin_char16;
17702           else if (bits == 32)
17703             type = builtin_type (arch)->builtin_char32;
17704           else
17705             {
17706               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17707                          bits);
17708               type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17709             }
17710           return set_die_type (die, type, cu);
17711         }
17712         break;
17713
17714       default:
17715         complaint (_("unsupported DW_AT_encoding: '%s'"),
17716                    dwarf_type_encoding_name (encoding));
17717         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17718         break;
17719     }
17720
17721   if (name && strcmp (name, "char") == 0)
17722     TYPE_NOSIGN (type) = 1;
17723
17724   maybe_set_alignment (cu, die, type);
17725
17726   return set_die_type (die, type, cu);
17727 }
17728
17729 /* Parse dwarf attribute if it's a block, reference or constant and put the
17730    resulting value of the attribute into struct bound_prop.
17731    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17732
17733 static int
17734 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17735                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17736 {
17737   struct dwarf2_property_baton *baton;
17738   struct obstack *obstack
17739     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17740
17741   if (attr == NULL || prop == NULL)
17742     return 0;
17743
17744   if (attr_form_is_block (attr))
17745     {
17746       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17747       baton->referenced_type = NULL;
17748       baton->locexpr.per_cu = cu->per_cu;
17749       baton->locexpr.size = DW_BLOCK (attr)->size;
17750       baton->locexpr.data = DW_BLOCK (attr)->data;
17751       prop->data.baton = baton;
17752       prop->kind = PROP_LOCEXPR;
17753       gdb_assert (prop->data.baton != NULL);
17754     }
17755   else if (attr_form_is_ref (attr))
17756     {
17757       struct dwarf2_cu *target_cu = cu;
17758       struct die_info *target_die;
17759       struct attribute *target_attr;
17760
17761       target_die = follow_die_ref (die, attr, &target_cu);
17762       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17763       if (target_attr == NULL)
17764         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17765                                    target_cu);
17766       if (target_attr == NULL)
17767         return 0;
17768
17769       switch (target_attr->name)
17770         {
17771           case DW_AT_location:
17772             if (attr_form_is_section_offset (target_attr))
17773               {
17774                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17775                 baton->referenced_type = die_type (target_die, target_cu);
17776                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17777                 prop->data.baton = baton;
17778                 prop->kind = PROP_LOCLIST;
17779                 gdb_assert (prop->data.baton != NULL);
17780               }
17781             else if (attr_form_is_block (target_attr))
17782               {
17783                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17784                 baton->referenced_type = die_type (target_die, target_cu);
17785                 baton->locexpr.per_cu = cu->per_cu;
17786                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17787                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17788                 prop->data.baton = baton;
17789                 prop->kind = PROP_LOCEXPR;
17790                 gdb_assert (prop->data.baton != NULL);
17791               }
17792             else
17793               {
17794                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17795                                                        "dynamic property");
17796                 return 0;
17797               }
17798             break;
17799           case DW_AT_data_member_location:
17800             {
17801               LONGEST offset;
17802
17803               if (!handle_data_member_location (target_die, target_cu,
17804                                                 &offset))
17805                 return 0;
17806
17807               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17808               baton->referenced_type = read_type_die (target_die->parent,
17809                                                       target_cu);
17810               baton->offset_info.offset = offset;
17811               baton->offset_info.type = die_type (target_die, target_cu);
17812               prop->data.baton = baton;
17813               prop->kind = PROP_ADDR_OFFSET;
17814               break;
17815             }
17816         }
17817     }
17818   else if (attr_form_is_constant (attr))
17819     {
17820       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17821       prop->kind = PROP_CONST;
17822     }
17823   else
17824     {
17825       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17826                                              dwarf2_name (die, cu));
17827       return 0;
17828     }
17829
17830   return 1;
17831 }
17832
17833 /* Read the given DW_AT_subrange DIE.  */
17834
17835 static struct type *
17836 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17837 {
17838   struct type *base_type, *orig_base_type;
17839   struct type *range_type;
17840   struct attribute *attr;
17841   struct dynamic_prop low, high;
17842   int low_default_is_valid;
17843   int high_bound_is_count = 0;
17844   const char *name;
17845   ULONGEST negative_mask;
17846
17847   orig_base_type = die_type (die, cu);
17848   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17849      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17850      creating the range type, but we use the result of check_typedef
17851      when examining properties of the type.  */
17852   base_type = check_typedef (orig_base_type);
17853
17854   /* The die_type call above may have already set the type for this DIE.  */
17855   range_type = get_die_type (die, cu);
17856   if (range_type)
17857     return range_type;
17858
17859   low.kind = PROP_CONST;
17860   high.kind = PROP_CONST;
17861   high.data.const_val = 0;
17862
17863   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17864      omitting DW_AT_lower_bound.  */
17865   switch (cu->language)
17866     {
17867     case language_c:
17868     case language_cplus:
17869       low.data.const_val = 0;
17870       low_default_is_valid = 1;
17871       break;
17872     case language_fortran:
17873       low.data.const_val = 1;
17874       low_default_is_valid = 1;
17875       break;
17876     case language_d:
17877     case language_objc:
17878     case language_rust:
17879       low.data.const_val = 0;
17880       low_default_is_valid = (cu->header.version >= 4);
17881       break;
17882     case language_ada:
17883     case language_m2:
17884     case language_pascal:
17885       low.data.const_val = 1;
17886       low_default_is_valid = (cu->header.version >= 4);
17887       break;
17888     default:
17889       low.data.const_val = 0;
17890       low_default_is_valid = 0;
17891       break;
17892     }
17893
17894   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17895   if (attr)
17896     attr_to_dynamic_prop (attr, die, cu, &low);
17897   else if (!low_default_is_valid)
17898     complaint (_("Missing DW_AT_lower_bound "
17899                                       "- DIE at %s [in module %s]"),
17900                sect_offset_str (die->sect_off),
17901                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17902
17903   struct attribute *attr_ub, *attr_count;
17904   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17905   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17906     {
17907       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17908       if (attr_to_dynamic_prop (attr, die, cu, &high))
17909         {
17910           /* If bounds are constant do the final calculation here.  */
17911           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17912             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17913           else
17914             high_bound_is_count = 1;
17915         }
17916       else
17917         {
17918           if (attr_ub != NULL)
17919             complaint (_("Unresolved DW_AT_upper_bound "
17920                          "- DIE at %s [in module %s]"),
17921                        sect_offset_str (die->sect_off),
17922                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17923           if (attr_count != NULL)
17924             complaint (_("Unresolved DW_AT_count "
17925                          "- DIE at %s [in module %s]"),
17926                        sect_offset_str (die->sect_off),
17927                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17928         }
17929         
17930     }
17931
17932   /* Dwarf-2 specifications explicitly allows to create subrange types
17933      without specifying a base type.
17934      In that case, the base type must be set to the type of
17935      the lower bound, upper bound or count, in that order, if any of these
17936      three attributes references an object that has a type.
17937      If no base type is found, the Dwarf-2 specifications say that
17938      a signed integer type of size equal to the size of an address should
17939      be used.
17940      For the following C code: `extern char gdb_int [];'
17941      GCC produces an empty range DIE.
17942      FIXME: muller/2010-05-28: Possible references to object for low bound,
17943      high bound or count are not yet handled by this code.  */
17944   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17945     {
17946       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17947       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17948       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17949       struct type *int_type = objfile_type (objfile)->builtin_int;
17950
17951       /* Test "int", "long int", and "long long int" objfile types,
17952          and select the first one having a size above or equal to the
17953          architecture address size.  */
17954       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17955         base_type = int_type;
17956       else
17957         {
17958           int_type = objfile_type (objfile)->builtin_long;
17959           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17960             base_type = int_type;
17961           else
17962             {
17963               int_type = objfile_type (objfile)->builtin_long_long;
17964               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17965                 base_type = int_type;
17966             }
17967         }
17968     }
17969
17970   /* Normally, the DWARF producers are expected to use a signed
17971      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17972      But this is unfortunately not always the case, as witnessed
17973      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17974      is used instead.  To work around that ambiguity, we treat
17975      the bounds as signed, and thus sign-extend their values, when
17976      the base type is signed.  */
17977   negative_mask =
17978     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17979   if (low.kind == PROP_CONST
17980       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17981     low.data.const_val |= negative_mask;
17982   if (high.kind == PROP_CONST
17983       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17984     high.data.const_val |= negative_mask;
17985
17986   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17987
17988   if (high_bound_is_count)
17989     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17990
17991   /* Ada expects an empty array on no boundary attributes.  */
17992   if (attr == NULL && cu->language != language_ada)
17993     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17994
17995   name = dwarf2_name (die, cu);
17996   if (name)
17997     TYPE_NAME (range_type) = name;
17998
17999   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
18000   if (attr)
18001     TYPE_LENGTH (range_type) = DW_UNSND (attr);
18002
18003   maybe_set_alignment (cu, die, range_type);
18004
18005   set_die_type (die, range_type, cu);
18006
18007   /* set_die_type should be already done.  */
18008   set_descriptive_type (range_type, die, cu);
18009
18010   return range_type;
18011 }
18012
18013 static struct type *
18014 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
18015 {
18016   struct type *type;
18017
18018   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
18019                     NULL);
18020   TYPE_NAME (type) = dwarf2_name (die, cu);
18021
18022   /* In Ada, an unspecified type is typically used when the description
18023      of the type is defered to a different unit.  When encountering
18024      such a type, we treat it as a stub, and try to resolve it later on,
18025      when needed.  */
18026   if (cu->language == language_ada)
18027     TYPE_STUB (type) = 1;
18028
18029   return set_die_type (die, type, cu);
18030 }
18031
18032 /* Read a single die and all its descendents.  Set the die's sibling
18033    field to NULL; set other fields in the die correctly, and set all
18034    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
18035    location of the info_ptr after reading all of those dies.  PARENT
18036    is the parent of the die in question.  */
18037
18038 static struct die_info *
18039 read_die_and_children (const struct die_reader_specs *reader,
18040                        const gdb_byte *info_ptr,
18041                        const gdb_byte **new_info_ptr,
18042                        struct die_info *parent)
18043 {
18044   struct die_info *die;
18045   const gdb_byte *cur_ptr;
18046   int has_children;
18047
18048   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
18049   if (die == NULL)
18050     {
18051       *new_info_ptr = cur_ptr;
18052       return NULL;
18053     }
18054   store_in_ref_table (die, reader->cu);
18055
18056   if (has_children)
18057     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
18058   else
18059     {
18060       die->child = NULL;
18061       *new_info_ptr = cur_ptr;
18062     }
18063
18064   die->sibling = NULL;
18065   die->parent = parent;
18066   return die;
18067 }
18068
18069 /* Read a die, all of its descendents, and all of its siblings; set
18070    all of the fields of all of the dies correctly.  Arguments are as
18071    in read_die_and_children.  */
18072
18073 static struct die_info *
18074 read_die_and_siblings_1 (const struct die_reader_specs *reader,
18075                          const gdb_byte *info_ptr,
18076                          const gdb_byte **new_info_ptr,
18077                          struct die_info *parent)
18078 {
18079   struct die_info *first_die, *last_sibling;
18080   const gdb_byte *cur_ptr;
18081
18082   cur_ptr = info_ptr;
18083   first_die = last_sibling = NULL;
18084
18085   while (1)
18086     {
18087       struct die_info *die
18088         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
18089
18090       if (die == NULL)
18091         {
18092           *new_info_ptr = cur_ptr;
18093           return first_die;
18094         }
18095
18096       if (!first_die)
18097         first_die = die;
18098       else
18099         last_sibling->sibling = die;
18100
18101       last_sibling = die;
18102     }
18103 }
18104
18105 /* Read a die, all of its descendents, and all of its siblings; set
18106    all of the fields of all of the dies correctly.  Arguments are as
18107    in read_die_and_children.
18108    This the main entry point for reading a DIE and all its children.  */
18109
18110 static struct die_info *
18111 read_die_and_siblings (const struct die_reader_specs *reader,
18112                        const gdb_byte *info_ptr,
18113                        const gdb_byte **new_info_ptr,
18114                        struct die_info *parent)
18115 {
18116   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18117                                                   new_info_ptr, parent);
18118
18119   if (dwarf_die_debug)
18120     {
18121       fprintf_unfiltered (gdb_stdlog,
18122                           "Read die from %s@0x%x of %s:\n",
18123                           get_section_name (reader->die_section),
18124                           (unsigned) (info_ptr - reader->die_section->buffer),
18125                           bfd_get_filename (reader->abfd));
18126       dump_die (die, dwarf_die_debug);
18127     }
18128
18129   return die;
18130 }
18131
18132 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18133    attributes.
18134    The caller is responsible for filling in the extra attributes
18135    and updating (*DIEP)->num_attrs.
18136    Set DIEP to point to a newly allocated die with its information,
18137    except for its child, sibling, and parent fields.
18138    Set HAS_CHILDREN to tell whether the die has children or not.  */
18139
18140 static const gdb_byte *
18141 read_full_die_1 (const struct die_reader_specs *reader,
18142                  struct die_info **diep, const gdb_byte *info_ptr,
18143                  int *has_children, int num_extra_attrs)
18144 {
18145   unsigned int abbrev_number, bytes_read, i;
18146   struct abbrev_info *abbrev;
18147   struct die_info *die;
18148   struct dwarf2_cu *cu = reader->cu;
18149   bfd *abfd = reader->abfd;
18150
18151   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18152   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18153   info_ptr += bytes_read;
18154   if (!abbrev_number)
18155     {
18156       *diep = NULL;
18157       *has_children = 0;
18158       return info_ptr;
18159     }
18160
18161   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18162   if (!abbrev)
18163     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18164            abbrev_number,
18165            bfd_get_filename (abfd));
18166
18167   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18168   die->sect_off = sect_off;
18169   die->tag = abbrev->tag;
18170   die->abbrev = abbrev_number;
18171
18172   /* Make the result usable.
18173      The caller needs to update num_attrs after adding the extra
18174      attributes.  */
18175   die->num_attrs = abbrev->num_attrs;
18176
18177   for (i = 0; i < abbrev->num_attrs; ++i)
18178     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18179                                info_ptr);
18180
18181   *diep = die;
18182   *has_children = abbrev->has_children;
18183   return info_ptr;
18184 }
18185
18186 /* Read a die and all its attributes.
18187    Set DIEP to point to a newly allocated die with its information,
18188    except for its child, sibling, and parent fields.
18189    Set HAS_CHILDREN to tell whether the die has children or not.  */
18190
18191 static const gdb_byte *
18192 read_full_die (const struct die_reader_specs *reader,
18193                struct die_info **diep, const gdb_byte *info_ptr,
18194                int *has_children)
18195 {
18196   const gdb_byte *result;
18197
18198   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18199
18200   if (dwarf_die_debug)
18201     {
18202       fprintf_unfiltered (gdb_stdlog,
18203                           "Read die from %s@0x%x of %s:\n",
18204                           get_section_name (reader->die_section),
18205                           (unsigned) (info_ptr - reader->die_section->buffer),
18206                           bfd_get_filename (reader->abfd));
18207       dump_die (*diep, dwarf_die_debug);
18208     }
18209
18210   return result;
18211 }
18212 \f
18213 /* Abbreviation tables.
18214
18215    In DWARF version 2, the description of the debugging information is
18216    stored in a separate .debug_abbrev section.  Before we read any
18217    dies from a section we read in all abbreviations and install them
18218    in a hash table.  */
18219
18220 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18221
18222 struct abbrev_info *
18223 abbrev_table::alloc_abbrev ()
18224 {
18225   struct abbrev_info *abbrev;
18226
18227   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18228   memset (abbrev, 0, sizeof (struct abbrev_info));
18229
18230   return abbrev;
18231 }
18232
18233 /* Add an abbreviation to the table.  */
18234
18235 void
18236 abbrev_table::add_abbrev (unsigned int abbrev_number,
18237                           struct abbrev_info *abbrev)
18238 {
18239   unsigned int hash_number;
18240
18241   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18242   abbrev->next = m_abbrevs[hash_number];
18243   m_abbrevs[hash_number] = abbrev;
18244 }
18245
18246 /* Look up an abbrev in the table.
18247    Returns NULL if the abbrev is not found.  */
18248
18249 struct abbrev_info *
18250 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18251 {
18252   unsigned int hash_number;
18253   struct abbrev_info *abbrev;
18254
18255   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18256   abbrev = m_abbrevs[hash_number];
18257
18258   while (abbrev)
18259     {
18260       if (abbrev->number == abbrev_number)
18261         return abbrev;
18262       abbrev = abbrev->next;
18263     }
18264   return NULL;
18265 }
18266
18267 /* Read in an abbrev table.  */
18268
18269 static abbrev_table_up
18270 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18271                          struct dwarf2_section_info *section,
18272                          sect_offset sect_off)
18273 {
18274   struct objfile *objfile = dwarf2_per_objfile->objfile;
18275   bfd *abfd = get_section_bfd_owner (section);
18276   const gdb_byte *abbrev_ptr;
18277   struct abbrev_info *cur_abbrev;
18278   unsigned int abbrev_number, bytes_read, abbrev_name;
18279   unsigned int abbrev_form;
18280   struct attr_abbrev *cur_attrs;
18281   unsigned int allocated_attrs;
18282
18283   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18284
18285   dwarf2_read_section (objfile, section);
18286   abbrev_ptr = section->buffer + to_underlying (sect_off);
18287   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18288   abbrev_ptr += bytes_read;
18289
18290   allocated_attrs = ATTR_ALLOC_CHUNK;
18291   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18292
18293   /* Loop until we reach an abbrev number of 0.  */
18294   while (abbrev_number)
18295     {
18296       cur_abbrev = abbrev_table->alloc_abbrev ();
18297
18298       /* read in abbrev header */
18299       cur_abbrev->number = abbrev_number;
18300       cur_abbrev->tag
18301         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18302       abbrev_ptr += bytes_read;
18303       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18304       abbrev_ptr += 1;
18305
18306       /* now read in declarations */
18307       for (;;)
18308         {
18309           LONGEST implicit_const;
18310
18311           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18312           abbrev_ptr += bytes_read;
18313           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18314           abbrev_ptr += bytes_read;
18315           if (abbrev_form == DW_FORM_implicit_const)
18316             {
18317               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18318                                                    &bytes_read);
18319               abbrev_ptr += bytes_read;
18320             }
18321           else
18322             {
18323               /* Initialize it due to a false compiler warning.  */
18324               implicit_const = -1;
18325             }
18326
18327           if (abbrev_name == 0)
18328             break;
18329
18330           if (cur_abbrev->num_attrs == allocated_attrs)
18331             {
18332               allocated_attrs += ATTR_ALLOC_CHUNK;
18333               cur_attrs
18334                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18335             }
18336
18337           cur_attrs[cur_abbrev->num_attrs].name
18338             = (enum dwarf_attribute) abbrev_name;
18339           cur_attrs[cur_abbrev->num_attrs].form
18340             = (enum dwarf_form) abbrev_form;
18341           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18342           ++cur_abbrev->num_attrs;
18343         }
18344
18345       cur_abbrev->attrs =
18346         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18347                    cur_abbrev->num_attrs);
18348       memcpy (cur_abbrev->attrs, cur_attrs,
18349               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18350
18351       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18352
18353       /* Get next abbreviation.
18354          Under Irix6 the abbreviations for a compilation unit are not
18355          always properly terminated with an abbrev number of 0.
18356          Exit loop if we encounter an abbreviation which we have
18357          already read (which means we are about to read the abbreviations
18358          for the next compile unit) or if the end of the abbreviation
18359          table is reached.  */
18360       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18361         break;
18362       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18363       abbrev_ptr += bytes_read;
18364       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18365         break;
18366     }
18367
18368   xfree (cur_attrs);
18369   return abbrev_table;
18370 }
18371
18372 /* Returns nonzero if TAG represents a type that we might generate a partial
18373    symbol for.  */
18374
18375 static int
18376 is_type_tag_for_partial (int tag)
18377 {
18378   switch (tag)
18379     {
18380 #if 0
18381     /* Some types that would be reasonable to generate partial symbols for,
18382        that we don't at present.  */
18383     case DW_TAG_array_type:
18384     case DW_TAG_file_type:
18385     case DW_TAG_ptr_to_member_type:
18386     case DW_TAG_set_type:
18387     case DW_TAG_string_type:
18388     case DW_TAG_subroutine_type:
18389 #endif
18390     case DW_TAG_base_type:
18391     case DW_TAG_class_type:
18392     case DW_TAG_interface_type:
18393     case DW_TAG_enumeration_type:
18394     case DW_TAG_structure_type:
18395     case DW_TAG_subrange_type:
18396     case DW_TAG_typedef:
18397     case DW_TAG_union_type:
18398       return 1;
18399     default:
18400       return 0;
18401     }
18402 }
18403
18404 /* Load all DIEs that are interesting for partial symbols into memory.  */
18405
18406 static struct partial_die_info *
18407 load_partial_dies (const struct die_reader_specs *reader,
18408                    const gdb_byte *info_ptr, int building_psymtab)
18409 {
18410   struct dwarf2_cu *cu = reader->cu;
18411   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18412   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18413   unsigned int bytes_read;
18414   unsigned int load_all = 0;
18415   int nesting_level = 1;
18416
18417   parent_die = NULL;
18418   last_die = NULL;
18419
18420   gdb_assert (cu->per_cu != NULL);
18421   if (cu->per_cu->load_all_dies)
18422     load_all = 1;
18423
18424   cu->partial_dies
18425     = htab_create_alloc_ex (cu->header.length / 12,
18426                             partial_die_hash,
18427                             partial_die_eq,
18428                             NULL,
18429                             &cu->comp_unit_obstack,
18430                             hashtab_obstack_allocate,
18431                             dummy_obstack_deallocate);
18432
18433   while (1)
18434     {
18435       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18436
18437       /* A NULL abbrev means the end of a series of children.  */
18438       if (abbrev == NULL)
18439         {
18440           if (--nesting_level == 0)
18441             return first_die;
18442
18443           info_ptr += bytes_read;
18444           last_die = parent_die;
18445           parent_die = parent_die->die_parent;
18446           continue;
18447         }
18448
18449       /* Check for template arguments.  We never save these; if
18450          they're seen, we just mark the parent, and go on our way.  */
18451       if (parent_die != NULL
18452           && cu->language == language_cplus
18453           && (abbrev->tag == DW_TAG_template_type_param
18454               || abbrev->tag == DW_TAG_template_value_param))
18455         {
18456           parent_die->has_template_arguments = 1;
18457
18458           if (!load_all)
18459             {
18460               /* We don't need a partial DIE for the template argument.  */
18461               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18462               continue;
18463             }
18464         }
18465
18466       /* We only recurse into c++ subprograms looking for template arguments.
18467          Skip their other children.  */
18468       if (!load_all
18469           && cu->language == language_cplus
18470           && parent_die != NULL
18471           && parent_die->tag == DW_TAG_subprogram)
18472         {
18473           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18474           continue;
18475         }
18476
18477       /* Check whether this DIE is interesting enough to save.  Normally
18478          we would not be interested in members here, but there may be
18479          later variables referencing them via DW_AT_specification (for
18480          static members).  */
18481       if (!load_all
18482           && !is_type_tag_for_partial (abbrev->tag)
18483           && abbrev->tag != DW_TAG_constant
18484           && abbrev->tag != DW_TAG_enumerator
18485           && abbrev->tag != DW_TAG_subprogram
18486           && abbrev->tag != DW_TAG_inlined_subroutine
18487           && abbrev->tag != DW_TAG_lexical_block
18488           && abbrev->tag != DW_TAG_variable
18489           && abbrev->tag != DW_TAG_namespace
18490           && abbrev->tag != DW_TAG_module
18491           && abbrev->tag != DW_TAG_member
18492           && abbrev->tag != DW_TAG_imported_unit
18493           && abbrev->tag != DW_TAG_imported_declaration)
18494         {
18495           /* Otherwise we skip to the next sibling, if any.  */
18496           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18497           continue;
18498         }
18499
18500       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18501                                    abbrev);
18502
18503       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18504
18505       /* This two-pass algorithm for processing partial symbols has a
18506          high cost in cache pressure.  Thus, handle some simple cases
18507          here which cover the majority of C partial symbols.  DIEs
18508          which neither have specification tags in them, nor could have
18509          specification tags elsewhere pointing at them, can simply be
18510          processed and discarded.
18511
18512          This segment is also optional; scan_partial_symbols and
18513          add_partial_symbol will handle these DIEs if we chain
18514          them in normally.  When compilers which do not emit large
18515          quantities of duplicate debug information are more common,
18516          this code can probably be removed.  */
18517
18518       /* Any complete simple types at the top level (pretty much all
18519          of them, for a language without namespaces), can be processed
18520          directly.  */
18521       if (parent_die == NULL
18522           && pdi.has_specification == 0
18523           && pdi.is_declaration == 0
18524           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18525               || pdi.tag == DW_TAG_base_type
18526               || pdi.tag == DW_TAG_subrange_type))
18527         {
18528           if (building_psymtab && pdi.name != NULL)
18529             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18530                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18531                                  psymbol_placement::STATIC,
18532                                  0, cu->language, objfile);
18533           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18534           continue;
18535         }
18536
18537       /* The exception for DW_TAG_typedef with has_children above is
18538          a workaround of GCC PR debug/47510.  In the case of this complaint
18539          type_name_or_error will error on such types later.
18540
18541          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18542          it could not find the child DIEs referenced later, this is checked
18543          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18544
18545       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18546         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18547                      "- DIE at %s [in module %s]"),
18548                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18549
18550       /* If we're at the second level, and we're an enumerator, and
18551          our parent has no specification (meaning possibly lives in a
18552          namespace elsewhere), then we can add the partial symbol now
18553          instead of queueing it.  */
18554       if (pdi.tag == DW_TAG_enumerator
18555           && parent_die != NULL
18556           && parent_die->die_parent == NULL
18557           && parent_die->tag == DW_TAG_enumeration_type
18558           && parent_die->has_specification == 0)
18559         {
18560           if (pdi.name == NULL)
18561             complaint (_("malformed enumerator DIE ignored"));
18562           else if (building_psymtab)
18563             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18564                                  VAR_DOMAIN, LOC_CONST, -1,
18565                                  cu->language == language_cplus
18566                                  ? psymbol_placement::GLOBAL
18567                                  : psymbol_placement::STATIC,
18568                                  0, cu->language, objfile);
18569
18570           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18571           continue;
18572         }
18573
18574       struct partial_die_info *part_die
18575         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18576
18577       /* We'll save this DIE so link it in.  */
18578       part_die->die_parent = parent_die;
18579       part_die->die_sibling = NULL;
18580       part_die->die_child = NULL;
18581
18582       if (last_die && last_die == parent_die)
18583         last_die->die_child = part_die;
18584       else if (last_die)
18585         last_die->die_sibling = part_die;
18586
18587       last_die = part_die;
18588
18589       if (first_die == NULL)
18590         first_die = part_die;
18591
18592       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18593          find interesting need to be in the hash table, because we
18594          also have the parent/sibling/child chains; only those that we
18595          might refer to by offset later during partial symbol reading.
18596
18597          For now this means things that might have be the target of a
18598          DW_AT_specification, DW_AT_abstract_origin, or
18599          DW_AT_extension.  DW_AT_extension will refer only to
18600          namespaces; DW_AT_abstract_origin refers to functions (and
18601          many things under the function DIE, but we do not recurse
18602          into function DIEs during partial symbol reading) and
18603          possibly variables as well; DW_AT_specification refers to
18604          declarations.  Declarations ought to have the DW_AT_declaration
18605          flag.  It happens that GCC forgets to put it in sometimes, but
18606          only for functions, not for types.
18607
18608          Adding more things than necessary to the hash table is harmless
18609          except for the performance cost.  Adding too few will result in
18610          wasted time in find_partial_die, when we reread the compilation
18611          unit with load_all_dies set.  */
18612
18613       if (load_all
18614           || abbrev->tag == DW_TAG_constant
18615           || abbrev->tag == DW_TAG_subprogram
18616           || abbrev->tag == DW_TAG_variable
18617           || abbrev->tag == DW_TAG_namespace
18618           || part_die->is_declaration)
18619         {
18620           void **slot;
18621
18622           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18623                                            to_underlying (part_die->sect_off),
18624                                            INSERT);
18625           *slot = part_die;
18626         }
18627
18628       /* For some DIEs we want to follow their children (if any).  For C
18629          we have no reason to follow the children of structures; for other
18630          languages we have to, so that we can get at method physnames
18631          to infer fully qualified class names, for DW_AT_specification,
18632          and for C++ template arguments.  For C++, we also look one level
18633          inside functions to find template arguments (if the name of the
18634          function does not already contain the template arguments).
18635
18636          For Ada, we need to scan the children of subprograms and lexical
18637          blocks as well because Ada allows the definition of nested
18638          entities that could be interesting for the debugger, such as
18639          nested subprograms for instance.  */
18640       if (last_die->has_children
18641           && (load_all
18642               || last_die->tag == DW_TAG_namespace
18643               || last_die->tag == DW_TAG_module
18644               || last_die->tag == DW_TAG_enumeration_type
18645               || (cu->language == language_cplus
18646                   && last_die->tag == DW_TAG_subprogram
18647                   && (last_die->name == NULL
18648                       || strchr (last_die->name, '<') == NULL))
18649               || (cu->language != language_c
18650                   && (last_die->tag == DW_TAG_class_type
18651                       || last_die->tag == DW_TAG_interface_type
18652                       || last_die->tag == DW_TAG_structure_type
18653                       || last_die->tag == DW_TAG_union_type))
18654               || (cu->language == language_ada
18655                   && (last_die->tag == DW_TAG_subprogram
18656                       || last_die->tag == DW_TAG_lexical_block))))
18657         {
18658           nesting_level++;
18659           parent_die = last_die;
18660           continue;
18661         }
18662
18663       /* Otherwise we skip to the next sibling, if any.  */
18664       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18665
18666       /* Back to the top, do it again.  */
18667     }
18668 }
18669
18670 partial_die_info::partial_die_info (sect_offset sect_off_,
18671                                     struct abbrev_info *abbrev)
18672   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18673 {
18674 }
18675
18676 /* Read a minimal amount of information into the minimal die structure.
18677    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18678
18679 const gdb_byte *
18680 partial_die_info::read (const struct die_reader_specs *reader,
18681                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18682 {
18683   struct dwarf2_cu *cu = reader->cu;
18684   struct dwarf2_per_objfile *dwarf2_per_objfile
18685     = cu->per_cu->dwarf2_per_objfile;
18686   unsigned int i;
18687   int has_low_pc_attr = 0;
18688   int has_high_pc_attr = 0;
18689   int high_pc_relative = 0;
18690
18691   for (i = 0; i < abbrev.num_attrs; ++i)
18692     {
18693       struct attribute attr;
18694
18695       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18696
18697       /* Store the data if it is of an attribute we want to keep in a
18698          partial symbol table.  */
18699       switch (attr.name)
18700         {
18701         case DW_AT_name:
18702           switch (tag)
18703             {
18704             case DW_TAG_compile_unit:
18705             case DW_TAG_partial_unit:
18706             case DW_TAG_type_unit:
18707               /* Compilation units have a DW_AT_name that is a filename, not
18708                  a source language identifier.  */
18709             case DW_TAG_enumeration_type:
18710             case DW_TAG_enumerator:
18711               /* These tags always have simple identifiers already; no need
18712                  to canonicalize them.  */
18713               name = DW_STRING (&attr);
18714               break;
18715             default:
18716               {
18717                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18718
18719                 name
18720                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18721                                               &objfile->per_bfd->storage_obstack);
18722               }
18723               break;
18724             }
18725           break;
18726         case DW_AT_linkage_name:
18727         case DW_AT_MIPS_linkage_name:
18728           /* Note that both forms of linkage name might appear.  We
18729              assume they will be the same, and we only store the last
18730              one we see.  */
18731           if (cu->language == language_ada)
18732             name = DW_STRING (&attr);
18733           linkage_name = DW_STRING (&attr);
18734           break;
18735         case DW_AT_low_pc:
18736           has_low_pc_attr = 1;
18737           lowpc = attr_value_as_address (&attr);
18738           break;
18739         case DW_AT_high_pc:
18740           has_high_pc_attr = 1;
18741           highpc = attr_value_as_address (&attr);
18742           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18743                 high_pc_relative = 1;
18744           break;
18745         case DW_AT_location:
18746           /* Support the .debug_loc offsets.  */
18747           if (attr_form_is_block (&attr))
18748             {
18749                d.locdesc = DW_BLOCK (&attr);
18750             }
18751           else if (attr_form_is_section_offset (&attr))
18752             {
18753               dwarf2_complex_location_expr_complaint ();
18754             }
18755           else
18756             {
18757               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18758                                                      "partial symbol information");
18759             }
18760           break;
18761         case DW_AT_external:
18762           is_external = DW_UNSND (&attr);
18763           break;
18764         case DW_AT_declaration:
18765           is_declaration = DW_UNSND (&attr);
18766           break;
18767         case DW_AT_type:
18768           has_type = 1;
18769           break;
18770         case DW_AT_abstract_origin:
18771         case DW_AT_specification:
18772         case DW_AT_extension:
18773           has_specification = 1;
18774           spec_offset = dwarf2_get_ref_die_offset (&attr);
18775           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18776                                    || cu->per_cu->is_dwz);
18777           break;
18778         case DW_AT_sibling:
18779           /* Ignore absolute siblings, they might point outside of
18780              the current compile unit.  */
18781           if (attr.form == DW_FORM_ref_addr)
18782             complaint (_("ignoring absolute DW_AT_sibling"));
18783           else
18784             {
18785               const gdb_byte *buffer = reader->buffer;
18786               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18787               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18788
18789               if (sibling_ptr < info_ptr)
18790                 complaint (_("DW_AT_sibling points backwards"));
18791               else if (sibling_ptr > reader->buffer_end)
18792                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18793               else
18794                 sibling = sibling_ptr;
18795             }
18796           break;
18797         case DW_AT_byte_size:
18798           has_byte_size = 1;
18799           break;
18800         case DW_AT_const_value:
18801           has_const_value = 1;
18802           break;
18803         case DW_AT_calling_convention:
18804           /* DWARF doesn't provide a way to identify a program's source-level
18805              entry point.  DW_AT_calling_convention attributes are only meant
18806              to describe functions' calling conventions.
18807
18808              However, because it's a necessary piece of information in
18809              Fortran, and before DWARF 4 DW_CC_program was the only
18810              piece of debugging information whose definition refers to
18811              a 'main program' at all, several compilers marked Fortran
18812              main programs with DW_CC_program --- even when those
18813              functions use the standard calling conventions.
18814
18815              Although DWARF now specifies a way to provide this
18816              information, we support this practice for backward
18817              compatibility.  */
18818           if (DW_UNSND (&attr) == DW_CC_program
18819               && cu->language == language_fortran)
18820             main_subprogram = 1;
18821           break;
18822         case DW_AT_inline:
18823           if (DW_UNSND (&attr) == DW_INL_inlined
18824               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18825             may_be_inlined = 1;
18826           break;
18827
18828         case DW_AT_import:
18829           if (tag == DW_TAG_imported_unit)
18830             {
18831               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18832               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18833                                   || cu->per_cu->is_dwz);
18834             }
18835           break;
18836
18837         case DW_AT_main_subprogram:
18838           main_subprogram = DW_UNSND (&attr);
18839           break;
18840
18841         case DW_AT_ranges:
18842           {
18843             /* It would be nice to reuse dwarf2_get_pc_bounds here,
18844                but that requires a full DIE, so instead we just
18845                reimplement it.  */
18846             int need_ranges_base = tag != DW_TAG_compile_unit;
18847             unsigned int ranges_offset = (DW_UNSND (&attr)
18848                                           + (need_ranges_base
18849                                              ? cu->ranges_base
18850                                              : 0));
18851
18852             /* Value of the DW_AT_ranges attribute is the offset in the
18853                .debug_ranges section.  */
18854             if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18855                                     nullptr))
18856               has_pc_info = 1;
18857           }
18858           break;
18859
18860         default:
18861           break;
18862         }
18863     }
18864
18865   if (high_pc_relative)
18866     highpc += lowpc;
18867
18868   if (has_low_pc_attr && has_high_pc_attr)
18869     {
18870       /* When using the GNU linker, .gnu.linkonce. sections are used to
18871          eliminate duplicate copies of functions and vtables and such.
18872          The linker will arbitrarily choose one and discard the others.
18873          The AT_*_pc values for such functions refer to local labels in
18874          these sections.  If the section from that file was discarded, the
18875          labels are not in the output, so the relocs get a value of 0.
18876          If this is a discarded function, mark the pc bounds as invalid,
18877          so that GDB will ignore it.  */
18878       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18879         {
18880           struct objfile *objfile = dwarf2_per_objfile->objfile;
18881           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18882
18883           complaint (_("DW_AT_low_pc %s is zero "
18884                        "for DIE at %s [in module %s]"),
18885                      paddress (gdbarch, lowpc),
18886                      sect_offset_str (sect_off),
18887                      objfile_name (objfile));
18888         }
18889       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18890       else if (lowpc >= highpc)
18891         {
18892           struct objfile *objfile = dwarf2_per_objfile->objfile;
18893           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18894
18895           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18896                        "for DIE at %s [in module %s]"),
18897                      paddress (gdbarch, lowpc),
18898                      paddress (gdbarch, highpc),
18899                      sect_offset_str (sect_off),
18900                      objfile_name (objfile));
18901         }
18902       else
18903         has_pc_info = 1;
18904     }
18905
18906   return info_ptr;
18907 }
18908
18909 /* Find a cached partial DIE at OFFSET in CU.  */
18910
18911 struct partial_die_info *
18912 dwarf2_cu::find_partial_die (sect_offset sect_off)
18913 {
18914   struct partial_die_info *lookup_die = NULL;
18915   struct partial_die_info part_die (sect_off);
18916
18917   lookup_die = ((struct partial_die_info *)
18918                 htab_find_with_hash (partial_dies, &part_die,
18919                                      to_underlying (sect_off)));
18920
18921   return lookup_die;
18922 }
18923
18924 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18925    except in the case of .debug_types DIEs which do not reference
18926    outside their CU (they do however referencing other types via
18927    DW_FORM_ref_sig8).  */
18928
18929 static const struct cu_partial_die_info
18930 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18931 {
18932   struct dwarf2_per_objfile *dwarf2_per_objfile
18933     = cu->per_cu->dwarf2_per_objfile;
18934   struct objfile *objfile = dwarf2_per_objfile->objfile;
18935   struct dwarf2_per_cu_data *per_cu = NULL;
18936   struct partial_die_info *pd = NULL;
18937
18938   if (offset_in_dwz == cu->per_cu->is_dwz
18939       && offset_in_cu_p (&cu->header, sect_off))
18940     {
18941       pd = cu->find_partial_die (sect_off);
18942       if (pd != NULL)
18943         return { cu, pd };
18944       /* We missed recording what we needed.
18945          Load all dies and try again.  */
18946       per_cu = cu->per_cu;
18947     }
18948   else
18949     {
18950       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18951       if (cu->per_cu->is_debug_types)
18952         {
18953           error (_("Dwarf Error: Type Unit at offset %s contains"
18954                    " external reference to offset %s [in module %s].\n"),
18955                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18956                  bfd_get_filename (objfile->obfd));
18957         }
18958       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18959                                                  dwarf2_per_objfile);
18960
18961       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18962         load_partial_comp_unit (per_cu);
18963
18964       per_cu->cu->last_used = 0;
18965       pd = per_cu->cu->find_partial_die (sect_off);
18966     }
18967
18968   /* If we didn't find it, and not all dies have been loaded,
18969      load them all and try again.  */
18970
18971   if (pd == NULL && per_cu->load_all_dies == 0)
18972     {
18973       per_cu->load_all_dies = 1;
18974
18975       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18976          THIS_CU->cu may already be in use.  So we can't just free it and
18977          replace its DIEs with the ones we read in.  Instead, we leave those
18978          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18979          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18980          set.  */
18981       load_partial_comp_unit (per_cu);
18982
18983       pd = per_cu->cu->find_partial_die (sect_off);
18984     }
18985
18986   if (pd == NULL)
18987     internal_error (__FILE__, __LINE__,
18988                     _("could not find partial DIE %s "
18989                       "in cache [from module %s]\n"),
18990                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18991   return { per_cu->cu, pd };
18992 }
18993
18994 /* See if we can figure out if the class lives in a namespace.  We do
18995    this by looking for a member function; its demangled name will
18996    contain namespace info, if there is any.  */
18997
18998 static void
18999 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
19000                                   struct dwarf2_cu *cu)
19001 {
19002   /* NOTE: carlton/2003-10-07: Getting the info this way changes
19003      what template types look like, because the demangler
19004      frequently doesn't give the same name as the debug info.  We
19005      could fix this by only using the demangled name to get the
19006      prefix (but see comment in read_structure_type).  */
19007
19008   struct partial_die_info *real_pdi;
19009   struct partial_die_info *child_pdi;
19010
19011   /* If this DIE (this DIE's specification, if any) has a parent, then
19012      we should not do this.  We'll prepend the parent's fully qualified
19013      name when we create the partial symbol.  */
19014
19015   real_pdi = struct_pdi;
19016   while (real_pdi->has_specification)
19017     {
19018       auto res = find_partial_die (real_pdi->spec_offset,
19019                                    real_pdi->spec_is_dwz, cu);
19020       real_pdi = res.pdi;
19021       cu = res.cu;
19022     }
19023
19024   if (real_pdi->die_parent != NULL)
19025     return;
19026
19027   for (child_pdi = struct_pdi->die_child;
19028        child_pdi != NULL;
19029        child_pdi = child_pdi->die_sibling)
19030     {
19031       if (child_pdi->tag == DW_TAG_subprogram
19032           && child_pdi->linkage_name != NULL)
19033         {
19034           char *actual_class_name
19035             = language_class_name_from_physname (cu->language_defn,
19036                                                  child_pdi->linkage_name);
19037           if (actual_class_name != NULL)
19038             {
19039               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19040               struct_pdi->name
19041                 = ((const char *)
19042                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
19043                                   actual_class_name,
19044                                   strlen (actual_class_name)));
19045               xfree (actual_class_name);
19046             }
19047           break;
19048         }
19049     }
19050 }
19051
19052 void
19053 partial_die_info::fixup (struct dwarf2_cu *cu)
19054 {
19055   /* Once we've fixed up a die, there's no point in doing so again.
19056      This also avoids a memory leak if we were to call
19057      guess_partial_die_structure_name multiple times.  */
19058   if (fixup_called)
19059     return;
19060
19061   /* If we found a reference attribute and the DIE has no name, try
19062      to find a name in the referred to DIE.  */
19063
19064   if (name == NULL && has_specification)
19065     {
19066       struct partial_die_info *spec_die;
19067
19068       auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
19069       spec_die = res.pdi;
19070       cu = res.cu;
19071
19072       spec_die->fixup (cu);
19073
19074       if (spec_die->name)
19075         {
19076           name = spec_die->name;
19077
19078           /* Copy DW_AT_external attribute if it is set.  */
19079           if (spec_die->is_external)
19080             is_external = spec_die->is_external;
19081         }
19082     }
19083
19084   /* Set default names for some unnamed DIEs.  */
19085
19086   if (name == NULL && tag == DW_TAG_namespace)
19087     name = CP_ANONYMOUS_NAMESPACE_STR;
19088
19089   /* If there is no parent die to provide a namespace, and there are
19090      children, see if we can determine the namespace from their linkage
19091      name.  */
19092   if (cu->language == language_cplus
19093       && !VEC_empty (dwarf2_section_info_def,
19094                      cu->per_cu->dwarf2_per_objfile->types)
19095       && die_parent == NULL
19096       && has_children
19097       && (tag == DW_TAG_class_type
19098           || tag == DW_TAG_structure_type
19099           || tag == DW_TAG_union_type))
19100     guess_partial_die_structure_name (this, cu);
19101
19102   /* GCC might emit a nameless struct or union that has a linkage
19103      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19104   if (name == NULL
19105       && (tag == DW_TAG_class_type
19106           || tag == DW_TAG_interface_type
19107           || tag == DW_TAG_structure_type
19108           || tag == DW_TAG_union_type)
19109       && linkage_name != NULL)
19110     {
19111       char *demangled;
19112
19113       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
19114       if (demangled)
19115         {
19116           const char *base;
19117
19118           /* Strip any leading namespaces/classes, keep only the base name.
19119              DW_AT_name for named DIEs does not contain the prefixes.  */
19120           base = strrchr (demangled, ':');
19121           if (base && base > demangled && base[-1] == ':')
19122             base++;
19123           else
19124             base = demangled;
19125
19126           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19127           name
19128             = ((const char *)
19129                obstack_copy0 (&objfile->per_bfd->storage_obstack,
19130                               base, strlen (base)));
19131           xfree (demangled);
19132         }
19133     }
19134
19135   fixup_called = 1;
19136 }
19137
19138 /* Read an attribute value described by an attribute form.  */
19139
19140 static const gdb_byte *
19141 read_attribute_value (const struct die_reader_specs *reader,
19142                       struct attribute *attr, unsigned form,
19143                       LONGEST implicit_const, const gdb_byte *info_ptr)
19144 {
19145   struct dwarf2_cu *cu = reader->cu;
19146   struct dwarf2_per_objfile *dwarf2_per_objfile
19147     = cu->per_cu->dwarf2_per_objfile;
19148   struct objfile *objfile = dwarf2_per_objfile->objfile;
19149   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19150   bfd *abfd = reader->abfd;
19151   struct comp_unit_head *cu_header = &cu->header;
19152   unsigned int bytes_read;
19153   struct dwarf_block *blk;
19154
19155   attr->form = (enum dwarf_form) form;
19156   switch (form)
19157     {
19158     case DW_FORM_ref_addr:
19159       if (cu->header.version == 2)
19160         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19161       else
19162         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19163                                        &cu->header, &bytes_read);
19164       info_ptr += bytes_read;
19165       break;
19166     case DW_FORM_GNU_ref_alt:
19167       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19168       info_ptr += bytes_read;
19169       break;
19170     case DW_FORM_addr:
19171       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19172       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19173       info_ptr += bytes_read;
19174       break;
19175     case DW_FORM_block2:
19176       blk = dwarf_alloc_block (cu);
19177       blk->size = read_2_bytes (abfd, info_ptr);
19178       info_ptr += 2;
19179       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19180       info_ptr += blk->size;
19181       DW_BLOCK (attr) = blk;
19182       break;
19183     case DW_FORM_block4:
19184       blk = dwarf_alloc_block (cu);
19185       blk->size = read_4_bytes (abfd, info_ptr);
19186       info_ptr += 4;
19187       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19188       info_ptr += blk->size;
19189       DW_BLOCK (attr) = blk;
19190       break;
19191     case DW_FORM_data2:
19192       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19193       info_ptr += 2;
19194       break;
19195     case DW_FORM_data4:
19196       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19197       info_ptr += 4;
19198       break;
19199     case DW_FORM_data8:
19200       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19201       info_ptr += 8;
19202       break;
19203     case DW_FORM_data16:
19204       blk = dwarf_alloc_block (cu);
19205       blk->size = 16;
19206       blk->data = read_n_bytes (abfd, info_ptr, 16);
19207       info_ptr += 16;
19208       DW_BLOCK (attr) = blk;
19209       break;
19210     case DW_FORM_sec_offset:
19211       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19212       info_ptr += bytes_read;
19213       break;
19214     case DW_FORM_string:
19215       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19216       DW_STRING_IS_CANONICAL (attr) = 0;
19217       info_ptr += bytes_read;
19218       break;
19219     case DW_FORM_strp:
19220       if (!cu->per_cu->is_dwz)
19221         {
19222           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19223                                                    abfd, info_ptr, cu_header,
19224                                                    &bytes_read);
19225           DW_STRING_IS_CANONICAL (attr) = 0;
19226           info_ptr += bytes_read;
19227           break;
19228         }
19229       /* FALLTHROUGH */
19230     case DW_FORM_line_strp:
19231       if (!cu->per_cu->is_dwz)
19232         {
19233           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19234                                                         abfd, info_ptr,
19235                                                         cu_header, &bytes_read);
19236           DW_STRING_IS_CANONICAL (attr) = 0;
19237           info_ptr += bytes_read;
19238           break;
19239         }
19240       /* FALLTHROUGH */
19241     case DW_FORM_GNU_strp_alt:
19242       {
19243         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19244         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19245                                           &bytes_read);
19246
19247         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19248                                                           dwz, str_offset);
19249         DW_STRING_IS_CANONICAL (attr) = 0;
19250         info_ptr += bytes_read;
19251       }
19252       break;
19253     case DW_FORM_exprloc:
19254     case DW_FORM_block:
19255       blk = dwarf_alloc_block (cu);
19256       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19257       info_ptr += bytes_read;
19258       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19259       info_ptr += blk->size;
19260       DW_BLOCK (attr) = blk;
19261       break;
19262     case DW_FORM_block1:
19263       blk = dwarf_alloc_block (cu);
19264       blk->size = read_1_byte (abfd, info_ptr);
19265       info_ptr += 1;
19266       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19267       info_ptr += blk->size;
19268       DW_BLOCK (attr) = blk;
19269       break;
19270     case DW_FORM_data1:
19271       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19272       info_ptr += 1;
19273       break;
19274     case DW_FORM_flag:
19275       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19276       info_ptr += 1;
19277       break;
19278     case DW_FORM_flag_present:
19279       DW_UNSND (attr) = 1;
19280       break;
19281     case DW_FORM_sdata:
19282       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19283       info_ptr += bytes_read;
19284       break;
19285     case DW_FORM_udata:
19286       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19287       info_ptr += bytes_read;
19288       break;
19289     case DW_FORM_ref1:
19290       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19291                          + read_1_byte (abfd, info_ptr));
19292       info_ptr += 1;
19293       break;
19294     case DW_FORM_ref2:
19295       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19296                          + read_2_bytes (abfd, info_ptr));
19297       info_ptr += 2;
19298       break;
19299     case DW_FORM_ref4:
19300       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19301                          + read_4_bytes (abfd, info_ptr));
19302       info_ptr += 4;
19303       break;
19304     case DW_FORM_ref8:
19305       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19306                          + read_8_bytes (abfd, info_ptr));
19307       info_ptr += 8;
19308       break;
19309     case DW_FORM_ref_sig8:
19310       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19311       info_ptr += 8;
19312       break;
19313     case DW_FORM_ref_udata:
19314       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19315                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19316       info_ptr += bytes_read;
19317       break;
19318     case DW_FORM_indirect:
19319       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19320       info_ptr += bytes_read;
19321       if (form == DW_FORM_implicit_const)
19322         {
19323           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19324           info_ptr += bytes_read;
19325         }
19326       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19327                                        info_ptr);
19328       break;
19329     case DW_FORM_implicit_const:
19330       DW_SND (attr) = implicit_const;
19331       break;
19332     case DW_FORM_addrx:
19333     case DW_FORM_GNU_addr_index:
19334       if (reader->dwo_file == NULL)
19335         {
19336           /* For now flag a hard error.
19337              Later we can turn this into a complaint.  */
19338           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19339                  dwarf_form_name (form),
19340                  bfd_get_filename (abfd));
19341         }
19342       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19343       info_ptr += bytes_read;
19344       break;
19345     case DW_FORM_strx:
19346     case DW_FORM_strx1:
19347     case DW_FORM_strx2:
19348     case DW_FORM_strx3:
19349     case DW_FORM_strx4:
19350     case DW_FORM_GNU_str_index:
19351       if (reader->dwo_file == NULL)
19352         {
19353           /* For now flag a hard error.
19354              Later we can turn this into a complaint if warranted.  */
19355           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19356                  dwarf_form_name (form),
19357                  bfd_get_filename (abfd));
19358         }
19359       {
19360         ULONGEST str_index;
19361         if (form == DW_FORM_strx1)
19362           {
19363             str_index = read_1_byte (abfd, info_ptr);
19364             info_ptr += 1;
19365           }
19366         else if (form == DW_FORM_strx2)
19367           {
19368             str_index = read_2_bytes (abfd, info_ptr);
19369             info_ptr += 2;
19370           }
19371         else if (form == DW_FORM_strx3)
19372           {
19373             str_index = read_3_bytes (abfd, info_ptr);
19374             info_ptr += 3;
19375           }
19376         else if (form == DW_FORM_strx4)
19377           {
19378             str_index = read_4_bytes (abfd, info_ptr);
19379             info_ptr += 4;
19380           }
19381         else
19382           {
19383             str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19384             info_ptr += bytes_read;
19385           }
19386         DW_STRING (attr) = read_str_index (reader, str_index);
19387         DW_STRING_IS_CANONICAL (attr) = 0;
19388       }
19389       break;
19390     default:
19391       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19392              dwarf_form_name (form),
19393              bfd_get_filename (abfd));
19394     }
19395
19396   /* Super hack.  */
19397   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19398     attr->form = DW_FORM_GNU_ref_alt;
19399
19400   /* We have seen instances where the compiler tried to emit a byte
19401      size attribute of -1 which ended up being encoded as an unsigned
19402      0xffffffff.  Although 0xffffffff is technically a valid size value,
19403      an object of this size seems pretty unlikely so we can relatively
19404      safely treat these cases as if the size attribute was invalid and
19405      treat them as zero by default.  */
19406   if (attr->name == DW_AT_byte_size
19407       && form == DW_FORM_data4
19408       && DW_UNSND (attr) >= 0xffffffff)
19409     {
19410       complaint
19411         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19412          hex_string (DW_UNSND (attr)));
19413       DW_UNSND (attr) = 0;
19414     }
19415
19416   return info_ptr;
19417 }
19418
19419 /* Read an attribute described by an abbreviated attribute.  */
19420
19421 static const gdb_byte *
19422 read_attribute (const struct die_reader_specs *reader,
19423                 struct attribute *attr, struct attr_abbrev *abbrev,
19424                 const gdb_byte *info_ptr)
19425 {
19426   attr->name = abbrev->name;
19427   return read_attribute_value (reader, attr, abbrev->form,
19428                                abbrev->implicit_const, info_ptr);
19429 }
19430
19431 /* Read dwarf information from a buffer.  */
19432
19433 static unsigned int
19434 read_1_byte (bfd *abfd, const gdb_byte *buf)
19435 {
19436   return bfd_get_8 (abfd, buf);
19437 }
19438
19439 static int
19440 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19441 {
19442   return bfd_get_signed_8 (abfd, buf);
19443 }
19444
19445 static unsigned int
19446 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19447 {
19448   return bfd_get_16 (abfd, buf);
19449 }
19450
19451 static int
19452 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19453 {
19454   return bfd_get_signed_16 (abfd, buf);
19455 }
19456
19457 static unsigned int
19458 read_3_bytes (bfd *abfd, const gdb_byte *buf)
19459 {
19460   unsigned int result = 0;
19461   for (int i = 0; i < 3; ++i)
19462     {
19463       unsigned char byte = bfd_get_8 (abfd, buf);
19464       buf++;
19465       result |= ((unsigned int) byte << (i * 8));
19466     }
19467   return result;
19468 }
19469
19470 static unsigned int
19471 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19472 {
19473   return bfd_get_32 (abfd, buf);
19474 }
19475
19476 static int
19477 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19478 {
19479   return bfd_get_signed_32 (abfd, buf);
19480 }
19481
19482 static ULONGEST
19483 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19484 {
19485   return bfd_get_64 (abfd, buf);
19486 }
19487
19488 static CORE_ADDR
19489 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19490               unsigned int *bytes_read)
19491 {
19492   struct comp_unit_head *cu_header = &cu->header;
19493   CORE_ADDR retval = 0;
19494
19495   if (cu_header->signed_addr_p)
19496     {
19497       switch (cu_header->addr_size)
19498         {
19499         case 2:
19500           retval = bfd_get_signed_16 (abfd, buf);
19501           break;
19502         case 4:
19503           retval = bfd_get_signed_32 (abfd, buf);
19504           break;
19505         case 8:
19506           retval = bfd_get_signed_64 (abfd, buf);
19507           break;
19508         default:
19509           internal_error (__FILE__, __LINE__,
19510                           _("read_address: bad switch, signed [in module %s]"),
19511                           bfd_get_filename (abfd));
19512         }
19513     }
19514   else
19515     {
19516       switch (cu_header->addr_size)
19517         {
19518         case 2:
19519           retval = bfd_get_16 (abfd, buf);
19520           break;
19521         case 4:
19522           retval = bfd_get_32 (abfd, buf);
19523           break;
19524         case 8:
19525           retval = bfd_get_64 (abfd, buf);
19526           break;
19527         default:
19528           internal_error (__FILE__, __LINE__,
19529                           _("read_address: bad switch, "
19530                             "unsigned [in module %s]"),
19531                           bfd_get_filename (abfd));
19532         }
19533     }
19534
19535   *bytes_read = cu_header->addr_size;
19536   return retval;
19537 }
19538
19539 /* Read the initial length from a section.  The (draft) DWARF 3
19540    specification allows the initial length to take up either 4 bytes
19541    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19542    bytes describe the length and all offsets will be 8 bytes in length
19543    instead of 4.
19544
19545    An older, non-standard 64-bit format is also handled by this
19546    function.  The older format in question stores the initial length
19547    as an 8-byte quantity without an escape value.  Lengths greater
19548    than 2^32 aren't very common which means that the initial 4 bytes
19549    is almost always zero.  Since a length value of zero doesn't make
19550    sense for the 32-bit format, this initial zero can be considered to
19551    be an escape value which indicates the presence of the older 64-bit
19552    format.  As written, the code can't detect (old format) lengths
19553    greater than 4GB.  If it becomes necessary to handle lengths
19554    somewhat larger than 4GB, we could allow other small values (such
19555    as the non-sensical values of 1, 2, and 3) to also be used as
19556    escape values indicating the presence of the old format.
19557
19558    The value returned via bytes_read should be used to increment the
19559    relevant pointer after calling read_initial_length().
19560
19561    [ Note:  read_initial_length() and read_offset() are based on the
19562      document entitled "DWARF Debugging Information Format", revision
19563      3, draft 8, dated November 19, 2001.  This document was obtained
19564      from:
19565
19566         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19567
19568      This document is only a draft and is subject to change.  (So beware.)
19569
19570      Details regarding the older, non-standard 64-bit format were
19571      determined empirically by examining 64-bit ELF files produced by
19572      the SGI toolchain on an IRIX 6.5 machine.
19573
19574      - Kevin, July 16, 2002
19575    ] */
19576
19577 static LONGEST
19578 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19579 {
19580   LONGEST length = bfd_get_32 (abfd, buf);
19581
19582   if (length == 0xffffffff)
19583     {
19584       length = bfd_get_64 (abfd, buf + 4);
19585       *bytes_read = 12;
19586     }
19587   else if (length == 0)
19588     {
19589       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19590       length = bfd_get_64 (abfd, buf);
19591       *bytes_read = 8;
19592     }
19593   else
19594     {
19595       *bytes_read = 4;
19596     }
19597
19598   return length;
19599 }
19600
19601 /* Cover function for read_initial_length.
19602    Returns the length of the object at BUF, and stores the size of the
19603    initial length in *BYTES_READ and stores the size that offsets will be in
19604    *OFFSET_SIZE.
19605    If the initial length size is not equivalent to that specified in
19606    CU_HEADER then issue a complaint.
19607    This is useful when reading non-comp-unit headers.  */
19608
19609 static LONGEST
19610 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19611                                         const struct comp_unit_head *cu_header,
19612                                         unsigned int *bytes_read,
19613                                         unsigned int *offset_size)
19614 {
19615   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19616
19617   gdb_assert (cu_header->initial_length_size == 4
19618               || cu_header->initial_length_size == 8
19619               || cu_header->initial_length_size == 12);
19620
19621   if (cu_header->initial_length_size != *bytes_read)
19622     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19623
19624   *offset_size = (*bytes_read == 4) ? 4 : 8;
19625   return length;
19626 }
19627
19628 /* Read an offset from the data stream.  The size of the offset is
19629    given by cu_header->offset_size.  */
19630
19631 static LONGEST
19632 read_offset (bfd *abfd, const gdb_byte *buf,
19633              const struct comp_unit_head *cu_header,
19634              unsigned int *bytes_read)
19635 {
19636   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19637
19638   *bytes_read = cu_header->offset_size;
19639   return offset;
19640 }
19641
19642 /* Read an offset from the data stream.  */
19643
19644 static LONGEST
19645 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19646 {
19647   LONGEST retval = 0;
19648
19649   switch (offset_size)
19650     {
19651     case 4:
19652       retval = bfd_get_32 (abfd, buf);
19653       break;
19654     case 8:
19655       retval = bfd_get_64 (abfd, buf);
19656       break;
19657     default:
19658       internal_error (__FILE__, __LINE__,
19659                       _("read_offset_1: bad switch [in module %s]"),
19660                       bfd_get_filename (abfd));
19661     }
19662
19663   return retval;
19664 }
19665
19666 static const gdb_byte *
19667 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19668 {
19669   /* If the size of a host char is 8 bits, we can return a pointer
19670      to the buffer, otherwise we have to copy the data to a buffer
19671      allocated on the temporary obstack.  */
19672   gdb_assert (HOST_CHAR_BIT == 8);
19673   return buf;
19674 }
19675
19676 static const char *
19677 read_direct_string (bfd *abfd, const gdb_byte *buf,
19678                     unsigned int *bytes_read_ptr)
19679 {
19680   /* If the size of a host char is 8 bits, we can return a pointer
19681      to the string, otherwise we have to copy the string to a buffer
19682      allocated on the temporary obstack.  */
19683   gdb_assert (HOST_CHAR_BIT == 8);
19684   if (*buf == '\0')
19685     {
19686       *bytes_read_ptr = 1;
19687       return NULL;
19688     }
19689   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19690   return (const char *) buf;
19691 }
19692
19693 /* Return pointer to string at section SECT offset STR_OFFSET with error
19694    reporting strings FORM_NAME and SECT_NAME.  */
19695
19696 static const char *
19697 read_indirect_string_at_offset_from (struct objfile *objfile,
19698                                      bfd *abfd, LONGEST str_offset,
19699                                      struct dwarf2_section_info *sect,
19700                                      const char *form_name,
19701                                      const char *sect_name)
19702 {
19703   dwarf2_read_section (objfile, sect);
19704   if (sect->buffer == NULL)
19705     error (_("%s used without %s section [in module %s]"),
19706            form_name, sect_name, bfd_get_filename (abfd));
19707   if (str_offset >= sect->size)
19708     error (_("%s pointing outside of %s section [in module %s]"),
19709            form_name, sect_name, bfd_get_filename (abfd));
19710   gdb_assert (HOST_CHAR_BIT == 8);
19711   if (sect->buffer[str_offset] == '\0')
19712     return NULL;
19713   return (const char *) (sect->buffer + str_offset);
19714 }
19715
19716 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19717
19718 static const char *
19719 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19720                                 bfd *abfd, LONGEST str_offset)
19721 {
19722   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19723                                               abfd, str_offset,
19724                                               &dwarf2_per_objfile->str,
19725                                               "DW_FORM_strp", ".debug_str");
19726 }
19727
19728 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19729
19730 static const char *
19731 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19732                                      bfd *abfd, LONGEST str_offset)
19733 {
19734   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19735                                               abfd, str_offset,
19736                                               &dwarf2_per_objfile->line_str,
19737                                               "DW_FORM_line_strp",
19738                                               ".debug_line_str");
19739 }
19740
19741 /* Read a string at offset STR_OFFSET in the .debug_str section from
19742    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19743    the string consists of a single NUL byte, return NULL; otherwise
19744    return a pointer to the string.  */
19745
19746 static const char *
19747 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19748                                LONGEST str_offset)
19749 {
19750   dwarf2_read_section (objfile, &dwz->str);
19751
19752   if (dwz->str.buffer == NULL)
19753     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19754              "section [in module %s]"),
19755            bfd_get_filename (dwz->dwz_bfd));
19756   if (str_offset >= dwz->str.size)
19757     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19758              ".debug_str section [in module %s]"),
19759            bfd_get_filename (dwz->dwz_bfd));
19760   gdb_assert (HOST_CHAR_BIT == 8);
19761   if (dwz->str.buffer[str_offset] == '\0')
19762     return NULL;
19763   return (const char *) (dwz->str.buffer + str_offset);
19764 }
19765
19766 /* Return pointer to string at .debug_str offset as read from BUF.
19767    BUF is assumed to be in a compilation unit described by CU_HEADER.
19768    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19769
19770 static const char *
19771 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19772                       const gdb_byte *buf,
19773                       const struct comp_unit_head *cu_header,
19774                       unsigned int *bytes_read_ptr)
19775 {
19776   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19777
19778   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19779 }
19780
19781 /* Return pointer to string at .debug_line_str offset as read from BUF.
19782    BUF is assumed to be in a compilation unit described by CU_HEADER.
19783    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19784
19785 static const char *
19786 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19787                            bfd *abfd, const gdb_byte *buf,
19788                            const struct comp_unit_head *cu_header,
19789                            unsigned int *bytes_read_ptr)
19790 {
19791   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19792
19793   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19794                                               str_offset);
19795 }
19796
19797 ULONGEST
19798 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19799                           unsigned int *bytes_read_ptr)
19800 {
19801   ULONGEST result;
19802   unsigned int num_read;
19803   int shift;
19804   unsigned char byte;
19805
19806   result = 0;
19807   shift = 0;
19808   num_read = 0;
19809   while (1)
19810     {
19811       byte = bfd_get_8 (abfd, buf);
19812       buf++;
19813       num_read++;
19814       result |= ((ULONGEST) (byte & 127) << shift);
19815       if ((byte & 128) == 0)
19816         {
19817           break;
19818         }
19819       shift += 7;
19820     }
19821   *bytes_read_ptr = num_read;
19822   return result;
19823 }
19824
19825 static LONGEST
19826 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19827                     unsigned int *bytes_read_ptr)
19828 {
19829   ULONGEST result;
19830   int shift, num_read;
19831   unsigned char byte;
19832
19833   result = 0;
19834   shift = 0;
19835   num_read = 0;
19836   while (1)
19837     {
19838       byte = bfd_get_8 (abfd, buf);
19839       buf++;
19840       num_read++;
19841       result |= ((ULONGEST) (byte & 127) << shift);
19842       shift += 7;
19843       if ((byte & 128) == 0)
19844         {
19845           break;
19846         }
19847     }
19848   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19849     result |= -(((ULONGEST) 1) << shift);
19850   *bytes_read_ptr = num_read;
19851   return result;
19852 }
19853
19854 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19855    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19856    ADDR_SIZE is the size of addresses from the CU header.  */
19857
19858 static CORE_ADDR
19859 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19860                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19861 {
19862   struct objfile *objfile = dwarf2_per_objfile->objfile;
19863   bfd *abfd = objfile->obfd;
19864   const gdb_byte *info_ptr;
19865
19866   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19867   if (dwarf2_per_objfile->addr.buffer == NULL)
19868     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19869            objfile_name (objfile));
19870   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19871     error (_("DW_FORM_addr_index pointing outside of "
19872              ".debug_addr section [in module %s]"),
19873            objfile_name (objfile));
19874   info_ptr = (dwarf2_per_objfile->addr.buffer
19875               + addr_base + addr_index * addr_size);
19876   if (addr_size == 4)
19877     return bfd_get_32 (abfd, info_ptr);
19878   else
19879     return bfd_get_64 (abfd, info_ptr);
19880 }
19881
19882 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19883
19884 static CORE_ADDR
19885 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19886 {
19887   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19888                             cu->addr_base, cu->header.addr_size);
19889 }
19890
19891 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19892
19893 static CORE_ADDR
19894 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19895                              unsigned int *bytes_read)
19896 {
19897   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19898   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19899
19900   return read_addr_index (cu, addr_index);
19901 }
19902
19903 /* Data structure to pass results from dwarf2_read_addr_index_reader
19904    back to dwarf2_read_addr_index.  */
19905
19906 struct dwarf2_read_addr_index_data
19907 {
19908   ULONGEST addr_base;
19909   int addr_size;
19910 };
19911
19912 /* die_reader_func for dwarf2_read_addr_index.  */
19913
19914 static void
19915 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19916                                const gdb_byte *info_ptr,
19917                                struct die_info *comp_unit_die,
19918                                int has_children,
19919                                void *data)
19920 {
19921   struct dwarf2_cu *cu = reader->cu;
19922   struct dwarf2_read_addr_index_data *aidata =
19923     (struct dwarf2_read_addr_index_data *) data;
19924
19925   aidata->addr_base = cu->addr_base;
19926   aidata->addr_size = cu->header.addr_size;
19927 }
19928
19929 /* Given an index in .debug_addr, fetch the value.
19930    NOTE: This can be called during dwarf expression evaluation,
19931    long after the debug information has been read, and thus per_cu->cu
19932    may no longer exist.  */
19933
19934 CORE_ADDR
19935 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19936                         unsigned int addr_index)
19937 {
19938   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19939   struct dwarf2_cu *cu = per_cu->cu;
19940   ULONGEST addr_base;
19941   int addr_size;
19942
19943   /* We need addr_base and addr_size.
19944      If we don't have PER_CU->cu, we have to get it.
19945      Nasty, but the alternative is storing the needed info in PER_CU,
19946      which at this point doesn't seem justified: it's not clear how frequently
19947      it would get used and it would increase the size of every PER_CU.
19948      Entry points like dwarf2_per_cu_addr_size do a similar thing
19949      so we're not in uncharted territory here.
19950      Alas we need to be a bit more complicated as addr_base is contained
19951      in the DIE.
19952
19953      We don't need to read the entire CU(/TU).
19954      We just need the header and top level die.
19955
19956      IWBN to use the aging mechanism to let us lazily later discard the CU.
19957      For now we skip this optimization.  */
19958
19959   if (cu != NULL)
19960     {
19961       addr_base = cu->addr_base;
19962       addr_size = cu->header.addr_size;
19963     }
19964   else
19965     {
19966       struct dwarf2_read_addr_index_data aidata;
19967
19968       /* Note: We can't use init_cutu_and_read_dies_simple here,
19969          we need addr_base.  */
19970       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19971                                dwarf2_read_addr_index_reader, &aidata);
19972       addr_base = aidata.addr_base;
19973       addr_size = aidata.addr_size;
19974     }
19975
19976   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19977                             addr_size);
19978 }
19979
19980 /* Given a DW_FORM_GNU_str_index or DW_FORM_strx, fetch the string.
19981    This is only used by the Fission support.  */
19982
19983 static const char *
19984 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19985 {
19986   struct dwarf2_cu *cu = reader->cu;
19987   struct dwarf2_per_objfile *dwarf2_per_objfile
19988     = cu->per_cu->dwarf2_per_objfile;
19989   struct objfile *objfile = dwarf2_per_objfile->objfile;
19990   const char *objf_name = objfile_name (objfile);
19991   bfd *abfd = objfile->obfd;
19992   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19993   struct dwarf2_section_info *str_offsets_section =
19994     &reader->dwo_file->sections.str_offsets;
19995   const gdb_byte *info_ptr;
19996   ULONGEST str_offset;
19997   static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
19998
19999   dwarf2_read_section (objfile, str_section);
20000   dwarf2_read_section (objfile, str_offsets_section);
20001   if (str_section->buffer == NULL)
20002     error (_("%s used without .debug_str.dwo section"
20003              " in CU at offset %s [in module %s]"),
20004            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20005   if (str_offsets_section->buffer == NULL)
20006     error (_("%s used without .debug_str_offsets.dwo section"
20007              " in CU at offset %s [in module %s]"),
20008            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20009   if (str_index * cu->header.offset_size >= str_offsets_section->size)
20010     error (_("%s pointing outside of .debug_str_offsets.dwo"
20011              " section in CU at offset %s [in module %s]"),
20012            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20013   info_ptr = (str_offsets_section->buffer
20014               + str_index * cu->header.offset_size);
20015   if (cu->header.offset_size == 4)
20016     str_offset = bfd_get_32 (abfd, info_ptr);
20017   else
20018     str_offset = bfd_get_64 (abfd, info_ptr);
20019   if (str_offset >= str_section->size)
20020     error (_("Offset from %s pointing outside of"
20021              " .debug_str.dwo section in CU at offset %s [in module %s]"),
20022            form_name, sect_offset_str (cu->header.sect_off), objf_name);
20023   return (const char *) (str_section->buffer + str_offset);
20024 }
20025
20026 /* Return the length of an LEB128 number in BUF.  */
20027
20028 static int
20029 leb128_size (const gdb_byte *buf)
20030 {
20031   const gdb_byte *begin = buf;
20032   gdb_byte byte;
20033
20034   while (1)
20035     {
20036       byte = *buf++;
20037       if ((byte & 128) == 0)
20038         return buf - begin;
20039     }
20040 }
20041
20042 static void
20043 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
20044 {
20045   switch (lang)
20046     {
20047     case DW_LANG_C89:
20048     case DW_LANG_C99:
20049     case DW_LANG_C11:
20050     case DW_LANG_C:
20051     case DW_LANG_UPC:
20052       cu->language = language_c;
20053       break;
20054     case DW_LANG_Java:
20055     case DW_LANG_C_plus_plus:
20056     case DW_LANG_C_plus_plus_11:
20057     case DW_LANG_C_plus_plus_14:
20058       cu->language = language_cplus;
20059       break;
20060     case DW_LANG_D:
20061       cu->language = language_d;
20062       break;
20063     case DW_LANG_Fortran77:
20064     case DW_LANG_Fortran90:
20065     case DW_LANG_Fortran95:
20066     case DW_LANG_Fortran03:
20067     case DW_LANG_Fortran08:
20068       cu->language = language_fortran;
20069       break;
20070     case DW_LANG_Go:
20071       cu->language = language_go;
20072       break;
20073     case DW_LANG_Mips_Assembler:
20074       cu->language = language_asm;
20075       break;
20076     case DW_LANG_Ada83:
20077     case DW_LANG_Ada95:
20078       cu->language = language_ada;
20079       break;
20080     case DW_LANG_Modula2:
20081       cu->language = language_m2;
20082       break;
20083     case DW_LANG_Pascal83:
20084       cu->language = language_pascal;
20085       break;
20086     case DW_LANG_ObjC:
20087       cu->language = language_objc;
20088       break;
20089     case DW_LANG_Rust:
20090     case DW_LANG_Rust_old:
20091       cu->language = language_rust;
20092       break;
20093     case DW_LANG_Cobol74:
20094     case DW_LANG_Cobol85:
20095     default:
20096       cu->language = language_minimal;
20097       break;
20098     }
20099   cu->language_defn = language_def (cu->language);
20100 }
20101
20102 /* Return the named attribute or NULL if not there.  */
20103
20104 static struct attribute *
20105 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20106 {
20107   for (;;)
20108     {
20109       unsigned int i;
20110       struct attribute *spec = NULL;
20111
20112       for (i = 0; i < die->num_attrs; ++i)
20113         {
20114           if (die->attrs[i].name == name)
20115             return &die->attrs[i];
20116           if (die->attrs[i].name == DW_AT_specification
20117               || die->attrs[i].name == DW_AT_abstract_origin)
20118             spec = &die->attrs[i];
20119         }
20120
20121       if (!spec)
20122         break;
20123
20124       die = follow_die_ref (die, spec, &cu);
20125     }
20126
20127   return NULL;
20128 }
20129
20130 /* Return the named attribute or NULL if not there,
20131    but do not follow DW_AT_specification, etc.
20132    This is for use in contexts where we're reading .debug_types dies.
20133    Following DW_AT_specification, DW_AT_abstract_origin will take us
20134    back up the chain, and we want to go down.  */
20135
20136 static struct attribute *
20137 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20138 {
20139   unsigned int i;
20140
20141   for (i = 0; i < die->num_attrs; ++i)
20142     if (die->attrs[i].name == name)
20143       return &die->attrs[i];
20144
20145   return NULL;
20146 }
20147
20148 /* Return the string associated with a string-typed attribute, or NULL if it
20149    is either not found or is of an incorrect type.  */
20150
20151 static const char *
20152 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20153 {
20154   struct attribute *attr;
20155   const char *str = NULL;
20156
20157   attr = dwarf2_attr (die, name, cu);
20158
20159   if (attr != NULL)
20160     {
20161       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20162           || attr->form == DW_FORM_string
20163           || attr->form == DW_FORM_strx
20164           || attr->form == DW_FORM_GNU_str_index
20165           || attr->form == DW_FORM_GNU_strp_alt)
20166         str = DW_STRING (attr);
20167       else
20168         complaint (_("string type expected for attribute %s for "
20169                      "DIE at %s in module %s"),
20170                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
20171                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20172     }
20173
20174   return str;
20175 }
20176
20177 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20178    and holds a non-zero value.  This function should only be used for
20179    DW_FORM_flag or DW_FORM_flag_present attributes.  */
20180
20181 static int
20182 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20183 {
20184   struct attribute *attr = dwarf2_attr (die, name, cu);
20185
20186   return (attr && DW_UNSND (attr));
20187 }
20188
20189 static int
20190 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20191 {
20192   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20193      which value is non-zero.  However, we have to be careful with
20194      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20195      (via dwarf2_flag_true_p) follows this attribute.  So we may
20196      end up accidently finding a declaration attribute that belongs
20197      to a different DIE referenced by the specification attribute,
20198      even though the given DIE does not have a declaration attribute.  */
20199   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20200           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20201 }
20202
20203 /* Return the die giving the specification for DIE, if there is
20204    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20205    containing the return value on output.  If there is no
20206    specification, but there is an abstract origin, that is
20207    returned.  */
20208
20209 static struct die_info *
20210 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20211 {
20212   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20213                                              *spec_cu);
20214
20215   if (spec_attr == NULL)
20216     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20217
20218   if (spec_attr == NULL)
20219     return NULL;
20220   else
20221     return follow_die_ref (die, spec_attr, spec_cu);
20222 }
20223
20224 /* Stub for free_line_header to match void * callback types.  */
20225
20226 static void
20227 free_line_header_voidp (void *arg)
20228 {
20229   struct line_header *lh = (struct line_header *) arg;
20230
20231   delete lh;
20232 }
20233
20234 void
20235 line_header::add_include_dir (const char *include_dir)
20236 {
20237   if (dwarf_line_debug >= 2)
20238     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20239                         include_dirs.size () + 1, include_dir);
20240
20241   include_dirs.push_back (include_dir);
20242 }
20243
20244 void
20245 line_header::add_file_name (const char *name,
20246                             dir_index d_index,
20247                             unsigned int mod_time,
20248                             unsigned int length)
20249 {
20250   if (dwarf_line_debug >= 2)
20251     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20252                         (unsigned) file_names.size () + 1, name);
20253
20254   file_names.emplace_back (name, d_index, mod_time, length);
20255 }
20256
20257 /* A convenience function to find the proper .debug_line section for a CU.  */
20258
20259 static struct dwarf2_section_info *
20260 get_debug_line_section (struct dwarf2_cu *cu)
20261 {
20262   struct dwarf2_section_info *section;
20263   struct dwarf2_per_objfile *dwarf2_per_objfile
20264     = cu->per_cu->dwarf2_per_objfile;
20265
20266   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20267      DWO file.  */
20268   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20269     section = &cu->dwo_unit->dwo_file->sections.line;
20270   else if (cu->per_cu->is_dwz)
20271     {
20272       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20273
20274       section = &dwz->line;
20275     }
20276   else
20277     section = &dwarf2_per_objfile->line;
20278
20279   return section;
20280 }
20281
20282 /* Read directory or file name entry format, starting with byte of
20283    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20284    entries count and the entries themselves in the described entry
20285    format.  */
20286
20287 static void
20288 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20289                         bfd *abfd, const gdb_byte **bufp,
20290                         struct line_header *lh,
20291                         const struct comp_unit_head *cu_header,
20292                         void (*callback) (struct line_header *lh,
20293                                           const char *name,
20294                                           dir_index d_index,
20295                                           unsigned int mod_time,
20296                                           unsigned int length))
20297 {
20298   gdb_byte format_count, formati;
20299   ULONGEST data_count, datai;
20300   const gdb_byte *buf = *bufp;
20301   const gdb_byte *format_header_data;
20302   unsigned int bytes_read;
20303
20304   format_count = read_1_byte (abfd, buf);
20305   buf += 1;
20306   format_header_data = buf;
20307   for (formati = 0; formati < format_count; formati++)
20308     {
20309       read_unsigned_leb128 (abfd, buf, &bytes_read);
20310       buf += bytes_read;
20311       read_unsigned_leb128 (abfd, buf, &bytes_read);
20312       buf += bytes_read;
20313     }
20314
20315   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20316   buf += bytes_read;
20317   for (datai = 0; datai < data_count; datai++)
20318     {
20319       const gdb_byte *format = format_header_data;
20320       struct file_entry fe;
20321
20322       for (formati = 0; formati < format_count; formati++)
20323         {
20324           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20325           format += bytes_read;
20326
20327           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20328           format += bytes_read;
20329
20330           gdb::optional<const char *> string;
20331           gdb::optional<unsigned int> uint;
20332
20333           switch (form)
20334             {
20335             case DW_FORM_string:
20336               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20337               buf += bytes_read;
20338               break;
20339
20340             case DW_FORM_line_strp:
20341               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20342                                                          abfd, buf,
20343                                                          cu_header,
20344                                                          &bytes_read));
20345               buf += bytes_read;
20346               break;
20347
20348             case DW_FORM_data1:
20349               uint.emplace (read_1_byte (abfd, buf));
20350               buf += 1;
20351               break;
20352
20353             case DW_FORM_data2:
20354               uint.emplace (read_2_bytes (abfd, buf));
20355               buf += 2;
20356               break;
20357
20358             case DW_FORM_data4:
20359               uint.emplace (read_4_bytes (abfd, buf));
20360               buf += 4;
20361               break;
20362
20363             case DW_FORM_data8:
20364               uint.emplace (read_8_bytes (abfd, buf));
20365               buf += 8;
20366               break;
20367
20368             case DW_FORM_udata:
20369               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20370               buf += bytes_read;
20371               break;
20372
20373             case DW_FORM_block:
20374               /* It is valid only for DW_LNCT_timestamp which is ignored by
20375                  current GDB.  */
20376               break;
20377             }
20378
20379           switch (content_type)
20380             {
20381             case DW_LNCT_path:
20382               if (string.has_value ())
20383                 fe.name = *string;
20384               break;
20385             case DW_LNCT_directory_index:
20386               if (uint.has_value ())
20387                 fe.d_index = (dir_index) *uint;
20388               break;
20389             case DW_LNCT_timestamp:
20390               if (uint.has_value ())
20391                 fe.mod_time = *uint;
20392               break;
20393             case DW_LNCT_size:
20394               if (uint.has_value ())
20395                 fe.length = *uint;
20396               break;
20397             case DW_LNCT_MD5:
20398               break;
20399             default:
20400               complaint (_("Unknown format content type %s"),
20401                          pulongest (content_type));
20402             }
20403         }
20404
20405       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20406     }
20407
20408   *bufp = buf;
20409 }
20410
20411 /* Read the statement program header starting at OFFSET in
20412    .debug_line, or .debug_line.dwo.  Return a pointer
20413    to a struct line_header, allocated using xmalloc.
20414    Returns NULL if there is a problem reading the header, e.g., if it
20415    has a version we don't understand.
20416
20417    NOTE: the strings in the include directory and file name tables of
20418    the returned object point into the dwarf line section buffer,
20419    and must not be freed.  */
20420
20421 static line_header_up
20422 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20423 {
20424   const gdb_byte *line_ptr;
20425   unsigned int bytes_read, offset_size;
20426   int i;
20427   const char *cur_dir, *cur_file;
20428   struct dwarf2_section_info *section;
20429   bfd *abfd;
20430   struct dwarf2_per_objfile *dwarf2_per_objfile
20431     = cu->per_cu->dwarf2_per_objfile;
20432
20433   section = get_debug_line_section (cu);
20434   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20435   if (section->buffer == NULL)
20436     {
20437       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20438         complaint (_("missing .debug_line.dwo section"));
20439       else
20440         complaint (_("missing .debug_line section"));
20441       return 0;
20442     }
20443
20444   /* We can't do this until we know the section is non-empty.
20445      Only then do we know we have such a section.  */
20446   abfd = get_section_bfd_owner (section);
20447
20448   /* Make sure that at least there's room for the total_length field.
20449      That could be 12 bytes long, but we're just going to fudge that.  */
20450   if (to_underlying (sect_off) + 4 >= section->size)
20451     {
20452       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20453       return 0;
20454     }
20455
20456   line_header_up lh (new line_header ());
20457
20458   lh->sect_off = sect_off;
20459   lh->offset_in_dwz = cu->per_cu->is_dwz;
20460
20461   line_ptr = section->buffer + to_underlying (sect_off);
20462
20463   /* Read in the header.  */
20464   lh->total_length =
20465     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20466                                             &bytes_read, &offset_size);
20467   line_ptr += bytes_read;
20468   if (line_ptr + lh->total_length > (section->buffer + section->size))
20469     {
20470       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20471       return 0;
20472     }
20473   lh->statement_program_end = line_ptr + lh->total_length;
20474   lh->version = read_2_bytes (abfd, line_ptr);
20475   line_ptr += 2;
20476   if (lh->version > 5)
20477     {
20478       /* This is a version we don't understand.  The format could have
20479          changed in ways we don't handle properly so just punt.  */
20480       complaint (_("unsupported version in .debug_line section"));
20481       return NULL;
20482     }
20483   if (lh->version >= 5)
20484     {
20485       gdb_byte segment_selector_size;
20486
20487       /* Skip address size.  */
20488       read_1_byte (abfd, line_ptr);
20489       line_ptr += 1;
20490
20491       segment_selector_size = read_1_byte (abfd, line_ptr);
20492       line_ptr += 1;
20493       if (segment_selector_size != 0)
20494         {
20495           complaint (_("unsupported segment selector size %u "
20496                        "in .debug_line section"),
20497                      segment_selector_size);
20498           return NULL;
20499         }
20500     }
20501   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20502   line_ptr += offset_size;
20503   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20504   line_ptr += 1;
20505   if (lh->version >= 4)
20506     {
20507       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20508       line_ptr += 1;
20509     }
20510   else
20511     lh->maximum_ops_per_instruction = 1;
20512
20513   if (lh->maximum_ops_per_instruction == 0)
20514     {
20515       lh->maximum_ops_per_instruction = 1;
20516       complaint (_("invalid maximum_ops_per_instruction "
20517                    "in `.debug_line' section"));
20518     }
20519
20520   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20521   line_ptr += 1;
20522   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20523   line_ptr += 1;
20524   lh->line_range = read_1_byte (abfd, line_ptr);
20525   line_ptr += 1;
20526   lh->opcode_base = read_1_byte (abfd, line_ptr);
20527   line_ptr += 1;
20528   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20529
20530   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20531   for (i = 1; i < lh->opcode_base; ++i)
20532     {
20533       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20534       line_ptr += 1;
20535     }
20536
20537   if (lh->version >= 5)
20538     {
20539       /* Read directory table.  */
20540       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20541                               &cu->header,
20542                               [] (struct line_header *header, const char *name,
20543                                   dir_index d_index, unsigned int mod_time,
20544                                   unsigned int length)
20545         {
20546           header->add_include_dir (name);
20547         });
20548
20549       /* Read file name table.  */
20550       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20551                               &cu->header,
20552                               [] (struct line_header *header, const char *name,
20553                                   dir_index d_index, unsigned int mod_time,
20554                                   unsigned int length)
20555         {
20556           header->add_file_name (name, d_index, mod_time, length);
20557         });
20558     }
20559   else
20560     {
20561       /* Read directory table.  */
20562       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20563         {
20564           line_ptr += bytes_read;
20565           lh->add_include_dir (cur_dir);
20566         }
20567       line_ptr += bytes_read;
20568
20569       /* Read file name table.  */
20570       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20571         {
20572           unsigned int mod_time, length;
20573           dir_index d_index;
20574
20575           line_ptr += bytes_read;
20576           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20577           line_ptr += bytes_read;
20578           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20579           line_ptr += bytes_read;
20580           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20581           line_ptr += bytes_read;
20582
20583           lh->add_file_name (cur_file, d_index, mod_time, length);
20584         }
20585       line_ptr += bytes_read;
20586     }
20587   lh->statement_program_start = line_ptr;
20588
20589   if (line_ptr > (section->buffer + section->size))
20590     complaint (_("line number info header doesn't "
20591                  "fit in `.debug_line' section"));
20592
20593   return lh;
20594 }
20595
20596 /* Subroutine of dwarf_decode_lines to simplify it.
20597    Return the file name of the psymtab for included file FILE_INDEX
20598    in line header LH of PST.
20599    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20600    If space for the result is malloc'd, *NAME_HOLDER will be set.
20601    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20602
20603 static const char *
20604 psymtab_include_file_name (const struct line_header *lh, int file_index,
20605                            const struct partial_symtab *pst,
20606                            const char *comp_dir,
20607                            gdb::unique_xmalloc_ptr<char> *name_holder)
20608 {
20609   const file_entry &fe = lh->file_names[file_index];
20610   const char *include_name = fe.name;
20611   const char *include_name_to_compare = include_name;
20612   const char *pst_filename;
20613   int file_is_pst;
20614
20615   const char *dir_name = fe.include_dir (lh);
20616
20617   gdb::unique_xmalloc_ptr<char> hold_compare;
20618   if (!IS_ABSOLUTE_PATH (include_name)
20619       && (dir_name != NULL || comp_dir != NULL))
20620     {
20621       /* Avoid creating a duplicate psymtab for PST.
20622          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20623          Before we do the comparison, however, we need to account
20624          for DIR_NAME and COMP_DIR.
20625          First prepend dir_name (if non-NULL).  If we still don't
20626          have an absolute path prepend comp_dir (if non-NULL).
20627          However, the directory we record in the include-file's
20628          psymtab does not contain COMP_DIR (to match the
20629          corresponding symtab(s)).
20630
20631          Example:
20632
20633          bash$ cd /tmp
20634          bash$ gcc -g ./hello.c
20635          include_name = "hello.c"
20636          dir_name = "."
20637          DW_AT_comp_dir = comp_dir = "/tmp"
20638          DW_AT_name = "./hello.c"
20639
20640       */
20641
20642       if (dir_name != NULL)
20643         {
20644           name_holder->reset (concat (dir_name, SLASH_STRING,
20645                                       include_name, (char *) NULL));
20646           include_name = name_holder->get ();
20647           include_name_to_compare = include_name;
20648         }
20649       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20650         {
20651           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20652                                       include_name, (char *) NULL));
20653           include_name_to_compare = hold_compare.get ();
20654         }
20655     }
20656
20657   pst_filename = pst->filename;
20658   gdb::unique_xmalloc_ptr<char> copied_name;
20659   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20660     {
20661       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20662                                  pst_filename, (char *) NULL));
20663       pst_filename = copied_name.get ();
20664     }
20665
20666   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20667
20668   if (file_is_pst)
20669     return NULL;
20670   return include_name;
20671 }
20672
20673 /* State machine to track the state of the line number program.  */
20674
20675 class lnp_state_machine
20676 {
20677 public:
20678   /* Initialize a machine state for the start of a line number
20679      program.  */
20680   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20681                      bool record_lines_p);
20682
20683   file_entry *current_file ()
20684   {
20685     /* lh->file_names is 0-based, but the file name numbers in the
20686        statement program are 1-based.  */
20687     return m_line_header->file_name_at (m_file);
20688   }
20689
20690   /* Record the line in the state machine.  END_SEQUENCE is true if
20691      we're processing the end of a sequence.  */
20692   void record_line (bool end_sequence);
20693
20694   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20695      nop-out rest of the lines in this sequence.  */
20696   void check_line_address (struct dwarf2_cu *cu,
20697                            const gdb_byte *line_ptr,
20698                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20699
20700   void handle_set_discriminator (unsigned int discriminator)
20701   {
20702     m_discriminator = discriminator;
20703     m_line_has_non_zero_discriminator |= discriminator != 0;
20704   }
20705
20706   /* Handle DW_LNE_set_address.  */
20707   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20708   {
20709     m_op_index = 0;
20710     address += baseaddr;
20711     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20712   }
20713
20714   /* Handle DW_LNS_advance_pc.  */
20715   void handle_advance_pc (CORE_ADDR adjust);
20716
20717   /* Handle a special opcode.  */
20718   void handle_special_opcode (unsigned char op_code);
20719
20720   /* Handle DW_LNS_advance_line.  */
20721   void handle_advance_line (int line_delta)
20722   {
20723     advance_line (line_delta);
20724   }
20725
20726   /* Handle DW_LNS_set_file.  */
20727   void handle_set_file (file_name_index file);
20728
20729   /* Handle DW_LNS_negate_stmt.  */
20730   void handle_negate_stmt ()
20731   {
20732     m_is_stmt = !m_is_stmt;
20733   }
20734
20735   /* Handle DW_LNS_const_add_pc.  */
20736   void handle_const_add_pc ();
20737
20738   /* Handle DW_LNS_fixed_advance_pc.  */
20739   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20740   {
20741     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20742     m_op_index = 0;
20743   }
20744
20745   /* Handle DW_LNS_copy.  */
20746   void handle_copy ()
20747   {
20748     record_line (false);
20749     m_discriminator = 0;
20750   }
20751
20752   /* Handle DW_LNE_end_sequence.  */
20753   void handle_end_sequence ()
20754   {
20755     m_currently_recording_lines = true;
20756   }
20757
20758 private:
20759   /* Advance the line by LINE_DELTA.  */
20760   void advance_line (int line_delta)
20761   {
20762     m_line += line_delta;
20763
20764     if (line_delta != 0)
20765       m_line_has_non_zero_discriminator = m_discriminator != 0;
20766   }
20767
20768   struct dwarf2_cu *m_cu;
20769
20770   gdbarch *m_gdbarch;
20771
20772   /* True if we're recording lines.
20773      Otherwise we're building partial symtabs and are just interested in
20774      finding include files mentioned by the line number program.  */
20775   bool m_record_lines_p;
20776
20777   /* The line number header.  */
20778   line_header *m_line_header;
20779
20780   /* These are part of the standard DWARF line number state machine,
20781      and initialized according to the DWARF spec.  */
20782
20783   unsigned char m_op_index = 0;
20784   /* The line table index (1-based) of the current file.  */
20785   file_name_index m_file = (file_name_index) 1;
20786   unsigned int m_line = 1;
20787
20788   /* These are initialized in the constructor.  */
20789
20790   CORE_ADDR m_address;
20791   bool m_is_stmt;
20792   unsigned int m_discriminator;
20793
20794   /* Additional bits of state we need to track.  */
20795
20796   /* The last file that we called dwarf2_start_subfile for.
20797      This is only used for TLLs.  */
20798   unsigned int m_last_file = 0;
20799   /* The last file a line number was recorded for.  */
20800   struct subfile *m_last_subfile = NULL;
20801
20802   /* When true, record the lines we decode.  */
20803   bool m_currently_recording_lines = false;
20804
20805   /* The last line number that was recorded, used to coalesce
20806      consecutive entries for the same line.  This can happen, for
20807      example, when discriminators are present.  PR 17276.  */
20808   unsigned int m_last_line = 0;
20809   bool m_line_has_non_zero_discriminator = false;
20810 };
20811
20812 void
20813 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20814 {
20815   CORE_ADDR addr_adj = (((m_op_index + adjust)
20816                          / m_line_header->maximum_ops_per_instruction)
20817                         * m_line_header->minimum_instruction_length);
20818   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20819   m_op_index = ((m_op_index + adjust)
20820                 % m_line_header->maximum_ops_per_instruction);
20821 }
20822
20823 void
20824 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20825 {
20826   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20827   CORE_ADDR addr_adj = (((m_op_index
20828                           + (adj_opcode / m_line_header->line_range))
20829                          / m_line_header->maximum_ops_per_instruction)
20830                         * m_line_header->minimum_instruction_length);
20831   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20832   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20833                 % m_line_header->maximum_ops_per_instruction);
20834
20835   int line_delta = (m_line_header->line_base
20836                     + (adj_opcode % m_line_header->line_range));
20837   advance_line (line_delta);
20838   record_line (false);
20839   m_discriminator = 0;
20840 }
20841
20842 void
20843 lnp_state_machine::handle_set_file (file_name_index file)
20844 {
20845   m_file = file;
20846
20847   const file_entry *fe = current_file ();
20848   if (fe == NULL)
20849     dwarf2_debug_line_missing_file_complaint ();
20850   else if (m_record_lines_p)
20851     {
20852       const char *dir = fe->include_dir (m_line_header);
20853
20854       m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20855       m_line_has_non_zero_discriminator = m_discriminator != 0;
20856       dwarf2_start_subfile (m_cu, fe->name, dir);
20857     }
20858 }
20859
20860 void
20861 lnp_state_machine::handle_const_add_pc ()
20862 {
20863   CORE_ADDR adjust
20864     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20865
20866   CORE_ADDR addr_adj
20867     = (((m_op_index + adjust)
20868         / m_line_header->maximum_ops_per_instruction)
20869        * m_line_header->minimum_instruction_length);
20870
20871   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20872   m_op_index = ((m_op_index + adjust)
20873                 % m_line_header->maximum_ops_per_instruction);
20874 }
20875
20876 /* Return non-zero if we should add LINE to the line number table.
20877    LINE is the line to add, LAST_LINE is the last line that was added,
20878    LAST_SUBFILE is the subfile for LAST_LINE.
20879    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20880    had a non-zero discriminator.
20881
20882    We have to be careful in the presence of discriminators.
20883    E.g., for this line:
20884
20885      for (i = 0; i < 100000; i++);
20886
20887    clang can emit four line number entries for that one line,
20888    each with a different discriminator.
20889    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20890
20891    However, we want gdb to coalesce all four entries into one.
20892    Otherwise the user could stepi into the middle of the line and
20893    gdb would get confused about whether the pc really was in the
20894    middle of the line.
20895
20896    Things are further complicated by the fact that two consecutive
20897    line number entries for the same line is a heuristic used by gcc
20898    to denote the end of the prologue.  So we can't just discard duplicate
20899    entries, we have to be selective about it.  The heuristic we use is
20900    that we only collapse consecutive entries for the same line if at least
20901    one of those entries has a non-zero discriminator.  PR 17276.
20902
20903    Note: Addresses in the line number state machine can never go backwards
20904    within one sequence, thus this coalescing is ok.  */
20905
20906 static int
20907 dwarf_record_line_p (struct dwarf2_cu *cu,
20908                      unsigned int line, unsigned int last_line,
20909                      int line_has_non_zero_discriminator,
20910                      struct subfile *last_subfile)
20911 {
20912   if (cu->get_builder ()->get_current_subfile () != last_subfile)
20913     return 1;
20914   if (line != last_line)
20915     return 1;
20916   /* Same line for the same file that we've seen already.
20917      As a last check, for pr 17276, only record the line if the line
20918      has never had a non-zero discriminator.  */
20919   if (!line_has_non_zero_discriminator)
20920     return 1;
20921   return 0;
20922 }
20923
20924 /* Use the CU's builder to record line number LINE beginning at
20925    address ADDRESS in the line table of subfile SUBFILE.  */
20926
20927 static void
20928 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20929                      unsigned int line, CORE_ADDR address,
20930                      struct dwarf2_cu *cu)
20931 {
20932   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20933
20934   if (dwarf_line_debug)
20935     {
20936       fprintf_unfiltered (gdb_stdlog,
20937                           "Recording line %u, file %s, address %s\n",
20938                           line, lbasename (subfile->name),
20939                           paddress (gdbarch, address));
20940     }
20941
20942   if (cu != nullptr)
20943     cu->get_builder ()->record_line (subfile, line, addr);
20944 }
20945
20946 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20947    Mark the end of a set of line number records.
20948    The arguments are the same as for dwarf_record_line_1.
20949    If SUBFILE is NULL the request is ignored.  */
20950
20951 static void
20952 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20953                    CORE_ADDR address, struct dwarf2_cu *cu)
20954 {
20955   if (subfile == NULL)
20956     return;
20957
20958   if (dwarf_line_debug)
20959     {
20960       fprintf_unfiltered (gdb_stdlog,
20961                           "Finishing current line, file %s, address %s\n",
20962                           lbasename (subfile->name),
20963                           paddress (gdbarch, address));
20964     }
20965
20966   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20967 }
20968
20969 void
20970 lnp_state_machine::record_line (bool end_sequence)
20971 {
20972   if (dwarf_line_debug)
20973     {
20974       fprintf_unfiltered (gdb_stdlog,
20975                           "Processing actual line %u: file %u,"
20976                           " address %s, is_stmt %u, discrim %u\n",
20977                           m_line, to_underlying (m_file),
20978                           paddress (m_gdbarch, m_address),
20979                           m_is_stmt, m_discriminator);
20980     }
20981
20982   file_entry *fe = current_file ();
20983
20984   if (fe == NULL)
20985     dwarf2_debug_line_missing_file_complaint ();
20986   /* For now we ignore lines not starting on an instruction boundary.
20987      But not when processing end_sequence for compatibility with the
20988      previous version of the code.  */
20989   else if (m_op_index == 0 || end_sequence)
20990     {
20991       fe->included_p = 1;
20992       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20993         {
20994           if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
20995               || end_sequence)
20996             {
20997               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20998                                  m_currently_recording_lines ? m_cu : nullptr);
20999             }
21000
21001           if (!end_sequence)
21002             {
21003               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
21004                                        m_line_has_non_zero_discriminator,
21005                                        m_last_subfile))
21006                 {
21007                   buildsym_compunit *builder = m_cu->get_builder ();
21008                   dwarf_record_line_1 (m_gdbarch,
21009                                        builder->get_current_subfile (),
21010                                        m_line, m_address,
21011                                        m_currently_recording_lines ? m_cu : nullptr);
21012                 }
21013               m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
21014               m_last_line = m_line;
21015             }
21016         }
21017     }
21018 }
21019
21020 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
21021                                       line_header *lh, bool record_lines_p)
21022 {
21023   m_cu = cu;
21024   m_gdbarch = arch;
21025   m_record_lines_p = record_lines_p;
21026   m_line_header = lh;
21027
21028   m_currently_recording_lines = true;
21029
21030   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
21031      was a line entry for it so that the backend has a chance to adjust it
21032      and also record it in case it needs it.  This is currently used by MIPS
21033      code, cf. `mips_adjust_dwarf2_line'.  */
21034   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
21035   m_is_stmt = lh->default_is_stmt;
21036   m_discriminator = 0;
21037 }
21038
21039 void
21040 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
21041                                        const gdb_byte *line_ptr,
21042                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
21043 {
21044   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
21045      the pc range of the CU.  However, we restrict the test to only ADDRESS
21046      values of zero to preserve GDB's previous behaviour which is to handle
21047      the specific case of a function being GC'd by the linker.  */
21048
21049   if (address == 0 && address < unrelocated_lowpc)
21050     {
21051       /* This line table is for a function which has been
21052          GCd by the linker.  Ignore it.  PR gdb/12528 */
21053
21054       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21055       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
21056
21057       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
21058                  line_offset, objfile_name (objfile));
21059       m_currently_recording_lines = false;
21060       /* Note: m_currently_recording_lines is left as false until we see
21061          DW_LNE_end_sequence.  */
21062     }
21063 }
21064
21065 /* Subroutine of dwarf_decode_lines to simplify it.
21066    Process the line number information in LH.
21067    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
21068    program in order to set included_p for every referenced header.  */
21069
21070 static void
21071 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
21072                       const int decode_for_pst_p, CORE_ADDR lowpc)
21073 {
21074   const gdb_byte *line_ptr, *extended_end;
21075   const gdb_byte *line_end;
21076   unsigned int bytes_read, extended_len;
21077   unsigned char op_code, extended_op;
21078   CORE_ADDR baseaddr;
21079   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21080   bfd *abfd = objfile->obfd;
21081   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21082   /* True if we're recording line info (as opposed to building partial
21083      symtabs and just interested in finding include files mentioned by
21084      the line number program).  */
21085   bool record_lines_p = !decode_for_pst_p;
21086
21087   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21088
21089   line_ptr = lh->statement_program_start;
21090   line_end = lh->statement_program_end;
21091
21092   /* Read the statement sequences until there's nothing left.  */
21093   while (line_ptr < line_end)
21094     {
21095       /* The DWARF line number program state machine.  Reset the state
21096          machine at the start of each sequence.  */
21097       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21098       bool end_sequence = false;
21099
21100       if (record_lines_p)
21101         {
21102           /* Start a subfile for the current file of the state
21103              machine.  */
21104           const file_entry *fe = state_machine.current_file ();
21105
21106           if (fe != NULL)
21107             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21108         }
21109
21110       /* Decode the table.  */
21111       while (line_ptr < line_end && !end_sequence)
21112         {
21113           op_code = read_1_byte (abfd, line_ptr);
21114           line_ptr += 1;
21115
21116           if (op_code >= lh->opcode_base)
21117             {
21118               /* Special opcode.  */
21119               state_machine.handle_special_opcode (op_code);
21120             }
21121           else switch (op_code)
21122             {
21123             case DW_LNS_extended_op:
21124               extended_len = read_unsigned_leb128 (abfd, line_ptr,
21125                                                    &bytes_read);
21126               line_ptr += bytes_read;
21127               extended_end = line_ptr + extended_len;
21128               extended_op = read_1_byte (abfd, line_ptr);
21129               line_ptr += 1;
21130               switch (extended_op)
21131                 {
21132                 case DW_LNE_end_sequence:
21133                   state_machine.handle_end_sequence ();
21134                   end_sequence = true;
21135                   break;
21136                 case DW_LNE_set_address:
21137                   {
21138                     CORE_ADDR address
21139                       = read_address (abfd, line_ptr, cu, &bytes_read);
21140                     line_ptr += bytes_read;
21141
21142                     state_machine.check_line_address (cu, line_ptr,
21143                                                       lowpc - baseaddr, address);
21144                     state_machine.handle_set_address (baseaddr, address);
21145                   }
21146                   break;
21147                 case DW_LNE_define_file:
21148                   {
21149                     const char *cur_file;
21150                     unsigned int mod_time, length;
21151                     dir_index dindex;
21152
21153                     cur_file = read_direct_string (abfd, line_ptr,
21154                                                    &bytes_read);
21155                     line_ptr += bytes_read;
21156                     dindex = (dir_index)
21157                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21158                     line_ptr += bytes_read;
21159                     mod_time =
21160                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21161                     line_ptr += bytes_read;
21162                     length =
21163                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21164                     line_ptr += bytes_read;
21165                     lh->add_file_name (cur_file, dindex, mod_time, length);
21166                   }
21167                   break;
21168                 case DW_LNE_set_discriminator:
21169                   {
21170                     /* The discriminator is not interesting to the
21171                        debugger; just ignore it.  We still need to
21172                        check its value though:
21173                        if there are consecutive entries for the same
21174                        (non-prologue) line we want to coalesce them.
21175                        PR 17276.  */
21176                     unsigned int discr
21177                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21178                     line_ptr += bytes_read;
21179
21180                     state_machine.handle_set_discriminator (discr);
21181                   }
21182                   break;
21183                 default:
21184                   complaint (_("mangled .debug_line section"));
21185                   return;
21186                 }
21187               /* Make sure that we parsed the extended op correctly.  If e.g.
21188                  we expected a different address size than the producer used,
21189                  we may have read the wrong number of bytes.  */
21190               if (line_ptr != extended_end)
21191                 {
21192                   complaint (_("mangled .debug_line section"));
21193                   return;
21194                 }
21195               break;
21196             case DW_LNS_copy:
21197               state_machine.handle_copy ();
21198               break;
21199             case DW_LNS_advance_pc:
21200               {
21201                 CORE_ADDR adjust
21202                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21203                 line_ptr += bytes_read;
21204
21205                 state_machine.handle_advance_pc (adjust);
21206               }
21207               break;
21208             case DW_LNS_advance_line:
21209               {
21210                 int line_delta
21211                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21212                 line_ptr += bytes_read;
21213
21214                 state_machine.handle_advance_line (line_delta);
21215               }
21216               break;
21217             case DW_LNS_set_file:
21218               {
21219                 file_name_index file
21220                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21221                                                             &bytes_read);
21222                 line_ptr += bytes_read;
21223
21224                 state_machine.handle_set_file (file);
21225               }
21226               break;
21227             case DW_LNS_set_column:
21228               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21229               line_ptr += bytes_read;
21230               break;
21231             case DW_LNS_negate_stmt:
21232               state_machine.handle_negate_stmt ();
21233               break;
21234             case DW_LNS_set_basic_block:
21235               break;
21236             /* Add to the address register of the state machine the
21237                address increment value corresponding to special opcode
21238                255.  I.e., this value is scaled by the minimum
21239                instruction length since special opcode 255 would have
21240                scaled the increment.  */
21241             case DW_LNS_const_add_pc:
21242               state_machine.handle_const_add_pc ();
21243               break;
21244             case DW_LNS_fixed_advance_pc:
21245               {
21246                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21247                 line_ptr += 2;
21248
21249                 state_machine.handle_fixed_advance_pc (addr_adj);
21250               }
21251               break;
21252             default:
21253               {
21254                 /* Unknown standard opcode, ignore it.  */
21255                 int i;
21256
21257                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21258                   {
21259                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21260                     line_ptr += bytes_read;
21261                   }
21262               }
21263             }
21264         }
21265
21266       if (!end_sequence)
21267         dwarf2_debug_line_missing_end_sequence_complaint ();
21268
21269       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21270          in which case we still finish recording the last line).  */
21271       state_machine.record_line (true);
21272     }
21273 }
21274
21275 /* Decode the Line Number Program (LNP) for the given line_header
21276    structure and CU.  The actual information extracted and the type
21277    of structures created from the LNP depends on the value of PST.
21278
21279    1. If PST is NULL, then this procedure uses the data from the program
21280       to create all necessary symbol tables, and their linetables.
21281
21282    2. If PST is not NULL, this procedure reads the program to determine
21283       the list of files included by the unit represented by PST, and
21284       builds all the associated partial symbol tables.
21285
21286    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21287    It is used for relative paths in the line table.
21288    NOTE: When processing partial symtabs (pst != NULL),
21289    comp_dir == pst->dirname.
21290
21291    NOTE: It is important that psymtabs have the same file name (via strcmp)
21292    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21293    symtab we don't use it in the name of the psymtabs we create.
21294    E.g. expand_line_sal requires this when finding psymtabs to expand.
21295    A good testcase for this is mb-inline.exp.
21296
21297    LOWPC is the lowest address in CU (or 0 if not known).
21298
21299    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21300    for its PC<->lines mapping information.  Otherwise only the filename
21301    table is read in.  */
21302
21303 static void
21304 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21305                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21306                     CORE_ADDR lowpc, int decode_mapping)
21307 {
21308   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21309   const int decode_for_pst_p = (pst != NULL);
21310
21311   if (decode_mapping)
21312     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21313
21314   if (decode_for_pst_p)
21315     {
21316       int file_index;
21317
21318       /* Now that we're done scanning the Line Header Program, we can
21319          create the psymtab of each included file.  */
21320       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21321         if (lh->file_names[file_index].included_p == 1)
21322           {
21323             gdb::unique_xmalloc_ptr<char> name_holder;
21324             const char *include_name =
21325               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21326                                          &name_holder);
21327             if (include_name != NULL)
21328               dwarf2_create_include_psymtab (include_name, pst, objfile);
21329           }
21330     }
21331   else
21332     {
21333       /* Make sure a symtab is created for every file, even files
21334          which contain only variables (i.e. no code with associated
21335          line numbers).  */
21336       buildsym_compunit *builder = cu->get_builder ();
21337       struct compunit_symtab *cust = builder->get_compunit_symtab ();
21338       int i;
21339
21340       for (i = 0; i < lh->file_names.size (); i++)
21341         {
21342           file_entry &fe = lh->file_names[i];
21343
21344           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21345
21346           if (builder->get_current_subfile ()->symtab == NULL)
21347             {
21348               builder->get_current_subfile ()->symtab
21349                 = allocate_symtab (cust,
21350                                    builder->get_current_subfile ()->name);
21351             }
21352           fe.symtab = builder->get_current_subfile ()->symtab;
21353         }
21354     }
21355 }
21356
21357 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21358    DIRNAME the name of the source directory which contains FILENAME
21359    or NULL if not known.
21360    This routine tries to keep line numbers from identical absolute and
21361    relative file names in a common subfile.
21362
21363    Using the `list' example from the GDB testsuite, which resides in
21364    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21365    of /srcdir/list0.c yields the following debugging information for list0.c:
21366
21367    DW_AT_name:          /srcdir/list0.c
21368    DW_AT_comp_dir:      /compdir
21369    files.files[0].name: list0.h
21370    files.files[0].dir:  /srcdir
21371    files.files[1].name: list0.c
21372    files.files[1].dir:  /srcdir
21373
21374    The line number information for list0.c has to end up in a single
21375    subfile, so that `break /srcdir/list0.c:1' works as expected.
21376    start_subfile will ensure that this happens provided that we pass the
21377    concatenation of files.files[1].dir and files.files[1].name as the
21378    subfile's name.  */
21379
21380 static void
21381 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21382                       const char *dirname)
21383 {
21384   char *copy = NULL;
21385
21386   /* In order not to lose the line information directory,
21387      we concatenate it to the filename when it makes sense.
21388      Note that the Dwarf3 standard says (speaking of filenames in line
21389      information): ``The directory index is ignored for file names
21390      that represent full path names''.  Thus ignoring dirname in the
21391      `else' branch below isn't an issue.  */
21392
21393   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21394     {
21395       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21396       filename = copy;
21397     }
21398
21399   cu->get_builder ()->start_subfile (filename);
21400
21401   if (copy != NULL)
21402     xfree (copy);
21403 }
21404
21405 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21406    buildsym_compunit constructor.  */
21407
21408 struct compunit_symtab *
21409 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21410                          CORE_ADDR low_pc)
21411 {
21412   gdb_assert (m_builder == nullptr);
21413
21414   m_builder.reset (new struct buildsym_compunit
21415                    (per_cu->dwarf2_per_objfile->objfile,
21416                     name, comp_dir, language, low_pc));
21417
21418   list_in_scope = get_builder ()->get_file_symbols ();
21419
21420   get_builder ()->record_debugformat ("DWARF 2");
21421   get_builder ()->record_producer (producer);
21422
21423   processing_has_namespace_info = false;
21424
21425   return get_builder ()->get_compunit_symtab ();
21426 }
21427
21428 static void
21429 var_decode_location (struct attribute *attr, struct symbol *sym,
21430                      struct dwarf2_cu *cu)
21431 {
21432   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21433   struct comp_unit_head *cu_header = &cu->header;
21434
21435   /* NOTE drow/2003-01-30: There used to be a comment and some special
21436      code here to turn a symbol with DW_AT_external and a
21437      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21438      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21439      with some versions of binutils) where shared libraries could have
21440      relocations against symbols in their debug information - the
21441      minimal symbol would have the right address, but the debug info
21442      would not.  It's no longer necessary, because we will explicitly
21443      apply relocations when we read in the debug information now.  */
21444
21445   /* A DW_AT_location attribute with no contents indicates that a
21446      variable has been optimized away.  */
21447   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21448     {
21449       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21450       return;
21451     }
21452
21453   /* Handle one degenerate form of location expression specially, to
21454      preserve GDB's previous behavior when section offsets are
21455      specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
21456      DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
21457
21458   if (attr_form_is_block (attr)
21459       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21460            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21461           || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21462                || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
21463               && (DW_BLOCK (attr)->size
21464                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21465     {
21466       unsigned int dummy;
21467
21468       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21469         SYMBOL_VALUE_ADDRESS (sym) =
21470           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21471       else
21472         SYMBOL_VALUE_ADDRESS (sym) =
21473           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21474       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21475       fixup_symbol_section (sym, objfile);
21476       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21477                                               SYMBOL_SECTION (sym));
21478       return;
21479     }
21480
21481   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21482      expression evaluator, and use LOC_COMPUTED only when necessary
21483      (i.e. when the value of a register or memory location is
21484      referenced, or a thread-local block, etc.).  Then again, it might
21485      not be worthwhile.  I'm assuming that it isn't unless performance
21486      or memory numbers show me otherwise.  */
21487
21488   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21489
21490   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21491     cu->has_loclist = true;
21492 }
21493
21494 /* Given a pointer to a DWARF information entry, figure out if we need
21495    to make a symbol table entry for it, and if so, create a new entry
21496    and return a pointer to it.
21497    If TYPE is NULL, determine symbol type from the die, otherwise
21498    used the passed type.
21499    If SPACE is not NULL, use it to hold the new symbol.  If it is
21500    NULL, allocate a new symbol on the objfile's obstack.  */
21501
21502 static struct symbol *
21503 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21504             struct symbol *space)
21505 {
21506   struct dwarf2_per_objfile *dwarf2_per_objfile
21507     = cu->per_cu->dwarf2_per_objfile;
21508   struct objfile *objfile = dwarf2_per_objfile->objfile;
21509   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21510   struct symbol *sym = NULL;
21511   const char *name;
21512   struct attribute *attr = NULL;
21513   struct attribute *attr2 = NULL;
21514   CORE_ADDR baseaddr;
21515   struct pending **list_to_add = NULL;
21516
21517   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21518
21519   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21520
21521   name = dwarf2_name (die, cu);
21522   if (name)
21523     {
21524       const char *linkagename;
21525       int suppress_add = 0;
21526
21527       if (space)
21528         sym = space;
21529       else
21530         sym = allocate_symbol (objfile);
21531       OBJSTAT (objfile, n_syms++);
21532
21533       /* Cache this symbol's name and the name's demangled form (if any).  */
21534       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21535       linkagename = dwarf2_physname (name, die, cu);
21536       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21537
21538       /* Fortran does not have mangling standard and the mangling does differ
21539          between gfortran, iFort etc.  */
21540       if (cu->language == language_fortran
21541           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21542         symbol_set_demangled_name (&(sym->ginfo),
21543                                    dwarf2_full_name (name, die, cu),
21544                                    NULL);
21545
21546       /* Default assumptions.
21547          Use the passed type or decode it from the die.  */
21548       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21549       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21550       if (type != NULL)
21551         SYMBOL_TYPE (sym) = type;
21552       else
21553         SYMBOL_TYPE (sym) = die_type (die, cu);
21554       attr = dwarf2_attr (die,
21555                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21556                           cu);
21557       if (attr)
21558         {
21559           SYMBOL_LINE (sym) = DW_UNSND (attr);
21560         }
21561
21562       attr = dwarf2_attr (die,
21563                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21564                           cu);
21565       if (attr)
21566         {
21567           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21568           struct file_entry *fe;
21569
21570           if (cu->line_header != NULL)
21571             fe = cu->line_header->file_name_at (file_index);
21572           else
21573             fe = NULL;
21574
21575           if (fe == NULL)
21576             complaint (_("file index out of range"));
21577           else
21578             symbol_set_symtab (sym, fe->symtab);
21579         }
21580
21581       switch (die->tag)
21582         {
21583         case DW_TAG_label:
21584           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21585           if (attr)
21586             {
21587               CORE_ADDR addr;
21588
21589               addr = attr_value_as_address (attr);
21590               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21591               SYMBOL_VALUE_ADDRESS (sym) = addr;
21592             }
21593           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21594           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21595           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21596           add_symbol_to_list (sym, cu->list_in_scope);
21597           break;
21598         case DW_TAG_subprogram:
21599           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21600              finish_block.  */
21601           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21602           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21603           if ((attr2 && (DW_UNSND (attr2) != 0))
21604               || cu->language == language_ada)
21605             {
21606               /* Subprograms marked external are stored as a global symbol.
21607                  Ada subprograms, whether marked external or not, are always
21608                  stored as a global symbol, because we want to be able to
21609                  access them globally.  For instance, we want to be able
21610                  to break on a nested subprogram without having to
21611                  specify the context.  */
21612               list_to_add = cu->get_builder ()->get_global_symbols ();
21613             }
21614           else
21615             {
21616               list_to_add = cu->list_in_scope;
21617             }
21618           break;
21619         case DW_TAG_inlined_subroutine:
21620           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21621              finish_block.  */
21622           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21623           SYMBOL_INLINED (sym) = 1;
21624           list_to_add = cu->list_in_scope;
21625           break;
21626         case DW_TAG_template_value_param:
21627           suppress_add = 1;
21628           /* Fall through.  */
21629         case DW_TAG_constant:
21630         case DW_TAG_variable:
21631         case DW_TAG_member:
21632           /* Compilation with minimal debug info may result in
21633              variables with missing type entries.  Change the
21634              misleading `void' type to something sensible.  */
21635           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21636             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21637
21638           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21639           /* In the case of DW_TAG_member, we should only be called for
21640              static const members.  */
21641           if (die->tag == DW_TAG_member)
21642             {
21643               /* dwarf2_add_field uses die_is_declaration,
21644                  so we do the same.  */
21645               gdb_assert (die_is_declaration (die, cu));
21646               gdb_assert (attr);
21647             }
21648           if (attr)
21649             {
21650               dwarf2_const_value (attr, sym, cu);
21651               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21652               if (!suppress_add)
21653                 {
21654                   if (attr2 && (DW_UNSND (attr2) != 0))
21655                     list_to_add = cu->get_builder ()->get_global_symbols ();
21656                   else
21657                     list_to_add = cu->list_in_scope;
21658                 }
21659               break;
21660             }
21661           attr = dwarf2_attr (die, DW_AT_location, cu);
21662           if (attr)
21663             {
21664               var_decode_location (attr, sym, cu);
21665               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21666
21667               /* Fortran explicitly imports any global symbols to the local
21668                  scope by DW_TAG_common_block.  */
21669               if (cu->language == language_fortran && die->parent
21670                   && die->parent->tag == DW_TAG_common_block)
21671                 attr2 = NULL;
21672
21673               if (SYMBOL_CLASS (sym) == LOC_STATIC
21674                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21675                   && !dwarf2_per_objfile->has_section_at_zero)
21676                 {
21677                   /* When a static variable is eliminated by the linker,
21678                      the corresponding debug information is not stripped
21679                      out, but the variable address is set to null;
21680                      do not add such variables into symbol table.  */
21681                 }
21682               else if (attr2 && (DW_UNSND (attr2) != 0))
21683                 {
21684                   /* Workaround gfortran PR debug/40040 - it uses
21685                      DW_AT_location for variables in -fPIC libraries which may
21686                      get overriden by other libraries/executable and get
21687                      a different address.  Resolve it by the minimal symbol
21688                      which may come from inferior's executable using copy
21689                      relocation.  Make this workaround only for gfortran as for
21690                      other compilers GDB cannot guess the minimal symbol
21691                      Fortran mangling kind.  */
21692                   if (cu->language == language_fortran && die->parent
21693                       && die->parent->tag == DW_TAG_module
21694                       && cu->producer
21695                       && startswith (cu->producer, "GNU Fortran"))
21696                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21697
21698                   /* A variable with DW_AT_external is never static,
21699                      but it may be block-scoped.  */
21700                   list_to_add
21701                     = ((cu->list_in_scope
21702                         == cu->get_builder ()->get_file_symbols ())
21703                        ? cu->get_builder ()->get_global_symbols ()
21704                        : cu->list_in_scope);
21705                 }
21706               else
21707                 list_to_add = cu->list_in_scope;
21708             }
21709           else
21710             {
21711               /* We do not know the address of this symbol.
21712                  If it is an external symbol and we have type information
21713                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21714                  The address of the variable will then be determined from
21715                  the minimal symbol table whenever the variable is
21716                  referenced.  */
21717               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21718
21719               /* Fortran explicitly imports any global symbols to the local
21720                  scope by DW_TAG_common_block.  */
21721               if (cu->language == language_fortran && die->parent
21722                   && die->parent->tag == DW_TAG_common_block)
21723                 {
21724                   /* SYMBOL_CLASS doesn't matter here because
21725                      read_common_block is going to reset it.  */
21726                   if (!suppress_add)
21727                     list_to_add = cu->list_in_scope;
21728                 }
21729               else if (attr2 && (DW_UNSND (attr2) != 0)
21730                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21731                 {
21732                   /* A variable with DW_AT_external is never static, but it
21733                      may be block-scoped.  */
21734                   list_to_add
21735                     = ((cu->list_in_scope
21736                         == cu->get_builder ()->get_file_symbols ())
21737                        ? cu->get_builder ()->get_global_symbols ()
21738                        : cu->list_in_scope);
21739
21740                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21741                 }
21742               else if (!die_is_declaration (die, cu))
21743                 {
21744                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21745                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21746                   if (!suppress_add)
21747                     list_to_add = cu->list_in_scope;
21748                 }
21749             }
21750           break;
21751         case DW_TAG_formal_parameter:
21752           {
21753             /* If we are inside a function, mark this as an argument.  If
21754                not, we might be looking at an argument to an inlined function
21755                when we do not have enough information to show inlined frames;
21756                pretend it's a local variable in that case so that the user can
21757                still see it.  */
21758             struct context_stack *curr
21759               = cu->get_builder ()->get_current_context_stack ();
21760             if (curr != nullptr && curr->name != nullptr)
21761               SYMBOL_IS_ARGUMENT (sym) = 1;
21762             attr = dwarf2_attr (die, DW_AT_location, cu);
21763             if (attr)
21764               {
21765                 var_decode_location (attr, sym, cu);
21766               }
21767             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21768             if (attr)
21769               {
21770                 dwarf2_const_value (attr, sym, cu);
21771               }
21772
21773             list_to_add = cu->list_in_scope;
21774           }
21775           break;
21776         case DW_TAG_unspecified_parameters:
21777           /* From varargs functions; gdb doesn't seem to have any
21778              interest in this information, so just ignore it for now.
21779              (FIXME?) */
21780           break;
21781         case DW_TAG_template_type_param:
21782           suppress_add = 1;
21783           /* Fall through.  */
21784         case DW_TAG_class_type:
21785         case DW_TAG_interface_type:
21786         case DW_TAG_structure_type:
21787         case DW_TAG_union_type:
21788         case DW_TAG_set_type:
21789         case DW_TAG_enumeration_type:
21790           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21791           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21792
21793           {
21794             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21795                really ever be static objects: otherwise, if you try
21796                to, say, break of a class's method and you're in a file
21797                which doesn't mention that class, it won't work unless
21798                the check for all static symbols in lookup_symbol_aux
21799                saves you.  See the OtherFileClass tests in
21800                gdb.c++/namespace.exp.  */
21801
21802             if (!suppress_add)
21803               {
21804                 buildsym_compunit *builder = cu->get_builder ();
21805                 list_to_add
21806                   = (cu->list_in_scope == builder->get_file_symbols ()
21807                      && cu->language == language_cplus
21808                      ? builder->get_global_symbols ()
21809                      : cu->list_in_scope);
21810
21811                 /* The semantics of C++ state that "struct foo {
21812                    ... }" also defines a typedef for "foo".  */
21813                 if (cu->language == language_cplus
21814                     || cu->language == language_ada
21815                     || cu->language == language_d
21816                     || cu->language == language_rust)
21817                   {
21818                     /* The symbol's name is already allocated along
21819                        with this objfile, so we don't need to
21820                        duplicate it for the type.  */
21821                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21822                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21823                   }
21824               }
21825           }
21826           break;
21827         case DW_TAG_typedef:
21828           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21829           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21830           list_to_add = cu->list_in_scope;
21831           break;
21832         case DW_TAG_base_type:
21833         case DW_TAG_subrange_type:
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_enumerator:
21839           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21840           if (attr)
21841             {
21842               dwarf2_const_value (attr, sym, cu);
21843             }
21844           {
21845             /* NOTE: carlton/2003-11-10: See comment above in the
21846                DW_TAG_class_type, etc. block.  */
21847
21848             list_to_add
21849               = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21850                  && cu->language == language_cplus
21851                  ? cu->get_builder ()->get_global_symbols ()
21852                  : cu->list_in_scope);
21853           }
21854           break;
21855         case DW_TAG_imported_declaration:
21856         case DW_TAG_namespace:
21857           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21858           list_to_add = cu->get_builder ()->get_global_symbols ();
21859           break;
21860         case DW_TAG_module:
21861           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21862           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21863           list_to_add = cu->get_builder ()->get_global_symbols ();
21864           break;
21865         case DW_TAG_common_block:
21866           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21867           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21868           add_symbol_to_list (sym, cu->list_in_scope);
21869           break;
21870         default:
21871           /* Not a tag we recognize.  Hopefully we aren't processing
21872              trash data, but since we must specifically ignore things
21873              we don't recognize, there is nothing else we should do at
21874              this point.  */
21875           complaint (_("unsupported tag: '%s'"),
21876                      dwarf_tag_name (die->tag));
21877           break;
21878         }
21879
21880       if (suppress_add)
21881         {
21882           sym->hash_next = objfile->template_symbols;
21883           objfile->template_symbols = sym;
21884           list_to_add = NULL;
21885         }
21886
21887       if (list_to_add != NULL)
21888         add_symbol_to_list (sym, list_to_add);
21889
21890       /* For the benefit of old versions of GCC, check for anonymous
21891          namespaces based on the demangled name.  */
21892       if (!cu->processing_has_namespace_info
21893           && cu->language == language_cplus)
21894         cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21895     }
21896   return (sym);
21897 }
21898
21899 /* Given an attr with a DW_FORM_dataN value in host byte order,
21900    zero-extend it as appropriate for the symbol's type.  The DWARF
21901    standard (v4) is not entirely clear about the meaning of using
21902    DW_FORM_dataN for a constant with a signed type, where the type is
21903    wider than the data.  The conclusion of a discussion on the DWARF
21904    list was that this is unspecified.  We choose to always zero-extend
21905    because that is the interpretation long in use by GCC.  */
21906
21907 static gdb_byte *
21908 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21909                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21910 {
21911   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21912   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21913                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21914   LONGEST l = DW_UNSND (attr);
21915
21916   if (bits < sizeof (*value) * 8)
21917     {
21918       l &= ((LONGEST) 1 << bits) - 1;
21919       *value = l;
21920     }
21921   else if (bits == sizeof (*value) * 8)
21922     *value = l;
21923   else
21924     {
21925       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21926       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21927       return bytes;
21928     }
21929
21930   return NULL;
21931 }
21932
21933 /* Read a constant value from an attribute.  Either set *VALUE, or if
21934    the value does not fit in *VALUE, set *BYTES - either already
21935    allocated on the objfile obstack, or newly allocated on OBSTACK,
21936    or, set *BATON, if we translated the constant to a location
21937    expression.  */
21938
21939 static void
21940 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21941                          const char *name, struct obstack *obstack,
21942                          struct dwarf2_cu *cu,
21943                          LONGEST *value, const gdb_byte **bytes,
21944                          struct dwarf2_locexpr_baton **baton)
21945 {
21946   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21947   struct comp_unit_head *cu_header = &cu->header;
21948   struct dwarf_block *blk;
21949   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21950                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21951
21952   *value = 0;
21953   *bytes = NULL;
21954   *baton = NULL;
21955
21956   switch (attr->form)
21957     {
21958     case DW_FORM_addr:
21959     case DW_FORM_addrx:
21960     case DW_FORM_GNU_addr_index:
21961       {
21962         gdb_byte *data;
21963
21964         if (TYPE_LENGTH (type) != cu_header->addr_size)
21965           dwarf2_const_value_length_mismatch_complaint (name,
21966                                                         cu_header->addr_size,
21967                                                         TYPE_LENGTH (type));
21968         /* Symbols of this form are reasonably rare, so we just
21969            piggyback on the existing location code rather than writing
21970            a new implementation of symbol_computed_ops.  */
21971         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21972         (*baton)->per_cu = cu->per_cu;
21973         gdb_assert ((*baton)->per_cu);
21974
21975         (*baton)->size = 2 + cu_header->addr_size;
21976         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21977         (*baton)->data = data;
21978
21979         data[0] = DW_OP_addr;
21980         store_unsigned_integer (&data[1], cu_header->addr_size,
21981                                 byte_order, DW_ADDR (attr));
21982         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21983       }
21984       break;
21985     case DW_FORM_string:
21986     case DW_FORM_strp:
21987     case DW_FORM_strx:
21988     case DW_FORM_GNU_str_index:
21989     case DW_FORM_GNU_strp_alt:
21990       /* DW_STRING is already allocated on the objfile obstack, point
21991          directly to it.  */
21992       *bytes = (const gdb_byte *) DW_STRING (attr);
21993       break;
21994     case DW_FORM_block1:
21995     case DW_FORM_block2:
21996     case DW_FORM_block4:
21997     case DW_FORM_block:
21998     case DW_FORM_exprloc:
21999     case DW_FORM_data16:
22000       blk = DW_BLOCK (attr);
22001       if (TYPE_LENGTH (type) != blk->size)
22002         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
22003                                                       TYPE_LENGTH (type));
22004       *bytes = blk->data;
22005       break;
22006
22007       /* The DW_AT_const_value attributes are supposed to carry the
22008          symbol's value "represented as it would be on the target
22009          architecture."  By the time we get here, it's already been
22010          converted to host endianness, so we just need to sign- or
22011          zero-extend it as appropriate.  */
22012     case DW_FORM_data1:
22013       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
22014       break;
22015     case DW_FORM_data2:
22016       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
22017       break;
22018     case DW_FORM_data4:
22019       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
22020       break;
22021     case DW_FORM_data8:
22022       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
22023       break;
22024
22025     case DW_FORM_sdata:
22026     case DW_FORM_implicit_const:
22027       *value = DW_SND (attr);
22028       break;
22029
22030     case DW_FORM_udata:
22031       *value = DW_UNSND (attr);
22032       break;
22033
22034     default:
22035       complaint (_("unsupported const value attribute form: '%s'"),
22036                  dwarf_form_name (attr->form));
22037       *value = 0;
22038       break;
22039     }
22040 }
22041
22042
22043 /* Copy constant value from an attribute to a symbol.  */
22044
22045 static void
22046 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
22047                     struct dwarf2_cu *cu)
22048 {
22049   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22050   LONGEST value;
22051   const gdb_byte *bytes;
22052   struct dwarf2_locexpr_baton *baton;
22053
22054   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
22055                            SYMBOL_PRINT_NAME (sym),
22056                            &objfile->objfile_obstack, cu,
22057                            &value, &bytes, &baton);
22058
22059   if (baton != NULL)
22060     {
22061       SYMBOL_LOCATION_BATON (sym) = baton;
22062       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
22063     }
22064   else if (bytes != NULL)
22065      {
22066       SYMBOL_VALUE_BYTES (sym) = bytes;
22067       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
22068     }
22069   else
22070     {
22071       SYMBOL_VALUE (sym) = value;
22072       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
22073     }
22074 }
22075
22076 /* Return the type of the die in question using its DW_AT_type attribute.  */
22077
22078 static struct type *
22079 die_type (struct die_info *die, struct dwarf2_cu *cu)
22080 {
22081   struct attribute *type_attr;
22082
22083   type_attr = dwarf2_attr (die, DW_AT_type, cu);
22084   if (!type_attr)
22085     {
22086       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22087       /* A missing DW_AT_type represents a void type.  */
22088       return objfile_type (objfile)->builtin_void;
22089     }
22090
22091   return lookup_die_type (die, type_attr, cu);
22092 }
22093
22094 /* True iff CU's producer generates GNAT Ada auxiliary information
22095    that allows to find parallel types through that information instead
22096    of having to do expensive parallel lookups by type name.  */
22097
22098 static int
22099 need_gnat_info (struct dwarf2_cu *cu)
22100 {
22101   /* Assume that the Ada compiler was GNAT, which always produces
22102      the auxiliary information.  */
22103   return (cu->language == language_ada);
22104 }
22105
22106 /* Return the auxiliary type of the die in question using its
22107    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
22108    attribute is not present.  */
22109
22110 static struct type *
22111 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22112 {
22113   struct attribute *type_attr;
22114
22115   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22116   if (!type_attr)
22117     return NULL;
22118
22119   return lookup_die_type (die, type_attr, cu);
22120 }
22121
22122 /* If DIE has a descriptive_type attribute, then set the TYPE's
22123    descriptive type accordingly.  */
22124
22125 static void
22126 set_descriptive_type (struct type *type, struct die_info *die,
22127                       struct dwarf2_cu *cu)
22128 {
22129   struct type *descriptive_type = die_descriptive_type (die, cu);
22130
22131   if (descriptive_type)
22132     {
22133       ALLOCATE_GNAT_AUX_TYPE (type);
22134       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22135     }
22136 }
22137
22138 /* Return the containing type of the die in question using its
22139    DW_AT_containing_type attribute.  */
22140
22141 static struct type *
22142 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22143 {
22144   struct attribute *type_attr;
22145   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22146
22147   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22148   if (!type_attr)
22149     error (_("Dwarf Error: Problem turning containing type into gdb type "
22150              "[in module %s]"), objfile_name (objfile));
22151
22152   return lookup_die_type (die, type_attr, cu);
22153 }
22154
22155 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
22156
22157 static struct type *
22158 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22159 {
22160   struct dwarf2_per_objfile *dwarf2_per_objfile
22161     = cu->per_cu->dwarf2_per_objfile;
22162   struct objfile *objfile = dwarf2_per_objfile->objfile;
22163   char *saved;
22164
22165   std::string message
22166     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22167                      objfile_name (objfile),
22168                      sect_offset_str (cu->header.sect_off),
22169                      sect_offset_str (die->sect_off));
22170   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22171                                   message.c_str (), message.length ());
22172
22173   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22174 }
22175
22176 /* Look up the type of DIE in CU using its type attribute ATTR.
22177    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22178    DW_AT_containing_type.
22179    If there is no type substitute an error marker.  */
22180
22181 static struct type *
22182 lookup_die_type (struct die_info *die, const struct attribute *attr,
22183                  struct dwarf2_cu *cu)
22184 {
22185   struct dwarf2_per_objfile *dwarf2_per_objfile
22186     = cu->per_cu->dwarf2_per_objfile;
22187   struct objfile *objfile = dwarf2_per_objfile->objfile;
22188   struct type *this_type;
22189
22190   gdb_assert (attr->name == DW_AT_type
22191               || attr->name == DW_AT_GNAT_descriptive_type
22192               || attr->name == DW_AT_containing_type);
22193
22194   /* First see if we have it cached.  */
22195
22196   if (attr->form == DW_FORM_GNU_ref_alt)
22197     {
22198       struct dwarf2_per_cu_data *per_cu;
22199       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22200
22201       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22202                                                  dwarf2_per_objfile);
22203       this_type = get_die_type_at_offset (sect_off, per_cu);
22204     }
22205   else if (attr_form_is_ref (attr))
22206     {
22207       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22208
22209       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22210     }
22211   else if (attr->form == DW_FORM_ref_sig8)
22212     {
22213       ULONGEST signature = DW_SIGNATURE (attr);
22214
22215       return get_signatured_type (die, signature, cu);
22216     }
22217   else
22218     {
22219       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22220                    " at %s [in module %s]"),
22221                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22222                  objfile_name (objfile));
22223       return build_error_marker_type (cu, die);
22224     }
22225
22226   /* If not cached we need to read it in.  */
22227
22228   if (this_type == NULL)
22229     {
22230       struct die_info *type_die = NULL;
22231       struct dwarf2_cu *type_cu = cu;
22232
22233       if (attr_form_is_ref (attr))
22234         type_die = follow_die_ref (die, attr, &type_cu);
22235       if (type_die == NULL)
22236         return build_error_marker_type (cu, die);
22237       /* If we find the type now, it's probably because the type came
22238          from an inter-CU reference and the type's CU got expanded before
22239          ours.  */
22240       this_type = read_type_die (type_die, type_cu);
22241     }
22242
22243   /* If we still don't have a type use an error marker.  */
22244
22245   if (this_type == NULL)
22246     return build_error_marker_type (cu, die);
22247
22248   return this_type;
22249 }
22250
22251 /* Return the type in DIE, CU.
22252    Returns NULL for invalid types.
22253
22254    This first does a lookup in die_type_hash,
22255    and only reads the die in if necessary.
22256
22257    NOTE: This can be called when reading in partial or full symbols.  */
22258
22259 static struct type *
22260 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22261 {
22262   struct type *this_type;
22263
22264   this_type = get_die_type (die, cu);
22265   if (this_type)
22266     return this_type;
22267
22268   return read_type_die_1 (die, cu);
22269 }
22270
22271 /* Read the type in DIE, CU.
22272    Returns NULL for invalid types.  */
22273
22274 static struct type *
22275 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22276 {
22277   struct type *this_type = NULL;
22278
22279   switch (die->tag)
22280     {
22281     case DW_TAG_class_type:
22282     case DW_TAG_interface_type:
22283     case DW_TAG_structure_type:
22284     case DW_TAG_union_type:
22285       this_type = read_structure_type (die, cu);
22286       break;
22287     case DW_TAG_enumeration_type:
22288       this_type = read_enumeration_type (die, cu);
22289       break;
22290     case DW_TAG_subprogram:
22291     case DW_TAG_subroutine_type:
22292     case DW_TAG_inlined_subroutine:
22293       this_type = read_subroutine_type (die, cu);
22294       break;
22295     case DW_TAG_array_type:
22296       this_type = read_array_type (die, cu);
22297       break;
22298     case DW_TAG_set_type:
22299       this_type = read_set_type (die, cu);
22300       break;
22301     case DW_TAG_pointer_type:
22302       this_type = read_tag_pointer_type (die, cu);
22303       break;
22304     case DW_TAG_ptr_to_member_type:
22305       this_type = read_tag_ptr_to_member_type (die, cu);
22306       break;
22307     case DW_TAG_reference_type:
22308       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22309       break;
22310     case DW_TAG_rvalue_reference_type:
22311       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22312       break;
22313     case DW_TAG_const_type:
22314       this_type = read_tag_const_type (die, cu);
22315       break;
22316     case DW_TAG_volatile_type:
22317       this_type = read_tag_volatile_type (die, cu);
22318       break;
22319     case DW_TAG_restrict_type:
22320       this_type = read_tag_restrict_type (die, cu);
22321       break;
22322     case DW_TAG_string_type:
22323       this_type = read_tag_string_type (die, cu);
22324       break;
22325     case DW_TAG_typedef:
22326       this_type = read_typedef (die, cu);
22327       break;
22328     case DW_TAG_subrange_type:
22329       this_type = read_subrange_type (die, cu);
22330       break;
22331     case DW_TAG_base_type:
22332       this_type = read_base_type (die, cu);
22333       break;
22334     case DW_TAG_unspecified_type:
22335       this_type = read_unspecified_type (die, cu);
22336       break;
22337     case DW_TAG_namespace:
22338       this_type = read_namespace_type (die, cu);
22339       break;
22340     case DW_TAG_module:
22341       this_type = read_module_type (die, cu);
22342       break;
22343     case DW_TAG_atomic_type:
22344       this_type = read_tag_atomic_type (die, cu);
22345       break;
22346     default:
22347       complaint (_("unexpected tag in read_type_die: '%s'"),
22348                  dwarf_tag_name (die->tag));
22349       break;
22350     }
22351
22352   return this_type;
22353 }
22354
22355 /* See if we can figure out if the class lives in a namespace.  We do
22356    this by looking for a member function; its demangled name will
22357    contain namespace info, if there is any.
22358    Return the computed name or NULL.
22359    Space for the result is allocated on the objfile's obstack.
22360    This is the full-die version of guess_partial_die_structure_name.
22361    In this case we know DIE has no useful parent.  */
22362
22363 static char *
22364 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22365 {
22366   struct die_info *spec_die;
22367   struct dwarf2_cu *spec_cu;
22368   struct die_info *child;
22369   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22370
22371   spec_cu = cu;
22372   spec_die = die_specification (die, &spec_cu);
22373   if (spec_die != NULL)
22374     {
22375       die = spec_die;
22376       cu = spec_cu;
22377     }
22378
22379   for (child = die->child;
22380        child != NULL;
22381        child = child->sibling)
22382     {
22383       if (child->tag == DW_TAG_subprogram)
22384         {
22385           const char *linkage_name = dw2_linkage_name (child, cu);
22386
22387           if (linkage_name != NULL)
22388             {
22389               char *actual_name
22390                 = language_class_name_from_physname (cu->language_defn,
22391                                                      linkage_name);
22392               char *name = NULL;
22393
22394               if (actual_name != NULL)
22395                 {
22396                   const char *die_name = dwarf2_name (die, cu);
22397
22398                   if (die_name != NULL
22399                       && strcmp (die_name, actual_name) != 0)
22400                     {
22401                       /* Strip off the class name from the full name.
22402                          We want the prefix.  */
22403                       int die_name_len = strlen (die_name);
22404                       int actual_name_len = strlen (actual_name);
22405
22406                       /* Test for '::' as a sanity check.  */
22407                       if (actual_name_len > die_name_len + 2
22408                           && actual_name[actual_name_len
22409                                          - die_name_len - 1] == ':')
22410                         name = (char *) obstack_copy0 (
22411                           &objfile->per_bfd->storage_obstack,
22412                           actual_name, actual_name_len - die_name_len - 2);
22413                     }
22414                 }
22415               xfree (actual_name);
22416               return name;
22417             }
22418         }
22419     }
22420
22421   return NULL;
22422 }
22423
22424 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22425    prefix part in such case.  See
22426    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22427
22428 static const char *
22429 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22430 {
22431   struct attribute *attr;
22432   const char *base;
22433
22434   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22435       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22436     return NULL;
22437
22438   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22439     return NULL;
22440
22441   attr = dw2_linkage_name_attr (die, cu);
22442   if (attr == NULL || DW_STRING (attr) == NULL)
22443     return NULL;
22444
22445   /* dwarf2_name had to be already called.  */
22446   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22447
22448   /* Strip the base name, keep any leading namespaces/classes.  */
22449   base = strrchr (DW_STRING (attr), ':');
22450   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22451     return "";
22452
22453   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22454   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22455                                  DW_STRING (attr),
22456                                  &base[-1] - DW_STRING (attr));
22457 }
22458
22459 /* Return the name of the namespace/class that DIE is defined within,
22460    or "" if we can't tell.  The caller should not xfree the result.
22461
22462    For example, if we're within the method foo() in the following
22463    code:
22464
22465    namespace N {
22466      class C {
22467        void foo () {
22468        }
22469      };
22470    }
22471
22472    then determine_prefix on foo's die will return "N::C".  */
22473
22474 static const char *
22475 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22476 {
22477   struct dwarf2_per_objfile *dwarf2_per_objfile
22478     = cu->per_cu->dwarf2_per_objfile;
22479   struct die_info *parent, *spec_die;
22480   struct dwarf2_cu *spec_cu;
22481   struct type *parent_type;
22482   const char *retval;
22483
22484   if (cu->language != language_cplus
22485       && cu->language != language_fortran && cu->language != language_d
22486       && cu->language != language_rust)
22487     return "";
22488
22489   retval = anonymous_struct_prefix (die, cu);
22490   if (retval)
22491     return retval;
22492
22493   /* We have to be careful in the presence of DW_AT_specification.
22494      For example, with GCC 3.4, given the code
22495
22496      namespace N {
22497        void foo() {
22498          // Definition of N::foo.
22499        }
22500      }
22501
22502      then we'll have a tree of DIEs like this:
22503
22504      1: DW_TAG_compile_unit
22505        2: DW_TAG_namespace        // N
22506          3: DW_TAG_subprogram     // declaration of N::foo
22507        4: DW_TAG_subprogram       // definition of N::foo
22508             DW_AT_specification   // refers to die #3
22509
22510      Thus, when processing die #4, we have to pretend that we're in
22511      the context of its DW_AT_specification, namely the contex of die
22512      #3.  */
22513   spec_cu = cu;
22514   spec_die = die_specification (die, &spec_cu);
22515   if (spec_die == NULL)
22516     parent = die->parent;
22517   else
22518     {
22519       parent = spec_die->parent;
22520       cu = spec_cu;
22521     }
22522
22523   if (parent == NULL)
22524     return "";
22525   else if (parent->building_fullname)
22526     {
22527       const char *name;
22528       const char *parent_name;
22529
22530       /* It has been seen on RealView 2.2 built binaries,
22531          DW_TAG_template_type_param types actually _defined_ as
22532          children of the parent class:
22533
22534          enum E {};
22535          template class <class Enum> Class{};
22536          Class<enum E> class_e;
22537
22538          1: DW_TAG_class_type (Class)
22539            2: DW_TAG_enumeration_type (E)
22540              3: DW_TAG_enumerator (enum1:0)
22541              3: DW_TAG_enumerator (enum2:1)
22542              ...
22543            2: DW_TAG_template_type_param
22544               DW_AT_type  DW_FORM_ref_udata (E)
22545
22546          Besides being broken debug info, it can put GDB into an
22547          infinite loop.  Consider:
22548
22549          When we're building the full name for Class<E>, we'll start
22550          at Class, and go look over its template type parameters,
22551          finding E.  We'll then try to build the full name of E, and
22552          reach here.  We're now trying to build the full name of E,
22553          and look over the parent DIE for containing scope.  In the
22554          broken case, if we followed the parent DIE of E, we'd again
22555          find Class, and once again go look at its template type
22556          arguments, etc., etc.  Simply don't consider such parent die
22557          as source-level parent of this die (it can't be, the language
22558          doesn't allow it), and break the loop here.  */
22559       name = dwarf2_name (die, cu);
22560       parent_name = dwarf2_name (parent, cu);
22561       complaint (_("template param type '%s' defined within parent '%s'"),
22562                  name ? name : "<unknown>",
22563                  parent_name ? parent_name : "<unknown>");
22564       return "";
22565     }
22566   else
22567     switch (parent->tag)
22568       {
22569       case DW_TAG_namespace:
22570         parent_type = read_type_die (parent, cu);
22571         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22572            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22573            Work around this problem here.  */
22574         if (cu->language == language_cplus
22575             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22576           return "";
22577         /* We give a name to even anonymous namespaces.  */
22578         return TYPE_NAME (parent_type);
22579       case DW_TAG_class_type:
22580       case DW_TAG_interface_type:
22581       case DW_TAG_structure_type:
22582       case DW_TAG_union_type:
22583       case DW_TAG_module:
22584         parent_type = read_type_die (parent, cu);
22585         if (TYPE_NAME (parent_type) != NULL)
22586           return TYPE_NAME (parent_type);
22587         else
22588           /* An anonymous structure is only allowed non-static data
22589              members; no typedefs, no member functions, et cetera.
22590              So it does not need a prefix.  */
22591           return "";
22592       case DW_TAG_compile_unit:
22593       case DW_TAG_partial_unit:
22594         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22595         if (cu->language == language_cplus
22596             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22597             && die->child != NULL
22598             && (die->tag == DW_TAG_class_type
22599                 || die->tag == DW_TAG_structure_type
22600                 || die->tag == DW_TAG_union_type))
22601           {
22602             char *name = guess_full_die_structure_name (die, cu);
22603             if (name != NULL)
22604               return name;
22605           }
22606         return "";
22607       case DW_TAG_enumeration_type:
22608         parent_type = read_type_die (parent, cu);
22609         if (TYPE_DECLARED_CLASS (parent_type))
22610           {
22611             if (TYPE_NAME (parent_type) != NULL)
22612               return TYPE_NAME (parent_type);
22613             return "";
22614           }
22615         /* Fall through.  */
22616       default:
22617         return determine_prefix (parent, cu);
22618       }
22619 }
22620
22621 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22622    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22623    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22624    an obconcat, otherwise allocate storage for the result.  The CU argument is
22625    used to determine the language and hence, the appropriate separator.  */
22626
22627 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22628
22629 static char *
22630 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22631                  int physname, struct dwarf2_cu *cu)
22632 {
22633   const char *lead = "";
22634   const char *sep;
22635
22636   if (suffix == NULL || suffix[0] == '\0'
22637       || prefix == NULL || prefix[0] == '\0')
22638     sep = "";
22639   else if (cu->language == language_d)
22640     {
22641       /* For D, the 'main' function could be defined in any module, but it
22642          should never be prefixed.  */
22643       if (strcmp (suffix, "D main") == 0)
22644         {
22645           prefix = "";
22646           sep = "";
22647         }
22648       else
22649         sep = ".";
22650     }
22651   else if (cu->language == language_fortran && physname)
22652     {
22653       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22654          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22655
22656       lead = "__";
22657       sep = "_MOD_";
22658     }
22659   else
22660     sep = "::";
22661
22662   if (prefix == NULL)
22663     prefix = "";
22664   if (suffix == NULL)
22665     suffix = "";
22666
22667   if (obs == NULL)
22668     {
22669       char *retval
22670         = ((char *)
22671            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22672
22673       strcpy (retval, lead);
22674       strcat (retval, prefix);
22675       strcat (retval, sep);
22676       strcat (retval, suffix);
22677       return retval;
22678     }
22679   else
22680     {
22681       /* We have an obstack.  */
22682       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22683     }
22684 }
22685
22686 /* Return sibling of die, NULL if no sibling.  */
22687
22688 static struct die_info *
22689 sibling_die (struct die_info *die)
22690 {
22691   return die->sibling;
22692 }
22693
22694 /* Get name of a die, return NULL if not found.  */
22695
22696 static const char *
22697 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22698                           struct obstack *obstack)
22699 {
22700   if (name && cu->language == language_cplus)
22701     {
22702       std::string canon_name = cp_canonicalize_string (name);
22703
22704       if (!canon_name.empty ())
22705         {
22706           if (canon_name != name)
22707             name = (const char *) obstack_copy0 (obstack,
22708                                                  canon_name.c_str (),
22709                                                  canon_name.length ());
22710         }
22711     }
22712
22713   return name;
22714 }
22715
22716 /* Get name of a die, return NULL if not found.
22717    Anonymous namespaces are converted to their magic string.  */
22718
22719 static const char *
22720 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22721 {
22722   struct attribute *attr;
22723   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22724
22725   attr = dwarf2_attr (die, DW_AT_name, cu);
22726   if ((!attr || !DW_STRING (attr))
22727       && die->tag != DW_TAG_namespace
22728       && die->tag != DW_TAG_class_type
22729       && die->tag != DW_TAG_interface_type
22730       && die->tag != DW_TAG_structure_type
22731       && die->tag != DW_TAG_union_type)
22732     return NULL;
22733
22734   switch (die->tag)
22735     {
22736     case DW_TAG_compile_unit:
22737     case DW_TAG_partial_unit:
22738       /* Compilation units have a DW_AT_name that is a filename, not
22739          a source language identifier.  */
22740     case DW_TAG_enumeration_type:
22741     case DW_TAG_enumerator:
22742       /* These tags always have simple identifiers already; no need
22743          to canonicalize them.  */
22744       return DW_STRING (attr);
22745
22746     case DW_TAG_namespace:
22747       if (attr != NULL && DW_STRING (attr) != NULL)
22748         return DW_STRING (attr);
22749       return CP_ANONYMOUS_NAMESPACE_STR;
22750
22751     case DW_TAG_class_type:
22752     case DW_TAG_interface_type:
22753     case DW_TAG_structure_type:
22754     case DW_TAG_union_type:
22755       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22756          structures or unions.  These were of the form "._%d" in GCC 4.1,
22757          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22758          and GCC 4.4.  We work around this problem by ignoring these.  */
22759       if (attr && DW_STRING (attr)
22760           && (startswith (DW_STRING (attr), "._")
22761               || startswith (DW_STRING (attr), "<anonymous")))
22762         return NULL;
22763
22764       /* GCC might emit a nameless typedef that has a linkage name.  See
22765          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22766       if (!attr || DW_STRING (attr) == NULL)
22767         {
22768           char *demangled = NULL;
22769
22770           attr = dw2_linkage_name_attr (die, cu);
22771           if (attr == NULL || DW_STRING (attr) == NULL)
22772             return NULL;
22773
22774           /* Avoid demangling DW_STRING (attr) the second time on a second
22775              call for the same DIE.  */
22776           if (!DW_STRING_IS_CANONICAL (attr))
22777             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22778
22779           if (demangled)
22780             {
22781               const char *base;
22782
22783               /* FIXME: we already did this for the partial symbol... */
22784               DW_STRING (attr)
22785                 = ((const char *)
22786                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22787                                   demangled, strlen (demangled)));
22788               DW_STRING_IS_CANONICAL (attr) = 1;
22789               xfree (demangled);
22790
22791               /* Strip any leading namespaces/classes, keep only the base name.
22792                  DW_AT_name for named DIEs does not contain the prefixes.  */
22793               base = strrchr (DW_STRING (attr), ':');
22794               if (base && base > DW_STRING (attr) && base[-1] == ':')
22795                 return &base[1];
22796               else
22797                 return DW_STRING (attr);
22798             }
22799         }
22800       break;
22801
22802     default:
22803       break;
22804     }
22805
22806   if (!DW_STRING_IS_CANONICAL (attr))
22807     {
22808       DW_STRING (attr)
22809         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22810                                     &objfile->per_bfd->storage_obstack);
22811       DW_STRING_IS_CANONICAL (attr) = 1;
22812     }
22813   return DW_STRING (attr);
22814 }
22815
22816 /* Return the die that this die in an extension of, or NULL if there
22817    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22818    containing the return value on output.  */
22819
22820 static struct die_info *
22821 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22822 {
22823   struct attribute *attr;
22824
22825   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22826   if (attr == NULL)
22827     return NULL;
22828
22829   return follow_die_ref (die, attr, ext_cu);
22830 }
22831
22832 /* Convert a DIE tag into its string name.  */
22833
22834 static const char *
22835 dwarf_tag_name (unsigned tag)
22836 {
22837   const char *name = get_DW_TAG_name (tag);
22838
22839   if (name == NULL)
22840     return "DW_TAG_<unknown>";
22841
22842   return name;
22843 }
22844
22845 /* Convert a DWARF attribute code into its string name.  */
22846
22847 static const char *
22848 dwarf_attr_name (unsigned attr)
22849 {
22850   const char *name;
22851
22852 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22853   if (attr == DW_AT_MIPS_fde)
22854     return "DW_AT_MIPS_fde";
22855 #else
22856   if (attr == DW_AT_HP_block_index)
22857     return "DW_AT_HP_block_index";
22858 #endif
22859
22860   name = get_DW_AT_name (attr);
22861
22862   if (name == NULL)
22863     return "DW_AT_<unknown>";
22864
22865   return name;
22866 }
22867
22868 /* Convert a DWARF value form code into its string name.  */
22869
22870 static const char *
22871 dwarf_form_name (unsigned form)
22872 {
22873   const char *name = get_DW_FORM_name (form);
22874
22875   if (name == NULL)
22876     return "DW_FORM_<unknown>";
22877
22878   return name;
22879 }
22880
22881 static const char *
22882 dwarf_bool_name (unsigned mybool)
22883 {
22884   if (mybool)
22885     return "TRUE";
22886   else
22887     return "FALSE";
22888 }
22889
22890 /* Convert a DWARF type code into its string name.  */
22891
22892 static const char *
22893 dwarf_type_encoding_name (unsigned enc)
22894 {
22895   const char *name = get_DW_ATE_name (enc);
22896
22897   if (name == NULL)
22898     return "DW_ATE_<unknown>";
22899
22900   return name;
22901 }
22902
22903 static void
22904 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22905 {
22906   unsigned int i;
22907
22908   print_spaces (indent, f);
22909   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22910                       dwarf_tag_name (die->tag), die->abbrev,
22911                       sect_offset_str (die->sect_off));
22912
22913   if (die->parent != NULL)
22914     {
22915       print_spaces (indent, f);
22916       fprintf_unfiltered (f, "  parent at offset: %s\n",
22917                           sect_offset_str (die->parent->sect_off));
22918     }
22919
22920   print_spaces (indent, f);
22921   fprintf_unfiltered (f, "  has children: %s\n",
22922            dwarf_bool_name (die->child != NULL));
22923
22924   print_spaces (indent, f);
22925   fprintf_unfiltered (f, "  attributes:\n");
22926
22927   for (i = 0; i < die->num_attrs; ++i)
22928     {
22929       print_spaces (indent, f);
22930       fprintf_unfiltered (f, "    %s (%s) ",
22931                dwarf_attr_name (die->attrs[i].name),
22932                dwarf_form_name (die->attrs[i].form));
22933
22934       switch (die->attrs[i].form)
22935         {
22936         case DW_FORM_addr:
22937         case DW_FORM_addrx:
22938         case DW_FORM_GNU_addr_index:
22939           fprintf_unfiltered (f, "address: ");
22940           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22941           break;
22942         case DW_FORM_block2:
22943         case DW_FORM_block4:
22944         case DW_FORM_block:
22945         case DW_FORM_block1:
22946           fprintf_unfiltered (f, "block: size %s",
22947                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22948           break;
22949         case DW_FORM_exprloc:
22950           fprintf_unfiltered (f, "expression: size %s",
22951                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22952           break;
22953         case DW_FORM_data16:
22954           fprintf_unfiltered (f, "constant of 16 bytes");
22955           break;
22956         case DW_FORM_ref_addr:
22957           fprintf_unfiltered (f, "ref address: ");
22958           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22959           break;
22960         case DW_FORM_GNU_ref_alt:
22961           fprintf_unfiltered (f, "alt ref address: ");
22962           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22963           break;
22964         case DW_FORM_ref1:
22965         case DW_FORM_ref2:
22966         case DW_FORM_ref4:
22967         case DW_FORM_ref8:
22968         case DW_FORM_ref_udata:
22969           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22970                               (long) (DW_UNSND (&die->attrs[i])));
22971           break;
22972         case DW_FORM_data1:
22973         case DW_FORM_data2:
22974         case DW_FORM_data4:
22975         case DW_FORM_data8:
22976         case DW_FORM_udata:
22977         case DW_FORM_sdata:
22978           fprintf_unfiltered (f, "constant: %s",
22979                               pulongest (DW_UNSND (&die->attrs[i])));
22980           break;
22981         case DW_FORM_sec_offset:
22982           fprintf_unfiltered (f, "section offset: %s",
22983                               pulongest (DW_UNSND (&die->attrs[i])));
22984           break;
22985         case DW_FORM_ref_sig8:
22986           fprintf_unfiltered (f, "signature: %s",
22987                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22988           break;
22989         case DW_FORM_string:
22990         case DW_FORM_strp:
22991         case DW_FORM_line_strp:
22992         case DW_FORM_strx:
22993         case DW_FORM_GNU_str_index:
22994         case DW_FORM_GNU_strp_alt:
22995           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22996                    DW_STRING (&die->attrs[i])
22997                    ? DW_STRING (&die->attrs[i]) : "",
22998                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22999           break;
23000         case DW_FORM_flag:
23001           if (DW_UNSND (&die->attrs[i]))
23002             fprintf_unfiltered (f, "flag: TRUE");
23003           else
23004             fprintf_unfiltered (f, "flag: FALSE");
23005           break;
23006         case DW_FORM_flag_present:
23007           fprintf_unfiltered (f, "flag: TRUE");
23008           break;
23009         case DW_FORM_indirect:
23010           /* The reader will have reduced the indirect form to
23011              the "base form" so this form should not occur.  */
23012           fprintf_unfiltered (f, 
23013                               "unexpected attribute form: DW_FORM_indirect");
23014           break;
23015         case DW_FORM_implicit_const:
23016           fprintf_unfiltered (f, "constant: %s",
23017                               plongest (DW_SND (&die->attrs[i])));
23018           break;
23019         default:
23020           fprintf_unfiltered (f, "unsupported attribute form: %d.",
23021                    die->attrs[i].form);
23022           break;
23023         }
23024       fprintf_unfiltered (f, "\n");
23025     }
23026 }
23027
23028 static void
23029 dump_die_for_error (struct die_info *die)
23030 {
23031   dump_die_shallow (gdb_stderr, 0, die);
23032 }
23033
23034 static void
23035 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
23036 {
23037   int indent = level * 4;
23038
23039   gdb_assert (die != NULL);
23040
23041   if (level >= max_level)
23042     return;
23043
23044   dump_die_shallow (f, indent, die);
23045
23046   if (die->child != NULL)
23047     {
23048       print_spaces (indent, f);
23049       fprintf_unfiltered (f, "  Children:");
23050       if (level + 1 < max_level)
23051         {
23052           fprintf_unfiltered (f, "\n");
23053           dump_die_1 (f, level + 1, max_level, die->child);
23054         }
23055       else
23056         {
23057           fprintf_unfiltered (f,
23058                               " [not printed, max nesting level reached]\n");
23059         }
23060     }
23061
23062   if (die->sibling != NULL && level > 0)
23063     {
23064       dump_die_1 (f, level, max_level, die->sibling);
23065     }
23066 }
23067
23068 /* This is called from the pdie macro in gdbinit.in.
23069    It's not static so gcc will keep a copy callable from gdb.  */
23070
23071 void
23072 dump_die (struct die_info *die, int max_level)
23073 {
23074   dump_die_1 (gdb_stdlog, 0, max_level, die);
23075 }
23076
23077 static void
23078 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
23079 {
23080   void **slot;
23081
23082   slot = htab_find_slot_with_hash (cu->die_hash, die,
23083                                    to_underlying (die->sect_off),
23084                                    INSERT);
23085
23086   *slot = die;
23087 }
23088
23089 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
23090    required kind.  */
23091
23092 static sect_offset
23093 dwarf2_get_ref_die_offset (const struct attribute *attr)
23094 {
23095   if (attr_form_is_ref (attr))
23096     return (sect_offset) DW_UNSND (attr);
23097
23098   complaint (_("unsupported die ref attribute form: '%s'"),
23099              dwarf_form_name (attr->form));
23100   return {};
23101 }
23102
23103 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
23104  * the value held by the attribute is not constant.  */
23105
23106 static LONGEST
23107 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
23108 {
23109   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
23110     return DW_SND (attr);
23111   else if (attr->form == DW_FORM_udata
23112            || attr->form == DW_FORM_data1
23113            || attr->form == DW_FORM_data2
23114            || attr->form == DW_FORM_data4
23115            || attr->form == DW_FORM_data8)
23116     return DW_UNSND (attr);
23117   else
23118     {
23119       /* For DW_FORM_data16 see attr_form_is_constant.  */
23120       complaint (_("Attribute value is not a constant (%s)"),
23121                  dwarf_form_name (attr->form));
23122       return default_value;
23123     }
23124 }
23125
23126 /* Follow reference or signature attribute ATTR of SRC_DIE.
23127    On entry *REF_CU is the CU of SRC_DIE.
23128    On exit *REF_CU is the CU of the result.  */
23129
23130 static struct die_info *
23131 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23132                        struct dwarf2_cu **ref_cu)
23133 {
23134   struct die_info *die;
23135
23136   if (attr_form_is_ref (attr))
23137     die = follow_die_ref (src_die, attr, ref_cu);
23138   else if (attr->form == DW_FORM_ref_sig8)
23139     die = follow_die_sig (src_die, attr, ref_cu);
23140   else
23141     {
23142       dump_die_for_error (src_die);
23143       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23144              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23145     }
23146
23147   return die;
23148 }
23149
23150 /* Follow reference OFFSET.
23151    On entry *REF_CU is the CU of the source die referencing OFFSET.
23152    On exit *REF_CU is the CU of the result.
23153    Returns NULL if OFFSET is invalid.  */
23154
23155 static struct die_info *
23156 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23157                    struct dwarf2_cu **ref_cu)
23158 {
23159   struct die_info temp_die;
23160   struct dwarf2_cu *target_cu, *cu = *ref_cu;
23161   struct dwarf2_per_objfile *dwarf2_per_objfile
23162     = cu->per_cu->dwarf2_per_objfile;
23163
23164   gdb_assert (cu->per_cu != NULL);
23165
23166   target_cu = cu;
23167
23168   if (cu->per_cu->is_debug_types)
23169     {
23170       /* .debug_types CUs cannot reference anything outside their CU.
23171          If they need to, they have to reference a signatured type via
23172          DW_FORM_ref_sig8.  */
23173       if (!offset_in_cu_p (&cu->header, sect_off))
23174         return NULL;
23175     }
23176   else if (offset_in_dwz != cu->per_cu->is_dwz
23177            || !offset_in_cu_p (&cu->header, sect_off))
23178     {
23179       struct dwarf2_per_cu_data *per_cu;
23180
23181       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23182                                                  dwarf2_per_objfile);
23183
23184       /* If necessary, add it to the queue and load its DIEs.  */
23185       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23186         load_full_comp_unit (per_cu, false, cu->language);
23187
23188       target_cu = per_cu->cu;
23189     }
23190   else if (cu->dies == NULL)
23191     {
23192       /* We're loading full DIEs during partial symbol reading.  */
23193       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23194       load_full_comp_unit (cu->per_cu, false, language_minimal);
23195     }
23196
23197   *ref_cu = target_cu;
23198   temp_die.sect_off = sect_off;
23199
23200   if (target_cu != cu)
23201     target_cu->ancestor = cu;
23202
23203   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23204                                                   &temp_die,
23205                                                   to_underlying (sect_off));
23206 }
23207
23208 /* Follow reference attribute ATTR of SRC_DIE.
23209    On entry *REF_CU is the CU of SRC_DIE.
23210    On exit *REF_CU is the CU of the result.  */
23211
23212 static struct die_info *
23213 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23214                 struct dwarf2_cu **ref_cu)
23215 {
23216   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23217   struct dwarf2_cu *cu = *ref_cu;
23218   struct die_info *die;
23219
23220   die = follow_die_offset (sect_off,
23221                            (attr->form == DW_FORM_GNU_ref_alt
23222                             || cu->per_cu->is_dwz),
23223                            ref_cu);
23224   if (!die)
23225     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23226            "at %s [in module %s]"),
23227            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23228            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23229
23230   return die;
23231 }
23232
23233 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23234    Returned value is intended for DW_OP_call*.  Returned
23235    dwarf2_locexpr_baton->data has lifetime of
23236    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23237
23238 struct dwarf2_locexpr_baton
23239 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23240                                struct dwarf2_per_cu_data *per_cu,
23241                                CORE_ADDR (*get_frame_pc) (void *baton),
23242                                void *baton, bool resolve_abstract_p)
23243 {
23244   struct dwarf2_cu *cu;
23245   struct die_info *die;
23246   struct attribute *attr;
23247   struct dwarf2_locexpr_baton retval;
23248   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23249   struct objfile *objfile = dwarf2_per_objfile->objfile;
23250
23251   if (per_cu->cu == NULL)
23252     load_cu (per_cu, false);
23253   cu = per_cu->cu;
23254   if (cu == NULL)
23255     {
23256       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23257          Instead just throw an error, not much else we can do.  */
23258       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23259              sect_offset_str (sect_off), objfile_name (objfile));
23260     }
23261
23262   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23263   if (!die)
23264     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23265            sect_offset_str (sect_off), objfile_name (objfile));
23266
23267   attr = dwarf2_attr (die, DW_AT_location, cu);
23268   if (!attr && resolve_abstract_p
23269       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23270           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23271     {
23272       CORE_ADDR pc = (*get_frame_pc) (baton);
23273
23274       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23275         {
23276           if (!cand->parent
23277               || cand->parent->tag != DW_TAG_subprogram)
23278             continue;
23279
23280           CORE_ADDR pc_low, pc_high;
23281           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23282           if (pc_low == ((CORE_ADDR) -1)
23283               || !(pc_low <= pc && pc < pc_high))
23284             continue;
23285
23286           die = cand;
23287           attr = dwarf2_attr (die, DW_AT_location, cu);
23288           break;
23289         }
23290     }
23291
23292   if (!attr)
23293     {
23294       /* DWARF: "If there is no such attribute, then there is no effect.".
23295          DATA is ignored if SIZE is 0.  */
23296
23297       retval.data = NULL;
23298       retval.size = 0;
23299     }
23300   else if (attr_form_is_section_offset (attr))
23301     {
23302       struct dwarf2_loclist_baton loclist_baton;
23303       CORE_ADDR pc = (*get_frame_pc) (baton);
23304       size_t size;
23305
23306       fill_in_loclist_baton (cu, &loclist_baton, attr);
23307
23308       retval.data = dwarf2_find_location_expression (&loclist_baton,
23309                                                      &size, pc);
23310       retval.size = size;
23311     }
23312   else
23313     {
23314       if (!attr_form_is_block (attr))
23315         error (_("Dwarf Error: DIE at %s referenced in module %s "
23316                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23317                sect_offset_str (sect_off), objfile_name (objfile));
23318
23319       retval.data = DW_BLOCK (attr)->data;
23320       retval.size = DW_BLOCK (attr)->size;
23321     }
23322   retval.per_cu = cu->per_cu;
23323
23324   age_cached_comp_units (dwarf2_per_objfile);
23325
23326   return retval;
23327 }
23328
23329 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23330    offset.  */
23331
23332 struct dwarf2_locexpr_baton
23333 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23334                              struct dwarf2_per_cu_data *per_cu,
23335                              CORE_ADDR (*get_frame_pc) (void *baton),
23336                              void *baton)
23337 {
23338   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23339
23340   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23341 }
23342
23343 /* Write a constant of a given type as target-ordered bytes into
23344    OBSTACK.  */
23345
23346 static const gdb_byte *
23347 write_constant_as_bytes (struct obstack *obstack,
23348                          enum bfd_endian byte_order,
23349                          struct type *type,
23350                          ULONGEST value,
23351                          LONGEST *len)
23352 {
23353   gdb_byte *result;
23354
23355   *len = TYPE_LENGTH (type);
23356   result = (gdb_byte *) obstack_alloc (obstack, *len);
23357   store_unsigned_integer (result, *len, byte_order, value);
23358
23359   return result;
23360 }
23361
23362 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23363    pointer to the constant bytes and set LEN to the length of the
23364    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23365    does not have a DW_AT_const_value, return NULL.  */
23366
23367 const gdb_byte *
23368 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23369                              struct dwarf2_per_cu_data *per_cu,
23370                              struct obstack *obstack,
23371                              LONGEST *len)
23372 {
23373   struct dwarf2_cu *cu;
23374   struct die_info *die;
23375   struct attribute *attr;
23376   const gdb_byte *result = NULL;
23377   struct type *type;
23378   LONGEST value;
23379   enum bfd_endian byte_order;
23380   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23381
23382   if (per_cu->cu == NULL)
23383     load_cu (per_cu, false);
23384   cu = per_cu->cu;
23385   if (cu == NULL)
23386     {
23387       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23388          Instead just throw an error, not much else we can do.  */
23389       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23390              sect_offset_str (sect_off), objfile_name (objfile));
23391     }
23392
23393   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23394   if (!die)
23395     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23396            sect_offset_str (sect_off), objfile_name (objfile));
23397
23398   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23399   if (attr == NULL)
23400     return NULL;
23401
23402   byte_order = (bfd_big_endian (objfile->obfd)
23403                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23404
23405   switch (attr->form)
23406     {
23407     case DW_FORM_addr:
23408     case DW_FORM_addrx:
23409     case DW_FORM_GNU_addr_index:
23410       {
23411         gdb_byte *tem;
23412
23413         *len = cu->header.addr_size;
23414         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23415         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23416         result = tem;
23417       }
23418       break;
23419     case DW_FORM_string:
23420     case DW_FORM_strp:
23421     case DW_FORM_strx:
23422     case DW_FORM_GNU_str_index:
23423     case DW_FORM_GNU_strp_alt:
23424       /* DW_STRING is already allocated on the objfile obstack, point
23425          directly to it.  */
23426       result = (const gdb_byte *) DW_STRING (attr);
23427       *len = strlen (DW_STRING (attr));
23428       break;
23429     case DW_FORM_block1:
23430     case DW_FORM_block2:
23431     case DW_FORM_block4:
23432     case DW_FORM_block:
23433     case DW_FORM_exprloc:
23434     case DW_FORM_data16:
23435       result = DW_BLOCK (attr)->data;
23436       *len = DW_BLOCK (attr)->size;
23437       break;
23438
23439       /* The DW_AT_const_value attributes are supposed to carry the
23440          symbol's value "represented as it would be on the target
23441          architecture."  By the time we get here, it's already been
23442          converted to host endianness, so we just need to sign- or
23443          zero-extend it as appropriate.  */
23444     case DW_FORM_data1:
23445       type = die_type (die, cu);
23446       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23447       if (result == NULL)
23448         result = write_constant_as_bytes (obstack, byte_order,
23449                                           type, value, len);
23450       break;
23451     case DW_FORM_data2:
23452       type = die_type (die, cu);
23453       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23454       if (result == NULL)
23455         result = write_constant_as_bytes (obstack, byte_order,
23456                                           type, value, len);
23457       break;
23458     case DW_FORM_data4:
23459       type = die_type (die, cu);
23460       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23461       if (result == NULL)
23462         result = write_constant_as_bytes (obstack, byte_order,
23463                                           type, value, len);
23464       break;
23465     case DW_FORM_data8:
23466       type = die_type (die, cu);
23467       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23468       if (result == NULL)
23469         result = write_constant_as_bytes (obstack, byte_order,
23470                                           type, value, len);
23471       break;
23472
23473     case DW_FORM_sdata:
23474     case DW_FORM_implicit_const:
23475       type = die_type (die, cu);
23476       result = write_constant_as_bytes (obstack, byte_order,
23477                                         type, DW_SND (attr), len);
23478       break;
23479
23480     case DW_FORM_udata:
23481       type = die_type (die, cu);
23482       result = write_constant_as_bytes (obstack, byte_order,
23483                                         type, DW_UNSND (attr), len);
23484       break;
23485
23486     default:
23487       complaint (_("unsupported const value attribute form: '%s'"),
23488                  dwarf_form_name (attr->form));
23489       break;
23490     }
23491
23492   return result;
23493 }
23494
23495 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23496    valid type for this die is found.  */
23497
23498 struct type *
23499 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23500                                 struct dwarf2_per_cu_data *per_cu)
23501 {
23502   struct dwarf2_cu *cu;
23503   struct die_info *die;
23504
23505   if (per_cu->cu == NULL)
23506     load_cu (per_cu, false);
23507   cu = per_cu->cu;
23508   if (!cu)
23509     return NULL;
23510
23511   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23512   if (!die)
23513     return NULL;
23514
23515   return die_type (die, cu);
23516 }
23517
23518 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23519    PER_CU.  */
23520
23521 struct type *
23522 dwarf2_get_die_type (cu_offset die_offset,
23523                      struct dwarf2_per_cu_data *per_cu)
23524 {
23525   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23526   return get_die_type_at_offset (die_offset_sect, per_cu);
23527 }
23528
23529 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23530    On entry *REF_CU is the CU of SRC_DIE.
23531    On exit *REF_CU is the CU of the result.
23532    Returns NULL if the referenced DIE isn't found.  */
23533
23534 static struct die_info *
23535 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23536                   struct dwarf2_cu **ref_cu)
23537 {
23538   struct die_info temp_die;
23539   struct dwarf2_cu *sig_cu, *cu = *ref_cu;
23540   struct die_info *die;
23541
23542   /* While it might be nice to assert sig_type->type == NULL here,
23543      we can get here for DW_AT_imported_declaration where we need
23544      the DIE not the type.  */
23545
23546   /* If necessary, add it to the queue and load its DIEs.  */
23547
23548   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23549     read_signatured_type (sig_type);
23550
23551   sig_cu = sig_type->per_cu.cu;
23552   gdb_assert (sig_cu != NULL);
23553   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23554   temp_die.sect_off = sig_type->type_offset_in_section;
23555   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23556                                                  to_underlying (temp_die.sect_off));
23557   if (die)
23558     {
23559       struct dwarf2_per_objfile *dwarf2_per_objfile
23560         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23561
23562       /* For .gdb_index version 7 keep track of included TUs.
23563          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23564       if (dwarf2_per_objfile->index_table != NULL
23565           && dwarf2_per_objfile->index_table->version <= 7)
23566         {
23567           VEC_safe_push (dwarf2_per_cu_ptr,
23568                          (*ref_cu)->per_cu->imported_symtabs,
23569                          sig_cu->per_cu);
23570         }
23571
23572       *ref_cu = sig_cu;
23573       if (sig_cu != cu)
23574         sig_cu->ancestor = cu;
23575
23576       return die;
23577     }
23578
23579   return NULL;
23580 }
23581
23582 /* Follow signatured type referenced by ATTR in SRC_DIE.
23583    On entry *REF_CU is the CU of SRC_DIE.
23584    On exit *REF_CU is the CU of the result.
23585    The result is the DIE of the type.
23586    If the referenced type cannot be found an error is thrown.  */
23587
23588 static struct die_info *
23589 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23590                 struct dwarf2_cu **ref_cu)
23591 {
23592   ULONGEST signature = DW_SIGNATURE (attr);
23593   struct signatured_type *sig_type;
23594   struct die_info *die;
23595
23596   gdb_assert (attr->form == DW_FORM_ref_sig8);
23597
23598   sig_type = lookup_signatured_type (*ref_cu, signature);
23599   /* sig_type will be NULL if the signatured type is missing from
23600      the debug info.  */
23601   if (sig_type == NULL)
23602     {
23603       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23604                " from DIE at %s [in module %s]"),
23605              hex_string (signature), sect_offset_str (src_die->sect_off),
23606              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23607     }
23608
23609   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23610   if (die == NULL)
23611     {
23612       dump_die_for_error (src_die);
23613       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23614                " from DIE at %s [in module %s]"),
23615              hex_string (signature), sect_offset_str (src_die->sect_off),
23616              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23617     }
23618
23619   return die;
23620 }
23621
23622 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23623    reading in and processing the type unit if necessary.  */
23624
23625 static struct type *
23626 get_signatured_type (struct die_info *die, ULONGEST signature,
23627                      struct dwarf2_cu *cu)
23628 {
23629   struct dwarf2_per_objfile *dwarf2_per_objfile
23630     = cu->per_cu->dwarf2_per_objfile;
23631   struct signatured_type *sig_type;
23632   struct dwarf2_cu *type_cu;
23633   struct die_info *type_die;
23634   struct type *type;
23635
23636   sig_type = lookup_signatured_type (cu, signature);
23637   /* sig_type will be NULL if the signatured type is missing from
23638      the debug info.  */
23639   if (sig_type == NULL)
23640     {
23641       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23642                    " from DIE at %s [in module %s]"),
23643                  hex_string (signature), sect_offset_str (die->sect_off),
23644                  objfile_name (dwarf2_per_objfile->objfile));
23645       return build_error_marker_type (cu, die);
23646     }
23647
23648   /* If we already know the type we're done.  */
23649   if (sig_type->type != NULL)
23650     return sig_type->type;
23651
23652   type_cu = cu;
23653   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23654   if (type_die != NULL)
23655     {
23656       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23657          is created.  This is important, for example, because for c++ classes
23658          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23659       type = read_type_die (type_die, type_cu);
23660       if (type == NULL)
23661         {
23662           complaint (_("Dwarf Error: Cannot build signatured type %s"
23663                        " referenced from DIE at %s [in module %s]"),
23664                      hex_string (signature), sect_offset_str (die->sect_off),
23665                      objfile_name (dwarf2_per_objfile->objfile));
23666           type = build_error_marker_type (cu, die);
23667         }
23668     }
23669   else
23670     {
23671       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23672                    " from DIE at %s [in module %s]"),
23673                  hex_string (signature), sect_offset_str (die->sect_off),
23674                  objfile_name (dwarf2_per_objfile->objfile));
23675       type = build_error_marker_type (cu, die);
23676     }
23677   sig_type->type = type;
23678
23679   return type;
23680 }
23681
23682 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23683    reading in and processing the type unit if necessary.  */
23684
23685 static struct type *
23686 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23687                           struct dwarf2_cu *cu) /* ARI: editCase function */
23688 {
23689   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23690   if (attr_form_is_ref (attr))
23691     {
23692       struct dwarf2_cu *type_cu = cu;
23693       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23694
23695       return read_type_die (type_die, type_cu);
23696     }
23697   else if (attr->form == DW_FORM_ref_sig8)
23698     {
23699       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23700     }
23701   else
23702     {
23703       struct dwarf2_per_objfile *dwarf2_per_objfile
23704         = cu->per_cu->dwarf2_per_objfile;
23705
23706       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23707                    " at %s [in module %s]"),
23708                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23709                  objfile_name (dwarf2_per_objfile->objfile));
23710       return build_error_marker_type (cu, die);
23711     }
23712 }
23713
23714 /* Load the DIEs associated with type unit PER_CU into memory.  */
23715
23716 static void
23717 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23718 {
23719   struct signatured_type *sig_type;
23720
23721   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23722   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23723
23724   /* We have the per_cu, but we need the signatured_type.
23725      Fortunately this is an easy translation.  */
23726   gdb_assert (per_cu->is_debug_types);
23727   sig_type = (struct signatured_type *) per_cu;
23728
23729   gdb_assert (per_cu->cu == NULL);
23730
23731   read_signatured_type (sig_type);
23732
23733   gdb_assert (per_cu->cu != NULL);
23734 }
23735
23736 /* die_reader_func for read_signatured_type.
23737    This is identical to load_full_comp_unit_reader,
23738    but is kept separate for now.  */
23739
23740 static void
23741 read_signatured_type_reader (const struct die_reader_specs *reader,
23742                              const gdb_byte *info_ptr,
23743                              struct die_info *comp_unit_die,
23744                              int has_children,
23745                              void *data)
23746 {
23747   struct dwarf2_cu *cu = reader->cu;
23748
23749   gdb_assert (cu->die_hash == NULL);
23750   cu->die_hash =
23751     htab_create_alloc_ex (cu->header.length / 12,
23752                           die_hash,
23753                           die_eq,
23754                           NULL,
23755                           &cu->comp_unit_obstack,
23756                           hashtab_obstack_allocate,
23757                           dummy_obstack_deallocate);
23758
23759   if (has_children)
23760     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23761                                                   &info_ptr, comp_unit_die);
23762   cu->dies = comp_unit_die;
23763   /* comp_unit_die is not stored in die_hash, no need.  */
23764
23765   /* We try not to read any attributes in this function, because not
23766      all CUs needed for references have been loaded yet, and symbol
23767      table processing isn't initialized.  But we have to set the CU language,
23768      or we won't be able to build types correctly.
23769      Similarly, if we do not read the producer, we can not apply
23770      producer-specific interpretation.  */
23771   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23772 }
23773
23774 /* Read in a signatured type and build its CU and DIEs.
23775    If the type is a stub for the real type in a DWO file,
23776    read in the real type from the DWO file as well.  */
23777
23778 static void
23779 read_signatured_type (struct signatured_type *sig_type)
23780 {
23781   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23782
23783   gdb_assert (per_cu->is_debug_types);
23784   gdb_assert (per_cu->cu == NULL);
23785
23786   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23787                            read_signatured_type_reader, NULL);
23788   sig_type->per_cu.tu_read = 1;
23789 }
23790
23791 /* Decode simple location descriptions.
23792    Given a pointer to a dwarf block that defines a location, compute
23793    the location and return the value.
23794
23795    NOTE drow/2003-11-18: This function is called in two situations
23796    now: for the address of static or global variables (partial symbols
23797    only) and for offsets into structures which are expected to be
23798    (more or less) constant.  The partial symbol case should go away,
23799    and only the constant case should remain.  That will let this
23800    function complain more accurately.  A few special modes are allowed
23801    without complaint for global variables (for instance, global
23802    register values and thread-local values).
23803
23804    A location description containing no operations indicates that the
23805    object is optimized out.  The return value is 0 for that case.
23806    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23807    callers will only want a very basic result and this can become a
23808    complaint.
23809
23810    Note that stack[0] is unused except as a default error return.  */
23811
23812 static CORE_ADDR
23813 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23814 {
23815   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23816   size_t i;
23817   size_t size = blk->size;
23818   const gdb_byte *data = blk->data;
23819   CORE_ADDR stack[64];
23820   int stacki;
23821   unsigned int bytes_read, unsnd;
23822   gdb_byte op;
23823
23824   i = 0;
23825   stacki = 0;
23826   stack[stacki] = 0;
23827   stack[++stacki] = 0;
23828
23829   while (i < size)
23830     {
23831       op = data[i++];
23832       switch (op)
23833         {
23834         case DW_OP_lit0:
23835         case DW_OP_lit1:
23836         case DW_OP_lit2:
23837         case DW_OP_lit3:
23838         case DW_OP_lit4:
23839         case DW_OP_lit5:
23840         case DW_OP_lit6:
23841         case DW_OP_lit7:
23842         case DW_OP_lit8:
23843         case DW_OP_lit9:
23844         case DW_OP_lit10:
23845         case DW_OP_lit11:
23846         case DW_OP_lit12:
23847         case DW_OP_lit13:
23848         case DW_OP_lit14:
23849         case DW_OP_lit15:
23850         case DW_OP_lit16:
23851         case DW_OP_lit17:
23852         case DW_OP_lit18:
23853         case DW_OP_lit19:
23854         case DW_OP_lit20:
23855         case DW_OP_lit21:
23856         case DW_OP_lit22:
23857         case DW_OP_lit23:
23858         case DW_OP_lit24:
23859         case DW_OP_lit25:
23860         case DW_OP_lit26:
23861         case DW_OP_lit27:
23862         case DW_OP_lit28:
23863         case DW_OP_lit29:
23864         case DW_OP_lit30:
23865         case DW_OP_lit31:
23866           stack[++stacki] = op - DW_OP_lit0;
23867           break;
23868
23869         case DW_OP_reg0:
23870         case DW_OP_reg1:
23871         case DW_OP_reg2:
23872         case DW_OP_reg3:
23873         case DW_OP_reg4:
23874         case DW_OP_reg5:
23875         case DW_OP_reg6:
23876         case DW_OP_reg7:
23877         case DW_OP_reg8:
23878         case DW_OP_reg9:
23879         case DW_OP_reg10:
23880         case DW_OP_reg11:
23881         case DW_OP_reg12:
23882         case DW_OP_reg13:
23883         case DW_OP_reg14:
23884         case DW_OP_reg15:
23885         case DW_OP_reg16:
23886         case DW_OP_reg17:
23887         case DW_OP_reg18:
23888         case DW_OP_reg19:
23889         case DW_OP_reg20:
23890         case DW_OP_reg21:
23891         case DW_OP_reg22:
23892         case DW_OP_reg23:
23893         case DW_OP_reg24:
23894         case DW_OP_reg25:
23895         case DW_OP_reg26:
23896         case DW_OP_reg27:
23897         case DW_OP_reg28:
23898         case DW_OP_reg29:
23899         case DW_OP_reg30:
23900         case DW_OP_reg31:
23901           stack[++stacki] = op - DW_OP_reg0;
23902           if (i < size)
23903             dwarf2_complex_location_expr_complaint ();
23904           break;
23905
23906         case DW_OP_regx:
23907           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23908           i += bytes_read;
23909           stack[++stacki] = unsnd;
23910           if (i < size)
23911             dwarf2_complex_location_expr_complaint ();
23912           break;
23913
23914         case DW_OP_addr:
23915           stack[++stacki] = read_address (objfile->obfd, &data[i],
23916                                           cu, &bytes_read);
23917           i += bytes_read;
23918           break;
23919
23920         case DW_OP_const1u:
23921           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23922           i += 1;
23923           break;
23924
23925         case DW_OP_const1s:
23926           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23927           i += 1;
23928           break;
23929
23930         case DW_OP_const2u:
23931           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23932           i += 2;
23933           break;
23934
23935         case DW_OP_const2s:
23936           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23937           i += 2;
23938           break;
23939
23940         case DW_OP_const4u:
23941           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23942           i += 4;
23943           break;
23944
23945         case DW_OP_const4s:
23946           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23947           i += 4;
23948           break;
23949
23950         case DW_OP_const8u:
23951           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23952           i += 8;
23953           break;
23954
23955         case DW_OP_constu:
23956           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23957                                                   &bytes_read);
23958           i += bytes_read;
23959           break;
23960
23961         case DW_OP_consts:
23962           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23963           i += bytes_read;
23964           break;
23965
23966         case DW_OP_dup:
23967           stack[stacki + 1] = stack[stacki];
23968           stacki++;
23969           break;
23970
23971         case DW_OP_plus:
23972           stack[stacki - 1] += stack[stacki];
23973           stacki--;
23974           break;
23975
23976         case DW_OP_plus_uconst:
23977           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23978                                                  &bytes_read);
23979           i += bytes_read;
23980           break;
23981
23982         case DW_OP_minus:
23983           stack[stacki - 1] -= stack[stacki];
23984           stacki--;
23985           break;
23986
23987         case DW_OP_deref:
23988           /* If we're not the last op, then we definitely can't encode
23989              this using GDB's address_class enum.  This is valid for partial
23990              global symbols, although the variable's address will be bogus
23991              in the psymtab.  */
23992           if (i < size)
23993             dwarf2_complex_location_expr_complaint ();
23994           break;
23995
23996         case DW_OP_GNU_push_tls_address:
23997         case DW_OP_form_tls_address:
23998           /* The top of the stack has the offset from the beginning
23999              of the thread control block at which the variable is located.  */
24000           /* Nothing should follow this operator, so the top of stack would
24001              be returned.  */
24002           /* This is valid for partial global symbols, but the variable's
24003              address will be bogus in the psymtab.  Make it always at least
24004              non-zero to not look as a variable garbage collected by linker
24005              which have DW_OP_addr 0.  */
24006           if (i < size)
24007             dwarf2_complex_location_expr_complaint ();
24008           stack[stacki]++;
24009           break;
24010
24011         case DW_OP_GNU_uninit:
24012           break;
24013
24014         case DW_OP_addrx:
24015         case DW_OP_GNU_addr_index:
24016         case DW_OP_GNU_const_index:
24017           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
24018                                                          &bytes_read);
24019           i += bytes_read;
24020           break;
24021
24022         default:
24023           {
24024             const char *name = get_DW_OP_name (op);
24025
24026             if (name)
24027               complaint (_("unsupported stack op: '%s'"),
24028                          name);
24029             else
24030               complaint (_("unsupported stack op: '%02x'"),
24031                          op);
24032           }
24033
24034           return (stack[stacki]);
24035         }
24036
24037       /* Enforce maximum stack depth of SIZE-1 to avoid writing
24038          outside of the allocated space.  Also enforce minimum>0.  */
24039       if (stacki >= ARRAY_SIZE (stack) - 1)
24040         {
24041           complaint (_("location description stack overflow"));
24042           return 0;
24043         }
24044
24045       if (stacki <= 0)
24046         {
24047           complaint (_("location description stack underflow"));
24048           return 0;
24049         }
24050     }
24051   return (stack[stacki]);
24052 }
24053
24054 /* memory allocation interface */
24055
24056 static struct dwarf_block *
24057 dwarf_alloc_block (struct dwarf2_cu *cu)
24058 {
24059   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
24060 }
24061
24062 static struct die_info *
24063 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
24064 {
24065   struct die_info *die;
24066   size_t size = sizeof (struct die_info);
24067
24068   if (num_attrs > 1)
24069     size += (num_attrs - 1) * sizeof (struct attribute);
24070
24071   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
24072   memset (die, 0, sizeof (struct die_info));
24073   return (die);
24074 }
24075
24076 \f
24077 /* Macro support.  */
24078
24079 /* Return file name relative to the compilation directory of file number I in
24080    *LH's file name table.  The result is allocated using xmalloc; the caller is
24081    responsible for freeing it.  */
24082
24083 static char *
24084 file_file_name (int file, struct line_header *lh)
24085 {
24086   /* Is the file number a valid index into the line header's file name
24087      table?  Remember that file numbers start with one, not zero.  */
24088   if (1 <= file && file <= lh->file_names.size ())
24089     {
24090       const file_entry &fe = lh->file_names[file - 1];
24091
24092       if (!IS_ABSOLUTE_PATH (fe.name))
24093         {
24094           const char *dir = fe.include_dir (lh);
24095           if (dir != NULL)
24096             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
24097         }
24098       return xstrdup (fe.name);
24099     }
24100   else
24101     {
24102       /* The compiler produced a bogus file number.  We can at least
24103          record the macro definitions made in the file, even if we
24104          won't be able to find the file by name.  */
24105       char fake_name[80];
24106
24107       xsnprintf (fake_name, sizeof (fake_name),
24108                  "<bad macro file number %d>", file);
24109
24110       complaint (_("bad file number in macro information (%d)"),
24111                  file);
24112
24113       return xstrdup (fake_name);
24114     }
24115 }
24116
24117 /* Return the full name of file number I in *LH's file name table.
24118    Use COMP_DIR as the name of the current directory of the
24119    compilation.  The result is allocated using xmalloc; the caller is
24120    responsible for freeing it.  */
24121 static char *
24122 file_full_name (int file, struct line_header *lh, const char *comp_dir)
24123 {
24124   /* Is the file number a valid index into the line header's file name
24125      table?  Remember that file numbers start with one, not zero.  */
24126   if (1 <= file && file <= lh->file_names.size ())
24127     {
24128       char *relative = file_file_name (file, lh);
24129
24130       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
24131         return relative;
24132       return reconcat (relative, comp_dir, SLASH_STRING,
24133                        relative, (char *) NULL);
24134     }
24135   else
24136     return file_file_name (file, lh);
24137 }
24138
24139
24140 static struct macro_source_file *
24141 macro_start_file (struct dwarf2_cu *cu,
24142                   int file, int line,
24143                   struct macro_source_file *current_file,
24144                   struct line_header *lh)
24145 {
24146   /* File name relative to the compilation directory of this source file.  */
24147   char *file_name = file_file_name (file, lh);
24148
24149   if (! current_file)
24150     {
24151       /* Note: We don't create a macro table for this compilation unit
24152          at all until we actually get a filename.  */
24153       struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
24154
24155       /* If we have no current file, then this must be the start_file
24156          directive for the compilation unit's main source file.  */
24157       current_file = macro_set_main (macro_table, file_name);
24158       macro_define_special (macro_table);
24159     }
24160   else
24161     current_file = macro_include (current_file, line, file_name);
24162
24163   xfree (file_name);
24164
24165   return current_file;
24166 }
24167
24168 static const char *
24169 consume_improper_spaces (const char *p, const char *body)
24170 {
24171   if (*p == ' ')
24172     {
24173       complaint (_("macro definition contains spaces "
24174                    "in formal argument list:\n`%s'"),
24175                  body);
24176
24177       while (*p == ' ')
24178         p++;
24179     }
24180
24181   return p;
24182 }
24183
24184
24185 static void
24186 parse_macro_definition (struct macro_source_file *file, int line,
24187                         const char *body)
24188 {
24189   const char *p;
24190
24191   /* The body string takes one of two forms.  For object-like macro
24192      definitions, it should be:
24193
24194         <macro name> " " <definition>
24195
24196      For function-like macro definitions, it should be:
24197
24198         <macro name> "() " <definition>
24199      or
24200         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24201
24202      Spaces may appear only where explicitly indicated, and in the
24203      <definition>.
24204
24205      The Dwarf 2 spec says that an object-like macro's name is always
24206      followed by a space, but versions of GCC around March 2002 omit
24207      the space when the macro's definition is the empty string.
24208
24209      The Dwarf 2 spec says that there should be no spaces between the
24210      formal arguments in a function-like macro's formal argument list,
24211      but versions of GCC around March 2002 include spaces after the
24212      commas.  */
24213
24214
24215   /* Find the extent of the macro name.  The macro name is terminated
24216      by either a space or null character (for an object-like macro) or
24217      an opening paren (for a function-like macro).  */
24218   for (p = body; *p; p++)
24219     if (*p == ' ' || *p == '(')
24220       break;
24221
24222   if (*p == ' ' || *p == '\0')
24223     {
24224       /* It's an object-like macro.  */
24225       int name_len = p - body;
24226       char *name = savestring (body, name_len);
24227       const char *replacement;
24228
24229       if (*p == ' ')
24230         replacement = body + name_len + 1;
24231       else
24232         {
24233           dwarf2_macro_malformed_definition_complaint (body);
24234           replacement = body + name_len;
24235         }
24236
24237       macro_define_object (file, line, name, replacement);
24238
24239       xfree (name);
24240     }
24241   else if (*p == '(')
24242     {
24243       /* It's a function-like macro.  */
24244       char *name = savestring (body, p - body);
24245       int argc = 0;
24246       int argv_size = 1;
24247       char **argv = XNEWVEC (char *, argv_size);
24248
24249       p++;
24250
24251       p = consume_improper_spaces (p, body);
24252
24253       /* Parse the formal argument list.  */
24254       while (*p && *p != ')')
24255         {
24256           /* Find the extent of the current argument name.  */
24257           const char *arg_start = p;
24258
24259           while (*p && *p != ',' && *p != ')' && *p != ' ')
24260             p++;
24261
24262           if (! *p || p == arg_start)
24263             dwarf2_macro_malformed_definition_complaint (body);
24264           else
24265             {
24266               /* Make sure argv has room for the new argument.  */
24267               if (argc >= argv_size)
24268                 {
24269                   argv_size *= 2;
24270                   argv = XRESIZEVEC (char *, argv, argv_size);
24271                 }
24272
24273               argv[argc++] = savestring (arg_start, p - arg_start);
24274             }
24275
24276           p = consume_improper_spaces (p, body);
24277
24278           /* Consume the comma, if present.  */
24279           if (*p == ',')
24280             {
24281               p++;
24282
24283               p = consume_improper_spaces (p, body);
24284             }
24285         }
24286
24287       if (*p == ')')
24288         {
24289           p++;
24290
24291           if (*p == ' ')
24292             /* Perfectly formed definition, no complaints.  */
24293             macro_define_function (file, line, name,
24294                                    argc, (const char **) argv,
24295                                    p + 1);
24296           else if (*p == '\0')
24297             {
24298               /* Complain, but do define it.  */
24299               dwarf2_macro_malformed_definition_complaint (body);
24300               macro_define_function (file, line, name,
24301                                      argc, (const char **) argv,
24302                                      p);
24303             }
24304           else
24305             /* Just complain.  */
24306             dwarf2_macro_malformed_definition_complaint (body);
24307         }
24308       else
24309         /* Just complain.  */
24310         dwarf2_macro_malformed_definition_complaint (body);
24311
24312       xfree (name);
24313       {
24314         int i;
24315
24316         for (i = 0; i < argc; i++)
24317           xfree (argv[i]);
24318       }
24319       xfree (argv);
24320     }
24321   else
24322     dwarf2_macro_malformed_definition_complaint (body);
24323 }
24324
24325 /* Skip some bytes from BYTES according to the form given in FORM.
24326    Returns the new pointer.  */
24327
24328 static const gdb_byte *
24329 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24330                  enum dwarf_form form,
24331                  unsigned int offset_size,
24332                  struct dwarf2_section_info *section)
24333 {
24334   unsigned int bytes_read;
24335
24336   switch (form)
24337     {
24338     case DW_FORM_data1:
24339     case DW_FORM_flag:
24340       ++bytes;
24341       break;
24342
24343     case DW_FORM_data2:
24344       bytes += 2;
24345       break;
24346
24347     case DW_FORM_data4:
24348       bytes += 4;
24349       break;
24350
24351     case DW_FORM_data8:
24352       bytes += 8;
24353       break;
24354
24355     case DW_FORM_data16:
24356       bytes += 16;
24357       break;
24358
24359     case DW_FORM_string:
24360       read_direct_string (abfd, bytes, &bytes_read);
24361       bytes += bytes_read;
24362       break;
24363
24364     case DW_FORM_sec_offset:
24365     case DW_FORM_strp:
24366     case DW_FORM_GNU_strp_alt:
24367       bytes += offset_size;
24368       break;
24369
24370     case DW_FORM_block:
24371       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24372       bytes += bytes_read;
24373       break;
24374
24375     case DW_FORM_block1:
24376       bytes += 1 + read_1_byte (abfd, bytes);
24377       break;
24378     case DW_FORM_block2:
24379       bytes += 2 + read_2_bytes (abfd, bytes);
24380       break;
24381     case DW_FORM_block4:
24382       bytes += 4 + read_4_bytes (abfd, bytes);
24383       break;
24384
24385     case DW_FORM_addrx:
24386     case DW_FORM_sdata:
24387     case DW_FORM_strx:
24388     case DW_FORM_udata:
24389     case DW_FORM_GNU_addr_index:
24390     case DW_FORM_GNU_str_index:
24391       bytes = gdb_skip_leb128 (bytes, buffer_end);
24392       if (bytes == NULL)
24393         {
24394           dwarf2_section_buffer_overflow_complaint (section);
24395           return NULL;
24396         }
24397       break;
24398
24399     case DW_FORM_implicit_const:
24400       break;
24401
24402     default:
24403       {
24404         complaint (_("invalid form 0x%x in `%s'"),
24405                    form, get_section_name (section));
24406         return NULL;
24407       }
24408     }
24409
24410   return bytes;
24411 }
24412
24413 /* A helper for dwarf_decode_macros that handles skipping an unknown
24414    opcode.  Returns an updated pointer to the macro data buffer; or,
24415    on error, issues a complaint and returns NULL.  */
24416
24417 static const gdb_byte *
24418 skip_unknown_opcode (unsigned int opcode,
24419                      const gdb_byte **opcode_definitions,
24420                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24421                      bfd *abfd,
24422                      unsigned int offset_size,
24423                      struct dwarf2_section_info *section)
24424 {
24425   unsigned int bytes_read, i;
24426   unsigned long arg;
24427   const gdb_byte *defn;
24428
24429   if (opcode_definitions[opcode] == NULL)
24430     {
24431       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24432                  opcode);
24433       return NULL;
24434     }
24435
24436   defn = opcode_definitions[opcode];
24437   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24438   defn += bytes_read;
24439
24440   for (i = 0; i < arg; ++i)
24441     {
24442       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24443                                  (enum dwarf_form) defn[i], offset_size,
24444                                  section);
24445       if (mac_ptr == NULL)
24446         {
24447           /* skip_form_bytes already issued the complaint.  */
24448           return NULL;
24449         }
24450     }
24451
24452   return mac_ptr;
24453 }
24454
24455 /* A helper function which parses the header of a macro section.
24456    If the macro section is the extended (for now called "GNU") type,
24457    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24458    the header, or issues a complaint and returns NULL on error.  */
24459
24460 static const gdb_byte *
24461 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24462                           bfd *abfd,
24463                           const gdb_byte *mac_ptr,
24464                           unsigned int *offset_size,
24465                           int section_is_gnu)
24466 {
24467   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24468
24469   if (section_is_gnu)
24470     {
24471       unsigned int version, flags;
24472
24473       version = read_2_bytes (abfd, mac_ptr);
24474       if (version != 4 && version != 5)
24475         {
24476           complaint (_("unrecognized version `%d' in .debug_macro section"),
24477                      version);
24478           return NULL;
24479         }
24480       mac_ptr += 2;
24481
24482       flags = read_1_byte (abfd, mac_ptr);
24483       ++mac_ptr;
24484       *offset_size = (flags & 1) ? 8 : 4;
24485
24486       if ((flags & 2) != 0)
24487         /* We don't need the line table offset.  */
24488         mac_ptr += *offset_size;
24489
24490       /* Vendor opcode descriptions.  */
24491       if ((flags & 4) != 0)
24492         {
24493           unsigned int i, count;
24494
24495           count = read_1_byte (abfd, mac_ptr);
24496           ++mac_ptr;
24497           for (i = 0; i < count; ++i)
24498             {
24499               unsigned int opcode, bytes_read;
24500               unsigned long arg;
24501
24502               opcode = read_1_byte (abfd, mac_ptr);
24503               ++mac_ptr;
24504               opcode_definitions[opcode] = mac_ptr;
24505               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24506               mac_ptr += bytes_read;
24507               mac_ptr += arg;
24508             }
24509         }
24510     }
24511
24512   return mac_ptr;
24513 }
24514
24515 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24516    including DW_MACRO_import.  */
24517
24518 static void
24519 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24520                           bfd *abfd,
24521                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24522                           struct macro_source_file *current_file,
24523                           struct line_header *lh,
24524                           struct dwarf2_section_info *section,
24525                           int section_is_gnu, int section_is_dwz,
24526                           unsigned int offset_size,
24527                           htab_t include_hash)
24528 {
24529   struct dwarf2_per_objfile *dwarf2_per_objfile
24530     = cu->per_cu->dwarf2_per_objfile;
24531   struct objfile *objfile = dwarf2_per_objfile->objfile;
24532   enum dwarf_macro_record_type macinfo_type;
24533   int at_commandline;
24534   const gdb_byte *opcode_definitions[256];
24535
24536   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24537                                       &offset_size, section_is_gnu);
24538   if (mac_ptr == NULL)
24539     {
24540       /* We already issued a complaint.  */
24541       return;
24542     }
24543
24544   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24545      GDB is still reading the definitions from command line.  First
24546      DW_MACINFO_start_file will need to be ignored as it was already executed
24547      to create CURRENT_FILE for the main source holding also the command line
24548      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24549      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24550
24551   at_commandline = 1;
24552
24553   do
24554     {
24555       /* Do we at least have room for a macinfo type byte?  */
24556       if (mac_ptr >= mac_end)
24557         {
24558           dwarf2_section_buffer_overflow_complaint (section);
24559           break;
24560         }
24561
24562       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24563       mac_ptr++;
24564
24565       /* Note that we rely on the fact that the corresponding GNU and
24566          DWARF constants are the same.  */
24567       DIAGNOSTIC_PUSH
24568       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24569       switch (macinfo_type)
24570         {
24571           /* A zero macinfo type indicates the end of the macro
24572              information.  */
24573         case 0:
24574           break;
24575
24576         case DW_MACRO_define:
24577         case DW_MACRO_undef:
24578         case DW_MACRO_define_strp:
24579         case DW_MACRO_undef_strp:
24580         case DW_MACRO_define_sup:
24581         case DW_MACRO_undef_sup:
24582           {
24583             unsigned int bytes_read;
24584             int line;
24585             const char *body;
24586             int is_define;
24587
24588             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24589             mac_ptr += bytes_read;
24590
24591             if (macinfo_type == DW_MACRO_define
24592                 || macinfo_type == DW_MACRO_undef)
24593               {
24594                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24595                 mac_ptr += bytes_read;
24596               }
24597             else
24598               {
24599                 LONGEST str_offset;
24600
24601                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24602                 mac_ptr += offset_size;
24603
24604                 if (macinfo_type == DW_MACRO_define_sup
24605                     || macinfo_type == DW_MACRO_undef_sup
24606                     || section_is_dwz)
24607                   {
24608                     struct dwz_file *dwz
24609                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24610
24611                     body = read_indirect_string_from_dwz (objfile,
24612                                                           dwz, str_offset);
24613                   }
24614                 else
24615                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24616                                                          abfd, str_offset);
24617               }
24618
24619             is_define = (macinfo_type == DW_MACRO_define
24620                          || macinfo_type == DW_MACRO_define_strp
24621                          || macinfo_type == DW_MACRO_define_sup);
24622             if (! current_file)
24623               {
24624                 /* DWARF violation as no main source is present.  */
24625                 complaint (_("debug info with no main source gives macro %s "
24626                              "on line %d: %s"),
24627                            is_define ? _("definition") : _("undefinition"),
24628                            line, body);
24629                 break;
24630               }
24631             if ((line == 0 && !at_commandline)
24632                 || (line != 0 && at_commandline))
24633               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24634                          at_commandline ? _("command-line") : _("in-file"),
24635                          is_define ? _("definition") : _("undefinition"),
24636                          line == 0 ? _("zero") : _("non-zero"), line, body);
24637
24638             if (is_define)
24639               {
24640                 if (body != NULL)
24641                   parse_macro_definition (current_file, line, body);
24642                 else
24643                   {
24644                     /* Fedora's rpm-build's "debugedit" binary
24645                        corrupted .debug_macro sections.
24646
24647                        For more info, see
24648                        https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
24649                     complaint (_("debug info gives %s invalid macro definition "
24650                                  "without body (corrupted?) at line %d"
24651                                  "on file %s"),
24652                                at_commandline ? _("command-line")
24653                                : _("in-file"),
24654                                line, current_file->filename);
24655                   }
24656               }
24657             else
24658               {
24659                 gdb_assert (macinfo_type == DW_MACRO_undef
24660                             || macinfo_type == DW_MACRO_undef_strp
24661                             || macinfo_type == DW_MACRO_undef_sup);
24662                 macro_undef (current_file, line, body);
24663               }
24664           }
24665           break;
24666
24667         case DW_MACRO_start_file:
24668           {
24669             unsigned int bytes_read;
24670             int line, file;
24671
24672             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24673             mac_ptr += bytes_read;
24674             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24675             mac_ptr += bytes_read;
24676
24677             if ((line == 0 && !at_commandline)
24678                 || (line != 0 && at_commandline))
24679               complaint (_("debug info gives source %d included "
24680                            "from %s at %s line %d"),
24681                          file, at_commandline ? _("command-line") : _("file"),
24682                          line == 0 ? _("zero") : _("non-zero"), line);
24683
24684             if (at_commandline)
24685               {
24686                 /* This DW_MACRO_start_file was executed in the
24687                    pass one.  */
24688                 at_commandline = 0;
24689               }
24690             else
24691               current_file = macro_start_file (cu, file, line, current_file,
24692                                                lh);
24693           }
24694           break;
24695
24696         case DW_MACRO_end_file:
24697           if (! current_file)
24698             complaint (_("macro debug info has an unmatched "
24699                          "`close_file' directive"));
24700           else
24701             {
24702               current_file = current_file->included_by;
24703               if (! current_file)
24704                 {
24705                   enum dwarf_macro_record_type next_type;
24706
24707                   /* GCC circa March 2002 doesn't produce the zero
24708                      type byte marking the end of the compilation
24709                      unit.  Complain if it's not there, but exit no
24710                      matter what.  */
24711
24712                   /* Do we at least have room for a macinfo type byte?  */
24713                   if (mac_ptr >= mac_end)
24714                     {
24715                       dwarf2_section_buffer_overflow_complaint (section);
24716                       return;
24717                     }
24718
24719                   /* We don't increment mac_ptr here, so this is just
24720                      a look-ahead.  */
24721                   next_type
24722                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24723                                                                   mac_ptr);
24724                   if (next_type != 0)
24725                     complaint (_("no terminating 0-type entry for "
24726                                  "macros in `.debug_macinfo' section"));
24727
24728                   return;
24729                 }
24730             }
24731           break;
24732
24733         case DW_MACRO_import:
24734         case DW_MACRO_import_sup:
24735           {
24736             LONGEST offset;
24737             void **slot;
24738             bfd *include_bfd = abfd;
24739             struct dwarf2_section_info *include_section = section;
24740             const gdb_byte *include_mac_end = mac_end;
24741             int is_dwz = section_is_dwz;
24742             const gdb_byte *new_mac_ptr;
24743
24744             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24745             mac_ptr += offset_size;
24746
24747             if (macinfo_type == DW_MACRO_import_sup)
24748               {
24749                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24750
24751                 dwarf2_read_section (objfile, &dwz->macro);
24752
24753                 include_section = &dwz->macro;
24754                 include_bfd = get_section_bfd_owner (include_section);
24755                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24756                 is_dwz = 1;
24757               }
24758
24759             new_mac_ptr = include_section->buffer + offset;
24760             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24761
24762             if (*slot != NULL)
24763               {
24764                 /* This has actually happened; see
24765                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24766                 complaint (_("recursive DW_MACRO_import in "
24767                              ".debug_macro section"));
24768               }
24769             else
24770               {
24771                 *slot = (void *) new_mac_ptr;
24772
24773                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24774                                           include_mac_end, current_file, lh,
24775                                           section, section_is_gnu, is_dwz,
24776                                           offset_size, include_hash);
24777
24778                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24779               }
24780           }
24781           break;
24782
24783         case DW_MACINFO_vendor_ext:
24784           if (!section_is_gnu)
24785             {
24786               unsigned int bytes_read;
24787
24788               /* This reads the constant, but since we don't recognize
24789                  any vendor extensions, we ignore it.  */
24790               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24791               mac_ptr += bytes_read;
24792               read_direct_string (abfd, mac_ptr, &bytes_read);
24793               mac_ptr += bytes_read;
24794
24795               /* We don't recognize any vendor extensions.  */
24796               break;
24797             }
24798           /* FALLTHROUGH */
24799
24800         default:
24801           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24802                                          mac_ptr, mac_end, abfd, offset_size,
24803                                          section);
24804           if (mac_ptr == NULL)
24805             return;
24806           break;
24807         }
24808       DIAGNOSTIC_POP
24809     } while (macinfo_type != 0);
24810 }
24811
24812 static void
24813 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24814                      int section_is_gnu)
24815 {
24816   struct dwarf2_per_objfile *dwarf2_per_objfile
24817     = cu->per_cu->dwarf2_per_objfile;
24818   struct objfile *objfile = dwarf2_per_objfile->objfile;
24819   struct line_header *lh = cu->line_header;
24820   bfd *abfd;
24821   const gdb_byte *mac_ptr, *mac_end;
24822   struct macro_source_file *current_file = 0;
24823   enum dwarf_macro_record_type macinfo_type;
24824   unsigned int offset_size = cu->header.offset_size;
24825   const gdb_byte *opcode_definitions[256];
24826   void **slot;
24827   struct dwarf2_section_info *section;
24828   const char *section_name;
24829
24830   if (cu->dwo_unit != NULL)
24831     {
24832       if (section_is_gnu)
24833         {
24834           section = &cu->dwo_unit->dwo_file->sections.macro;
24835           section_name = ".debug_macro.dwo";
24836         }
24837       else
24838         {
24839           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24840           section_name = ".debug_macinfo.dwo";
24841         }
24842     }
24843   else
24844     {
24845       if (section_is_gnu)
24846         {
24847           section = &dwarf2_per_objfile->macro;
24848           section_name = ".debug_macro";
24849         }
24850       else
24851         {
24852           section = &dwarf2_per_objfile->macinfo;
24853           section_name = ".debug_macinfo";
24854         }
24855     }
24856
24857   dwarf2_read_section (objfile, section);
24858   if (section->buffer == NULL)
24859     {
24860       complaint (_("missing %s section"), section_name);
24861       return;
24862     }
24863   abfd = get_section_bfd_owner (section);
24864
24865   /* First pass: Find the name of the base filename.
24866      This filename is needed in order to process all macros whose definition
24867      (or undefinition) comes from the command line.  These macros are defined
24868      before the first DW_MACINFO_start_file entry, and yet still need to be
24869      associated to the base file.
24870
24871      To determine the base file name, we scan the macro definitions until we
24872      reach the first DW_MACINFO_start_file entry.  We then initialize
24873      CURRENT_FILE accordingly so that any macro definition found before the
24874      first DW_MACINFO_start_file can still be associated to the base file.  */
24875
24876   mac_ptr = section->buffer + offset;
24877   mac_end = section->buffer + section->size;
24878
24879   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24880                                       &offset_size, section_is_gnu);
24881   if (mac_ptr == NULL)
24882     {
24883       /* We already issued a complaint.  */
24884       return;
24885     }
24886
24887   do
24888     {
24889       /* Do we at least have room for a macinfo type byte?  */
24890       if (mac_ptr >= mac_end)
24891         {
24892           /* Complaint is printed during the second pass as GDB will probably
24893              stop the first pass earlier upon finding
24894              DW_MACINFO_start_file.  */
24895           break;
24896         }
24897
24898       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24899       mac_ptr++;
24900
24901       /* Note that we rely on the fact that the corresponding GNU and
24902          DWARF constants are the same.  */
24903       DIAGNOSTIC_PUSH
24904       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24905       switch (macinfo_type)
24906         {
24907           /* A zero macinfo type indicates the end of the macro
24908              information.  */
24909         case 0:
24910           break;
24911
24912         case DW_MACRO_define:
24913         case DW_MACRO_undef:
24914           /* Only skip the data by MAC_PTR.  */
24915           {
24916             unsigned int bytes_read;
24917
24918             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24919             mac_ptr += bytes_read;
24920             read_direct_string (abfd, mac_ptr, &bytes_read);
24921             mac_ptr += bytes_read;
24922           }
24923           break;
24924
24925         case DW_MACRO_start_file:
24926           {
24927             unsigned int bytes_read;
24928             int line, file;
24929
24930             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24931             mac_ptr += bytes_read;
24932             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24933             mac_ptr += bytes_read;
24934
24935             current_file = macro_start_file (cu, file, line, current_file, lh);
24936           }
24937           break;
24938
24939         case DW_MACRO_end_file:
24940           /* No data to skip by MAC_PTR.  */
24941           break;
24942
24943         case DW_MACRO_define_strp:
24944         case DW_MACRO_undef_strp:
24945         case DW_MACRO_define_sup:
24946         case DW_MACRO_undef_sup:
24947           {
24948             unsigned int bytes_read;
24949
24950             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24951             mac_ptr += bytes_read;
24952             mac_ptr += offset_size;
24953           }
24954           break;
24955
24956         case DW_MACRO_import:
24957         case DW_MACRO_import_sup:
24958           /* Note that, according to the spec, a transparent include
24959              chain cannot call DW_MACRO_start_file.  So, we can just
24960              skip this opcode.  */
24961           mac_ptr += offset_size;
24962           break;
24963
24964         case DW_MACINFO_vendor_ext:
24965           /* Only skip the data by MAC_PTR.  */
24966           if (!section_is_gnu)
24967             {
24968               unsigned int bytes_read;
24969
24970               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24971               mac_ptr += bytes_read;
24972               read_direct_string (abfd, mac_ptr, &bytes_read);
24973               mac_ptr += bytes_read;
24974             }
24975           /* FALLTHROUGH */
24976
24977         default:
24978           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24979                                          mac_ptr, mac_end, abfd, offset_size,
24980                                          section);
24981           if (mac_ptr == NULL)
24982             return;
24983           break;
24984         }
24985       DIAGNOSTIC_POP
24986     } while (macinfo_type != 0 && current_file == NULL);
24987
24988   /* Second pass: Process all entries.
24989
24990      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24991      command-line macro definitions/undefinitions.  This flag is unset when we
24992      reach the first DW_MACINFO_start_file entry.  */
24993
24994   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24995                                            htab_eq_pointer,
24996                                            NULL, xcalloc, xfree));
24997   mac_ptr = section->buffer + offset;
24998   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24999   *slot = (void *) mac_ptr;
25000   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
25001                             current_file, lh, section,
25002                             section_is_gnu, 0, offset_size,
25003                             include_hash.get ());
25004 }
25005
25006 /* Check if the attribute's form is a DW_FORM_block*
25007    if so return true else false.  */
25008
25009 static int
25010 attr_form_is_block (const struct attribute *attr)
25011 {
25012   return (attr == NULL ? 0 :
25013       attr->form == DW_FORM_block1
25014       || attr->form == DW_FORM_block2
25015       || attr->form == DW_FORM_block4
25016       || attr->form == DW_FORM_block
25017       || attr->form == DW_FORM_exprloc);
25018 }
25019
25020 /* Return non-zero if ATTR's value is a section offset --- classes
25021    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
25022    You may use DW_UNSND (attr) to retrieve such offsets.
25023
25024    Section 7.5.4, "Attribute Encodings", explains that no attribute
25025    may have a value that belongs to more than one of these classes; it
25026    would be ambiguous if we did, because we use the same forms for all
25027    of them.  */
25028
25029 static int
25030 attr_form_is_section_offset (const struct attribute *attr)
25031 {
25032   return (attr->form == DW_FORM_data4
25033           || attr->form == DW_FORM_data8
25034           || attr->form == DW_FORM_sec_offset);
25035 }
25036
25037 /* Return non-zero if ATTR's value falls in the 'constant' class, or
25038    zero otherwise.  When this function returns true, you can apply
25039    dwarf2_get_attr_constant_value to it.
25040
25041    However, note that for some attributes you must check
25042    attr_form_is_section_offset before using this test.  DW_FORM_data4
25043    and DW_FORM_data8 are members of both the constant class, and of
25044    the classes that contain offsets into other debug sections
25045    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
25046    that, if an attribute's can be either a constant or one of the
25047    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
25048    taken as section offsets, not constants.
25049
25050    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
25051    cannot handle that.  */
25052
25053 static int
25054 attr_form_is_constant (const struct attribute *attr)
25055 {
25056   switch (attr->form)
25057     {
25058     case DW_FORM_sdata:
25059     case DW_FORM_udata:
25060     case DW_FORM_data1:
25061     case DW_FORM_data2:
25062     case DW_FORM_data4:
25063     case DW_FORM_data8:
25064     case DW_FORM_implicit_const:
25065       return 1;
25066     default:
25067       return 0;
25068     }
25069 }
25070
25071
25072 /* DW_ADDR is always stored already as sect_offset; despite for the forms
25073    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
25074
25075 static int
25076 attr_form_is_ref (const struct attribute *attr)
25077 {
25078   switch (attr->form)
25079     {
25080     case DW_FORM_ref_addr:
25081     case DW_FORM_ref1:
25082     case DW_FORM_ref2:
25083     case DW_FORM_ref4:
25084     case DW_FORM_ref8:
25085     case DW_FORM_ref_udata:
25086     case DW_FORM_GNU_ref_alt:
25087       return 1;
25088     default:
25089       return 0;
25090     }
25091 }
25092
25093 /* Return the .debug_loc section to use for CU.
25094    For DWO files use .debug_loc.dwo.  */
25095
25096 static struct dwarf2_section_info *
25097 cu_debug_loc_section (struct dwarf2_cu *cu)
25098 {
25099   struct dwarf2_per_objfile *dwarf2_per_objfile
25100     = cu->per_cu->dwarf2_per_objfile;
25101
25102   if (cu->dwo_unit)
25103     {
25104       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
25105       
25106       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
25107     }
25108   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
25109                                   : &dwarf2_per_objfile->loc);
25110 }
25111
25112 /* A helper function that fills in a dwarf2_loclist_baton.  */
25113
25114 static void
25115 fill_in_loclist_baton (struct dwarf2_cu *cu,
25116                        struct dwarf2_loclist_baton *baton,
25117                        const struct attribute *attr)
25118 {
25119   struct dwarf2_per_objfile *dwarf2_per_objfile
25120     = cu->per_cu->dwarf2_per_objfile;
25121   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25122
25123   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
25124
25125   baton->per_cu = cu->per_cu;
25126   gdb_assert (baton->per_cu);
25127   /* We don't know how long the location list is, but make sure we
25128      don't run off the edge of the section.  */
25129   baton->size = section->size - DW_UNSND (attr);
25130   baton->data = section->buffer + DW_UNSND (attr);
25131   baton->base_address = cu->base_address;
25132   baton->from_dwo = cu->dwo_unit != NULL;
25133 }
25134
25135 static void
25136 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
25137                              struct dwarf2_cu *cu, int is_block)
25138 {
25139   struct dwarf2_per_objfile *dwarf2_per_objfile
25140     = cu->per_cu->dwarf2_per_objfile;
25141   struct objfile *objfile = dwarf2_per_objfile->objfile;
25142   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25143
25144   if (attr_form_is_section_offset (attr)
25145       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
25146          the section.  If so, fall through to the complaint in the
25147          other branch.  */
25148       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
25149     {
25150       struct dwarf2_loclist_baton *baton;
25151
25152       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25153
25154       fill_in_loclist_baton (cu, baton, attr);
25155
25156       if (cu->base_known == 0)
25157         complaint (_("Location list used without "
25158                      "specifying the CU base address."));
25159
25160       SYMBOL_ACLASS_INDEX (sym) = (is_block
25161                                    ? dwarf2_loclist_block_index
25162                                    : dwarf2_loclist_index);
25163       SYMBOL_LOCATION_BATON (sym) = baton;
25164     }
25165   else
25166     {
25167       struct dwarf2_locexpr_baton *baton;
25168
25169       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25170       baton->per_cu = cu->per_cu;
25171       gdb_assert (baton->per_cu);
25172
25173       if (attr_form_is_block (attr))
25174         {
25175           /* Note that we're just copying the block's data pointer
25176              here, not the actual data.  We're still pointing into the
25177              info_buffer for SYM's objfile; right now we never release
25178              that buffer, but when we do clean up properly this may
25179              need to change.  */
25180           baton->size = DW_BLOCK (attr)->size;
25181           baton->data = DW_BLOCK (attr)->data;
25182         }
25183       else
25184         {
25185           dwarf2_invalid_attrib_class_complaint ("location description",
25186                                                  SYMBOL_NATURAL_NAME (sym));
25187           baton->size = 0;
25188         }
25189
25190       SYMBOL_ACLASS_INDEX (sym) = (is_block
25191                                    ? dwarf2_locexpr_block_index
25192                                    : dwarf2_locexpr_index);
25193       SYMBOL_LOCATION_BATON (sym) = baton;
25194     }
25195 }
25196
25197 /* Return the OBJFILE associated with the compilation unit CU.  If CU
25198    came from a separate debuginfo file, then the master objfile is
25199    returned.  */
25200
25201 struct objfile *
25202 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25203 {
25204   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25205
25206   /* Return the master objfile, so that we can report and look up the
25207      correct file containing this variable.  */
25208   if (objfile->separate_debug_objfile_backlink)
25209     objfile = objfile->separate_debug_objfile_backlink;
25210
25211   return objfile;
25212 }
25213
25214 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25215    (CU_HEADERP is unused in such case) or prepare a temporary copy at
25216    CU_HEADERP first.  */
25217
25218 static const struct comp_unit_head *
25219 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25220                        struct dwarf2_per_cu_data *per_cu)
25221 {
25222   const gdb_byte *info_ptr;
25223
25224   if (per_cu->cu)
25225     return &per_cu->cu->header;
25226
25227   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25228
25229   memset (cu_headerp, 0, sizeof (*cu_headerp));
25230   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25231                        rcuh_kind::COMPILE);
25232
25233   return cu_headerp;
25234 }
25235
25236 /* Return the address size given in the compilation unit header for CU.  */
25237
25238 int
25239 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25240 {
25241   struct comp_unit_head cu_header_local;
25242   const struct comp_unit_head *cu_headerp;
25243
25244   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25245
25246   return cu_headerp->addr_size;
25247 }
25248
25249 /* Return the offset size given in the compilation unit header for CU.  */
25250
25251 int
25252 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25253 {
25254   struct comp_unit_head cu_header_local;
25255   const struct comp_unit_head *cu_headerp;
25256
25257   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25258
25259   return cu_headerp->offset_size;
25260 }
25261
25262 /* See its dwarf2loc.h declaration.  */
25263
25264 int
25265 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25266 {
25267   struct comp_unit_head cu_header_local;
25268   const struct comp_unit_head *cu_headerp;
25269
25270   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25271
25272   if (cu_headerp->version == 2)
25273     return cu_headerp->addr_size;
25274   else
25275     return cu_headerp->offset_size;
25276 }
25277
25278 /* Return the text offset of the CU.  The returned offset comes from
25279    this CU's objfile.  If this objfile came from a separate debuginfo
25280    file, then the offset may be different from the corresponding
25281    offset in the parent objfile.  */
25282
25283 CORE_ADDR
25284 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25285 {
25286   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25287
25288   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25289 }
25290
25291 /* Return DWARF version number of PER_CU.  */
25292
25293 short
25294 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25295 {
25296   return per_cu->dwarf_version;
25297 }
25298
25299 /* Locate the .debug_info compilation unit from CU's objfile which contains
25300    the DIE at OFFSET.  Raises an error on failure.  */
25301
25302 static struct dwarf2_per_cu_data *
25303 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25304                                   unsigned int offset_in_dwz,
25305                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25306 {
25307   struct dwarf2_per_cu_data *this_cu;
25308   int low, high;
25309
25310   low = 0;
25311   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25312   while (high > low)
25313     {
25314       struct dwarf2_per_cu_data *mid_cu;
25315       int mid = low + (high - low) / 2;
25316
25317       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25318       if (mid_cu->is_dwz > offset_in_dwz
25319           || (mid_cu->is_dwz == offset_in_dwz
25320               && mid_cu->sect_off + mid_cu->length >= sect_off))
25321         high = mid;
25322       else
25323         low = mid + 1;
25324     }
25325   gdb_assert (low == high);
25326   this_cu = dwarf2_per_objfile->all_comp_units[low];
25327   if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
25328     {
25329       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25330         error (_("Dwarf Error: could not find partial DIE containing "
25331                "offset %s [in module %s]"),
25332                sect_offset_str (sect_off),
25333                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25334
25335       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25336                   <= sect_off);
25337       return dwarf2_per_objfile->all_comp_units[low-1];
25338     }
25339   else
25340     {
25341       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25342           && sect_off >= this_cu->sect_off + this_cu->length)
25343         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25344       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25345       return this_cu;
25346     }
25347 }
25348
25349 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25350
25351 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25352   : per_cu (per_cu_),
25353     mark (false),
25354     has_loclist (false),
25355     checked_producer (false),
25356     producer_is_gxx_lt_4_6 (false),
25357     producer_is_gcc_lt_4_3 (false),
25358     producer_is_icc (false),
25359     producer_is_icc_lt_14 (false),
25360     producer_is_codewarrior (false),
25361     processing_has_namespace_info (false)
25362 {
25363   per_cu->cu = this;
25364 }
25365
25366 /* Destroy a dwarf2_cu.  */
25367
25368 dwarf2_cu::~dwarf2_cu ()
25369 {
25370   per_cu->cu = NULL;
25371 }
25372
25373 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25374
25375 static void
25376 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25377                        enum language pretend_language)
25378 {
25379   struct attribute *attr;
25380
25381   /* Set the language we're debugging.  */
25382   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25383   if (attr)
25384     set_cu_language (DW_UNSND (attr), cu);
25385   else
25386     {
25387       cu->language = pretend_language;
25388       cu->language_defn = language_def (cu->language);
25389     }
25390
25391   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25392 }
25393
25394 /* Increase the age counter on each cached compilation unit, and free
25395    any that are too old.  */
25396
25397 static void
25398 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25399 {
25400   struct dwarf2_per_cu_data *per_cu, **last_chain;
25401
25402   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25403   per_cu = dwarf2_per_objfile->read_in_chain;
25404   while (per_cu != NULL)
25405     {
25406       per_cu->cu->last_used ++;
25407       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25408         dwarf2_mark (per_cu->cu);
25409       per_cu = per_cu->cu->read_in_chain;
25410     }
25411
25412   per_cu = dwarf2_per_objfile->read_in_chain;
25413   last_chain = &dwarf2_per_objfile->read_in_chain;
25414   while (per_cu != NULL)
25415     {
25416       struct dwarf2_per_cu_data *next_cu;
25417
25418       next_cu = per_cu->cu->read_in_chain;
25419
25420       if (!per_cu->cu->mark)
25421         {
25422           delete per_cu->cu;
25423           *last_chain = next_cu;
25424         }
25425       else
25426         last_chain = &per_cu->cu->read_in_chain;
25427
25428       per_cu = next_cu;
25429     }
25430 }
25431
25432 /* Remove a single compilation unit from the cache.  */
25433
25434 static void
25435 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25436 {
25437   struct dwarf2_per_cu_data *per_cu, **last_chain;
25438   struct dwarf2_per_objfile *dwarf2_per_objfile
25439     = target_per_cu->dwarf2_per_objfile;
25440
25441   per_cu = dwarf2_per_objfile->read_in_chain;
25442   last_chain = &dwarf2_per_objfile->read_in_chain;
25443   while (per_cu != NULL)
25444     {
25445       struct dwarf2_per_cu_data *next_cu;
25446
25447       next_cu = per_cu->cu->read_in_chain;
25448
25449       if (per_cu == target_per_cu)
25450         {
25451           delete per_cu->cu;
25452           per_cu->cu = NULL;
25453           *last_chain = next_cu;
25454           break;
25455         }
25456       else
25457         last_chain = &per_cu->cu->read_in_chain;
25458
25459       per_cu = next_cu;
25460     }
25461 }
25462
25463 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25464    We store these in a hash table separate from the DIEs, and preserve them
25465    when the DIEs are flushed out of cache.
25466
25467    The CU "per_cu" pointer is needed because offset alone is not enough to
25468    uniquely identify the type.  A file may have multiple .debug_types sections,
25469    or the type may come from a DWO file.  Furthermore, while it's more logical
25470    to use per_cu->section+offset, with Fission the section with the data is in
25471    the DWO file but we don't know that section at the point we need it.
25472    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25473    because we can enter the lookup routine, get_die_type_at_offset, from
25474    outside this file, and thus won't necessarily have PER_CU->cu.
25475    Fortunately, PER_CU is stable for the life of the objfile.  */
25476
25477 struct dwarf2_per_cu_offset_and_type
25478 {
25479   const struct dwarf2_per_cu_data *per_cu;
25480   sect_offset sect_off;
25481   struct type *type;
25482 };
25483
25484 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25485
25486 static hashval_t
25487 per_cu_offset_and_type_hash (const void *item)
25488 {
25489   const struct dwarf2_per_cu_offset_and_type *ofs
25490     = (const struct dwarf2_per_cu_offset_and_type *) item;
25491
25492   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25493 }
25494
25495 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25496
25497 static int
25498 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25499 {
25500   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25501     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25502   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25503     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25504
25505   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25506           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25507 }
25508
25509 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25510    table if necessary.  For convenience, return TYPE.
25511
25512    The DIEs reading must have careful ordering to:
25513     * Not cause infite loops trying to read in DIEs as a prerequisite for
25514       reading current DIE.
25515     * Not trying to dereference contents of still incompletely read in types
25516       while reading in other DIEs.
25517     * Enable referencing still incompletely read in types just by a pointer to
25518       the type without accessing its fields.
25519
25520    Therefore caller should follow these rules:
25521      * Try to fetch any prerequisite types we may need to build this DIE type
25522        before building the type and calling set_die_type.
25523      * After building type call set_die_type for current DIE as soon as
25524        possible before fetching more types to complete the current type.
25525      * Make the type as complete as possible before fetching more types.  */
25526
25527 static struct type *
25528 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25529 {
25530   struct dwarf2_per_objfile *dwarf2_per_objfile
25531     = cu->per_cu->dwarf2_per_objfile;
25532   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25533   struct objfile *objfile = dwarf2_per_objfile->objfile;
25534   struct attribute *attr;
25535   struct dynamic_prop prop;
25536
25537   /* For Ada types, make sure that the gnat-specific data is always
25538      initialized (if not already set).  There are a few types where
25539      we should not be doing so, because the type-specific area is
25540      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25541      where the type-specific area is used to store the floatformat).
25542      But this is not a problem, because the gnat-specific information
25543      is actually not needed for these types.  */
25544   if (need_gnat_info (cu)
25545       && TYPE_CODE (type) != TYPE_CODE_FUNC
25546       && TYPE_CODE (type) != TYPE_CODE_FLT
25547       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25548       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25549       && TYPE_CODE (type) != TYPE_CODE_METHOD
25550       && !HAVE_GNAT_AUX_INFO (type))
25551     INIT_GNAT_SPECIFIC (type);
25552
25553   /* Read DW_AT_allocated and set in type.  */
25554   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25555   if (attr_form_is_block (attr))
25556     {
25557       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25558         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25559     }
25560   else if (attr != NULL)
25561     {
25562       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25563                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25564                  sect_offset_str (die->sect_off));
25565     }
25566
25567   /* Read DW_AT_associated and set in type.  */
25568   attr = dwarf2_attr (die, DW_AT_associated, cu);
25569   if (attr_form_is_block (attr))
25570     {
25571       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25572         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25573     }
25574   else if (attr != NULL)
25575     {
25576       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25577                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25578                  sect_offset_str (die->sect_off));
25579     }
25580
25581   /* Read DW_AT_data_location and set in type.  */
25582   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25583   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25584     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25585
25586   if (dwarf2_per_objfile->die_type_hash == NULL)
25587     {
25588       dwarf2_per_objfile->die_type_hash =
25589         htab_create_alloc_ex (127,
25590                               per_cu_offset_and_type_hash,
25591                               per_cu_offset_and_type_eq,
25592                               NULL,
25593                               &objfile->objfile_obstack,
25594                               hashtab_obstack_allocate,
25595                               dummy_obstack_deallocate);
25596     }
25597
25598   ofs.per_cu = cu->per_cu;
25599   ofs.sect_off = die->sect_off;
25600   ofs.type = type;
25601   slot = (struct dwarf2_per_cu_offset_and_type **)
25602     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25603   if (*slot)
25604     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25605                sect_offset_str (die->sect_off));
25606   *slot = XOBNEW (&objfile->objfile_obstack,
25607                   struct dwarf2_per_cu_offset_and_type);
25608   **slot = ofs;
25609   return type;
25610 }
25611
25612 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25613    or return NULL if the die does not have a saved type.  */
25614
25615 static struct type *
25616 get_die_type_at_offset (sect_offset sect_off,
25617                         struct dwarf2_per_cu_data *per_cu)
25618 {
25619   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25620   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25621
25622   if (dwarf2_per_objfile->die_type_hash == NULL)
25623     return NULL;
25624
25625   ofs.per_cu = per_cu;
25626   ofs.sect_off = sect_off;
25627   slot = ((struct dwarf2_per_cu_offset_and_type *)
25628           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25629   if (slot)
25630     return slot->type;
25631   else
25632     return NULL;
25633 }
25634
25635 /* Look up the type for DIE in CU in die_type_hash,
25636    or return NULL if DIE does not have a saved type.  */
25637
25638 static struct type *
25639 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25640 {
25641   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25642 }
25643
25644 /* Add a dependence relationship from CU to REF_PER_CU.  */
25645
25646 static void
25647 dwarf2_add_dependence (struct dwarf2_cu *cu,
25648                        struct dwarf2_per_cu_data *ref_per_cu)
25649 {
25650   void **slot;
25651
25652   if (cu->dependencies == NULL)
25653     cu->dependencies
25654       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25655                               NULL, &cu->comp_unit_obstack,
25656                               hashtab_obstack_allocate,
25657                               dummy_obstack_deallocate);
25658
25659   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25660   if (*slot == NULL)
25661     *slot = ref_per_cu;
25662 }
25663
25664 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25665    Set the mark field in every compilation unit in the
25666    cache that we must keep because we are keeping CU.  */
25667
25668 static int
25669 dwarf2_mark_helper (void **slot, void *data)
25670 {
25671   struct dwarf2_per_cu_data *per_cu;
25672
25673   per_cu = (struct dwarf2_per_cu_data *) *slot;
25674
25675   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25676      reading of the chain.  As such dependencies remain valid it is not much
25677      useful to track and undo them during QUIT cleanups.  */
25678   if (per_cu->cu == NULL)
25679     return 1;
25680
25681   if (per_cu->cu->mark)
25682     return 1;
25683   per_cu->cu->mark = true;
25684
25685   if (per_cu->cu->dependencies != NULL)
25686     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25687
25688   return 1;
25689 }
25690
25691 /* Set the mark field in CU and in every other compilation unit in the
25692    cache that we must keep because we are keeping CU.  */
25693
25694 static void
25695 dwarf2_mark (struct dwarf2_cu *cu)
25696 {
25697   if (cu->mark)
25698     return;
25699   cu->mark = true;
25700   if (cu->dependencies != NULL)
25701     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25702 }
25703
25704 static void
25705 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25706 {
25707   while (per_cu)
25708     {
25709       per_cu->cu->mark = false;
25710       per_cu = per_cu->cu->read_in_chain;
25711     }
25712 }
25713
25714 /* Trivial hash function for partial_die_info: the hash value of a DIE
25715    is its offset in .debug_info for this objfile.  */
25716
25717 static hashval_t
25718 partial_die_hash (const void *item)
25719 {
25720   const struct partial_die_info *part_die
25721     = (const struct partial_die_info *) item;
25722
25723   return to_underlying (part_die->sect_off);
25724 }
25725
25726 /* Trivial comparison function for partial_die_info structures: two DIEs
25727    are equal if they have the same offset.  */
25728
25729 static int
25730 partial_die_eq (const void *item_lhs, const void *item_rhs)
25731 {
25732   const struct partial_die_info *part_die_lhs
25733     = (const struct partial_die_info *) item_lhs;
25734   const struct partial_die_info *part_die_rhs
25735     = (const struct partial_die_info *) item_rhs;
25736
25737   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25738 }
25739
25740 struct cmd_list_element *set_dwarf_cmdlist;
25741 struct cmd_list_element *show_dwarf_cmdlist;
25742
25743 static void
25744 set_dwarf_cmd (const char *args, int from_tty)
25745 {
25746   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25747              gdb_stdout);
25748 }
25749
25750 static void
25751 show_dwarf_cmd (const char *args, int from_tty)
25752 {
25753   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25754 }
25755
25756 int dwarf_always_disassemble;
25757
25758 static void
25759 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25760                                struct cmd_list_element *c, const char *value)
25761 {
25762   fprintf_filtered (file,
25763                     _("Whether to always disassemble "
25764                       "DWARF expressions is %s.\n"),
25765                     value);
25766 }
25767
25768 static void
25769 show_check_physname (struct ui_file *file, int from_tty,
25770                      struct cmd_list_element *c, const char *value)
25771 {
25772   fprintf_filtered (file,
25773                     _("Whether to check \"physname\" is %s.\n"),
25774                     value);
25775 }
25776
25777 void
25778 _initialize_dwarf2_read (void)
25779 {
25780   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25781 Set DWARF specific variables.\n\
25782 Configure DWARF variables such as the cache size"),
25783                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25784                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25785
25786   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25787 Show DWARF specific variables\n\
25788 Show DWARF variables such as the cache size"),
25789                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25790                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25791
25792   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25793                             &dwarf_max_cache_age, _("\
25794 Set the upper bound on the age of cached DWARF compilation units."), _("\
25795 Show the upper bound on the age of cached DWARF compilation units."), _("\
25796 A higher limit means that cached compilation units will be stored\n\
25797 in memory longer, and more total memory will be used.  Zero disables\n\
25798 caching, which can slow down startup."),
25799                             NULL,
25800                             show_dwarf_max_cache_age,
25801                             &set_dwarf_cmdlist,
25802                             &show_dwarf_cmdlist);
25803
25804   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25805                            &dwarf_always_disassemble, _("\
25806 Set whether `info address' always disassembles DWARF expressions."), _("\
25807 Show whether `info address' always disassembles DWARF expressions."), _("\
25808 When enabled, DWARF expressions are always printed in an assembly-like\n\
25809 syntax.  When disabled, expressions will be printed in a more\n\
25810 conversational style, when possible."),
25811                            NULL,
25812                            show_dwarf_always_disassemble,
25813                            &set_dwarf_cmdlist,
25814                            &show_dwarf_cmdlist);
25815
25816   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25817 Set debugging of the DWARF reader."), _("\
25818 Show debugging of the DWARF reader."), _("\
25819 When enabled (non-zero), debugging messages are printed during DWARF\n\
25820 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25821 information.  A value greater than 1 provides more verbose information."),
25822                             NULL,
25823                             NULL,
25824                             &setdebuglist, &showdebuglist);
25825
25826   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25827 Set debugging of the DWARF DIE reader."), _("\
25828 Show debugging of the DWARF DIE reader."), _("\
25829 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25830 The value is the maximum depth to print."),
25831                              NULL,
25832                              NULL,
25833                              &setdebuglist, &showdebuglist);
25834
25835   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25836 Set debugging of the dwarf line reader."), _("\
25837 Show debugging of the dwarf line reader."), _("\
25838 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25839 A value of 1 (one) provides basic information.\n\
25840 A value greater than 1 provides more verbose information."),
25841                              NULL,
25842                              NULL,
25843                              &setdebuglist, &showdebuglist);
25844
25845   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25846 Set cross-checking of \"physname\" code against demangler."), _("\
25847 Show cross-checking of \"physname\" code against demangler."), _("\
25848 When enabled, GDB's internal \"physname\" code is checked against\n\
25849 the demangler."),
25850                            NULL, show_check_physname,
25851                            &setdebuglist, &showdebuglist);
25852
25853   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25854                            no_class, &use_deprecated_index_sections, _("\
25855 Set whether to use deprecated gdb_index sections."), _("\
25856 Show whether to use deprecated gdb_index sections."), _("\
25857 When enabled, deprecated .gdb_index sections are used anyway.\n\
25858 Normally they are ignored either because of a missing feature or\n\
25859 performance issue.\n\
25860 Warning: This option must be enabled before gdb reads the file."),
25861                            NULL,
25862                            NULL,
25863                            &setlist, &showlist);
25864
25865   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25866                                                         &dwarf2_locexpr_funcs);
25867   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25868                                                         &dwarf2_loclist_funcs);
25869
25870   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25871                                         &dwarf2_block_frame_base_locexpr_funcs);
25872   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25873                                         &dwarf2_block_frame_base_loclist_funcs);
25874
25875 #if GDB_SELF_TEST
25876   selftests::register_test ("dw2_expand_symtabs_matching",
25877                             selftests::dw2_expand_symtabs_matching::run_test);
25878 #endif
25879 }