]> Git Repo - binutils.git/blob - gdb/dwarf2/read.c
Change dwarf2_per_objfile::die_type_hash to htab_up
[binutils.git] / gdb / dwarf2 / read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2020 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck ([email protected]), 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 "dwarf2/read.h"
33 #include "dwarf2/abbrev.h"
34 #include "dwarf2/attribute.h"
35 #include "dwarf2/index-cache.h"
36 #include "dwarf2/index-common.h"
37 #include "dwarf2/leb.h"
38 #include "bfd.h"
39 #include "elf-bfd.h"
40 #include "symtab.h"
41 #include "gdbtypes.h"
42 #include "objfiles.h"
43 #include "dwarf2.h"
44 #include "buildsym.h"
45 #include "demangle.h"
46 #include "gdb-demangle.h"
47 #include "filenames.h"  /* for DOSish file names */
48 #include "macrotab.h"
49 #include "language.h"
50 #include "complaints.h"
51 #include "dwarf2/expr.h"
52 #include "dwarf2/loc.h"
53 #include "cp-support.h"
54 #include "hashtab.h"
55 #include "command.h"
56 #include "gdbcmd.h"
57 #include "block.h"
58 #include "addrmap.h"
59 #include "typeprint.h"
60 #include "psympriv.h"
61 #include "c-lang.h"
62 #include "go-lang.h"
63 #include "valprint.h"
64 #include "gdbcore.h" /* for gnutarget */
65 #include "gdb/gdb-index.h"
66 #include "gdb_bfd.h"
67 #include "f-lang.h"
68 #include "source.h"
69 #include "build-id.h"
70 #include "namespace.h"
71 #include "gdbsupport/function-view.h"
72 #include "gdbsupport/gdb_optional.h"
73 #include "gdbsupport/underlying.h"
74 #include "gdbsupport/hash_enum.h"
75 #include "filename-seen-cache.h"
76 #include "producer.h"
77 #include <fcntl.h>
78 #include <algorithm>
79 #include <unordered_map>
80 #include "gdbsupport/selftest.h"
81 #include "rust-lang.h"
82 #include "gdbsupport/pathstuff.h"
83
84 /* When == 1, print basic high level tracing messages.
85    When > 1, be more verbose.
86    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
87 static unsigned int dwarf_read_debug = 0;
88
89 /* When non-zero, dump DIEs after they are read in.  */
90 static unsigned int dwarf_die_debug = 0;
91
92 /* When non-zero, dump line number entries as they are read in.  */
93 static unsigned int dwarf_line_debug = 0;
94
95 /* When true, cross-check physname against demangler.  */
96 static bool check_physname = false;
97
98 /* When true, do not reject deprecated .gdb_index sections.  */
99 static bool use_deprecated_index_sections = false;
100
101 static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
102
103 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
104
105 static int dwarf2_locexpr_index;
106 static int dwarf2_loclist_index;
107 static int dwarf2_locexpr_block_index;
108 static int dwarf2_loclist_block_index;
109
110 /* An index into a (C++) symbol name component in a symbol name as
111    recorded in the mapped_index's symbol table.  For each C++ symbol
112    in the symbol table, we record one entry for the start of each
113    component in the symbol in a table of name components, and then
114    sort the table, in order to be able to binary search symbol names,
115    ignoring leading namespaces, both completion and regular look up.
116    For example, for symbol "A::B::C", we'll have an entry that points
117    to "A::B::C", another that points to "B::C", and another for "C".
118    Note that function symbols in GDB index have no parameter
119    information, just the function/method names.  You can convert a
120    name_component to a "const char *" using the
121    'mapped_index::symbol_name_at(offset_type)' method.  */
122
123 struct name_component
124 {
125   /* Offset in the symbol name where the component starts.  Stored as
126      a (32-bit) offset instead of a pointer to save memory and improve
127      locality on 64-bit architectures.  */
128   offset_type name_offset;
129
130   /* The symbol's index in the symbol and constant pool tables of a
131      mapped_index.  */
132   offset_type idx;
133 };
134
135 /* Base class containing bits shared by both .gdb_index and
136    .debug_name indexes.  */
137
138 struct mapped_index_base
139 {
140   mapped_index_base () = default;
141   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
142
143   /* The name_component table (a sorted vector).  See name_component's
144      description above.  */
145   std::vector<name_component> name_components;
146
147   /* How NAME_COMPONENTS is sorted.  */
148   enum case_sensitivity name_components_casing;
149
150   /* Return the number of names in the symbol table.  */
151   virtual size_t symbol_name_count () const = 0;
152
153   /* Get the name of the symbol at IDX in the symbol table.  */
154   virtual const char *symbol_name_at (offset_type idx) const = 0;
155
156   /* Return whether the name at IDX in the symbol table should be
157      ignored.  */
158   virtual bool symbol_name_slot_invalid (offset_type idx) const
159   {
160     return false;
161   }
162
163   /* Build the symbol name component sorted vector, if we haven't
164      yet.  */
165   void build_name_components ();
166
167   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
168      possible matches for LN_NO_PARAMS in the name component
169      vector.  */
170   std::pair<std::vector<name_component>::const_iterator,
171             std::vector<name_component>::const_iterator>
172     find_name_components_bounds (const lookup_name_info &ln_no_params,
173                                  enum language lang) const;
174
175   /* Prevent deleting/destroying via a base class pointer.  */
176 protected:
177   ~mapped_index_base() = default;
178 };
179
180 /* A description of the mapped index.  The file format is described in
181    a comment by the code that writes the index.  */
182 struct mapped_index final : public mapped_index_base
183 {
184   /* A slot/bucket in the symbol table hash.  */
185   struct symbol_table_slot
186   {
187     const offset_type name;
188     const offset_type vec;
189   };
190
191   /* Index data format version.  */
192   int version = 0;
193
194   /* The address table data.  */
195   gdb::array_view<const gdb_byte> address_table;
196
197   /* The symbol table, implemented as a hash table.  */
198   gdb::array_view<symbol_table_slot> symbol_table;
199
200   /* A pointer to the constant pool.  */
201   const char *constant_pool = nullptr;
202
203   bool symbol_name_slot_invalid (offset_type idx) const override
204   {
205     const auto &bucket = this->symbol_table[idx];
206     return bucket.name == 0 && bucket.vec == 0;
207   }
208
209   /* Convenience method to get at the name of the symbol at IDX in the
210      symbol table.  */
211   const char *symbol_name_at (offset_type idx) const override
212   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
213
214   size_t symbol_name_count () const override
215   { return this->symbol_table.size (); }
216 };
217
218 /* A description of the mapped .debug_names.
219    Uninitialized map has CU_COUNT 0.  */
220 struct mapped_debug_names final : public mapped_index_base
221 {
222   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
223   : dwarf2_per_objfile (dwarf2_per_objfile_)
224   {}
225
226   struct dwarf2_per_objfile *dwarf2_per_objfile;
227   bfd_endian dwarf5_byte_order;
228   bool dwarf5_is_dwarf64;
229   bool augmentation_is_gdb;
230   uint8_t offset_size;
231   uint32_t cu_count = 0;
232   uint32_t tu_count, bucket_count, name_count;
233   const gdb_byte *cu_table_reordered, *tu_table_reordered;
234   const uint32_t *bucket_table_reordered, *hash_table_reordered;
235   const gdb_byte *name_table_string_offs_reordered;
236   const gdb_byte *name_table_entry_offs_reordered;
237   const gdb_byte *entry_pool;
238
239   struct index_val
240   {
241     ULONGEST dwarf_tag;
242     struct attr
243     {
244       /* Attribute name DW_IDX_*.  */
245       ULONGEST dw_idx;
246
247       /* Attribute form DW_FORM_*.  */
248       ULONGEST form;
249
250       /* Value if FORM is DW_FORM_implicit_const.  */
251       LONGEST implicit_const;
252     };
253     std::vector<attr> attr_vec;
254   };
255
256   std::unordered_map<ULONGEST, index_val> abbrev_map;
257
258   const char *namei_to_name (uint32_t namei) const;
259
260   /* Implementation of the mapped_index_base virtual interface, for
261      the name_components cache.  */
262
263   const char *symbol_name_at (offset_type idx) const override
264   { return namei_to_name (idx); }
265
266   size_t symbol_name_count () const override
267   { return this->name_count; }
268 };
269
270 /* See dwarf2read.h.  */
271
272 dwarf2_per_objfile *
273 get_dwarf2_per_objfile (struct objfile *objfile)
274 {
275   return dwarf2_objfile_data_key.get (objfile);
276 }
277
278 /* Default names of the debugging sections.  */
279
280 /* Note that if the debugging section has been compressed, it might
281    have a name like .zdebug_info.  */
282
283 static const struct dwarf2_debug_sections dwarf2_elf_names =
284 {
285   { ".debug_info", ".zdebug_info" },
286   { ".debug_abbrev", ".zdebug_abbrev" },
287   { ".debug_line", ".zdebug_line" },
288   { ".debug_loc", ".zdebug_loc" },
289   { ".debug_loclists", ".zdebug_loclists" },
290   { ".debug_macinfo", ".zdebug_macinfo" },
291   { ".debug_macro", ".zdebug_macro" },
292   { ".debug_str", ".zdebug_str" },
293   { ".debug_str_offsets", ".zdebug_str_offsets" },
294   { ".debug_line_str", ".zdebug_line_str" },
295   { ".debug_ranges", ".zdebug_ranges" },
296   { ".debug_rnglists", ".zdebug_rnglists" },
297   { ".debug_types", ".zdebug_types" },
298   { ".debug_addr", ".zdebug_addr" },
299   { ".debug_frame", ".zdebug_frame" },
300   { ".eh_frame", NULL },
301   { ".gdb_index", ".zgdb_index" },
302   { ".debug_names", ".zdebug_names" },
303   { ".debug_aranges", ".zdebug_aranges" },
304   23
305 };
306
307 /* List of DWO/DWP sections.  */
308
309 static const struct dwop_section_names
310 {
311   struct dwarf2_section_names abbrev_dwo;
312   struct dwarf2_section_names info_dwo;
313   struct dwarf2_section_names line_dwo;
314   struct dwarf2_section_names loc_dwo;
315   struct dwarf2_section_names loclists_dwo;
316   struct dwarf2_section_names macinfo_dwo;
317   struct dwarf2_section_names macro_dwo;
318   struct dwarf2_section_names str_dwo;
319   struct dwarf2_section_names str_offsets_dwo;
320   struct dwarf2_section_names types_dwo;
321   struct dwarf2_section_names cu_index;
322   struct dwarf2_section_names tu_index;
323 }
324 dwop_section_names =
325 {
326   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
327   { ".debug_info.dwo", ".zdebug_info.dwo" },
328   { ".debug_line.dwo", ".zdebug_line.dwo" },
329   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
330   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
331   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
332   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
333   { ".debug_str.dwo", ".zdebug_str.dwo" },
334   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
335   { ".debug_types.dwo", ".zdebug_types.dwo" },
336   { ".debug_cu_index", ".zdebug_cu_index" },
337   { ".debug_tu_index", ".zdebug_tu_index" },
338 };
339
340 /* local data types */
341
342 /* The data in a compilation unit header, after target2host
343    translation, looks like this.  */
344 struct comp_unit_head
345 {
346   unsigned int length;
347   short version;
348   unsigned char addr_size;
349   unsigned char signed_addr_p;
350   sect_offset abbrev_sect_off;
351
352   /* Size of file offsets; either 4 or 8.  */
353   unsigned int offset_size;
354
355   /* Size of the length field; either 4 or 12.  */
356   unsigned int initial_length_size;
357
358   enum dwarf_unit_type unit_type;
359
360   /* Offset to the first byte of this compilation unit header in the
361      .debug_info section, for resolving relative reference dies.  */
362   sect_offset sect_off;
363
364   /* Offset to first die in this cu from the start of the cu.
365      This will be the first byte following the compilation unit header.  */
366   cu_offset first_die_cu_offset;
367
368
369   /* 64-bit signature of this unit. For type units, it denotes the signature of
370      the type (DW_UT_type in DWARF 4, additionally DW_UT_split_type in DWARF 5).
371      Also used in DWARF 5, to denote the dwo id when the unit type is
372      DW_UT_skeleton or DW_UT_split_compile.  */
373   ULONGEST signature;
374
375   /* For types, offset in the type's DIE of the type defined by this TU.  */
376   cu_offset type_cu_offset_in_tu;
377 };
378
379 /* Type used for delaying computation of method physnames.
380    See comments for compute_delayed_physnames.  */
381 struct delayed_method_info
382 {
383   /* The type to which the method is attached, i.e., its parent class.  */
384   struct type *type;
385
386   /* The index of the method in the type's function fieldlists.  */
387   int fnfield_index;
388
389   /* The index of the method in the fieldlist.  */
390   int index;
391
392   /* The name of the DIE.  */
393   const char *name;
394
395   /*  The DIE associated with this method.  */
396   struct die_info *die;
397 };
398
399 /* Internal state when decoding a particular compilation unit.  */
400 struct dwarf2_cu
401 {
402   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
403   ~dwarf2_cu ();
404
405   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
406
407   /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
408      Create the set of symtabs used by this TU, or if this TU is sharing
409      symtabs with another TU and the symtabs have already been created
410      then restore those symtabs in the line header.
411      We don't need the pc/line-number mapping for type units.  */
412   void setup_type_unit_groups (struct die_info *die);
413
414   /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
415      buildsym_compunit constructor.  */
416   struct compunit_symtab *start_symtab (const char *name,
417                                         const char *comp_dir,
418                                         CORE_ADDR low_pc);
419
420   /* Reset the builder.  */
421   void reset_builder () { m_builder.reset (); }
422
423   /* The header of the compilation unit.  */
424   struct comp_unit_head header {};
425
426   /* Base address of this compilation unit.  */
427   CORE_ADDR base_address = 0;
428
429   /* Non-zero if base_address has been set.  */
430   int base_known = 0;
431
432   /* The language we are debugging.  */
433   enum language language = language_unknown;
434   const struct language_defn *language_defn = nullptr;
435
436   const char *producer = nullptr;
437
438 private:
439   /* The symtab builder for this CU.  This is only non-NULL when full
440      symbols are being read.  */
441   std::unique_ptr<buildsym_compunit> m_builder;
442
443 public:
444   /* The generic symbol table building routines have separate lists for
445      file scope symbols and all all other scopes (local scopes).  So
446      we need to select the right one to pass to add_symbol_to_list().
447      We do it by keeping a pointer to the correct list in list_in_scope.
448
449      FIXME: The original dwarf code just treated the file scope as the
450      first local scope, and all other local scopes as nested local
451      scopes, and worked fine.  Check to see if we really need to
452      distinguish these in buildsym.c.  */
453   struct pending **list_in_scope = nullptr;
454
455   /* Hash table holding all the loaded partial DIEs
456      with partial_die->offset.SECT_OFF as hash.  */
457   htab_t partial_dies = nullptr;
458
459   /* Storage for things with the same lifetime as this read-in compilation
460      unit, including partial DIEs.  */
461   auto_obstack comp_unit_obstack;
462
463   /* When multiple dwarf2_cu structures are living in memory, this field
464      chains them all together, so that they can be released efficiently.
465      We will probably also want a generation counter so that most-recently-used
466      compilation units are cached...  */
467   struct dwarf2_per_cu_data *read_in_chain = nullptr;
468
469   /* Backlink to our per_cu entry.  */
470   struct dwarf2_per_cu_data *per_cu;
471
472   /* How many compilation units ago was this CU last referenced?  */
473   int last_used = 0;
474
475   /* A hash table of DIE cu_offset for following references with
476      die_info->offset.sect_off as hash.  */
477   htab_t die_hash = nullptr;
478
479   /* Full DIEs if read in.  */
480   struct die_info *dies = nullptr;
481
482   /* A set of pointers to dwarf2_per_cu_data objects for compilation
483      units referenced by this one.  Only set during full symbol processing;
484      partial symbol tables do not have dependencies.  */
485   htab_t dependencies = nullptr;
486
487   /* Header data from the line table, during full symbol processing.  */
488   struct line_header *line_header = nullptr;
489   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
490      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
491      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
492      to the line header as long as this DIE is being processed.  See
493      process_die_scope.  */
494   die_info *line_header_die_owner = nullptr;
495
496   /* A list of methods which need to have physnames computed
497      after all type information has been read.  */
498   std::vector<delayed_method_info> method_list;
499
500   /* To be copied to symtab->call_site_htab.  */
501   htab_t call_site_htab = nullptr;
502
503   /* Non-NULL if this CU came from a DWO file.
504      There is an invariant here that is important to remember:
505      Except for attributes copied from the top level DIE in the "main"
506      (or "stub") file in preparation for reading the DWO file
507      (e.g., DW_AT_addr_base), we KISS: there is only *one* CU.
508      Either there isn't a DWO file (in which case this is NULL and the point
509      is moot), or there is and either we're not going to read it (in which
510      case this is NULL) or there is and we are reading it (in which case this
511      is non-NULL).  */
512   struct dwo_unit *dwo_unit = nullptr;
513
514   /* The DW_AT_addr_base (DW_AT_GNU_addr_base) attribute if present.
515      Note this value comes from the Fission stub CU/TU's DIE.  */
516   gdb::optional<ULONGEST> addr_base;
517
518   /* The DW_AT_rnglists_base attribute if present.
519      Note this value comes from the Fission stub CU/TU's DIE.
520      Also note that the value is zero in the non-DWO case so this value can
521      be used without needing to know whether DWO files are in use or not.
522      N.B. This does not apply to DW_AT_ranges appearing in
523      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
524      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
525      DW_AT_rnglists_base *would* have to be applied, and we'd have to care
526      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
527   ULONGEST ranges_base = 0;
528
529   /* When reading debug info generated by older versions of rustc, we
530      have to rewrite some union types to be struct types with a
531      variant part.  This rewriting must be done after the CU is fully
532      read in, because otherwise at the point of rewriting some struct
533      type might not have been fully processed.  So, we keep a list of
534      all such types here and process them after expansion.  */
535   std::vector<struct type *> rust_unions;
536
537   /* The DW_AT_str_offsets_base attribute if present.  For DWARF 4 version DWO
538      files, the value is implicitly zero.  For DWARF 5 version DWO files, the
539      value is often implicit and is the size of the header of
540      .debug_str_offsets section (8 or 4, depending on the address size).  */
541   gdb::optional<ULONGEST> str_offsets_base;
542
543   /* Mark used when releasing cached dies.  */
544   bool mark : 1;
545
546   /* This CU references .debug_loc.  See the symtab->locations_valid field.
547      This test is imperfect as there may exist optimized debug code not using
548      any location list and still facing inlining issues if handled as
549      unoptimized code.  For a future better test see GCC PR other/32998.  */
550   bool has_loclist : 1;
551
552   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is true
553      if all the producer_is_* fields are valid.  This information is cached
554      because profiling CU expansion showed excessive time spent in
555      producer_is_gxx_lt_4_6.  */
556   bool checked_producer : 1;
557   bool producer_is_gxx_lt_4_6 : 1;
558   bool producer_is_gcc_lt_4_3 : 1;
559   bool producer_is_icc : 1;
560   bool producer_is_icc_lt_14 : 1;
561   bool producer_is_codewarrior : 1;
562
563   /* When true, the file that we're processing is known to have
564      debugging info for C++ namespaces.  GCC 3.3.x did not produce
565      this information, but later versions do.  */
566
567   bool processing_has_namespace_info : 1;
568
569   struct partial_die_info *find_partial_die (sect_offset sect_off);
570
571   /* If this CU was inherited by another CU (via specification,
572      abstract_origin, etc), this is the ancestor CU.  */
573   dwarf2_cu *ancestor;
574
575   /* Get the buildsym_compunit for this CU.  */
576   buildsym_compunit *get_builder ()
577   {
578     /* If this CU has a builder associated with it, use that.  */
579     if (m_builder != nullptr)
580       return m_builder.get ();
581
582     /* Otherwise, search ancestors for a valid builder.  */
583     if (ancestor != nullptr)
584       return ancestor->get_builder ();
585
586     return nullptr;
587   }
588 };
589
590 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
591    This includes type_unit_group and quick_file_names.  */
592
593 struct stmt_list_hash
594 {
595   /* The DWO unit this table is from or NULL if there is none.  */
596   struct dwo_unit *dwo_unit;
597
598   /* Offset in .debug_line or .debug_line.dwo.  */
599   sect_offset line_sect_off;
600 };
601
602 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
603    an object of this type.  */
604
605 struct type_unit_group
606 {
607   /* dwarf2read.c's main "handle" on a TU symtab.
608      To simplify things we create an artificial CU that "includes" all the
609      type units using this stmt_list so that the rest of the code still has
610      a "per_cu" handle on the symtab.
611      This PER_CU is recognized by having no section.  */
612 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
613   struct dwarf2_per_cu_data per_cu;
614
615   /* The TUs that share this DW_AT_stmt_list entry.
616      This is added to while parsing type units to build partial symtabs,
617      and is deleted afterwards and not used again.  */
618   std::vector<signatured_type *> *tus;
619
620   /* The compunit symtab.
621      Type units in a group needn't all be defined in the same source file,
622      so we create an essentially anonymous symtab as the compunit symtab.  */
623   struct compunit_symtab *compunit_symtab;
624
625   /* The data used to construct the hash key.  */
626   struct stmt_list_hash hash;
627
628   /* The number of symtabs from the line header.
629      The value here must match line_header.num_file_names.  */
630   unsigned int num_symtabs;
631
632   /* The symbol tables for this TU (obtained from the files listed in
633      DW_AT_stmt_list).
634      WARNING: The order of entries here must match the order of entries
635      in the line header.  After the first TU using this type_unit_group, the
636      line header for the subsequent TUs is recreated from this.  This is done
637      because we need to use the same symtabs for each TU using the same
638      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
639      there's no guarantee the line header doesn't have duplicate entries.  */
640   struct symtab **symtabs;
641 };
642
643 /* These sections are what may appear in a (real or virtual) DWO file.  */
644
645 struct dwo_sections
646 {
647   struct dwarf2_section_info abbrev;
648   struct dwarf2_section_info line;
649   struct dwarf2_section_info loc;
650   struct dwarf2_section_info loclists;
651   struct dwarf2_section_info macinfo;
652   struct dwarf2_section_info macro;
653   struct dwarf2_section_info str;
654   struct dwarf2_section_info str_offsets;
655   /* In the case of a virtual DWO file, these two are unused.  */
656   struct dwarf2_section_info info;
657   std::vector<dwarf2_section_info> types;
658 };
659
660 /* CUs/TUs in DWP/DWO files.  */
661
662 struct dwo_unit
663 {
664   /* Backlink to the containing struct dwo_file.  */
665   struct dwo_file *dwo_file;
666
667   /* The "id" that distinguishes this CU/TU.
668      .debug_info calls this "dwo_id", .debug_types calls this "signature".
669      Since signatures came first, we stick with it for consistency.  */
670   ULONGEST signature;
671
672   /* The section this CU/TU lives in, in the DWO file.  */
673   struct dwarf2_section_info *section;
674
675   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
676   sect_offset sect_off;
677   unsigned int length;
678
679   /* For types, offset in the type's DIE of the type defined by this TU.  */
680   cu_offset type_offset_in_tu;
681 };
682
683 /* include/dwarf2.h defines the DWP section codes.
684    It defines a max value but it doesn't define a min value, which we
685    use for error checking, so provide one.  */
686
687 enum dwp_v2_section_ids
688 {
689   DW_SECT_MIN = 1
690 };
691
692 /* Data for one DWO file.
693
694    This includes virtual DWO files (a virtual DWO file is a DWO file as it
695    appears in a DWP file).  DWP files don't really have DWO files per se -
696    comdat folding of types "loses" the DWO file they came from, and from
697    a high level view DWP files appear to contain a mass of random types.
698    However, to maintain consistency with the non-DWP case we pretend DWP
699    files contain virtual DWO files, and we assign each TU with one virtual
700    DWO file (generally based on the line and abbrev section offsets -
701    a heuristic that seems to work in practice).  */
702
703 struct dwo_file
704 {
705   dwo_file () = default;
706   DISABLE_COPY_AND_ASSIGN (dwo_file);
707
708   /* The DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.
709      For virtual DWO files the name is constructed from the section offsets
710      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
711      from related CU+TUs.  */
712   const char *dwo_name = nullptr;
713
714   /* The DW_AT_comp_dir attribute.  */
715   const char *comp_dir = nullptr;
716
717   /* The bfd, when the file is open.  Otherwise this is NULL.
718      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
719   gdb_bfd_ref_ptr dbfd;
720
721   /* The sections that make up this DWO file.
722      Remember that for virtual DWO files in DWP V2, these are virtual
723      sections (for lack of a better name).  */
724   struct dwo_sections sections {};
725
726   /* The CUs in the file.
727      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
728      an extension to handle LLVM's Link Time Optimization output (where
729      multiple source files may be compiled into a single object/dwo pair). */
730   htab_up cus;
731
732   /* Table of TUs in the file.
733      Each element is a struct dwo_unit.  */
734   htab_up tus;
735 };
736
737 /* These sections are what may appear in a DWP file.  */
738
739 struct dwp_sections
740 {
741   /* These are used by both DWP version 1 and 2.  */
742   struct dwarf2_section_info str;
743   struct dwarf2_section_info cu_index;
744   struct dwarf2_section_info tu_index;
745
746   /* These are only used by DWP version 2 files.
747      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
748      sections are referenced by section number, and are not recorded here.
749      In DWP version 2 there is at most one copy of all these sections, each
750      section being (effectively) comprised of the concatenation of all of the
751      individual sections that exist in the version 1 format.
752      To keep the code simple we treat each of these concatenated pieces as a
753      section itself (a virtual section?).  */
754   struct dwarf2_section_info abbrev;
755   struct dwarf2_section_info info;
756   struct dwarf2_section_info line;
757   struct dwarf2_section_info loc;
758   struct dwarf2_section_info macinfo;
759   struct dwarf2_section_info macro;
760   struct dwarf2_section_info str_offsets;
761   struct dwarf2_section_info types;
762 };
763
764 /* These sections are what may appear in a virtual DWO file in DWP version 1.
765    A virtual DWO file is a DWO file as it appears in a DWP file.  */
766
767 struct virtual_v1_dwo_sections
768 {
769   struct dwarf2_section_info abbrev;
770   struct dwarf2_section_info line;
771   struct dwarf2_section_info loc;
772   struct dwarf2_section_info macinfo;
773   struct dwarf2_section_info macro;
774   struct dwarf2_section_info str_offsets;
775   /* Each DWP hash table entry records one CU or one TU.
776      That is recorded here, and copied to dwo_unit.section.  */
777   struct dwarf2_section_info info_or_types;
778 };
779
780 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
781    In version 2, the sections of the DWO files are concatenated together
782    and stored in one section of that name.  Thus each ELF section contains
783    several "virtual" sections.  */
784
785 struct virtual_v2_dwo_sections
786 {
787   bfd_size_type abbrev_offset;
788   bfd_size_type abbrev_size;
789
790   bfd_size_type line_offset;
791   bfd_size_type line_size;
792
793   bfd_size_type loc_offset;
794   bfd_size_type loc_size;
795
796   bfd_size_type macinfo_offset;
797   bfd_size_type macinfo_size;
798
799   bfd_size_type macro_offset;
800   bfd_size_type macro_size;
801
802   bfd_size_type str_offsets_offset;
803   bfd_size_type str_offsets_size;
804
805   /* Each DWP hash table entry records one CU or one TU.
806      That is recorded here, and copied to dwo_unit.section.  */
807   bfd_size_type info_or_types_offset;
808   bfd_size_type info_or_types_size;
809 };
810
811 /* Contents of DWP hash tables.  */
812
813 struct dwp_hash_table
814 {
815   uint32_t version, nr_columns;
816   uint32_t nr_units, nr_slots;
817   const gdb_byte *hash_table, *unit_table;
818   union
819   {
820     struct
821     {
822       const gdb_byte *indices;
823     } v1;
824     struct
825     {
826       /* This is indexed by column number and gives the id of the section
827          in that column.  */
828 #define MAX_NR_V2_DWO_SECTIONS \
829   (1 /* .debug_info or .debug_types */ \
830    + 1 /* .debug_abbrev */ \
831    + 1 /* .debug_line */ \
832    + 1 /* .debug_loc */ \
833    + 1 /* .debug_str_offsets */ \
834    + 1 /* .debug_macro or .debug_macinfo */)
835       int section_ids[MAX_NR_V2_DWO_SECTIONS];
836       const gdb_byte *offsets;
837       const gdb_byte *sizes;
838     } v2;
839   } section_pool;
840 };
841
842 /* Data for one DWP file.  */
843
844 struct dwp_file
845 {
846   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
847     : name (name_),
848       dbfd (std::move (abfd))
849   {
850   }
851
852   /* Name of the file.  */
853   const char *name;
854
855   /* File format version.  */
856   int version = 0;
857
858   /* The bfd.  */
859   gdb_bfd_ref_ptr dbfd;
860
861   /* Section info for this file.  */
862   struct dwp_sections sections {};
863
864   /* Table of CUs in the file.  */
865   const struct dwp_hash_table *cus = nullptr;
866
867   /* Table of TUs in the file.  */
868   const struct dwp_hash_table *tus = nullptr;
869
870   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
871   htab_up loaded_cus;
872   htab_up loaded_tus;
873
874   /* Table to map ELF section numbers to their sections.
875      This is only needed for the DWP V1 file format.  */
876   unsigned int num_sections = 0;
877   asection **elf_sections = nullptr;
878 };
879
880 /* Struct used to pass misc. parameters to read_die_and_children, et
881    al.  which are used for both .debug_info and .debug_types dies.
882    All parameters here are unchanging for the life of the call.  This
883    struct exists to abstract away the constant parameters of die reading.  */
884
885 struct die_reader_specs
886 {
887   /* The bfd of die_section.  */
888   bfd* abfd;
889
890   /* The CU of the DIE we are parsing.  */
891   struct dwarf2_cu *cu;
892
893   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
894   struct dwo_file *dwo_file;
895
896   /* The section the die comes from.
897      This is either .debug_info or .debug_types, or the .dwo variants.  */
898   struct dwarf2_section_info *die_section;
899
900   /* die_section->buffer.  */
901   const gdb_byte *buffer;
902
903   /* The end of the buffer.  */
904   const gdb_byte *buffer_end;
905
906   /* The abbreviation table to use when reading the DIEs.  */
907   struct abbrev_table *abbrev_table;
908 };
909
910 /* A subclass of die_reader_specs that holds storage and has complex
911    constructor and destructor behavior.  */
912
913 class cutu_reader : public die_reader_specs
914 {
915 public:
916
917   cutu_reader (struct dwarf2_per_cu_data *this_cu,
918                struct abbrev_table *abbrev_table,
919                int use_existing_cu, int keep,
920                bool skip_partial);
921
922   explicit cutu_reader (struct dwarf2_per_cu_data *this_cu,
923                         struct dwarf2_cu *parent_cu = nullptr,
924                         struct dwo_file *dwo_file = nullptr);
925
926   ~cutu_reader ();
927
928   DISABLE_COPY_AND_ASSIGN (cutu_reader);
929
930   const gdb_byte *info_ptr = nullptr;
931   struct die_info *comp_unit_die = nullptr;
932   bool dummy_p = false;
933
934 private:
935   void init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
936                                   int use_existing_cu, int keep);
937
938   struct dwarf2_per_cu_data *m_this_cu;
939   int m_keep = 0;
940   std::unique_ptr<dwarf2_cu> m_new_cu;
941
942   /* The ordinary abbreviation table.  */
943   abbrev_table_up m_abbrev_table_holder;
944
945   /* The DWO abbreviation table.  */
946   abbrev_table_up m_dwo_abbrev_table;
947 };
948
949 /* dir_index is 1-based in DWARF 4 and before, and is 0-based in DWARF 5 and
950    later.  */
951 typedef int dir_index;
952
953 /* file_name_index is 1-based in DWARF 4 and before, and is 0-based in DWARF 5
954    and later.  */
955 typedef int file_name_index;
956
957 struct file_entry
958 {
959   file_entry () = default;
960
961   file_entry (const char *name_, dir_index d_index_,
962               unsigned int mod_time_, unsigned int length_)
963     : name (name_),
964       d_index (d_index_),
965       mod_time (mod_time_),
966       length (length_)
967   {}
968
969   /* Return the include directory at D_INDEX stored in LH.  Returns
970      NULL if D_INDEX is out of bounds.  */
971   const char *include_dir (const line_header *lh) const;
972
973   /* The file name.  Note this is an observing pointer.  The memory is
974      owned by debug_line_buffer.  */
975   const char *name {};
976
977   /* The directory index (1-based).  */
978   dir_index d_index {};
979
980   unsigned int mod_time {};
981
982   unsigned int length {};
983
984   /* True if referenced by the Line Number Program.  */
985   bool included_p {};
986
987   /* The associated symbol table, if any.  */
988   struct symtab *symtab {};
989 };
990
991 /* The line number information for a compilation unit (found in the
992    .debug_line section) begins with a "statement program header",
993    which contains the following information.  */
994 struct line_header
995 {
996   line_header ()
997     : offset_in_dwz {}
998   {}
999
1000   /* Add an entry to the include directory table.  */
1001   void add_include_dir (const char *include_dir);
1002
1003   /* Add an entry to the file name table.  */
1004   void add_file_name (const char *name, dir_index d_index,
1005                       unsigned int mod_time, unsigned int length);
1006
1007   /* Return the include dir at INDEX (0-based in DWARF 5 and 1-based before).
1008      Returns NULL if INDEX is out of bounds.  */
1009   const char *include_dir_at (dir_index index) const
1010   {
1011     int vec_index;
1012     if (version >= 5)
1013       vec_index = index;
1014     else
1015       vec_index = index - 1;
1016     if (vec_index < 0 || vec_index >= m_include_dirs.size ())
1017       return NULL;
1018     return m_include_dirs[vec_index];
1019   }
1020
1021   bool is_valid_file_index (int file_index)
1022   {
1023     if (version >= 5)
1024       return 0 <= file_index && file_index < file_names_size ();
1025     return 1 <= file_index && file_index <= file_names_size ();
1026   }
1027
1028   /* Return the file name at INDEX (0-based in DWARF 5 and 1-based before).
1029      Returns NULL if INDEX is out of bounds.  */
1030   file_entry *file_name_at (file_name_index index)
1031   {
1032     int vec_index;
1033     if (version >= 5)
1034       vec_index = index;
1035     else
1036       vec_index = index - 1;
1037     if (vec_index < 0 || vec_index >= m_file_names.size ())
1038       return NULL;
1039     return &m_file_names[vec_index];
1040   }
1041
1042   /* The indexes are 0-based in DWARF 5 and 1-based in DWARF 4. Therefore,
1043      this method should only be used to iterate through all file entries in an
1044      index-agnostic manner.  */
1045   std::vector<file_entry> &file_names ()
1046   { return m_file_names; }
1047
1048   /* Offset of line number information in .debug_line section.  */
1049   sect_offset sect_off {};
1050
1051   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1052   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1053
1054   unsigned int total_length {};
1055   unsigned short version {};
1056   unsigned int header_length {};
1057   unsigned char minimum_instruction_length {};
1058   unsigned char maximum_ops_per_instruction {};
1059   unsigned char default_is_stmt {};
1060   int line_base {};
1061   unsigned char line_range {};
1062   unsigned char opcode_base {};
1063
1064   /* standard_opcode_lengths[i] is the number of operands for the
1065      standard opcode whose value is i.  This means that
1066      standard_opcode_lengths[0] is unused, and the last meaningful
1067      element is standard_opcode_lengths[opcode_base - 1].  */
1068   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1069
1070   int file_names_size ()
1071   { return m_file_names.size(); }
1072
1073   /* The start and end of the statement program following this
1074      header.  These point into dwarf2_per_objfile->line_buffer.  */
1075   const gdb_byte *statement_program_start {}, *statement_program_end {};
1076
1077  private:
1078   /* The include_directories table.  Note these are observing
1079      pointers.  The memory is owned by debug_line_buffer.  */
1080   std::vector<const char *> m_include_dirs;
1081
1082   /* The file_names table. This is private because the meaning of indexes
1083      differs among DWARF versions (The first valid index is 1 in DWARF 4 and
1084      before, and is 0 in DWARF 5 and later).  So the client should use
1085      file_name_at method for access.  */
1086   std::vector<file_entry> m_file_names;
1087 };
1088
1089 typedef std::unique_ptr<line_header> line_header_up;
1090
1091 const char *
1092 file_entry::include_dir (const line_header *lh) const
1093 {
1094   return lh->include_dir_at (d_index);
1095 }
1096
1097 /* When we construct a partial symbol table entry we only
1098    need this much information.  */
1099 struct partial_die_info : public allocate_on_obstack
1100   {
1101     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1102
1103     /* Disable assign but still keep copy ctor, which is needed
1104        load_partial_dies.   */
1105     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1106
1107     /* Adjust the partial die before generating a symbol for it.  This
1108        function may set the is_external flag or change the DIE's
1109        name.  */
1110     void fixup (struct dwarf2_cu *cu);
1111
1112     /* Read a minimal amount of information into the minimal die
1113        structure.  */
1114     const gdb_byte *read (const struct die_reader_specs *reader,
1115                           const struct abbrev_info &abbrev,
1116                           const gdb_byte *info_ptr);
1117
1118     /* Offset of this DIE.  */
1119     const sect_offset sect_off;
1120
1121     /* DWARF-2 tag for this DIE.  */
1122     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1123
1124     /* Assorted flags describing the data found in this DIE.  */
1125     const unsigned int has_children : 1;
1126
1127     unsigned int is_external : 1;
1128     unsigned int is_declaration : 1;
1129     unsigned int has_type : 1;
1130     unsigned int has_specification : 1;
1131     unsigned int has_pc_info : 1;
1132     unsigned int may_be_inlined : 1;
1133
1134     /* This DIE has been marked DW_AT_main_subprogram.  */
1135     unsigned int main_subprogram : 1;
1136
1137     /* Flag set if the SCOPE field of this structure has been
1138        computed.  */
1139     unsigned int scope_set : 1;
1140
1141     /* Flag set if the DIE has a byte_size attribute.  */
1142     unsigned int has_byte_size : 1;
1143
1144     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1145     unsigned int has_const_value : 1;
1146
1147     /* Flag set if any of the DIE's children are template arguments.  */
1148     unsigned int has_template_arguments : 1;
1149
1150     /* Flag set if fixup has been called on this die.  */
1151     unsigned int fixup_called : 1;
1152
1153     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1154     unsigned int is_dwz : 1;
1155
1156     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1157     unsigned int spec_is_dwz : 1;
1158
1159     /* The name of this DIE.  Normally the value of DW_AT_name, but
1160        sometimes a default name for unnamed DIEs.  */
1161     const char *name = nullptr;
1162
1163     /* The linkage name, if present.  */
1164     const char *linkage_name = nullptr;
1165
1166     /* The scope to prepend to our children.  This is generally
1167        allocated on the comp_unit_obstack, so will disappear
1168        when this compilation unit leaves the cache.  */
1169     const char *scope = nullptr;
1170
1171     /* Some data associated with the partial DIE.  The tag determines
1172        which field is live.  */
1173     union
1174     {
1175       /* The location description associated with this DIE, if any.  */
1176       struct dwarf_block *locdesc;
1177       /* The offset of an import, for DW_TAG_imported_unit.  */
1178       sect_offset sect_off;
1179     } d {};
1180
1181     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1182     CORE_ADDR lowpc = 0;
1183     CORE_ADDR highpc = 0;
1184
1185     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1186        DW_AT_sibling, if any.  */
1187     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1188        could return DW_AT_sibling values to its caller load_partial_dies.  */
1189     const gdb_byte *sibling = nullptr;
1190
1191     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1192        DW_AT_specification (or DW_AT_abstract_origin or
1193        DW_AT_extension).  */
1194     sect_offset spec_offset {};
1195
1196     /* Pointers to this DIE's parent, first child, and next sibling,
1197        if any.  */
1198     struct partial_die_info *die_parent = nullptr;
1199     struct partial_die_info *die_child = nullptr;
1200     struct partial_die_info *die_sibling = nullptr;
1201
1202     friend struct partial_die_info *
1203     dwarf2_cu::find_partial_die (sect_offset sect_off);
1204
1205   private:
1206     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1207     partial_die_info (sect_offset sect_off)
1208       : partial_die_info (sect_off, DW_TAG_padding, 0)
1209     {
1210     }
1211
1212     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1213                       int has_children_)
1214       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1215     {
1216       is_external = 0;
1217       is_declaration = 0;
1218       has_type = 0;
1219       has_specification = 0;
1220       has_pc_info = 0;
1221       may_be_inlined = 0;
1222       main_subprogram = 0;
1223       scope_set = 0;
1224       has_byte_size = 0;
1225       has_const_value = 0;
1226       has_template_arguments = 0;
1227       fixup_called = 0;
1228       is_dwz = 0;
1229       spec_is_dwz = 0;
1230     }
1231   };
1232
1233 /* This data structure holds a complete die structure.  */
1234 struct die_info
1235   {
1236     /* DWARF-2 tag for this DIE.  */
1237     ENUM_BITFIELD(dwarf_tag) tag : 16;
1238
1239     /* Number of attributes */
1240     unsigned char num_attrs;
1241
1242     /* True if we're presently building the full type name for the
1243        type derived from this DIE.  */
1244     unsigned char building_fullname : 1;
1245
1246     /* True if this die is in process.  PR 16581.  */
1247     unsigned char in_process : 1;
1248
1249     /* True if this DIE has children.  */
1250     unsigned char has_children : 1;
1251
1252     /* Abbrev number */
1253     unsigned int abbrev;
1254
1255     /* Offset in .debug_info or .debug_types section.  */
1256     sect_offset sect_off;
1257
1258     /* The dies in a compilation unit form an n-ary tree.  PARENT
1259        points to this die's parent; CHILD points to the first child of
1260        this node; and all the children of a given node are chained
1261        together via their SIBLING fields.  */
1262     struct die_info *child;     /* Its first child, if any.  */
1263     struct die_info *sibling;   /* Its next sibling, if any.  */
1264     struct die_info *parent;    /* Its parent, if any.  */
1265
1266     /* An array of attributes, with NUM_ATTRS elements.  There may be
1267        zero, but it's not common and zero-sized arrays are not
1268        sufficiently portable C.  */
1269     struct attribute attrs[1];
1270   };
1271
1272 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1273    but this would require a corresponding change in unpack_field_as_long
1274    and friends.  */
1275 static int bits_per_byte = 8;
1276
1277 /* When reading a variant or variant part, we track a bit more
1278    information about the field, and store it in an object of this
1279    type.  */
1280
1281 struct variant_field
1282 {
1283   /* If we see a DW_TAG_variant, then this will be the discriminant
1284      value.  */
1285   ULONGEST discriminant_value;
1286   /* If we see a DW_TAG_variant, then this will be set if this is the
1287      default branch.  */
1288   bool default_branch;
1289   /* While reading a DW_TAG_variant_part, this will be set if this
1290      field is the discriminant.  */
1291   bool is_discriminant;
1292 };
1293
1294 struct nextfield
1295 {
1296   int accessibility = 0;
1297   int virtuality = 0;
1298   /* Extra information to describe a variant or variant part.  */
1299   struct variant_field variant {};
1300   struct field field {};
1301 };
1302
1303 struct fnfieldlist
1304 {
1305   const char *name = nullptr;
1306   std::vector<struct fn_field> fnfields;
1307 };
1308
1309 /* The routines that read and process dies for a C struct or C++ class
1310    pass lists of data member fields and lists of member function fields
1311    in an instance of a field_info structure, as defined below.  */
1312 struct field_info
1313   {
1314     /* List of data member and baseclasses fields.  */
1315     std::vector<struct nextfield> fields;
1316     std::vector<struct nextfield> baseclasses;
1317
1318     /* Number of fields (including baseclasses).  */
1319     int nfields = 0;
1320
1321     /* Set if the accessibility of one of the fields is not public.  */
1322     int non_public_fields = 0;
1323
1324     /* Member function fieldlist array, contains name of possibly overloaded
1325        member function, number of overloaded member functions and a pointer
1326        to the head of the member function field chain.  */
1327     std::vector<struct fnfieldlist> fnfieldlists;
1328
1329     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1330        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1331     std::vector<struct decl_field> typedef_field_list;
1332
1333     /* Nested types defined by this class and the number of elements in this
1334        list.  */
1335     std::vector<struct decl_field> nested_types_list;
1336   };
1337
1338 /* Loaded secondary compilation units are kept in memory until they
1339    have not been referenced for the processing of this many
1340    compilation units.  Set this to zero to disable caching.  Cache
1341    sizes of up to at least twenty will improve startup time for
1342    typical inter-CU-reference binaries, at an obvious memory cost.  */
1343 static int dwarf_max_cache_age = 5;
1344 static void
1345 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1346                           struct cmd_list_element *c, const char *value)
1347 {
1348   fprintf_filtered (file, _("The upper bound on the age of cached "
1349                             "DWARF compilation units is %s.\n"),
1350                     value);
1351 }
1352 \f
1353 /* local function prototypes */
1354
1355 static void dwarf2_find_base_address (struct die_info *die,
1356                                       struct dwarf2_cu *cu);
1357
1358 static dwarf2_psymtab *create_partial_symtab
1359   (struct dwarf2_per_cu_data *per_cu, const char *name);
1360
1361 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1362                                         const gdb_byte *info_ptr,
1363                                         struct die_info *type_unit_die);
1364
1365 static void dwarf2_build_psymtabs_hard
1366   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1367
1368 static void scan_partial_symbols (struct partial_die_info *,
1369                                   CORE_ADDR *, CORE_ADDR *,
1370                                   int, struct dwarf2_cu *);
1371
1372 static void add_partial_symbol (struct partial_die_info *,
1373                                 struct dwarf2_cu *);
1374
1375 static void add_partial_namespace (struct partial_die_info *pdi,
1376                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1377                                    int set_addrmap, struct dwarf2_cu *cu);
1378
1379 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1380                                 CORE_ADDR *highpc, int set_addrmap,
1381                                 struct dwarf2_cu *cu);
1382
1383 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1384                                      struct dwarf2_cu *cu);
1385
1386 static void add_partial_subprogram (struct partial_die_info *pdi,
1387                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1388                                     int need_pc, struct dwarf2_cu *cu);
1389
1390 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1391
1392 static struct partial_die_info *load_partial_dies
1393   (const struct die_reader_specs *, const gdb_byte *, int);
1394
1395 /* A pair of partial_die_info and compilation unit.  */
1396 struct cu_partial_die_info
1397 {
1398   /* The compilation unit of the partial_die_info.  */
1399   struct dwarf2_cu *cu;
1400   /* A partial_die_info.  */
1401   struct partial_die_info *pdi;
1402
1403   cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
1404     : cu (cu),
1405       pdi (pdi)
1406   { /* Nothing.  */ }
1407
1408 private:
1409   cu_partial_die_info () = delete;
1410 };
1411
1412 static const struct cu_partial_die_info find_partial_die (sect_offset, int,
1413                                                           struct dwarf2_cu *);
1414
1415 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1416                                        struct attribute *, struct attr_abbrev *,
1417                                        const gdb_byte *, bool *need_reprocess);
1418
1419 static void read_attribute_reprocess (const struct die_reader_specs *reader,
1420                                       struct attribute *attr);
1421
1422 static CORE_ADDR read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index);
1423
1424 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1425                                unsigned int *);
1426
1427 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1428
1429 static LONGEST read_checked_initial_length_and_offset
1430   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1431    unsigned int *, unsigned int *);
1432
1433 static LONGEST read_offset (bfd *, const gdb_byte *,
1434                             const struct comp_unit_head *,
1435                             unsigned int *);
1436
1437 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1438
1439 static sect_offset read_abbrev_offset
1440   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1441    struct dwarf2_section_info *, sect_offset);
1442
1443 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1444
1445 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1446
1447 static const char *read_indirect_string
1448   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1449    const struct comp_unit_head *, unsigned int *);
1450
1451 static const char *read_indirect_line_string
1452   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1453    const struct comp_unit_head *, unsigned int *);
1454
1455 static const char *read_indirect_string_at_offset
1456   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1457    LONGEST str_offset);
1458
1459 static const char *read_indirect_string_from_dwz
1460   (struct objfile *objfile, struct dwz_file *, LONGEST);
1461
1462 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1463                                               const gdb_byte *,
1464                                               unsigned int *);
1465
1466 static const char *read_dwo_str_index (const struct die_reader_specs *reader,
1467                                        ULONGEST str_index);
1468
1469 static const char *read_stub_str_index (struct dwarf2_cu *cu,
1470                                         ULONGEST str_index);
1471
1472 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1473
1474 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1475                                       struct dwarf2_cu *);
1476
1477 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1478                                                 unsigned int);
1479
1480 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1481                                        struct dwarf2_cu *cu);
1482
1483 static const char *dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu);
1484
1485 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1486                                struct dwarf2_cu *cu);
1487
1488 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1489
1490 static struct die_info *die_specification (struct die_info *die,
1491                                            struct dwarf2_cu **);
1492
1493 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1494                                                 struct dwarf2_cu *cu);
1495
1496 static void dwarf_decode_lines (struct line_header *, const char *,
1497                                 struct dwarf2_cu *, dwarf2_psymtab *,
1498                                 CORE_ADDR, int decode_mapping);
1499
1500 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1501                                   const char *);
1502
1503 static struct symbol *new_symbol (struct die_info *, struct type *,
1504                                   struct dwarf2_cu *, struct symbol * = NULL);
1505
1506 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1507                                 struct dwarf2_cu *);
1508
1509 static void dwarf2_const_value_attr (const struct attribute *attr,
1510                                      struct type *type,
1511                                      const char *name,
1512                                      struct obstack *obstack,
1513                                      struct dwarf2_cu *cu, LONGEST *value,
1514                                      const gdb_byte **bytes,
1515                                      struct dwarf2_locexpr_baton **baton);
1516
1517 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1518
1519 static int need_gnat_info (struct dwarf2_cu *);
1520
1521 static struct type *die_descriptive_type (struct die_info *,
1522                                           struct dwarf2_cu *);
1523
1524 static void set_descriptive_type (struct type *, struct die_info *,
1525                                   struct dwarf2_cu *);
1526
1527 static struct type *die_containing_type (struct die_info *,
1528                                          struct dwarf2_cu *);
1529
1530 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1531                                      struct dwarf2_cu *);
1532
1533 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1534
1535 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1536
1537 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1538
1539 static char *typename_concat (struct obstack *obs, const char *prefix,
1540                               const char *suffix, int physname,
1541                               struct dwarf2_cu *cu);
1542
1543 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1544
1545 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1546
1547 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1548
1549 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1550
1551 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1552
1553 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1554
1555 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1556                                struct dwarf2_cu *, dwarf2_psymtab *);
1557
1558 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1559    values.  Keep the items ordered with increasing constraints compliance.  */
1560 enum pc_bounds_kind
1561 {
1562   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1563   PC_BOUNDS_NOT_PRESENT,
1564
1565   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1566      were present but they do not form a valid range of PC addresses.  */
1567   PC_BOUNDS_INVALID,
1568
1569   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1570   PC_BOUNDS_RANGES,
1571
1572   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1573   PC_BOUNDS_HIGH_LOW,
1574 };
1575
1576 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1577                                                  CORE_ADDR *, CORE_ADDR *,
1578                                                  struct dwarf2_cu *,
1579                                                  dwarf2_psymtab *);
1580
1581 static void get_scope_pc_bounds (struct die_info *,
1582                                  CORE_ADDR *, CORE_ADDR *,
1583                                  struct dwarf2_cu *);
1584
1585 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1586                                         CORE_ADDR, struct dwarf2_cu *);
1587
1588 static void dwarf2_add_field (struct field_info *, struct die_info *,
1589                               struct dwarf2_cu *);
1590
1591 static void dwarf2_attach_fields_to_type (struct field_info *,
1592                                           struct type *, struct dwarf2_cu *);
1593
1594 static void dwarf2_add_member_fn (struct field_info *,
1595                                   struct die_info *, struct type *,
1596                                   struct dwarf2_cu *);
1597
1598 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1599                                              struct type *,
1600                                              struct dwarf2_cu *);
1601
1602 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1603
1604 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1605
1606 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1607
1608 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1609
1610 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1611
1612 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1613
1614 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1615
1616 static struct type *read_module_type (struct die_info *die,
1617                                       struct dwarf2_cu *cu);
1618
1619 static const char *namespace_name (struct die_info *die,
1620                                    int *is_anonymous, struct dwarf2_cu *);
1621
1622 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1623
1624 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1625
1626 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1627                                                        struct dwarf2_cu *);
1628
1629 static struct die_info *read_die_and_siblings_1
1630   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1631    struct die_info *);
1632
1633 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1634                                                const gdb_byte *info_ptr,
1635                                                const gdb_byte **new_info_ptr,
1636                                                struct die_info *parent);
1637
1638 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1639                                         struct die_info **, const gdb_byte *,
1640                                         int);
1641
1642 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1643                                       struct die_info **, const gdb_byte *);
1644
1645 static void process_die (struct die_info *, struct dwarf2_cu *);
1646
1647 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1648                                              struct obstack *);
1649
1650 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1651
1652 static const char *dwarf2_full_name (const char *name,
1653                                      struct die_info *die,
1654                                      struct dwarf2_cu *cu);
1655
1656 static const char *dwarf2_physname (const char *name, struct die_info *die,
1657                                     struct dwarf2_cu *cu);
1658
1659 static struct die_info *dwarf2_extension (struct die_info *die,
1660                                           struct dwarf2_cu **);
1661
1662 static const char *dwarf_tag_name (unsigned int);
1663
1664 static const char *dwarf_attr_name (unsigned int);
1665
1666 static const char *dwarf_unit_type_name (int unit_type);
1667
1668 static const char *dwarf_form_name (unsigned int);
1669
1670 static const char *dwarf_bool_name (unsigned int);
1671
1672 static const char *dwarf_type_encoding_name (unsigned int);
1673
1674 static struct die_info *sibling_die (struct die_info *);
1675
1676 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1677
1678 static void dump_die_for_error (struct die_info *);
1679
1680 static void dump_die_1 (struct ui_file *, int level, int max_level,
1681                         struct die_info *);
1682
1683 /*static*/ void dump_die (struct die_info *, int max_level);
1684
1685 static void store_in_ref_table (struct die_info *,
1686                                 struct dwarf2_cu *);
1687
1688 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1689
1690 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1691
1692 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1693                                                const struct attribute *,
1694                                                struct dwarf2_cu **);
1695
1696 static struct die_info *follow_die_ref (struct die_info *,
1697                                         const struct attribute *,
1698                                         struct dwarf2_cu **);
1699
1700 static struct die_info *follow_die_sig (struct die_info *,
1701                                         const struct attribute *,
1702                                         struct dwarf2_cu **);
1703
1704 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1705                                          struct dwarf2_cu *);
1706
1707 static struct type *get_DW_AT_signature_type (struct die_info *,
1708                                               const struct attribute *,
1709                                               struct dwarf2_cu *);
1710
1711 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1712
1713 static void read_signatured_type (struct signatured_type *);
1714
1715 static int attr_to_dynamic_prop (const struct attribute *attr,
1716                                  struct die_info *die, struct dwarf2_cu *cu,
1717                                  struct dynamic_prop *prop, struct type *type);
1718
1719 /* memory allocation interface */
1720
1721 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1722
1723 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1724
1725 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1726
1727 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1728                                    struct dwarf2_loclist_baton *baton,
1729                                    const struct attribute *attr);
1730
1731 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1732                                          struct symbol *sym,
1733                                          struct dwarf2_cu *cu,
1734                                          int is_block);
1735
1736 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1737                                      const gdb_byte *info_ptr,
1738                                      struct abbrev_info *abbrev);
1739
1740 static hashval_t partial_die_hash (const void *item);
1741
1742 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1743
1744 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1745   (sect_offset sect_off, unsigned int offset_in_dwz,
1746    struct dwarf2_per_objfile *dwarf2_per_objfile);
1747
1748 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1749                                    struct die_info *comp_unit_die,
1750                                    enum language pretend_language);
1751
1752 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1753
1754 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1755
1756 static struct type *set_die_type (struct die_info *, struct type *,
1757                                   struct dwarf2_cu *);
1758
1759 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1760
1761 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1762
1763 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1764                                  enum language);
1765
1766 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1767                                     enum language);
1768
1769 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1770                                     enum language);
1771
1772 static void dwarf2_add_dependence (struct dwarf2_cu *,
1773                                    struct dwarf2_per_cu_data *);
1774
1775 static void dwarf2_mark (struct dwarf2_cu *);
1776
1777 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1778
1779 static struct type *get_die_type_at_offset (sect_offset,
1780                                             struct dwarf2_per_cu_data *);
1781
1782 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1783
1784 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1785                              enum language pretend_language);
1786
1787 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1788
1789 static struct type *dwarf2_per_cu_addr_type (struct dwarf2_per_cu_data *per_cu);
1790 static struct type *dwarf2_per_cu_addr_sized_int_type
1791         (struct dwarf2_per_cu_data *per_cu, bool unsigned_p);
1792 static struct type *dwarf2_per_cu_int_type
1793         (struct dwarf2_per_cu_data *per_cu, int size_in_bytes,
1794          bool unsigned_p);
1795
1796 /* Class, the destructor of which frees all allocated queue entries.  This
1797    will only have work to do if an error was thrown while processing the
1798    dwarf.  If no error was thrown then the queue entries should have all
1799    been processed, and freed, as we went along.  */
1800
1801 class dwarf2_queue_guard
1802 {
1803 public:
1804   explicit dwarf2_queue_guard (dwarf2_per_objfile *per_objfile)
1805     : m_per_objfile (per_objfile)
1806   {
1807   }
1808
1809   /* Free any entries remaining on the queue.  There should only be
1810      entries left if we hit an error while processing the dwarf.  */
1811   ~dwarf2_queue_guard ()
1812   {
1813     /* Ensure that no memory is allocated by the queue.  */
1814     std::queue<dwarf2_queue_item> empty;
1815     std::swap (m_per_objfile->queue, empty);
1816   }
1817
1818   DISABLE_COPY_AND_ASSIGN (dwarf2_queue_guard);
1819
1820 private:
1821   dwarf2_per_objfile *m_per_objfile;
1822 };
1823
1824 dwarf2_queue_item::~dwarf2_queue_item ()
1825 {
1826   /* Anything still marked queued is likely to be in an
1827      inconsistent state, so discard it.  */
1828   if (per_cu->queued)
1829     {
1830       if (per_cu->cu != NULL)
1831         free_one_cached_comp_unit (per_cu);
1832       per_cu->queued = 0;
1833     }
1834 }
1835
1836 /* The return type of find_file_and_directory.  Note, the enclosed
1837    string pointers are only valid while this object is valid.  */
1838
1839 struct file_and_directory
1840 {
1841   /* The filename.  This is never NULL.  */
1842   const char *name;
1843
1844   /* The compilation directory.  NULL if not known.  If we needed to
1845      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1846      points directly to the DW_AT_comp_dir string attribute owned by
1847      the obstack that owns the DIE.  */
1848   const char *comp_dir;
1849
1850   /* If we needed to build a new string for comp_dir, this is what
1851      owns the storage.  */
1852   std::string comp_dir_storage;
1853 };
1854
1855 static file_and_directory find_file_and_directory (struct die_info *die,
1856                                                    struct dwarf2_cu *cu);
1857
1858 static char *file_full_name (int file, struct line_header *lh,
1859                              const char *comp_dir);
1860
1861 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1862 enum class rcuh_kind { COMPILE, TYPE };
1863
1864 static const gdb_byte *read_and_check_comp_unit_head
1865   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1866    struct comp_unit_head *header,
1867    struct dwarf2_section_info *section,
1868    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1869    rcuh_kind section_kind);
1870
1871 static htab_up allocate_signatured_type_table (struct objfile *objfile);
1872
1873 static htab_up allocate_dwo_unit_table (struct objfile *objfile);
1874
1875 static struct dwo_unit *lookup_dwo_unit_in_dwp
1876   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1877    struct dwp_file *dwp_file, const char *comp_dir,
1878    ULONGEST signature, int is_debug_types);
1879
1880 static struct dwp_file *get_dwp_file
1881   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1882
1883 static struct dwo_unit *lookup_dwo_comp_unit
1884   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1885
1886 static struct dwo_unit *lookup_dwo_type_unit
1887   (struct signatured_type *, const char *, const char *);
1888
1889 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1890
1891 /* A unique pointer to a dwo_file.  */
1892
1893 typedef std::unique_ptr<struct dwo_file> dwo_file_up;
1894
1895 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
1896
1897 static void check_producer (struct dwarf2_cu *cu);
1898
1899 static void free_line_header_voidp (void *arg);
1900 \f
1901 /* Various complaints about symbol reading that don't abort the process.  */
1902
1903 static void
1904 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1905 {
1906   complaint (_("statement list doesn't fit in .debug_line section"));
1907 }
1908
1909 static void
1910 dwarf2_debug_line_missing_file_complaint (void)
1911 {
1912   complaint (_(".debug_line section has line data without a file"));
1913 }
1914
1915 static void
1916 dwarf2_debug_line_missing_end_sequence_complaint (void)
1917 {
1918   complaint (_(".debug_line section has line "
1919                "program sequence without an end"));
1920 }
1921
1922 static void
1923 dwarf2_complex_location_expr_complaint (void)
1924 {
1925   complaint (_("location expression too complex"));
1926 }
1927
1928 static void
1929 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1930                                               int arg3)
1931 {
1932   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
1933              arg1, arg2, arg3);
1934 }
1935
1936 static void
1937 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1938 {
1939   complaint (_("debug info runs off end of %s section"
1940                " [in module %s]"),
1941              section->get_name (),
1942              section->get_file_name ());
1943 }
1944
1945 static void
1946 dwarf2_macro_malformed_definition_complaint (const char *arg1)
1947 {
1948   complaint (_("macro debug info contains a "
1949                "malformed macro definition:\n`%s'"),
1950              arg1);
1951 }
1952
1953 static void
1954 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1955 {
1956   complaint (_("invalid attribute class or form for '%s' in '%s'"),
1957              arg1, arg2);
1958 }
1959
1960 /* Hash function for line_header_hash.  */
1961
1962 static hashval_t
1963 line_header_hash (const struct line_header *ofs)
1964 {
1965   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
1966 }
1967
1968 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
1969
1970 static hashval_t
1971 line_header_hash_voidp (const void *item)
1972 {
1973   const struct line_header *ofs = (const struct line_header *) item;
1974
1975   return line_header_hash (ofs);
1976 }
1977
1978 /* Equality function for line_header_hash.  */
1979
1980 static int
1981 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1982 {
1983   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
1984   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
1985
1986   return (ofs_lhs->sect_off == ofs_rhs->sect_off
1987           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1988 }
1989
1990 \f
1991
1992 /* See declaration.  */
1993
1994 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
1995                                         const dwarf2_debug_sections *names,
1996                                         bool can_copy_)
1997   : objfile (objfile_),
1998     can_copy (can_copy_)
1999 {
2000   if (names == NULL)
2001     names = &dwarf2_elf_names;
2002
2003   bfd *obfd = objfile->obfd;
2004
2005   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2006     locate_sections (obfd, sec, *names);
2007 }
2008
2009 dwarf2_per_objfile::~dwarf2_per_objfile ()
2010 {
2011   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2012   free_cached_comp_units ();
2013
2014   if (quick_file_names_table)
2015     htab_delete (quick_file_names_table);
2016
2017   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2018     per_cu->imported_symtabs_free ();
2019
2020   for (signatured_type *sig_type : all_type_units)
2021     sig_type->per_cu.imported_symtabs_free ();
2022
2023   /* Everything else should be on the objfile obstack.  */
2024 }
2025
2026 /* See declaration.  */
2027
2028 void
2029 dwarf2_per_objfile::free_cached_comp_units ()
2030 {
2031   dwarf2_per_cu_data *per_cu = read_in_chain;
2032   dwarf2_per_cu_data **last_chain = &read_in_chain;
2033   while (per_cu != NULL)
2034     {
2035       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2036
2037       delete per_cu->cu;
2038       *last_chain = next_cu;
2039       per_cu = next_cu;
2040     }
2041 }
2042
2043 /* A helper class that calls free_cached_comp_units on
2044    destruction.  */
2045
2046 class free_cached_comp_units
2047 {
2048 public:
2049
2050   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2051     : m_per_objfile (per_objfile)
2052   {
2053   }
2054
2055   ~free_cached_comp_units ()
2056   {
2057     m_per_objfile->free_cached_comp_units ();
2058   }
2059
2060   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2061
2062 private:
2063
2064   dwarf2_per_objfile *m_per_objfile;
2065 };
2066
2067 /* Try to locate the sections we need for DWARF 2 debugging
2068    information and return true if we have enough to do something.
2069    NAMES points to the dwarf2 section names, or is NULL if the standard
2070    ELF names are used.  CAN_COPY is true for formats where symbol
2071    interposition is possible and so symbol values must follow copy
2072    relocation rules.  */
2073
2074 int
2075 dwarf2_has_info (struct objfile *objfile,
2076                  const struct dwarf2_debug_sections *names,
2077                  bool can_copy)
2078 {
2079   if (objfile->flags & OBJF_READNEVER)
2080     return 0;
2081
2082   struct dwarf2_per_objfile *dwarf2_per_objfile
2083     = get_dwarf2_per_objfile (objfile);
2084
2085   if (dwarf2_per_objfile == NULL)
2086     dwarf2_per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile,
2087                                                           names,
2088                                                           can_copy);
2089
2090   return (!dwarf2_per_objfile->info.is_virtual
2091           && dwarf2_per_objfile->info.s.section != NULL
2092           && !dwarf2_per_objfile->abbrev.is_virtual
2093           && dwarf2_per_objfile->abbrev.s.section != NULL);
2094 }
2095
2096 /* When loading sections, we look either for uncompressed section or for
2097    compressed section names.  */
2098
2099 static int
2100 section_is_p (const char *section_name,
2101               const struct dwarf2_section_names *names)
2102 {
2103   if (names->normal != NULL
2104       && strcmp (section_name, names->normal) == 0)
2105     return 1;
2106   if (names->compressed != NULL
2107       && strcmp (section_name, names->compressed) == 0)
2108     return 1;
2109   return 0;
2110 }
2111
2112 /* See declaration.  */
2113
2114 void
2115 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2116                                      const dwarf2_debug_sections &names)
2117 {
2118   flagword aflag = bfd_section_flags (sectp);
2119
2120   if ((aflag & SEC_HAS_CONTENTS) == 0)
2121     {
2122     }
2123   else if (elf_section_data (sectp)->this_hdr.sh_size
2124            > bfd_get_file_size (abfd))
2125     {
2126       bfd_size_type size = elf_section_data (sectp)->this_hdr.sh_size;
2127       warning (_("Discarding section %s which has a section size (%s"
2128                  ") larger than the file size [in module %s]"),
2129                bfd_section_name (sectp), phex_nz (size, sizeof (size)),
2130                bfd_get_filename (abfd));
2131     }
2132   else if (section_is_p (sectp->name, &names.info))
2133     {
2134       this->info.s.section = sectp;
2135       this->info.size = bfd_section_size (sectp);
2136     }
2137   else if (section_is_p (sectp->name, &names.abbrev))
2138     {
2139       this->abbrev.s.section = sectp;
2140       this->abbrev.size = bfd_section_size (sectp);
2141     }
2142   else if (section_is_p (sectp->name, &names.line))
2143     {
2144       this->line.s.section = sectp;
2145       this->line.size = bfd_section_size (sectp);
2146     }
2147   else if (section_is_p (sectp->name, &names.loc))
2148     {
2149       this->loc.s.section = sectp;
2150       this->loc.size = bfd_section_size (sectp);
2151     }
2152   else if (section_is_p (sectp->name, &names.loclists))
2153     {
2154       this->loclists.s.section = sectp;
2155       this->loclists.size = bfd_section_size (sectp);
2156     }
2157   else if (section_is_p (sectp->name, &names.macinfo))
2158     {
2159       this->macinfo.s.section = sectp;
2160       this->macinfo.size = bfd_section_size (sectp);
2161     }
2162   else if (section_is_p (sectp->name, &names.macro))
2163     {
2164       this->macro.s.section = sectp;
2165       this->macro.size = bfd_section_size (sectp);
2166     }
2167   else if (section_is_p (sectp->name, &names.str))
2168     {
2169       this->str.s.section = sectp;
2170       this->str.size = bfd_section_size (sectp);
2171     }
2172   else if (section_is_p (sectp->name, &names.str_offsets))
2173     {
2174       this->str_offsets.s.section = sectp;
2175       this->str_offsets.size = bfd_section_size (sectp);
2176     }
2177   else if (section_is_p (sectp->name, &names.line_str))
2178     {
2179       this->line_str.s.section = sectp;
2180       this->line_str.size = bfd_section_size (sectp);
2181     }
2182   else if (section_is_p (sectp->name, &names.addr))
2183     {
2184       this->addr.s.section = sectp;
2185       this->addr.size = bfd_section_size (sectp);
2186     }
2187   else if (section_is_p (sectp->name, &names.frame))
2188     {
2189       this->frame.s.section = sectp;
2190       this->frame.size = bfd_section_size (sectp);
2191     }
2192   else if (section_is_p (sectp->name, &names.eh_frame))
2193     {
2194       this->eh_frame.s.section = sectp;
2195       this->eh_frame.size = bfd_section_size (sectp);
2196     }
2197   else if (section_is_p (sectp->name, &names.ranges))
2198     {
2199       this->ranges.s.section = sectp;
2200       this->ranges.size = bfd_section_size (sectp);
2201     }
2202   else if (section_is_p (sectp->name, &names.rnglists))
2203     {
2204       this->rnglists.s.section = sectp;
2205       this->rnglists.size = bfd_section_size (sectp);
2206     }
2207   else if (section_is_p (sectp->name, &names.types))
2208     {
2209       struct dwarf2_section_info type_section;
2210
2211       memset (&type_section, 0, sizeof (type_section));
2212       type_section.s.section = sectp;
2213       type_section.size = bfd_section_size (sectp);
2214
2215       this->types.push_back (type_section);
2216     }
2217   else if (section_is_p (sectp->name, &names.gdb_index))
2218     {
2219       this->gdb_index.s.section = sectp;
2220       this->gdb_index.size = bfd_section_size (sectp);
2221     }
2222   else if (section_is_p (sectp->name, &names.debug_names))
2223     {
2224       this->debug_names.s.section = sectp;
2225       this->debug_names.size = bfd_section_size (sectp);
2226     }
2227   else if (section_is_p (sectp->name, &names.debug_aranges))
2228     {
2229       this->debug_aranges.s.section = sectp;
2230       this->debug_aranges.size = bfd_section_size (sectp);
2231     }
2232
2233   if ((bfd_section_flags (sectp) & (SEC_LOAD | SEC_ALLOC))
2234       && bfd_section_vma (sectp) == 0)
2235     this->has_section_at_zero = true;
2236 }
2237
2238 /* A helper function that returns the size of a section in a safe way.
2239    If you are positive that the section has been read before using the
2240    size, then it is safe to refer to the dwarf2_section_info object's
2241    "size" field directly.  In other cases, you must call this
2242    function, because for compressed sections the size field is not set
2243    correctly until the section has been read.  */
2244
2245 static bfd_size_type
2246 dwarf2_section_size (struct objfile *objfile,
2247                      struct dwarf2_section_info *info)
2248 {
2249   if (!info->readin)
2250     info->read (objfile);
2251   return info->size;
2252 }
2253
2254 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2255    SECTION_NAME.  */
2256
2257 void
2258 dwarf2_get_section_info (struct objfile *objfile,
2259                          enum dwarf2_section_enum sect,
2260                          asection **sectp, const gdb_byte **bufp,
2261                          bfd_size_type *sizep)
2262 {
2263   struct dwarf2_per_objfile *data = dwarf2_objfile_data_key.get (objfile);
2264   struct dwarf2_section_info *info;
2265
2266   /* We may see an objfile without any DWARF, in which case we just
2267      return nothing.  */
2268   if (data == NULL)
2269     {
2270       *sectp = NULL;
2271       *bufp = NULL;
2272       *sizep = 0;
2273       return;
2274     }
2275   switch (sect)
2276     {
2277     case DWARF2_DEBUG_FRAME:
2278       info = &data->frame;
2279       break;
2280     case DWARF2_EH_FRAME:
2281       info = &data->eh_frame;
2282       break;
2283     default:
2284       gdb_assert_not_reached ("unexpected section");
2285     }
2286
2287   info->read (objfile);
2288
2289   *sectp = info->get_bfd_section ();
2290   *bufp = info->buffer;
2291   *sizep = info->size;
2292 }
2293
2294 /* A helper function to find the sections for a .dwz file.  */
2295
2296 static void
2297 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2298 {
2299   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2300
2301   /* Note that we only support the standard ELF names, because .dwz
2302      is ELF-only (at the time of writing).  */
2303   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2304     {
2305       dwz_file->abbrev.s.section = sectp;
2306       dwz_file->abbrev.size = bfd_section_size (sectp);
2307     }
2308   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2309     {
2310       dwz_file->info.s.section = sectp;
2311       dwz_file->info.size = bfd_section_size (sectp);
2312     }
2313   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2314     {
2315       dwz_file->str.s.section = sectp;
2316       dwz_file->str.size = bfd_section_size (sectp);
2317     }
2318   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2319     {
2320       dwz_file->line.s.section = sectp;
2321       dwz_file->line.size = bfd_section_size (sectp);
2322     }
2323   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2324     {
2325       dwz_file->macro.s.section = sectp;
2326       dwz_file->macro.size = bfd_section_size (sectp);
2327     }
2328   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2329     {
2330       dwz_file->gdb_index.s.section = sectp;
2331       dwz_file->gdb_index.size = bfd_section_size (sectp);
2332     }
2333   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2334     {
2335       dwz_file->debug_names.s.section = sectp;
2336       dwz_file->debug_names.size = bfd_section_size (sectp);
2337     }
2338 }
2339
2340 /* See dwarf2read.h.  */
2341
2342 struct dwz_file *
2343 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2344 {
2345   const char *filename;
2346   bfd_size_type buildid_len_arg;
2347   size_t buildid_len;
2348   bfd_byte *buildid;
2349
2350   if (dwarf2_per_objfile->dwz_file != NULL)
2351     return dwarf2_per_objfile->dwz_file.get ();
2352
2353   bfd_set_error (bfd_error_no_error);
2354   gdb::unique_xmalloc_ptr<char> data
2355     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2356                                   &buildid_len_arg, &buildid));
2357   if (data == NULL)
2358     {
2359       if (bfd_get_error () == bfd_error_no_error)
2360         return NULL;
2361       error (_("could not read '.gnu_debugaltlink' section: %s"),
2362              bfd_errmsg (bfd_get_error ()));
2363     }
2364
2365   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2366
2367   buildid_len = (size_t) buildid_len_arg;
2368
2369   filename = data.get ();
2370
2371   std::string abs_storage;
2372   if (!IS_ABSOLUTE_PATH (filename))
2373     {
2374       gdb::unique_xmalloc_ptr<char> abs
2375         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2376
2377       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2378       filename = abs_storage.c_str ();
2379     }
2380
2381   /* First try the file name given in the section.  If that doesn't
2382      work, try to use the build-id instead.  */
2383   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2384   if (dwz_bfd != NULL)
2385     {
2386       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2387         dwz_bfd.reset (nullptr);
2388     }
2389
2390   if (dwz_bfd == NULL)
2391     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2392
2393   if (dwz_bfd == NULL)
2394     error (_("could not find '.gnu_debugaltlink' file for %s"),
2395            objfile_name (dwarf2_per_objfile->objfile));
2396
2397   std::unique_ptr<struct dwz_file> result
2398     (new struct dwz_file (std::move (dwz_bfd)));
2399
2400   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2401                          result.get ());
2402
2403   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2404                             result->dwz_bfd.get ());
2405   dwarf2_per_objfile->dwz_file = std::move (result);
2406   return dwarf2_per_objfile->dwz_file.get ();
2407 }
2408 \f
2409 /* DWARF quick_symbols_functions support.  */
2410
2411 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2412    unique line tables, so we maintain a separate table of all .debug_line
2413    derived entries to support the sharing.
2414    All the quick functions need is the list of file names.  We discard the
2415    line_header when we're done and don't need to record it here.  */
2416 struct quick_file_names
2417 {
2418   /* The data used to construct the hash key.  */
2419   struct stmt_list_hash hash;
2420
2421   /* The number of entries in file_names, real_names.  */
2422   unsigned int num_file_names;
2423
2424   /* The file names from the line table, after being run through
2425      file_full_name.  */
2426   const char **file_names;
2427
2428   /* The file names from the line table after being run through
2429      gdb_realpath.  These are computed lazily.  */
2430   const char **real_names;
2431 };
2432
2433 /* When using the index (and thus not using psymtabs), each CU has an
2434    object of this type.  This is used to hold information needed by
2435    the various "quick" methods.  */
2436 struct dwarf2_per_cu_quick_data
2437 {
2438   /* The file table.  This can be NULL if there was no file table
2439      or it's currently not read in.
2440      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2441   struct quick_file_names *file_names;
2442
2443   /* The corresponding symbol table.  This is NULL if symbols for this
2444      CU have not yet been read.  */
2445   struct compunit_symtab *compunit_symtab;
2446
2447   /* A temporary mark bit used when iterating over all CUs in
2448      expand_symtabs_matching.  */
2449   unsigned int mark : 1;
2450
2451   /* True if we've tried to read the file table and found there isn't one.
2452      There will be no point in trying to read it again next time.  */
2453   unsigned int no_file_data : 1;
2454 };
2455
2456 /* Utility hash function for a stmt_list_hash.  */
2457
2458 static hashval_t
2459 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2460 {
2461   hashval_t v = 0;
2462
2463   if (stmt_list_hash->dwo_unit != NULL)
2464     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2465   v += to_underlying (stmt_list_hash->line_sect_off);
2466   return v;
2467 }
2468
2469 /* Utility equality function for a stmt_list_hash.  */
2470
2471 static int
2472 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2473                     const struct stmt_list_hash *rhs)
2474 {
2475   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2476     return 0;
2477   if (lhs->dwo_unit != NULL
2478       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2479     return 0;
2480
2481   return lhs->line_sect_off == rhs->line_sect_off;
2482 }
2483
2484 /* Hash function for a quick_file_names.  */
2485
2486 static hashval_t
2487 hash_file_name_entry (const void *e)
2488 {
2489   const struct quick_file_names *file_data
2490     = (const struct quick_file_names *) e;
2491
2492   return hash_stmt_list_entry (&file_data->hash);
2493 }
2494
2495 /* Equality function for a quick_file_names.  */
2496
2497 static int
2498 eq_file_name_entry (const void *a, const void *b)
2499 {
2500   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2501   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2502
2503   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2504 }
2505
2506 /* Delete function for a quick_file_names.  */
2507
2508 static void
2509 delete_file_name_entry (void *e)
2510 {
2511   struct quick_file_names *file_data = (struct quick_file_names *) e;
2512   int i;
2513
2514   for (i = 0; i < file_data->num_file_names; ++i)
2515     {
2516       xfree ((void*) file_data->file_names[i]);
2517       if (file_data->real_names)
2518         xfree ((void*) file_data->real_names[i]);
2519     }
2520
2521   /* The space for the struct itself lives on objfile_obstack,
2522      so we don't free it here.  */
2523 }
2524
2525 /* Create a quick_file_names hash table.  */
2526
2527 static htab_t
2528 create_quick_file_names_table (unsigned int nr_initial_entries)
2529 {
2530   return htab_create_alloc (nr_initial_entries,
2531                             hash_file_name_entry, eq_file_name_entry,
2532                             delete_file_name_entry, xcalloc, xfree);
2533 }
2534
2535 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2536    have to be created afterwards.  You should call age_cached_comp_units after
2537    processing PER_CU->CU.  dw2_setup must have been already called.  */
2538
2539 static void
2540 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2541 {
2542   if (per_cu->is_debug_types)
2543     load_full_type_unit (per_cu);
2544   else
2545     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2546
2547   if (per_cu->cu == NULL)
2548     return;  /* Dummy CU.  */
2549
2550   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2551 }
2552
2553 /* Read in the symbols for PER_CU.  */
2554
2555 static void
2556 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2557 {
2558   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2559
2560   /* Skip type_unit_groups, reading the type units they contain
2561      is handled elsewhere.  */
2562   if (IS_TYPE_UNIT_GROUP (per_cu))
2563     return;
2564
2565   /* The destructor of dwarf2_queue_guard frees any entries left on
2566      the queue.  After this point we're guaranteed to leave this function
2567      with the dwarf queue empty.  */
2568   dwarf2_queue_guard q_guard (dwarf2_per_objfile);
2569
2570   if (dwarf2_per_objfile->using_index
2571       ? per_cu->v.quick->compunit_symtab == NULL
2572       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2573     {
2574       queue_comp_unit (per_cu, language_minimal);
2575       load_cu (per_cu, skip_partial);
2576
2577       /* If we just loaded a CU from a DWO, and we're working with an index
2578          that may badly handle TUs, load all the TUs in that DWO as well.
2579          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2580       if (!per_cu->is_debug_types
2581           && per_cu->cu != NULL
2582           && per_cu->cu->dwo_unit != NULL
2583           && dwarf2_per_objfile->index_table != NULL
2584           && dwarf2_per_objfile->index_table->version <= 7
2585           /* DWP files aren't supported yet.  */
2586           && get_dwp_file (dwarf2_per_objfile) == NULL)
2587         queue_and_load_all_dwo_tus (per_cu);
2588     }
2589
2590   process_queue (dwarf2_per_objfile);
2591
2592   /* Age the cache, releasing compilation units that have not
2593      been used recently.  */
2594   age_cached_comp_units (dwarf2_per_objfile);
2595 }
2596
2597 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2598    the objfile from which this CU came.  Returns the resulting symbol
2599    table.  */
2600
2601 static struct compunit_symtab *
2602 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2603 {
2604   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2605
2606   gdb_assert (dwarf2_per_objfile->using_index);
2607   if (!per_cu->v.quick->compunit_symtab)
2608     {
2609       free_cached_comp_units freer (dwarf2_per_objfile);
2610       scoped_restore decrementer = increment_reading_symtab ();
2611       dw2_do_instantiate_symtab (per_cu, skip_partial);
2612       process_cu_includes (dwarf2_per_objfile);
2613     }
2614
2615   return per_cu->v.quick->compunit_symtab;
2616 }
2617
2618 /* See declaration.  */
2619
2620 dwarf2_per_cu_data *
2621 dwarf2_per_objfile::get_cutu (int index)
2622 {
2623   if (index >= this->all_comp_units.size ())
2624     {
2625       index -= this->all_comp_units.size ();
2626       gdb_assert (index < this->all_type_units.size ());
2627       return &this->all_type_units[index]->per_cu;
2628     }
2629
2630   return this->all_comp_units[index];
2631 }
2632
2633 /* See declaration.  */
2634
2635 dwarf2_per_cu_data *
2636 dwarf2_per_objfile::get_cu (int index)
2637 {
2638   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2639
2640   return this->all_comp_units[index];
2641 }
2642
2643 /* See declaration.  */
2644
2645 signatured_type *
2646 dwarf2_per_objfile::get_tu (int index)
2647 {
2648   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2649
2650   return this->all_type_units[index];
2651 }
2652
2653 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2654    objfile_obstack, and constructed with the specified field
2655    values.  */
2656
2657 static dwarf2_per_cu_data *
2658 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2659                           struct dwarf2_section_info *section,
2660                           int is_dwz,
2661                           sect_offset sect_off, ULONGEST length)
2662 {
2663   struct objfile *objfile = dwarf2_per_objfile->objfile;
2664   dwarf2_per_cu_data *the_cu
2665     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2666                      struct dwarf2_per_cu_data);
2667   the_cu->sect_off = sect_off;
2668   the_cu->length = length;
2669   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2670   the_cu->section = section;
2671   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2672                                    struct dwarf2_per_cu_quick_data);
2673   the_cu->is_dwz = is_dwz;
2674   return the_cu;
2675 }
2676
2677 /* A helper for create_cus_from_index that handles a given list of
2678    CUs.  */
2679
2680 static void
2681 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2682                             const gdb_byte *cu_list, offset_type n_elements,
2683                             struct dwarf2_section_info *section,
2684                             int is_dwz)
2685 {
2686   for (offset_type i = 0; i < n_elements; i += 2)
2687     {
2688       gdb_static_assert (sizeof (ULONGEST) >= 8);
2689
2690       sect_offset sect_off
2691         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2692       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2693       cu_list += 2 * 8;
2694
2695       dwarf2_per_cu_data *per_cu
2696         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
2697                                      sect_off, length);
2698       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
2699     }
2700 }
2701
2702 /* Read the CU list from the mapped index, and use it to create all
2703    the CU objects for this objfile.  */
2704
2705 static void
2706 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
2707                        const gdb_byte *cu_list, offset_type cu_list_elements,
2708                        const gdb_byte *dwz_list, offset_type dwz_elements)
2709 {
2710   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
2711   dwarf2_per_objfile->all_comp_units.reserve
2712     ((cu_list_elements + dwz_elements) / 2);
2713
2714   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
2715                               &dwarf2_per_objfile->info, 0);
2716
2717   if (dwz_elements == 0)
2718     return;
2719
2720   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
2721   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
2722                               &dwz->info, 1);
2723 }
2724
2725 /* Create the signatured type hash table from the index.  */
2726
2727 static void
2728 create_signatured_type_table_from_index
2729   (struct dwarf2_per_objfile *dwarf2_per_objfile,
2730    struct dwarf2_section_info *section,
2731    const gdb_byte *bytes,
2732    offset_type elements)
2733 {
2734   struct objfile *objfile = dwarf2_per_objfile->objfile;
2735
2736   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
2737   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
2738
2739   htab_up sig_types_hash = allocate_signatured_type_table (objfile);
2740
2741   for (offset_type i = 0; i < elements; i += 3)
2742     {
2743       struct signatured_type *sig_type;
2744       ULONGEST signature;
2745       void **slot;
2746       cu_offset type_offset_in_tu;
2747
2748       gdb_static_assert (sizeof (ULONGEST) >= 8);
2749       sect_offset sect_off
2750         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2751       type_offset_in_tu
2752         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
2753                                                 BFD_ENDIAN_LITTLE);
2754       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2755       bytes += 3 * 8;
2756
2757       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2758                                  struct signatured_type);
2759       sig_type->signature = signature;
2760       sig_type->type_offset_in_tu = type_offset_in_tu;
2761       sig_type->per_cu.is_debug_types = 1;
2762       sig_type->per_cu.section = section;
2763       sig_type->per_cu.sect_off = sect_off;
2764       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
2765       sig_type->per_cu.v.quick
2766         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2767                           struct dwarf2_per_cu_quick_data);
2768
2769       slot = htab_find_slot (sig_types_hash.get (), sig_type, INSERT);
2770       *slot = sig_type;
2771
2772       dwarf2_per_objfile->all_type_units.push_back (sig_type);
2773     }
2774
2775   dwarf2_per_objfile->signatured_types = std::move (sig_types_hash);
2776 }
2777
2778 /* Create the signatured type hash table from .debug_names.  */
2779
2780 static void
2781 create_signatured_type_table_from_debug_names
2782   (struct dwarf2_per_objfile *dwarf2_per_objfile,
2783    const mapped_debug_names &map,
2784    struct dwarf2_section_info *section,
2785    struct dwarf2_section_info *abbrev_section)
2786 {
2787   struct objfile *objfile = dwarf2_per_objfile->objfile;
2788
2789   section->read (objfile);
2790   abbrev_section->read (objfile);
2791
2792   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
2793   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
2794
2795   htab_up sig_types_hash = allocate_signatured_type_table (objfile);
2796
2797   for (uint32_t i = 0; i < map.tu_count; ++i)
2798     {
2799       struct signatured_type *sig_type;
2800       void **slot;
2801
2802       sect_offset sect_off
2803         = (sect_offset) (extract_unsigned_integer
2804                          (map.tu_table_reordered + i * map.offset_size,
2805                           map.offset_size,
2806                           map.dwarf5_byte_order));
2807
2808       comp_unit_head cu_header;
2809       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
2810                                      abbrev_section,
2811                                      section->buffer + to_underlying (sect_off),
2812                                      rcuh_kind::TYPE);
2813
2814       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2815                                  struct signatured_type);
2816       sig_type->signature = cu_header.signature;
2817       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
2818       sig_type->per_cu.is_debug_types = 1;
2819       sig_type->per_cu.section = section;
2820       sig_type->per_cu.sect_off = sect_off;
2821       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
2822       sig_type->per_cu.v.quick
2823         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2824                           struct dwarf2_per_cu_quick_data);
2825
2826       slot = htab_find_slot (sig_types_hash.get (), sig_type, INSERT);
2827       *slot = sig_type;
2828
2829       dwarf2_per_objfile->all_type_units.push_back (sig_type);
2830     }
2831
2832   dwarf2_per_objfile->signatured_types = std::move (sig_types_hash);
2833 }
2834
2835 /* Read the address map data from the mapped index, and use it to
2836    populate the objfile's psymtabs_addrmap.  */
2837
2838 static void
2839 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
2840                            struct mapped_index *index)
2841 {
2842   struct objfile *objfile = dwarf2_per_objfile->objfile;
2843   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2844   const gdb_byte *iter, *end;
2845   struct addrmap *mutable_map;
2846   CORE_ADDR baseaddr;
2847
2848   auto_obstack temp_obstack;
2849
2850   mutable_map = addrmap_create_mutable (&temp_obstack);
2851
2852   iter = index->address_table.data ();
2853   end = iter + index->address_table.size ();
2854
2855   baseaddr = objfile->text_section_offset ();
2856
2857   while (iter < end)
2858     {
2859       ULONGEST hi, lo, cu_index;
2860       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2861       iter += 8;
2862       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2863       iter += 8;
2864       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2865       iter += 4;
2866
2867       if (lo > hi)
2868         {
2869           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
2870                      hex_string (lo), hex_string (hi));
2871           continue;
2872         }
2873
2874       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
2875         {
2876           complaint (_(".gdb_index address table has invalid CU number %u"),
2877                      (unsigned) cu_index);
2878           continue;
2879         }
2880
2881       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
2882       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
2883       addrmap_set_empty (mutable_map, lo, hi - 1,
2884                          dwarf2_per_objfile->get_cu (cu_index));
2885     }
2886
2887   objfile->partial_symtabs->psymtabs_addrmap
2888     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
2889 }
2890
2891 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
2892    populate the objfile's psymtabs_addrmap.  */
2893
2894 static void
2895 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
2896                              struct dwarf2_section_info *section)
2897 {
2898   struct objfile *objfile = dwarf2_per_objfile->objfile;
2899   bfd *abfd = objfile->obfd;
2900   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2901   const CORE_ADDR baseaddr = objfile->text_section_offset ();
2902
2903   auto_obstack temp_obstack;
2904   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
2905
2906   std::unordered_map<sect_offset,
2907                      dwarf2_per_cu_data *,
2908                      gdb::hash_enum<sect_offset>>
2909     debug_info_offset_to_per_cu;
2910   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
2911     {
2912       const auto insertpair
2913         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
2914       if (!insertpair.second)
2915         {
2916           warning (_("Section .debug_aranges in %s has duplicate "
2917                      "debug_info_offset %s, ignoring .debug_aranges."),
2918                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
2919           return;
2920         }
2921     }
2922
2923   section->read (objfile);
2924
2925   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
2926
2927   const gdb_byte *addr = section->buffer;
2928
2929   while (addr < section->buffer + section->size)
2930     {
2931       const gdb_byte *const entry_addr = addr;
2932       unsigned int bytes_read;
2933
2934       const LONGEST entry_length = read_initial_length (abfd, addr,
2935                                                         &bytes_read);
2936       addr += bytes_read;
2937
2938       const gdb_byte *const entry_end = addr + entry_length;
2939       const bool dwarf5_is_dwarf64 = bytes_read != 4;
2940       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
2941       if (addr + entry_length > section->buffer + section->size)
2942         {
2943           warning (_("Section .debug_aranges in %s entry at offset %s "
2944                      "length %s exceeds section length %s, "
2945                      "ignoring .debug_aranges."),
2946                    objfile_name (objfile),
2947                    plongest (entry_addr - section->buffer),
2948                    plongest (bytes_read + entry_length),
2949                    pulongest (section->size));
2950           return;
2951         }
2952
2953       /* The version number.  */
2954       const uint16_t version = read_2_bytes (abfd, addr);
2955       addr += 2;
2956       if (version != 2)
2957         {
2958           warning (_("Section .debug_aranges in %s entry at offset %s "
2959                      "has unsupported version %d, ignoring .debug_aranges."),
2960                    objfile_name (objfile),
2961                    plongest (entry_addr - section->buffer), version);
2962           return;
2963         }
2964
2965       const uint64_t debug_info_offset
2966         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
2967       addr += offset_size;
2968       const auto per_cu_it
2969         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
2970       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
2971         {
2972           warning (_("Section .debug_aranges in %s entry at offset %s "
2973                      "debug_info_offset %s does not exists, "
2974                      "ignoring .debug_aranges."),
2975                    objfile_name (objfile),
2976                    plongest (entry_addr - section->buffer),
2977                    pulongest (debug_info_offset));
2978           return;
2979         }
2980       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
2981
2982       const uint8_t address_size = *addr++;
2983       if (address_size < 1 || address_size > 8)
2984         {
2985           warning (_("Section .debug_aranges in %s entry at offset %s "
2986                      "address_size %u is invalid, ignoring .debug_aranges."),
2987                    objfile_name (objfile),
2988                    plongest (entry_addr - section->buffer), address_size);
2989           return;
2990         }
2991
2992       const uint8_t segment_selector_size = *addr++;
2993       if (segment_selector_size != 0)
2994         {
2995           warning (_("Section .debug_aranges in %s entry at offset %s "
2996                      "segment_selector_size %u is not supported, "
2997                      "ignoring .debug_aranges."),
2998                    objfile_name (objfile),
2999                    plongest (entry_addr - section->buffer),
3000                    segment_selector_size);
3001           return;
3002         }
3003
3004       /* Must pad to an alignment boundary that is twice the address
3005          size.  It is undocumented by the DWARF standard but GCC does
3006          use it.  */
3007       for (size_t padding = ((-(addr - section->buffer))
3008                              & (2 * address_size - 1));
3009            padding > 0; padding--)
3010         if (*addr++ != 0)
3011           {
3012             warning (_("Section .debug_aranges in %s entry at offset %s "
3013                        "padding is not zero, ignoring .debug_aranges."),
3014                      objfile_name (objfile),
3015                      plongest (entry_addr - section->buffer));
3016             return;
3017           }
3018
3019       for (;;)
3020         {
3021           if (addr + 2 * address_size > entry_end)
3022             {
3023               warning (_("Section .debug_aranges in %s entry at offset %s "
3024                          "address list is not properly terminated, "
3025                          "ignoring .debug_aranges."),
3026                        objfile_name (objfile),
3027                        plongest (entry_addr - section->buffer));
3028               return;
3029             }
3030           ULONGEST start = extract_unsigned_integer (addr, address_size,
3031                                                      dwarf5_byte_order);
3032           addr += address_size;
3033           ULONGEST length = extract_unsigned_integer (addr, address_size,
3034                                                       dwarf5_byte_order);
3035           addr += address_size;
3036           if (start == 0 && length == 0)
3037             break;
3038           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3039             {
3040               /* Symbol was eliminated due to a COMDAT group.  */
3041               continue;
3042             }
3043           ULONGEST end = start + length;
3044           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3045                    - baseaddr);
3046           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3047                  - baseaddr);
3048           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3049         }
3050     }
3051
3052   objfile->partial_symtabs->psymtabs_addrmap
3053     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3054 }
3055
3056 /* Find a slot in the mapped index INDEX for the object named NAME.
3057    If NAME is found, set *VEC_OUT to point to the CU vector in the
3058    constant pool and return true.  If NAME cannot be found, return
3059    false.  */
3060
3061 static bool
3062 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3063                           offset_type **vec_out)
3064 {
3065   offset_type hash;
3066   offset_type slot, step;
3067   int (*cmp) (const char *, const char *);
3068
3069   gdb::unique_xmalloc_ptr<char> without_params;
3070   if (current_language->la_language == language_cplus
3071       || current_language->la_language == language_fortran
3072       || current_language->la_language == language_d)
3073     {
3074       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3075          not contain any.  */
3076
3077       if (strchr (name, '(') != NULL)
3078         {
3079           without_params = cp_remove_params (name);
3080
3081           if (without_params != NULL)
3082             name = without_params.get ();
3083         }
3084     }
3085
3086   /* Index version 4 did not support case insensitive searches.  But the
3087      indices for case insensitive languages are built in lowercase, therefore
3088      simulate our NAME being searched is also lowercased.  */
3089   hash = mapped_index_string_hash ((index->version == 4
3090                                     && case_sensitivity == case_sensitive_off
3091                                     ? 5 : index->version),
3092                                    name);
3093
3094   slot = hash & (index->symbol_table.size () - 1);
3095   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3096   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3097
3098   for (;;)
3099     {
3100       const char *str;
3101
3102       const auto &bucket = index->symbol_table[slot];
3103       if (bucket.name == 0 && bucket.vec == 0)
3104         return false;
3105
3106       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3107       if (!cmp (name, str))
3108         {
3109           *vec_out = (offset_type *) (index->constant_pool
3110                                       + MAYBE_SWAP (bucket.vec));
3111           return true;
3112         }
3113
3114       slot = (slot + step) & (index->symbol_table.size () - 1);
3115     }
3116 }
3117
3118 /* A helper function that reads the .gdb_index from BUFFER and fills
3119    in MAP.  FILENAME is the name of the file containing the data;
3120    it is used for error reporting.  DEPRECATED_OK is true if it is
3121    ok to use deprecated sections.
3122
3123    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3124    out parameters that are filled in with information about the CU and
3125    TU lists in the section.
3126
3127    Returns true if all went well, false otherwise.  */
3128
3129 static bool
3130 read_gdb_index_from_buffer (struct objfile *objfile,
3131                             const char *filename,
3132                             bool deprecated_ok,
3133                             gdb::array_view<const gdb_byte> buffer,
3134                             struct mapped_index *map,
3135                             const gdb_byte **cu_list,
3136                             offset_type *cu_list_elements,
3137                             const gdb_byte **types_list,
3138                             offset_type *types_list_elements)
3139 {
3140   const gdb_byte *addr = &buffer[0];
3141
3142   /* Version check.  */
3143   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3144   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3145      causes the index to behave very poorly for certain requests.  Version 3
3146      contained incomplete addrmap.  So, it seems better to just ignore such
3147      indices.  */
3148   if (version < 4)
3149     {
3150       static int warning_printed = 0;
3151       if (!warning_printed)
3152         {
3153           warning (_("Skipping obsolete .gdb_index section in %s."),
3154                    filename);
3155           warning_printed = 1;
3156         }
3157       return 0;
3158     }
3159   /* Index version 4 uses a different hash function than index version
3160      5 and later.
3161
3162      Versions earlier than 6 did not emit psymbols for inlined
3163      functions.  Using these files will cause GDB not to be able to
3164      set breakpoints on inlined functions by name, so we ignore these
3165      indices unless the user has done
3166      "set use-deprecated-index-sections on".  */
3167   if (version < 6 && !deprecated_ok)
3168     {
3169       static int warning_printed = 0;
3170       if (!warning_printed)
3171         {
3172           warning (_("\
3173 Skipping deprecated .gdb_index section in %s.\n\
3174 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3175 to use the section anyway."),
3176                    filename);
3177           warning_printed = 1;
3178         }
3179       return 0;
3180     }
3181   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3182      of the TU (for symbols coming from TUs),
3183      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3184      Plus gold-generated indices can have duplicate entries for global symbols,
3185      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3186      These are just performance bugs, and we can't distinguish gdb-generated
3187      indices from gold-generated ones, so issue no warning here.  */
3188
3189   /* Indexes with higher version than the one supported by GDB may be no
3190      longer backward compatible.  */
3191   if (version > 8)
3192     return 0;
3193
3194   map->version = version;
3195
3196   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3197
3198   int i = 0;
3199   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3200   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3201                        / 8);
3202   ++i;
3203
3204   *types_list = addr + MAYBE_SWAP (metadata[i]);
3205   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3206                            - MAYBE_SWAP (metadata[i]))
3207                           / 8);
3208   ++i;
3209
3210   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3211   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3212   map->address_table
3213     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3214   ++i;
3215
3216   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3217   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3218   map->symbol_table
3219     = gdb::array_view<mapped_index::symbol_table_slot>
3220        ((mapped_index::symbol_table_slot *) symbol_table,
3221         (mapped_index::symbol_table_slot *) symbol_table_end);
3222
3223   ++i;
3224   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3225
3226   return 1;
3227 }
3228
3229 /* Callback types for dwarf2_read_gdb_index.  */
3230
3231 typedef gdb::function_view
3232     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3233     get_gdb_index_contents_ftype;
3234 typedef gdb::function_view
3235     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3236     get_gdb_index_contents_dwz_ftype;
3237
3238 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3239    elements of all the CUs and return 1.  Otherwise, return 0.  */
3240
3241 static int
3242 dwarf2_read_gdb_index
3243   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3244    get_gdb_index_contents_ftype get_gdb_index_contents,
3245    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3246 {
3247   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3248   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3249   struct dwz_file *dwz;
3250   struct objfile *objfile = dwarf2_per_objfile->objfile;
3251
3252   gdb::array_view<const gdb_byte> main_index_contents
3253     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3254
3255   if (main_index_contents.empty ())
3256     return 0;
3257
3258   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3259   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3260                                    use_deprecated_index_sections,
3261                                    main_index_contents, map.get (), &cu_list,
3262                                    &cu_list_elements, &types_list,
3263                                    &types_list_elements))
3264     return 0;
3265
3266   /* Don't use the index if it's empty.  */
3267   if (map->symbol_table.empty ())
3268     return 0;
3269
3270   /* If there is a .dwz file, read it so we can get its CU list as
3271      well.  */
3272   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3273   if (dwz != NULL)
3274     {
3275       struct mapped_index dwz_map;
3276       const gdb_byte *dwz_types_ignore;
3277       offset_type dwz_types_elements_ignore;
3278
3279       gdb::array_view<const gdb_byte> dwz_index_content
3280         = get_gdb_index_contents_dwz (objfile, dwz);
3281
3282       if (dwz_index_content.empty ())
3283         return 0;
3284
3285       if (!read_gdb_index_from_buffer (objfile,
3286                                        bfd_get_filename (dwz->dwz_bfd.get ()),
3287                                        1, dwz_index_content, &dwz_map,
3288                                        &dwz_list, &dwz_list_elements,
3289                                        &dwz_types_ignore,
3290                                        &dwz_types_elements_ignore))
3291         {
3292           warning (_("could not read '.gdb_index' section from %s; skipping"),
3293                    bfd_get_filename (dwz->dwz_bfd.get ()));
3294           return 0;
3295         }
3296     }
3297
3298   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3299                          dwz_list, dwz_list_elements);
3300
3301   if (types_list_elements)
3302     {
3303       /* We can only handle a single .debug_types when we have an
3304          index.  */
3305       if (dwarf2_per_objfile->types.size () != 1)
3306         return 0;
3307
3308       dwarf2_section_info *section = &dwarf2_per_objfile->types[0];
3309
3310       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3311                                                types_list, types_list_elements);
3312     }
3313
3314   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3315
3316   dwarf2_per_objfile->index_table = std::move (map);
3317   dwarf2_per_objfile->using_index = 1;
3318   dwarf2_per_objfile->quick_file_names_table =
3319     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3320
3321   return 1;
3322 }
3323
3324 /* die_reader_func for dw2_get_file_names.  */
3325
3326 static void
3327 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3328                            const gdb_byte *info_ptr,
3329                            struct die_info *comp_unit_die)
3330 {
3331   struct dwarf2_cu *cu = reader->cu;
3332   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3333   struct dwarf2_per_objfile *dwarf2_per_objfile
3334     = cu->per_cu->dwarf2_per_objfile;
3335   struct objfile *objfile = dwarf2_per_objfile->objfile;
3336   struct dwarf2_per_cu_data *lh_cu;
3337   struct attribute *attr;
3338   void **slot;
3339   struct quick_file_names *qfn;
3340
3341   gdb_assert (! this_cu->is_debug_types);
3342
3343   /* Our callers never want to match partial units -- instead they
3344      will match the enclosing full CU.  */
3345   if (comp_unit_die->tag == DW_TAG_partial_unit)
3346     {
3347       this_cu->v.quick->no_file_data = 1;
3348       return;
3349     }
3350
3351   lh_cu = this_cu;
3352   slot = NULL;
3353
3354   line_header_up lh;
3355   sect_offset line_offset {};
3356
3357   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3358   if (attr != nullptr)
3359     {
3360       struct quick_file_names find_entry;
3361
3362       line_offset = (sect_offset) DW_UNSND (attr);
3363
3364       /* We may have already read in this line header (TU line header sharing).
3365          If we have we're done.  */
3366       find_entry.hash.dwo_unit = cu->dwo_unit;
3367       find_entry.hash.line_sect_off = line_offset;
3368       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3369                              &find_entry, INSERT);
3370       if (*slot != NULL)
3371         {
3372           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3373           return;
3374         }
3375
3376       lh = dwarf_decode_line_header (line_offset, cu);
3377     }
3378   if (lh == NULL)
3379     {
3380       lh_cu->v.quick->no_file_data = 1;
3381       return;
3382     }
3383
3384   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3385   qfn->hash.dwo_unit = cu->dwo_unit;
3386   qfn->hash.line_sect_off = line_offset;
3387   gdb_assert (slot != NULL);
3388   *slot = qfn;
3389
3390   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3391
3392   int offset = 0;
3393   if (strcmp (fnd.name, "<unknown>") != 0)
3394     ++offset;
3395
3396   qfn->num_file_names = offset + lh->file_names_size ();
3397   qfn->file_names =
3398     XOBNEWVEC (&objfile->objfile_obstack, const char *, qfn->num_file_names);
3399   if (offset != 0)
3400     qfn->file_names[0] = xstrdup (fnd.name);
3401   for (int i = 0; i < lh->file_names_size (); ++i)
3402     qfn->file_names[i + offset] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3403   qfn->real_names = NULL;
3404
3405   lh_cu->v.quick->file_names = qfn;
3406 }
3407
3408 /* A helper for the "quick" functions which attempts to read the line
3409    table for THIS_CU.  */
3410
3411 static struct quick_file_names *
3412 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3413 {
3414   /* This should never be called for TUs.  */
3415   gdb_assert (! this_cu->is_debug_types);
3416   /* Nor type unit groups.  */
3417   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3418
3419   if (this_cu->v.quick->file_names != NULL)
3420     return this_cu->v.quick->file_names;
3421   /* If we know there is no line data, no point in looking again.  */
3422   if (this_cu->v.quick->no_file_data)
3423     return NULL;
3424
3425   cutu_reader reader (this_cu);
3426   if (!reader.dummy_p)
3427     dw2_get_file_names_reader (&reader, reader.info_ptr, reader.comp_unit_die);
3428
3429   if (this_cu->v.quick->no_file_data)
3430     return NULL;
3431   return this_cu->v.quick->file_names;
3432 }
3433
3434 /* A helper for the "quick" functions which computes and caches the
3435    real path for a given file name from the line table.  */
3436
3437 static const char *
3438 dw2_get_real_path (struct objfile *objfile,
3439                    struct quick_file_names *qfn, int index)
3440 {
3441   if (qfn->real_names == NULL)
3442     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3443                                       qfn->num_file_names, const char *);
3444
3445   if (qfn->real_names[index] == NULL)
3446     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3447
3448   return qfn->real_names[index];
3449 }
3450
3451 static struct symtab *
3452 dw2_find_last_source_symtab (struct objfile *objfile)
3453 {
3454   struct dwarf2_per_objfile *dwarf2_per_objfile
3455     = get_dwarf2_per_objfile (objfile);
3456   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3457   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3458
3459   if (cust == NULL)
3460     return NULL;
3461
3462   return compunit_primary_filetab (cust);
3463 }
3464
3465 /* Traversal function for dw2_forget_cached_source_info.  */
3466
3467 static int
3468 dw2_free_cached_file_names (void **slot, void *info)
3469 {
3470   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3471
3472   if (file_data->real_names)
3473     {
3474       int i;
3475
3476       for (i = 0; i < file_data->num_file_names; ++i)
3477         {
3478           xfree ((void*) file_data->real_names[i]);
3479           file_data->real_names[i] = NULL;
3480         }
3481     }
3482
3483   return 1;
3484 }
3485
3486 static void
3487 dw2_forget_cached_source_info (struct objfile *objfile)
3488 {
3489   struct dwarf2_per_objfile *dwarf2_per_objfile
3490     = get_dwarf2_per_objfile (objfile);
3491
3492   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3493                           dw2_free_cached_file_names, NULL);
3494 }
3495
3496 /* Helper function for dw2_map_symtabs_matching_filename that expands
3497    the symtabs and calls the iterator.  */
3498
3499 static int
3500 dw2_map_expand_apply (struct objfile *objfile,
3501                       struct dwarf2_per_cu_data *per_cu,
3502                       const char *name, const char *real_path,
3503                       gdb::function_view<bool (symtab *)> callback)
3504 {
3505   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3506
3507   /* Don't visit already-expanded CUs.  */
3508   if (per_cu->v.quick->compunit_symtab)
3509     return 0;
3510
3511   /* This may expand more than one symtab, and we want to iterate over
3512      all of them.  */
3513   dw2_instantiate_symtab (per_cu, false);
3514
3515   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3516                                     last_made, callback);
3517 }
3518
3519 /* Implementation of the map_symtabs_matching_filename method.  */
3520
3521 static bool
3522 dw2_map_symtabs_matching_filename
3523   (struct objfile *objfile, const char *name, const char *real_path,
3524    gdb::function_view<bool (symtab *)> callback)
3525 {
3526   const char *name_basename = lbasename (name);
3527   struct dwarf2_per_objfile *dwarf2_per_objfile
3528     = get_dwarf2_per_objfile (objfile);
3529
3530   /* The rule is CUs specify all the files, including those used by
3531      any TU, so there's no need to scan TUs here.  */
3532
3533   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3534     {
3535       /* We only need to look at symtabs not already expanded.  */
3536       if (per_cu->v.quick->compunit_symtab)
3537         continue;
3538
3539       quick_file_names *file_data = dw2_get_file_names (per_cu);
3540       if (file_data == NULL)
3541         continue;
3542
3543       for (int j = 0; j < file_data->num_file_names; ++j)
3544         {
3545           const char *this_name = file_data->file_names[j];
3546           const char *this_real_name;
3547
3548           if (compare_filenames_for_search (this_name, name))
3549             {
3550               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3551                                         callback))
3552                 return true;
3553               continue;
3554             }
3555
3556           /* Before we invoke realpath, which can get expensive when many
3557              files are involved, do a quick comparison of the basenames.  */
3558           if (! basenames_may_differ
3559               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3560             continue;
3561
3562           this_real_name = dw2_get_real_path (objfile, file_data, j);
3563           if (compare_filenames_for_search (this_real_name, name))
3564             {
3565               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3566                                         callback))
3567                 return true;
3568               continue;
3569             }
3570
3571           if (real_path != NULL)
3572             {
3573               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3574               gdb_assert (IS_ABSOLUTE_PATH (name));
3575               if (this_real_name != NULL
3576                   && FILENAME_CMP (real_path, this_real_name) == 0)
3577                 {
3578                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3579                                             callback))
3580                     return true;
3581                   continue;
3582                 }
3583             }
3584         }
3585     }
3586
3587   return false;
3588 }
3589
3590 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3591
3592 struct dw2_symtab_iterator
3593 {
3594   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3595   struct dwarf2_per_objfile *dwarf2_per_objfile;
3596   /* If set, only look for symbols that match that block.  Valid values are
3597      GLOBAL_BLOCK and STATIC_BLOCK.  */
3598   gdb::optional<block_enum> block_index;
3599   /* The kind of symbol we're looking for.  */
3600   domain_enum domain;
3601   /* The list of CUs from the index entry of the symbol,
3602      or NULL if not found.  */
3603   offset_type *vec;
3604   /* The next element in VEC to look at.  */
3605   int next;
3606   /* The number of elements in VEC, or zero if there is no match.  */
3607   int length;
3608   /* Have we seen a global version of the symbol?
3609      If so we can ignore all further global instances.
3610      This is to work around gold/15646, inefficient gold-generated
3611      indices.  */
3612   int global_seen;
3613 };
3614
3615 /* Initialize the index symtab iterator ITER.  */
3616
3617 static void
3618 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3619                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3620                       gdb::optional<block_enum> block_index,
3621                       domain_enum domain,
3622                       const char *name)
3623 {
3624   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3625   iter->block_index = block_index;
3626   iter->domain = domain;
3627   iter->next = 0;
3628   iter->global_seen = 0;
3629
3630   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3631
3632   /* index is NULL if OBJF_READNOW.  */
3633   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3634     iter->length = MAYBE_SWAP (*iter->vec);
3635   else
3636     {
3637       iter->vec = NULL;
3638       iter->length = 0;
3639     }
3640 }
3641
3642 /* Return the next matching CU or NULL if there are no more.  */
3643
3644 static struct dwarf2_per_cu_data *
3645 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3646 {
3647   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3648
3649   for ( ; iter->next < iter->length; ++iter->next)
3650     {
3651       offset_type cu_index_and_attrs =
3652         MAYBE_SWAP (iter->vec[iter->next + 1]);
3653       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3654       gdb_index_symbol_kind symbol_kind =
3655         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3656       /* Only check the symbol attributes if they're present.
3657          Indices prior to version 7 don't record them,
3658          and indices >= 7 may elide them for certain symbols
3659          (gold does this).  */
3660       int attrs_valid =
3661         (dwarf2_per_objfile->index_table->version >= 7
3662          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3663
3664       /* Don't crash on bad data.  */
3665       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3666                        + dwarf2_per_objfile->all_type_units.size ()))
3667         {
3668           complaint (_(".gdb_index entry has bad CU index"
3669                        " [in module %s]"),
3670                      objfile_name (dwarf2_per_objfile->objfile));
3671           continue;
3672         }
3673
3674       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3675
3676       /* Skip if already read in.  */
3677       if (per_cu->v.quick->compunit_symtab)
3678         continue;
3679
3680       /* Check static vs global.  */
3681       if (attrs_valid)
3682         {
3683           bool is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3684
3685           if (iter->block_index.has_value ())
3686             {
3687               bool want_static = *iter->block_index == STATIC_BLOCK;
3688
3689               if (is_static != want_static)
3690                 continue;
3691             }
3692
3693           /* Work around gold/15646.  */
3694           if (!is_static && iter->global_seen)
3695             continue;
3696           if (!is_static)
3697             iter->global_seen = 1;
3698         }
3699
3700       /* Only check the symbol's kind if it has one.  */
3701       if (attrs_valid)
3702         {
3703           switch (iter->domain)
3704             {
3705             case VAR_DOMAIN:
3706               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3707                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3708                   /* Some types are also in VAR_DOMAIN.  */
3709                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3710                 continue;
3711               break;
3712             case STRUCT_DOMAIN:
3713               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3714                 continue;
3715               break;
3716             case LABEL_DOMAIN:
3717               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3718                 continue;
3719               break;
3720             case MODULE_DOMAIN:
3721               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3722                 continue;
3723               break;
3724             default:
3725               break;
3726             }
3727         }
3728
3729       ++iter->next;
3730       return per_cu;
3731     }
3732
3733   return NULL;
3734 }
3735
3736 static struct compunit_symtab *
3737 dw2_lookup_symbol (struct objfile *objfile, block_enum block_index,
3738                    const char *name, domain_enum domain)
3739 {
3740   struct compunit_symtab *stab_best = NULL;
3741   struct dwarf2_per_objfile *dwarf2_per_objfile
3742     = get_dwarf2_per_objfile (objfile);
3743
3744   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
3745
3746   struct dw2_symtab_iterator iter;
3747   struct dwarf2_per_cu_data *per_cu;
3748
3749   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, block_index, domain, name);
3750
3751   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3752     {
3753       struct symbol *sym, *with_opaque = NULL;
3754       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
3755       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
3756       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3757
3758       sym = block_find_symbol (block, name, domain,
3759                                block_find_non_opaque_type_preferred,
3760                                &with_opaque);
3761
3762       /* Some caution must be observed with overloaded functions
3763          and methods, since the index will not contain any overload
3764          information (but NAME might contain it).  */
3765
3766       if (sym != NULL
3767           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
3768         return stab;
3769       if (with_opaque != NULL
3770           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
3771         stab_best = stab;
3772
3773       /* Keep looking through other CUs.  */
3774     }
3775
3776   return stab_best;
3777 }
3778
3779 static void
3780 dw2_print_stats (struct objfile *objfile)
3781 {
3782   struct dwarf2_per_objfile *dwarf2_per_objfile
3783     = get_dwarf2_per_objfile (objfile);
3784   int total = (dwarf2_per_objfile->all_comp_units.size ()
3785                + dwarf2_per_objfile->all_type_units.size ());
3786   int count = 0;
3787
3788   for (int i = 0; i < total; ++i)
3789     {
3790       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
3791
3792       if (!per_cu->v.quick->compunit_symtab)
3793         ++count;
3794     }
3795   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
3796   printf_filtered (_("  Number of unread CUs: %d\n"), count);
3797 }
3798
3799 /* This dumps minimal information about the index.
3800    It is called via "mt print objfiles".
3801    One use is to verify .gdb_index has been loaded by the
3802    gdb.dwarf2/gdb-index.exp testcase.  */
3803
3804 static void
3805 dw2_dump (struct objfile *objfile)
3806 {
3807   struct dwarf2_per_objfile *dwarf2_per_objfile
3808     = get_dwarf2_per_objfile (objfile);
3809
3810   gdb_assert (dwarf2_per_objfile->using_index);
3811   printf_filtered (".gdb_index:");
3812   if (dwarf2_per_objfile->index_table != NULL)
3813     {
3814       printf_filtered (" version %d\n",
3815                        dwarf2_per_objfile->index_table->version);
3816     }
3817   else
3818     printf_filtered (" faked for \"readnow\"\n");
3819   printf_filtered ("\n");
3820 }
3821
3822 static void
3823 dw2_expand_symtabs_for_function (struct objfile *objfile,
3824                                  const char *func_name)
3825 {
3826   struct dwarf2_per_objfile *dwarf2_per_objfile
3827     = get_dwarf2_per_objfile (objfile);
3828
3829   struct dw2_symtab_iterator iter;
3830   struct dwarf2_per_cu_data *per_cu;
3831
3832   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, {}, VAR_DOMAIN, func_name);
3833
3834   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3835     dw2_instantiate_symtab (per_cu, false);
3836
3837 }
3838
3839 static void
3840 dw2_expand_all_symtabs (struct objfile *objfile)
3841 {
3842   struct dwarf2_per_objfile *dwarf2_per_objfile
3843     = get_dwarf2_per_objfile (objfile);
3844   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
3845                      + dwarf2_per_objfile->all_type_units.size ());
3846
3847   for (int i = 0; i < total_units; ++i)
3848     {
3849       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
3850
3851       /* We don't want to directly expand a partial CU, because if we
3852          read it with the wrong language, then assertion failures can
3853          be triggered later on.  See PR symtab/23010.  So, tell
3854          dw2_instantiate_symtab to skip partial CUs -- any important
3855          partial CU will be read via DW_TAG_imported_unit anyway.  */
3856       dw2_instantiate_symtab (per_cu, true);
3857     }
3858 }
3859
3860 static void
3861 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3862                                   const char *fullname)
3863 {
3864   struct dwarf2_per_objfile *dwarf2_per_objfile
3865     = get_dwarf2_per_objfile (objfile);
3866
3867   /* We don't need to consider type units here.
3868      This is only called for examining code, e.g. expand_line_sal.
3869      There can be an order of magnitude (or more) more type units
3870      than comp units, and we avoid them if we can.  */
3871
3872   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3873     {
3874       /* We only need to look at symtabs not already expanded.  */
3875       if (per_cu->v.quick->compunit_symtab)
3876         continue;
3877
3878       quick_file_names *file_data = dw2_get_file_names (per_cu);
3879       if (file_data == NULL)
3880         continue;
3881
3882       for (int j = 0; j < file_data->num_file_names; ++j)
3883         {
3884           const char *this_fullname = file_data->file_names[j];
3885
3886           if (filename_cmp (this_fullname, fullname) == 0)
3887             {
3888               dw2_instantiate_symtab (per_cu, false);
3889               break;
3890             }
3891         }
3892     }
3893 }
3894
3895 static void
3896 dw2_map_matching_symbols
3897   (struct objfile *objfile,
3898    const lookup_name_info &name, domain_enum domain,
3899    int global,
3900    gdb::function_view<symbol_found_callback_ftype> callback,
3901    symbol_compare_ftype *ordered_compare)
3902 {
3903   /* Currently unimplemented; used for Ada.  The function can be called if the
3904      current language is Ada for a non-Ada objfile using GNU index.  As Ada
3905      does not look for non-Ada symbols this function should just return.  */
3906 }
3907
3908 /* Starting from a search name, return the string that finds the upper
3909    bound of all strings that start with SEARCH_NAME in a sorted name
3910    list.  Returns the empty string to indicate that the upper bound is
3911    the end of the list.  */
3912
3913 static std::string
3914 make_sort_after_prefix_name (const char *search_name)
3915 {
3916   /* When looking to complete "func", we find the upper bound of all
3917      symbols that start with "func" by looking for where we'd insert
3918      the closest string that would follow "func" in lexicographical
3919      order.  Usually, that's "func"-with-last-character-incremented,
3920      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
3921      will be UTF-8 multi-byte sequences, but we can't be certain.
3922      Especially mind the 0xff character, which is a valid character in
3923      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
3924      rule out compilers allowing it in identifiers.  Note that
3925      conveniently, strcmp/strcasecmp are specified to compare
3926      characters interpreted as unsigned char.  So what we do is treat
3927      the whole string as a base 256 number composed of a sequence of
3928      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
3929      to 0, and carries 1 to the following more-significant position.
3930      If the very first character in SEARCH_NAME ends up incremented
3931      and carries/overflows, then the upper bound is the end of the
3932      list.  The string after the empty string is also the empty
3933      string.
3934
3935      Some examples of this operation:
3936
3937        SEARCH_NAME  => "+1" RESULT
3938
3939        "abc"              => "abd"
3940        "ab\xff"           => "ac"
3941        "\xff" "a" "\xff"  => "\xff" "b"
3942        "\xff"             => ""
3943        "\xff\xff"         => ""
3944        ""                 => ""
3945
3946      Then, with these symbols for example:
3947
3948       func
3949       func1
3950       fund
3951
3952      completing "func" looks for symbols between "func" and
3953      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
3954      which finds "func" and "func1", but not "fund".
3955
3956      And with:
3957
3958       funcÿ     (Latin1 'ÿ' [0xff])
3959       funcÿ1
3960       fund
3961
3962      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
3963      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
3964
3965      And with:
3966
3967       ÿÿ        (Latin1 'ÿ' [0xff])
3968       ÿÿ1
3969
3970      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
3971      the end of the list.
3972   */
3973   std::string after = search_name;
3974   while (!after.empty () && (unsigned char) after.back () == 0xff)
3975     after.pop_back ();
3976   if (!after.empty ())
3977     after.back () = (unsigned char) after.back () + 1;
3978   return after;
3979 }
3980
3981 /* See declaration.  */
3982
3983 std::pair<std::vector<name_component>::const_iterator,
3984           std::vector<name_component>::const_iterator>
3985 mapped_index_base::find_name_components_bounds
3986   (const lookup_name_info &lookup_name_without_params, language lang) const
3987 {
3988   auto *name_cmp
3989     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
3990
3991   const char *lang_name
3992     = lookup_name_without_params.language_lookup_name (lang).c_str ();
3993
3994   /* Comparison function object for lower_bound that matches against a
3995      given symbol name.  */
3996   auto lookup_compare_lower = [&] (const name_component &elem,
3997                                    const char *name)
3998     {
3999       const char *elem_qualified = this->symbol_name_at (elem.idx);
4000       const char *elem_name = elem_qualified + elem.name_offset;
4001       return name_cmp (elem_name, name) < 0;
4002     };
4003
4004   /* Comparison function object for upper_bound that matches against a
4005      given symbol name.  */
4006   auto lookup_compare_upper = [&] (const char *name,
4007                                    const name_component &elem)
4008     {
4009       const char *elem_qualified = this->symbol_name_at (elem.idx);
4010       const char *elem_name = elem_qualified + elem.name_offset;
4011       return name_cmp (name, elem_name) < 0;
4012     };
4013
4014   auto begin = this->name_components.begin ();
4015   auto end = this->name_components.end ();
4016
4017   /* Find the lower bound.  */
4018   auto lower = [&] ()
4019     {
4020       if (lookup_name_without_params.completion_mode () && lang_name[0] == '\0')
4021         return begin;
4022       else
4023         return std::lower_bound (begin, end, lang_name, lookup_compare_lower);
4024     } ();
4025
4026   /* Find the upper bound.  */
4027   auto upper = [&] ()
4028     {
4029       if (lookup_name_without_params.completion_mode ())
4030         {
4031           /* In completion mode, we want UPPER to point past all
4032              symbols names that have the same prefix.  I.e., with
4033              these symbols, and completing "func":
4034
4035               function        << lower bound
4036               function1
4037               other_function  << upper bound
4038
4039              We find the upper bound by looking for the insertion
4040              point of "func"-with-last-character-incremented,
4041              i.e. "fund".  */
4042           std::string after = make_sort_after_prefix_name (lang_name);
4043           if (after.empty ())
4044             return end;
4045           return std::lower_bound (lower, end, after.c_str (),
4046                                    lookup_compare_lower);
4047         }
4048       else
4049         return std::upper_bound (lower, end, lang_name, lookup_compare_upper);
4050     } ();
4051
4052   return {lower, upper};
4053 }
4054
4055 /* See declaration.  */
4056
4057 void
4058 mapped_index_base::build_name_components ()
4059 {
4060   if (!this->name_components.empty ())
4061     return;
4062
4063   this->name_components_casing = case_sensitivity;
4064   auto *name_cmp
4065     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4066
4067   /* The code below only knows how to break apart components of C++
4068      symbol names (and other languages that use '::' as
4069      namespace/module separator) and Ada symbol names.  */
4070   auto count = this->symbol_name_count ();
4071   for (offset_type idx = 0; idx < count; idx++)
4072     {
4073       if (this->symbol_name_slot_invalid (idx))
4074         continue;
4075
4076       const char *name = this->symbol_name_at (idx);
4077
4078       /* Add each name component to the name component table.  */
4079       unsigned int previous_len = 0;
4080
4081       if (strstr (name, "::") != nullptr)
4082         {
4083           for (unsigned int current_len = cp_find_first_component (name);
4084                name[current_len] != '\0';
4085                current_len += cp_find_first_component (name + current_len))
4086             {
4087               gdb_assert (name[current_len] == ':');
4088               this->name_components.push_back ({previous_len, idx});
4089               /* Skip the '::'.  */
4090               current_len += 2;
4091               previous_len = current_len;
4092             }
4093         }
4094       else
4095         {
4096           /* Handle the Ada encoded (aka mangled) form here.  */
4097           for (const char *iter = strstr (name, "__");
4098                iter != nullptr;
4099                iter = strstr (iter, "__"))
4100             {
4101               this->name_components.push_back ({previous_len, idx});
4102               iter += 2;
4103               previous_len = iter - name;
4104             }
4105         }
4106
4107       this->name_components.push_back ({previous_len, idx});
4108     }
4109
4110   /* Sort name_components elements by name.  */
4111   auto name_comp_compare = [&] (const name_component &left,
4112                                 const name_component &right)
4113     {
4114       const char *left_qualified = this->symbol_name_at (left.idx);
4115       const char *right_qualified = this->symbol_name_at (right.idx);
4116
4117       const char *left_name = left_qualified + left.name_offset;
4118       const char *right_name = right_qualified + right.name_offset;
4119
4120       return name_cmp (left_name, right_name) < 0;
4121     };
4122
4123   std::sort (this->name_components.begin (),
4124              this->name_components.end (),
4125              name_comp_compare);
4126 }
4127
4128 /* Helper for dw2_expand_symtabs_matching that works with a
4129    mapped_index_base instead of the containing objfile.  This is split
4130    to a separate function in order to be able to unit test the
4131    name_components matching using a mock mapped_index_base.  For each
4132    symbol name that matches, calls MATCH_CALLBACK, passing it the
4133    symbol's index in the mapped_index_base symbol table.  */
4134
4135 static void
4136 dw2_expand_symtabs_matching_symbol
4137   (mapped_index_base &index,
4138    const lookup_name_info &lookup_name_in,
4139    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4140    enum search_domain kind,
4141    gdb::function_view<bool (offset_type)> match_callback)
4142 {
4143   lookup_name_info lookup_name_without_params
4144     = lookup_name_in.make_ignore_params ();
4145
4146   /* Build the symbol name component sorted vector, if we haven't
4147      yet.  */
4148   index.build_name_components ();
4149
4150   /* The same symbol may appear more than once in the range though.
4151      E.g., if we're looking for symbols that complete "w", and we have
4152      a symbol named "w1::w2", we'll find the two name components for
4153      that same symbol in the range.  To be sure we only call the
4154      callback once per symbol, we first collect the symbol name
4155      indexes that matched in a temporary vector and ignore
4156      duplicates.  */
4157   std::vector<offset_type> matches;
4158
4159   struct name_and_matcher
4160   {
4161     symbol_name_matcher_ftype *matcher;
4162     const std::string &name;
4163
4164     bool operator== (const name_and_matcher &other) const
4165     {
4166       return matcher == other.matcher && name == other.name;
4167     }
4168   };
4169
4170   /* A vector holding all the different symbol name matchers, for all
4171      languages.  */
4172   std::vector<name_and_matcher> matchers;
4173
4174   for (int i = 0; i < nr_languages; i++)
4175     {
4176       enum language lang_e = (enum language) i;
4177
4178       const language_defn *lang = language_def (lang_e);
4179       symbol_name_matcher_ftype *name_matcher
4180         = get_symbol_name_matcher (lang, lookup_name_without_params);
4181
4182       name_and_matcher key {
4183          name_matcher,
4184          lookup_name_without_params.language_lookup_name (lang_e)
4185       };
4186
4187       /* Don't insert the same comparison routine more than once.
4188          Note that we do this linear walk.  This is not a problem in
4189          practice because the number of supported languages is
4190          low.  */
4191       if (std::find (matchers.begin (), matchers.end (), key)
4192           != matchers.end ())
4193         continue;
4194       matchers.push_back (std::move (key));
4195
4196       auto bounds
4197         = index.find_name_components_bounds (lookup_name_without_params,
4198                                              lang_e);
4199
4200       /* Now for each symbol name in range, check to see if we have a name
4201          match, and if so, call the MATCH_CALLBACK callback.  */
4202
4203       for (; bounds.first != bounds.second; ++bounds.first)
4204         {
4205           const char *qualified = index.symbol_name_at (bounds.first->idx);
4206
4207           if (!name_matcher (qualified, lookup_name_without_params, NULL)
4208               || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4209             continue;
4210
4211           matches.push_back (bounds.first->idx);
4212         }
4213     }
4214
4215   std::sort (matches.begin (), matches.end ());
4216
4217   /* Finally call the callback, once per match.  */
4218   ULONGEST prev = -1;
4219   for (offset_type idx : matches)
4220     {
4221       if (prev != idx)
4222         {
4223           if (!match_callback (idx))
4224             break;
4225           prev = idx;
4226         }
4227     }
4228
4229   /* Above we use a type wider than idx's for 'prev', since 0 and
4230      (offset_type)-1 are both possible values.  */
4231   static_assert (sizeof (prev) > sizeof (offset_type), "");
4232 }
4233
4234 #if GDB_SELF_TEST
4235
4236 namespace selftests { namespace dw2_expand_symtabs_matching {
4237
4238 /* A mock .gdb_index/.debug_names-like name index table, enough to
4239    exercise dw2_expand_symtabs_matching_symbol, which works with the
4240    mapped_index_base interface.  Builds an index from the symbol list
4241    passed as parameter to the constructor.  */
4242 class mock_mapped_index : public mapped_index_base
4243 {
4244 public:
4245   mock_mapped_index (gdb::array_view<const char *> symbols)
4246     : m_symbol_table (symbols)
4247   {}
4248
4249   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4250
4251   /* Return the number of names in the symbol table.  */
4252   size_t symbol_name_count () const override
4253   {
4254     return m_symbol_table.size ();
4255   }
4256
4257   /* Get the name of the symbol at IDX in the symbol table.  */
4258   const char *symbol_name_at (offset_type idx) const override
4259   {
4260     return m_symbol_table[idx];
4261   }
4262
4263 private:
4264   gdb::array_view<const char *> m_symbol_table;
4265 };
4266
4267 /* Convenience function that converts a NULL pointer to a "<null>"
4268    string, to pass to print routines.  */
4269
4270 static const char *
4271 string_or_null (const char *str)
4272 {
4273   return str != NULL ? str : "<null>";
4274 }
4275
4276 /* Check if a lookup_name_info built from
4277    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4278    index.  EXPECTED_LIST is the list of expected matches, in expected
4279    matching order.  If no match expected, then an empty list is
4280    specified.  Returns true on success.  On failure prints a warning
4281    indicating the file:line that failed, and returns false.  */
4282
4283 static bool
4284 check_match (const char *file, int line,
4285              mock_mapped_index &mock_index,
4286              const char *name, symbol_name_match_type match_type,
4287              bool completion_mode,
4288              std::initializer_list<const char *> expected_list)
4289 {
4290   lookup_name_info lookup_name (name, match_type, completion_mode);
4291
4292   bool matched = true;
4293
4294   auto mismatch = [&] (const char *expected_str,
4295                        const char *got)
4296   {
4297     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4298                "expected=\"%s\", got=\"%s\"\n"),
4299              file, line,
4300              (match_type == symbol_name_match_type::FULL
4301               ? "FULL" : "WILD"),
4302              name, string_or_null (expected_str), string_or_null (got));
4303     matched = false;
4304   };
4305
4306   auto expected_it = expected_list.begin ();
4307   auto expected_end = expected_list.end ();
4308
4309   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4310                                       NULL, ALL_DOMAIN,
4311                                       [&] (offset_type idx)
4312   {
4313     const char *matched_name = mock_index.symbol_name_at (idx);
4314     const char *expected_str
4315       = expected_it == expected_end ? NULL : *expected_it++;
4316
4317     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4318       mismatch (expected_str, matched_name);
4319     return true;
4320   });
4321
4322   const char *expected_str
4323   = expected_it == expected_end ? NULL : *expected_it++;
4324   if (expected_str != NULL)
4325     mismatch (expected_str, NULL);
4326
4327   return matched;
4328 }
4329
4330 /* The symbols added to the mock mapped_index for testing (in
4331    canonical form).  */
4332 static const char *test_symbols[] = {
4333   "function",
4334   "std::bar",
4335   "std::zfunction",
4336   "std::zfunction2",
4337   "w1::w2",
4338   "ns::foo<char*>",
4339   "ns::foo<int>",
4340   "ns::foo<long>",
4341   "ns2::tmpl<int>::foo2",
4342   "(anonymous namespace)::A::B::C",
4343
4344   /* These are used to check that the increment-last-char in the
4345      matching algorithm for completion doesn't match "t1_fund" when
4346      completing "t1_func".  */
4347   "t1_func",
4348   "t1_func1",
4349   "t1_fund",
4350   "t1_fund1",
4351
4352   /* A UTF-8 name with multi-byte sequences to make sure that
4353      cp-name-parser understands this as a single identifier ("função"
4354      is "function" in PT).  */
4355   u8"u8função",
4356
4357   /* \377 (0xff) is Latin1 'ÿ'.  */
4358   "yfunc\377",
4359
4360   /* \377 (0xff) is Latin1 'ÿ'.  */
4361   "\377",
4362   "\377\377123",
4363
4364   /* A name with all sorts of complications.  Starts with "z" to make
4365      it easier for the completion tests below.  */
4366 #define Z_SYM_NAME \
4367   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4368     "::tuple<(anonymous namespace)::ui*, " \
4369     "std::default_delete<(anonymous namespace)::ui>, void>"
4370
4371   Z_SYM_NAME
4372 };
4373
4374 /* Returns true if the mapped_index_base::find_name_component_bounds
4375    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4376    in completion mode.  */
4377
4378 static bool
4379 check_find_bounds_finds (mapped_index_base &index,
4380                          const char *search_name,
4381                          gdb::array_view<const char *> expected_syms)
4382 {
4383   lookup_name_info lookup_name (search_name,
4384                                 symbol_name_match_type::FULL, true);
4385
4386   auto bounds = index.find_name_components_bounds (lookup_name,
4387                                                    language_cplus);
4388
4389   size_t distance = std::distance (bounds.first, bounds.second);
4390   if (distance != expected_syms.size ())
4391     return false;
4392
4393   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4394     {
4395       auto nc_elem = bounds.first + exp_elem;
4396       const char *qualified = index.symbol_name_at (nc_elem->idx);
4397       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4398         return false;
4399     }
4400
4401   return true;
4402 }
4403
4404 /* Test the lower-level mapped_index::find_name_component_bounds
4405    method.  */
4406
4407 static void
4408 test_mapped_index_find_name_component_bounds ()
4409 {
4410   mock_mapped_index mock_index (test_symbols);
4411
4412   mock_index.build_name_components ();
4413
4414   /* Test the lower-level mapped_index::find_name_component_bounds
4415      method in completion mode.  */
4416   {
4417     static const char *expected_syms[] = {
4418       "t1_func",
4419       "t1_func1",
4420     };
4421
4422     SELF_CHECK (check_find_bounds_finds (mock_index,
4423                                          "t1_func", expected_syms));
4424   }
4425
4426   /* Check that the increment-last-char in the name matching algorithm
4427      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4428   {
4429     static const char *expected_syms1[] = {
4430       "\377",
4431       "\377\377123",
4432     };
4433     SELF_CHECK (check_find_bounds_finds (mock_index,
4434                                          "\377", expected_syms1));
4435
4436     static const char *expected_syms2[] = {
4437       "\377\377123",
4438     };
4439     SELF_CHECK (check_find_bounds_finds (mock_index,
4440                                          "\377\377", expected_syms2));
4441   }
4442 }
4443
4444 /* Test dw2_expand_symtabs_matching_symbol.  */
4445
4446 static void
4447 test_dw2_expand_symtabs_matching_symbol ()
4448 {
4449   mock_mapped_index mock_index (test_symbols);
4450
4451   /* We let all tests run until the end even if some fails, for debug
4452      convenience.  */
4453   bool any_mismatch = false;
4454
4455   /* Create the expected symbols list (an initializer_list).  Needed
4456      because lists have commas, and we need to pass them to CHECK,
4457      which is a macro.  */
4458 #define EXPECT(...) { __VA_ARGS__ }
4459
4460   /* Wrapper for check_match that passes down the current
4461      __FILE__/__LINE__.  */
4462 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4463   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4464                                 mock_index,                             \
4465                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4466                                 EXPECTED_LIST)
4467
4468   /* Identity checks.  */
4469   for (const char *sym : test_symbols)
4470     {
4471       /* Should be able to match all existing symbols.  */
4472       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4473                    EXPECT (sym));
4474
4475       /* Should be able to match all existing symbols with
4476          parameters.  */
4477       std::string with_params = std::string (sym) + "(int)";
4478       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4479                    EXPECT (sym));
4480
4481       /* Should be able to match all existing symbols with
4482          parameters and qualifiers.  */
4483       with_params = std::string (sym) + " ( int ) const";
4484       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4485                    EXPECT (sym));
4486
4487       /* This should really find sym, but cp-name-parser.y doesn't
4488          know about lvalue/rvalue qualifiers yet.  */
4489       with_params = std::string (sym) + " ( int ) &&";
4490       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4491                    {});
4492     }
4493
4494   /* Check that the name matching algorithm for completion doesn't get
4495      confused with Latin1 'ÿ' / 0xff.  */
4496   {
4497     static const char str[] = "\377";
4498     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4499                  EXPECT ("\377", "\377\377123"));
4500   }
4501
4502   /* Check that the increment-last-char in the matching algorithm for
4503      completion doesn't match "t1_fund" when completing "t1_func".  */
4504   {
4505     static const char str[] = "t1_func";
4506     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4507                  EXPECT ("t1_func", "t1_func1"));
4508   }
4509
4510   /* Check that completion mode works at each prefix of the expected
4511      symbol name.  */
4512   {
4513     static const char str[] = "function(int)";
4514     size_t len = strlen (str);
4515     std::string lookup;
4516
4517     for (size_t i = 1; i < len; i++)
4518       {
4519         lookup.assign (str, i);
4520         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4521                      EXPECT ("function"));
4522       }
4523   }
4524
4525   /* While "w" is a prefix of both components, the match function
4526      should still only be called once.  */
4527   {
4528     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4529                  EXPECT ("w1::w2"));
4530     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4531                  EXPECT ("w1::w2"));
4532   }
4533
4534   /* Same, with a "complicated" symbol.  */
4535   {
4536     static const char str[] = Z_SYM_NAME;
4537     size_t len = strlen (str);
4538     std::string lookup;
4539
4540     for (size_t i = 1; i < len; i++)
4541       {
4542         lookup.assign (str, i);
4543         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4544                      EXPECT (Z_SYM_NAME));
4545       }
4546   }
4547
4548   /* In FULL mode, an incomplete symbol doesn't match.  */
4549   {
4550     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4551                  {});
4552   }
4553
4554   /* A complete symbol with parameters matches any overload, since the
4555      index has no overload info.  */
4556   {
4557     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4558                  EXPECT ("std::zfunction", "std::zfunction2"));
4559     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4560                  EXPECT ("std::zfunction", "std::zfunction2"));
4561     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4562                  EXPECT ("std::zfunction", "std::zfunction2"));
4563   }
4564
4565   /* Check that whitespace is ignored appropriately.  A symbol with a
4566      template argument list. */
4567   {
4568     static const char expected[] = "ns::foo<int>";
4569     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4570                  EXPECT (expected));
4571     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4572                  EXPECT (expected));
4573   }
4574
4575   /* Check that whitespace is ignored appropriately.  A symbol with a
4576      template argument list that includes a pointer.  */
4577   {
4578     static const char expected[] = "ns::foo<char*>";
4579     /* Try both completion and non-completion modes.  */
4580     static const bool completion_mode[2] = {false, true};
4581     for (size_t i = 0; i < 2; i++)
4582       {
4583         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4584                      completion_mode[i], EXPECT (expected));
4585         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4586                      completion_mode[i], EXPECT (expected));
4587
4588         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4589                      completion_mode[i], EXPECT (expected));
4590         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4591                      completion_mode[i], EXPECT (expected));
4592       }
4593   }
4594
4595   {
4596     /* Check method qualifiers are ignored.  */
4597     static const char expected[] = "ns::foo<char*>";
4598     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4599                  symbol_name_match_type::FULL, true, EXPECT (expected));
4600     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4601                  symbol_name_match_type::FULL, true, EXPECT (expected));
4602     CHECK_MATCH ("foo < char * >  ( int ) const",
4603                  symbol_name_match_type::WILD, true, EXPECT (expected));
4604     CHECK_MATCH ("foo < char * >  ( int ) &&",
4605                  symbol_name_match_type::WILD, true, EXPECT (expected));
4606   }
4607
4608   /* Test lookup names that don't match anything.  */
4609   {
4610     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4611                  {});
4612
4613     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4614                  {});
4615   }
4616
4617   /* Some wild matching tests, exercising "(anonymous namespace)",
4618      which should not be confused with a parameter list.  */
4619   {
4620     static const char *syms[] = {
4621       "A::B::C",
4622       "B::C",
4623       "C",
4624       "A :: B :: C ( int )",
4625       "B :: C ( int )",
4626       "C ( int )",
4627     };
4628
4629     for (const char *s : syms)
4630       {
4631         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4632                      EXPECT ("(anonymous namespace)::A::B::C"));
4633       }
4634   }
4635
4636   {
4637     static const char expected[] = "ns2::tmpl<int>::foo2";
4638     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4639                  EXPECT (expected));
4640     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4641                  EXPECT (expected));
4642   }
4643
4644   SELF_CHECK (!any_mismatch);
4645
4646 #undef EXPECT
4647 #undef CHECK_MATCH
4648 }
4649
4650 static void
4651 run_test ()
4652 {
4653   test_mapped_index_find_name_component_bounds ();
4654   test_dw2_expand_symtabs_matching_symbol ();
4655 }
4656
4657 }} // namespace selftests::dw2_expand_symtabs_matching
4658
4659 #endif /* GDB_SELF_TEST */
4660
4661 /* If FILE_MATCHER is NULL or if PER_CU has
4662    dwarf2_per_cu_quick_data::MARK set (see
4663    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4664    EXPANSION_NOTIFY on it.  */
4665
4666 static void
4667 dw2_expand_symtabs_matching_one
4668   (struct dwarf2_per_cu_data *per_cu,
4669    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4670    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
4671 {
4672   if (file_matcher == NULL || per_cu->v.quick->mark)
4673     {
4674       bool symtab_was_null
4675         = (per_cu->v.quick->compunit_symtab == NULL);
4676
4677       dw2_instantiate_symtab (per_cu, false);
4678
4679       if (expansion_notify != NULL
4680           && symtab_was_null
4681           && per_cu->v.quick->compunit_symtab != NULL)
4682         expansion_notify (per_cu->v.quick->compunit_symtab);
4683     }
4684 }
4685
4686 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
4687    matched, to expand corresponding CUs that were marked.  IDX is the
4688    index of the symbol name that matched.  */
4689
4690 static void
4691 dw2_expand_marked_cus
4692   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
4693    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4694    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4695    search_domain kind)
4696 {
4697   offset_type *vec, vec_len, vec_idx;
4698   bool global_seen = false;
4699   mapped_index &index = *dwarf2_per_objfile->index_table;
4700
4701   vec = (offset_type *) (index.constant_pool
4702                          + MAYBE_SWAP (index.symbol_table[idx].vec));
4703   vec_len = MAYBE_SWAP (vec[0]);
4704   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
4705     {
4706       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
4707       /* This value is only valid for index versions >= 7.  */
4708       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
4709       gdb_index_symbol_kind symbol_kind =
4710         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
4711       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
4712       /* Only check the symbol attributes if they're present.
4713          Indices prior to version 7 don't record them,
4714          and indices >= 7 may elide them for certain symbols
4715          (gold does this).  */
4716       int attrs_valid =
4717         (index.version >= 7
4718          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4719
4720       /* Work around gold/15646.  */
4721       if (attrs_valid)
4722         {
4723           if (!is_static && global_seen)
4724             continue;
4725           if (!is_static)
4726             global_seen = true;
4727         }
4728
4729       /* Only check the symbol's kind if it has one.  */
4730       if (attrs_valid)
4731         {
4732           switch (kind)
4733             {
4734             case VARIABLES_DOMAIN:
4735               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4736                 continue;
4737               break;
4738             case FUNCTIONS_DOMAIN:
4739               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4740                 continue;
4741               break;
4742             case TYPES_DOMAIN:
4743               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4744                 continue;
4745               break;
4746             case MODULES_DOMAIN:
4747               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4748                 continue;
4749               break;
4750             default:
4751               break;
4752             }
4753         }
4754
4755       /* Don't crash on bad data.  */
4756       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
4757                        + dwarf2_per_objfile->all_type_units.size ()))
4758         {
4759           complaint (_(".gdb_index entry has bad CU index"
4760                        " [in module %s]"),
4761                        objfile_name (dwarf2_per_objfile->objfile));
4762           continue;
4763         }
4764
4765       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
4766       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
4767                                        expansion_notify);
4768     }
4769 }
4770
4771 /* If FILE_MATCHER is non-NULL, set all the
4772    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
4773    that match FILE_MATCHER.  */
4774
4775 static void
4776 dw_expand_symtabs_matching_file_matcher
4777   (struct dwarf2_per_objfile *dwarf2_per_objfile,
4778    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
4779 {
4780   if (file_matcher == NULL)
4781     return;
4782
4783   objfile *const objfile = dwarf2_per_objfile->objfile;
4784
4785   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
4786                                             htab_eq_pointer,
4787                                             NULL, xcalloc, xfree));
4788   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
4789                                                 htab_eq_pointer,
4790                                                 NULL, xcalloc, xfree));
4791
4792   /* The rule is CUs specify all the files, including those used by
4793      any TU, so there's no need to scan TUs here.  */
4794
4795   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4796     {
4797       QUIT;
4798
4799       per_cu->v.quick->mark = 0;
4800
4801       /* We only need to look at symtabs not already expanded.  */
4802       if (per_cu->v.quick->compunit_symtab)
4803         continue;
4804
4805       quick_file_names *file_data = dw2_get_file_names (per_cu);
4806       if (file_data == NULL)
4807         continue;
4808
4809       if (htab_find (visited_not_found.get (), file_data) != NULL)
4810         continue;
4811       else if (htab_find (visited_found.get (), file_data) != NULL)
4812         {
4813           per_cu->v.quick->mark = 1;
4814           continue;
4815         }
4816
4817       for (int j = 0; j < file_data->num_file_names; ++j)
4818         {
4819           const char *this_real_name;
4820
4821           if (file_matcher (file_data->file_names[j], false))
4822             {
4823               per_cu->v.quick->mark = 1;
4824               break;
4825             }
4826
4827           /* Before we invoke realpath, which can get expensive when many
4828              files are involved, do a quick comparison of the basenames.  */
4829           if (!basenames_may_differ
4830               && !file_matcher (lbasename (file_data->file_names[j]),
4831                                 true))
4832             continue;
4833
4834           this_real_name = dw2_get_real_path (objfile, file_data, j);
4835           if (file_matcher (this_real_name, false))
4836             {
4837               per_cu->v.quick->mark = 1;
4838               break;
4839             }
4840         }
4841
4842       void **slot = htab_find_slot (per_cu->v.quick->mark
4843                                     ? visited_found.get ()
4844                                     : visited_not_found.get (),
4845                                     file_data, INSERT);
4846       *slot = file_data;
4847     }
4848 }
4849
4850 static void
4851 dw2_expand_symtabs_matching
4852   (struct objfile *objfile,
4853    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4854    const lookup_name_info &lookup_name,
4855    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4856    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4857    enum search_domain kind)
4858 {
4859   struct dwarf2_per_objfile *dwarf2_per_objfile
4860     = get_dwarf2_per_objfile (objfile);
4861
4862   /* index_table is NULL if OBJF_READNOW.  */
4863   if (!dwarf2_per_objfile->index_table)
4864     return;
4865
4866   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
4867
4868   mapped_index &index = *dwarf2_per_objfile->index_table;
4869
4870   dw2_expand_symtabs_matching_symbol (index, lookup_name,
4871                                       symbol_matcher,
4872                                       kind, [&] (offset_type idx)
4873     {
4874       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
4875                              expansion_notify, kind);
4876       return true;
4877     });
4878 }
4879
4880 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
4881    symtab.  */
4882
4883 static struct compunit_symtab *
4884 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4885                                           CORE_ADDR pc)
4886 {
4887   int i;
4888
4889   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4890       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4891     return cust;
4892
4893   if (cust->includes == NULL)
4894     return NULL;
4895
4896   for (i = 0; cust->includes[i]; ++i)
4897     {
4898       struct compunit_symtab *s = cust->includes[i];
4899
4900       s = recursively_find_pc_sect_compunit_symtab (s, pc);
4901       if (s != NULL)
4902         return s;
4903     }
4904
4905   return NULL;
4906 }
4907
4908 static struct compunit_symtab *
4909 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4910                                   struct bound_minimal_symbol msymbol,
4911                                   CORE_ADDR pc,
4912                                   struct obj_section *section,
4913                                   int warn_if_readin)
4914 {
4915   struct dwarf2_per_cu_data *data;
4916   struct compunit_symtab *result;
4917
4918   if (!objfile->partial_symtabs->psymtabs_addrmap)
4919     return NULL;
4920
4921   CORE_ADDR baseaddr = objfile->text_section_offset ();
4922   data = (struct dwarf2_per_cu_data *) addrmap_find
4923     (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
4924   if (!data)
4925     return NULL;
4926
4927   if (warn_if_readin && data->v.quick->compunit_symtab)
4928     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4929              paddress (get_objfile_arch (objfile), pc));
4930
4931   result
4932     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
4933                                                                         false),
4934                                                 pc);
4935   gdb_assert (result != NULL);
4936   return result;
4937 }
4938
4939 static void
4940 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
4941                           void *data, int need_fullname)
4942 {
4943   struct dwarf2_per_objfile *dwarf2_per_objfile
4944     = get_dwarf2_per_objfile (objfile);
4945
4946   if (!dwarf2_per_objfile->filenames_cache)
4947     {
4948       dwarf2_per_objfile->filenames_cache.emplace ();
4949
4950       htab_up visited (htab_create_alloc (10,
4951                                           htab_hash_pointer, htab_eq_pointer,
4952                                           NULL, xcalloc, xfree));
4953
4954       /* The rule is CUs specify all the files, including those used
4955          by any TU, so there's no need to scan TUs here.  We can
4956          ignore file names coming from already-expanded CUs.  */
4957
4958       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4959         {
4960           if (per_cu->v.quick->compunit_symtab)
4961             {
4962               void **slot = htab_find_slot (visited.get (),
4963                                             per_cu->v.quick->file_names,
4964                                             INSERT);
4965
4966               *slot = per_cu->v.quick->file_names;
4967             }
4968         }
4969
4970       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4971         {
4972           /* We only need to look at symtabs not already expanded.  */
4973           if (per_cu->v.quick->compunit_symtab)
4974             continue;
4975
4976           quick_file_names *file_data = dw2_get_file_names (per_cu);
4977           if (file_data == NULL)
4978             continue;
4979
4980           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
4981           if (*slot)
4982             {
4983               /* Already visited.  */
4984               continue;
4985             }
4986           *slot = file_data;
4987
4988           for (int j = 0; j < file_data->num_file_names; ++j)
4989             {
4990               const char *filename = file_data->file_names[j];
4991               dwarf2_per_objfile->filenames_cache->seen (filename);
4992             }
4993         }
4994     }
4995
4996   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
4997     {
4998       gdb::unique_xmalloc_ptr<char> this_real_name;
4999
5000       if (need_fullname)
5001         this_real_name = gdb_realpath (filename);
5002       (*fun) (filename, this_real_name.get (), data);
5003     });
5004 }
5005
5006 static int
5007 dw2_has_symbols (struct objfile *objfile)
5008 {
5009   return 1;
5010 }
5011
5012 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5013 {
5014   dw2_has_symbols,
5015   dw2_find_last_source_symtab,
5016   dw2_forget_cached_source_info,
5017   dw2_map_symtabs_matching_filename,
5018   dw2_lookup_symbol,
5019   dw2_print_stats,
5020   dw2_dump,
5021   dw2_expand_symtabs_for_function,
5022   dw2_expand_all_symtabs,
5023   dw2_expand_symtabs_with_fullname,
5024   dw2_map_matching_symbols,
5025   dw2_expand_symtabs_matching,
5026   dw2_find_pc_sect_compunit_symtab,
5027   NULL,
5028   dw2_map_symbol_filenames
5029 };
5030
5031 /* DWARF-5 debug_names reader.  */
5032
5033 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5034 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5035
5036 /* A helper function that reads the .debug_names section in SECTION
5037    and fills in MAP.  FILENAME is the name of the file containing the
5038    section; it is used for error reporting.
5039
5040    Returns true if all went well, false otherwise.  */
5041
5042 static bool
5043 read_debug_names_from_section (struct objfile *objfile,
5044                                const char *filename,
5045                                struct dwarf2_section_info *section,
5046                                mapped_debug_names &map)
5047 {
5048   if (section->empty ())
5049     return false;
5050
5051   /* Older elfutils strip versions could keep the section in the main
5052      executable while splitting it for the separate debug info file.  */
5053   if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
5054     return false;
5055
5056   section->read (objfile);
5057
5058   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5059
5060   const gdb_byte *addr = section->buffer;
5061
5062   bfd *const abfd = section->get_bfd_owner ();
5063
5064   unsigned int bytes_read;
5065   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5066   addr += bytes_read;
5067
5068   map.dwarf5_is_dwarf64 = bytes_read != 4;
5069   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5070   if (bytes_read + length != section->size)
5071     {
5072       /* There may be multiple per-CU indices.  */
5073       warning (_("Section .debug_names in %s length %s does not match "
5074                  "section length %s, ignoring .debug_names."),
5075                filename, plongest (bytes_read + length),
5076                pulongest (section->size));
5077       return false;
5078     }
5079
5080   /* The version number.  */
5081   uint16_t version = read_2_bytes (abfd, addr);
5082   addr += 2;
5083   if (version != 5)
5084     {
5085       warning (_("Section .debug_names in %s has unsupported version %d, "
5086                  "ignoring .debug_names."),
5087                filename, version);
5088       return false;
5089     }
5090
5091   /* Padding.  */
5092   uint16_t padding = read_2_bytes (abfd, addr);
5093   addr += 2;
5094   if (padding != 0)
5095     {
5096       warning (_("Section .debug_names in %s has unsupported padding %d, "
5097                  "ignoring .debug_names."),
5098                filename, padding);
5099       return false;
5100     }
5101
5102   /* comp_unit_count - The number of CUs in the CU list.  */
5103   map.cu_count = read_4_bytes (abfd, addr);
5104   addr += 4;
5105
5106   /* local_type_unit_count - The number of TUs in the local TU
5107      list.  */
5108   map.tu_count = read_4_bytes (abfd, addr);
5109   addr += 4;
5110
5111   /* foreign_type_unit_count - The number of TUs in the foreign TU
5112      list.  */
5113   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5114   addr += 4;
5115   if (foreign_tu_count != 0)
5116     {
5117       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5118                  "ignoring .debug_names."),
5119                filename, static_cast<unsigned long> (foreign_tu_count));
5120       return false;
5121     }
5122
5123   /* bucket_count - The number of hash buckets in the hash lookup
5124      table.  */
5125   map.bucket_count = read_4_bytes (abfd, addr);
5126   addr += 4;
5127
5128   /* name_count - The number of unique names in the index.  */
5129   map.name_count = read_4_bytes (abfd, addr);
5130   addr += 4;
5131
5132   /* abbrev_table_size - The size in bytes of the abbreviations
5133      table.  */
5134   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5135   addr += 4;
5136
5137   /* augmentation_string_size - The size in bytes of the augmentation
5138      string.  This value is rounded up to a multiple of 4.  */
5139   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5140   addr += 4;
5141   map.augmentation_is_gdb = ((augmentation_string_size
5142                               == sizeof (dwarf5_augmentation))
5143                              && memcmp (addr, dwarf5_augmentation,
5144                                         sizeof (dwarf5_augmentation)) == 0);
5145   augmentation_string_size += (-augmentation_string_size) & 3;
5146   addr += augmentation_string_size;
5147
5148   /* List of CUs */
5149   map.cu_table_reordered = addr;
5150   addr += map.cu_count * map.offset_size;
5151
5152   /* List of Local TUs */
5153   map.tu_table_reordered = addr;
5154   addr += map.tu_count * map.offset_size;
5155
5156   /* Hash Lookup Table */
5157   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5158   addr += map.bucket_count * 4;
5159   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5160   addr += map.name_count * 4;
5161
5162   /* Name Table */
5163   map.name_table_string_offs_reordered = addr;
5164   addr += map.name_count * map.offset_size;
5165   map.name_table_entry_offs_reordered = addr;
5166   addr += map.name_count * map.offset_size;
5167
5168   const gdb_byte *abbrev_table_start = addr;
5169   for (;;)
5170     {
5171       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5172       addr += bytes_read;
5173       if (index_num == 0)
5174         break;
5175
5176       const auto insertpair
5177         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5178       if (!insertpair.second)
5179         {
5180           warning (_("Section .debug_names in %s has duplicate index %s, "
5181                      "ignoring .debug_names."),
5182                    filename, pulongest (index_num));
5183           return false;
5184         }
5185       mapped_debug_names::index_val &indexval = insertpair.first->second;
5186       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5187       addr += bytes_read;
5188
5189       for (;;)
5190         {
5191           mapped_debug_names::index_val::attr attr;
5192           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5193           addr += bytes_read;
5194           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5195           addr += bytes_read;
5196           if (attr.form == DW_FORM_implicit_const)
5197             {
5198               attr.implicit_const = read_signed_leb128 (abfd, addr,
5199                                                         &bytes_read);
5200               addr += bytes_read;
5201             }
5202           if (attr.dw_idx == 0 && attr.form == 0)
5203             break;
5204           indexval.attr_vec.push_back (std::move (attr));
5205         }
5206     }
5207   if (addr != abbrev_table_start + abbrev_table_size)
5208     {
5209       warning (_("Section .debug_names in %s has abbreviation_table "
5210                  "of size %s vs. written as %u, ignoring .debug_names."),
5211                filename, plongest (addr - abbrev_table_start),
5212                abbrev_table_size);
5213       return false;
5214     }
5215   map.entry_pool = addr;
5216
5217   return true;
5218 }
5219
5220 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5221    list.  */
5222
5223 static void
5224 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5225                                   const mapped_debug_names &map,
5226                                   dwarf2_section_info &section,
5227                                   bool is_dwz)
5228 {
5229   sect_offset sect_off_prev;
5230   for (uint32_t i = 0; i <= map.cu_count; ++i)
5231     {
5232       sect_offset sect_off_next;
5233       if (i < map.cu_count)
5234         {
5235           sect_off_next
5236             = (sect_offset) (extract_unsigned_integer
5237                              (map.cu_table_reordered + i * map.offset_size,
5238                               map.offset_size,
5239                               map.dwarf5_byte_order));
5240         }
5241       else
5242         sect_off_next = (sect_offset) section.size;
5243       if (i >= 1)
5244         {
5245           const ULONGEST length = sect_off_next - sect_off_prev;
5246           dwarf2_per_cu_data *per_cu
5247             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5248                                          sect_off_prev, length);
5249           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5250         }
5251       sect_off_prev = sect_off_next;
5252     }
5253 }
5254
5255 /* Read the CU list from the mapped index, and use it to create all
5256    the CU objects for this dwarf2_per_objfile.  */
5257
5258 static void
5259 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5260                              const mapped_debug_names &map,
5261                              const mapped_debug_names &dwz_map)
5262 {
5263   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5264   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5265
5266   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5267                                     dwarf2_per_objfile->info,
5268                                     false /* is_dwz */);
5269
5270   if (dwz_map.cu_count == 0)
5271     return;
5272
5273   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5274   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5275                                     true /* is_dwz */);
5276 }
5277
5278 /* Read .debug_names.  If everything went ok, initialize the "quick"
5279    elements of all the CUs and return true.  Otherwise, return false.  */
5280
5281 static bool
5282 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5283 {
5284   std::unique_ptr<mapped_debug_names> map
5285     (new mapped_debug_names (dwarf2_per_objfile));
5286   mapped_debug_names dwz_map (dwarf2_per_objfile);
5287   struct objfile *objfile = dwarf2_per_objfile->objfile;
5288
5289   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5290                                       &dwarf2_per_objfile->debug_names,
5291                                       *map))
5292     return false;
5293
5294   /* Don't use the index if it's empty.  */
5295   if (map->name_count == 0)
5296     return false;
5297
5298   /* If there is a .dwz file, read it so we can get its CU list as
5299      well.  */
5300   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5301   if (dwz != NULL)
5302     {
5303       if (!read_debug_names_from_section (objfile,
5304                                           bfd_get_filename (dwz->dwz_bfd.get ()),
5305                                           &dwz->debug_names, dwz_map))
5306         {
5307           warning (_("could not read '.debug_names' section from %s; skipping"),
5308                    bfd_get_filename (dwz->dwz_bfd.get ()));
5309           return false;
5310         }
5311     }
5312
5313   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5314
5315   if (map->tu_count != 0)
5316     {
5317       /* We can only handle a single .debug_types when we have an
5318          index.  */
5319       if (dwarf2_per_objfile->types.size () != 1)
5320         return false;
5321
5322       dwarf2_section_info *section = &dwarf2_per_objfile->types[0];
5323
5324       create_signatured_type_table_from_debug_names
5325         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5326     }
5327
5328   create_addrmap_from_aranges (dwarf2_per_objfile,
5329                                &dwarf2_per_objfile->debug_aranges);
5330
5331   dwarf2_per_objfile->debug_names_table = std::move (map);
5332   dwarf2_per_objfile->using_index = 1;
5333   dwarf2_per_objfile->quick_file_names_table =
5334     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5335
5336   return true;
5337 }
5338
5339 /* Type used to manage iterating over all CUs looking for a symbol for
5340    .debug_names.  */
5341
5342 class dw2_debug_names_iterator
5343 {
5344 public:
5345   dw2_debug_names_iterator (const mapped_debug_names &map,
5346                             gdb::optional<block_enum> block_index,
5347                             domain_enum domain,
5348                             const char *name)
5349     : m_map (map), m_block_index (block_index), m_domain (domain),
5350       m_addr (find_vec_in_debug_names (map, name))
5351   {}
5352
5353   dw2_debug_names_iterator (const mapped_debug_names &map,
5354                             search_domain search, uint32_t namei)
5355     : m_map (map),
5356       m_search (search),
5357       m_addr (find_vec_in_debug_names (map, namei))
5358   {}
5359
5360   dw2_debug_names_iterator (const mapped_debug_names &map,
5361                             block_enum block_index, domain_enum domain,
5362                             uint32_t namei)
5363     : m_map (map), m_block_index (block_index), m_domain (domain),
5364       m_addr (find_vec_in_debug_names (map, namei))
5365   {}
5366
5367   /* Return the next matching CU or NULL if there are no more.  */
5368   dwarf2_per_cu_data *next ();
5369
5370 private:
5371   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5372                                                   const char *name);
5373   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5374                                                   uint32_t namei);
5375
5376   /* The internalized form of .debug_names.  */
5377   const mapped_debug_names &m_map;
5378
5379   /* If set, only look for symbols that match that block.  Valid values are
5380      GLOBAL_BLOCK and STATIC_BLOCK.  */
5381   const gdb::optional<block_enum> m_block_index;
5382
5383   /* The kind of symbol we're looking for.  */
5384   const domain_enum m_domain = UNDEF_DOMAIN;
5385   const search_domain m_search = ALL_DOMAIN;
5386
5387   /* The list of CUs from the index entry of the symbol, or NULL if
5388      not found.  */
5389   const gdb_byte *m_addr;
5390 };
5391
5392 const char *
5393 mapped_debug_names::namei_to_name (uint32_t namei) const
5394 {
5395   const ULONGEST namei_string_offs
5396     = extract_unsigned_integer ((name_table_string_offs_reordered
5397                                  + namei * offset_size),
5398                                 offset_size,
5399                                 dwarf5_byte_order);
5400   return read_indirect_string_at_offset
5401     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5402 }
5403
5404 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5405    found, return pointer to its pool data.  If NAME cannot be found,
5406    return NULL.  */
5407
5408 const gdb_byte *
5409 dw2_debug_names_iterator::find_vec_in_debug_names
5410   (const mapped_debug_names &map, const char *name)
5411 {
5412   int (*cmp) (const char *, const char *);
5413
5414   gdb::unique_xmalloc_ptr<char> without_params;
5415   if (current_language->la_language == language_cplus
5416       || current_language->la_language == language_fortran
5417       || current_language->la_language == language_d)
5418     {
5419       /* NAME is already canonical.  Drop any qualifiers as
5420          .debug_names does not contain any.  */
5421
5422       if (strchr (name, '(') != NULL)
5423         {
5424           without_params = cp_remove_params (name);
5425           if (without_params != NULL)
5426             name = without_params.get ();
5427         }
5428     }
5429
5430   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5431
5432   const uint32_t full_hash = dwarf5_djb_hash (name);
5433   uint32_t namei
5434     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5435                                 (map.bucket_table_reordered
5436                                  + (full_hash % map.bucket_count)), 4,
5437                                 map.dwarf5_byte_order);
5438   if (namei == 0)
5439     return NULL;
5440   --namei;
5441   if (namei >= map.name_count)
5442     {
5443       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5444                    "[in module %s]"),
5445                  namei, map.name_count,
5446                  objfile_name (map.dwarf2_per_objfile->objfile));
5447       return NULL;
5448     }
5449
5450   for (;;)
5451     {
5452       const uint32_t namei_full_hash
5453         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5454                                     (map.hash_table_reordered + namei), 4,
5455                                     map.dwarf5_byte_order);
5456       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5457         return NULL;
5458
5459       if (full_hash == namei_full_hash)
5460         {
5461           const char *const namei_string = map.namei_to_name (namei);
5462
5463 #if 0 /* An expensive sanity check.  */
5464           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5465             {
5466               complaint (_("Wrong .debug_names hash for string at index %u "
5467                            "[in module %s]"),
5468                          namei, objfile_name (dwarf2_per_objfile->objfile));
5469               return NULL;
5470             }
5471 #endif
5472
5473           if (cmp (namei_string, name) == 0)
5474             {
5475               const ULONGEST namei_entry_offs
5476                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5477                                              + namei * map.offset_size),
5478                                             map.offset_size, map.dwarf5_byte_order);
5479               return map.entry_pool + namei_entry_offs;
5480             }
5481         }
5482
5483       ++namei;
5484       if (namei >= map.name_count)
5485         return NULL;
5486     }
5487 }
5488
5489 const gdb_byte *
5490 dw2_debug_names_iterator::find_vec_in_debug_names
5491   (const mapped_debug_names &map, uint32_t namei)
5492 {
5493   if (namei >= map.name_count)
5494     {
5495       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5496                    "[in module %s]"),
5497                  namei, map.name_count,
5498                  objfile_name (map.dwarf2_per_objfile->objfile));
5499       return NULL;
5500     }
5501
5502   const ULONGEST namei_entry_offs
5503     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5504                                  + namei * map.offset_size),
5505                                 map.offset_size, map.dwarf5_byte_order);
5506   return map.entry_pool + namei_entry_offs;
5507 }
5508
5509 /* See dw2_debug_names_iterator.  */
5510
5511 dwarf2_per_cu_data *
5512 dw2_debug_names_iterator::next ()
5513 {
5514   if (m_addr == NULL)
5515     return NULL;
5516
5517   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5518   struct objfile *objfile = dwarf2_per_objfile->objfile;
5519   bfd *const abfd = objfile->obfd;
5520
5521  again:
5522
5523   unsigned int bytes_read;
5524   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5525   m_addr += bytes_read;
5526   if (abbrev == 0)
5527     return NULL;
5528
5529   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5530   if (indexval_it == m_map.abbrev_map.cend ())
5531     {
5532       complaint (_("Wrong .debug_names undefined abbrev code %s "
5533                    "[in module %s]"),
5534                  pulongest (abbrev), objfile_name (objfile));
5535       return NULL;
5536     }
5537   const mapped_debug_names::index_val &indexval = indexval_it->second;
5538   enum class symbol_linkage {
5539     unknown,
5540     static_,
5541     extern_,
5542   } symbol_linkage_ = symbol_linkage::unknown;
5543   dwarf2_per_cu_data *per_cu = NULL;
5544   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5545     {
5546       ULONGEST ull;
5547       switch (attr.form)
5548         {
5549         case DW_FORM_implicit_const:
5550           ull = attr.implicit_const;
5551           break;
5552         case DW_FORM_flag_present:
5553           ull = 1;
5554           break;
5555         case DW_FORM_udata:
5556           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5557           m_addr += bytes_read;
5558           break;
5559         default:
5560           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5561                      dwarf_form_name (attr.form),
5562                      objfile_name (objfile));
5563           return NULL;
5564         }
5565       switch (attr.dw_idx)
5566         {
5567         case DW_IDX_compile_unit:
5568           /* Don't crash on bad data.  */
5569           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5570             {
5571               complaint (_(".debug_names entry has bad CU index %s"
5572                            " [in module %s]"),
5573                          pulongest (ull),
5574                          objfile_name (dwarf2_per_objfile->objfile));
5575               continue;
5576             }
5577           per_cu = dwarf2_per_objfile->get_cutu (ull);
5578           break;
5579         case DW_IDX_type_unit:
5580           /* Don't crash on bad data.  */
5581           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5582             {
5583               complaint (_(".debug_names entry has bad TU index %s"
5584                            " [in module %s]"),
5585                          pulongest (ull),
5586                          objfile_name (dwarf2_per_objfile->objfile));
5587               continue;
5588             }
5589           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5590           break;
5591         case DW_IDX_GNU_internal:
5592           if (!m_map.augmentation_is_gdb)
5593             break;
5594           symbol_linkage_ = symbol_linkage::static_;
5595           break;
5596         case DW_IDX_GNU_external:
5597           if (!m_map.augmentation_is_gdb)
5598             break;
5599           symbol_linkage_ = symbol_linkage::extern_;
5600           break;
5601         }
5602     }
5603
5604   /* Skip if already read in.  */
5605   if (per_cu->v.quick->compunit_symtab)
5606     goto again;
5607
5608   /* Check static vs global.  */
5609   if (symbol_linkage_ != symbol_linkage::unknown && m_block_index.has_value ())
5610     {
5611         const bool want_static = *m_block_index == STATIC_BLOCK;
5612         const bool symbol_is_static =
5613           symbol_linkage_ == symbol_linkage::static_;
5614         if (want_static != symbol_is_static)
5615           goto again;
5616     }
5617
5618   /* Match dw2_symtab_iter_next, symbol_kind
5619      and debug_names::psymbol_tag.  */
5620   switch (m_domain)
5621     {
5622     case VAR_DOMAIN:
5623       switch (indexval.dwarf_tag)
5624         {
5625         case DW_TAG_variable:
5626         case DW_TAG_subprogram:
5627         /* Some types are also in VAR_DOMAIN.  */
5628         case DW_TAG_typedef:
5629         case DW_TAG_structure_type:
5630           break;
5631         default:
5632           goto again;
5633         }
5634       break;
5635     case STRUCT_DOMAIN:
5636       switch (indexval.dwarf_tag)
5637         {
5638         case DW_TAG_typedef:
5639         case DW_TAG_structure_type:
5640           break;
5641         default:
5642           goto again;
5643         }
5644       break;
5645     case LABEL_DOMAIN:
5646       switch (indexval.dwarf_tag)
5647         {
5648         case 0:
5649         case DW_TAG_variable:
5650           break;
5651         default:
5652           goto again;
5653         }
5654       break;
5655     case MODULE_DOMAIN:
5656       switch (indexval.dwarf_tag)
5657         {
5658         case DW_TAG_module:
5659           break;
5660         default:
5661           goto again;
5662         }
5663       break;
5664     default:
5665       break;
5666     }
5667
5668   /* Match dw2_expand_symtabs_matching, symbol_kind and
5669      debug_names::psymbol_tag.  */
5670   switch (m_search)
5671     {
5672     case VARIABLES_DOMAIN:
5673       switch (indexval.dwarf_tag)
5674         {
5675         case DW_TAG_variable:
5676           break;
5677         default:
5678           goto again;
5679         }
5680       break;
5681     case FUNCTIONS_DOMAIN:
5682       switch (indexval.dwarf_tag)
5683         {
5684         case DW_TAG_subprogram:
5685           break;
5686         default:
5687           goto again;
5688         }
5689       break;
5690     case TYPES_DOMAIN:
5691       switch (indexval.dwarf_tag)
5692         {
5693         case DW_TAG_typedef:
5694         case DW_TAG_structure_type:
5695           break;
5696         default:
5697           goto again;
5698         }
5699       break;
5700     case MODULES_DOMAIN:
5701       switch (indexval.dwarf_tag)
5702         {
5703         case DW_TAG_module:
5704           break;
5705         default:
5706           goto again;
5707         }
5708     default:
5709       break;
5710     }
5711
5712   return per_cu;
5713 }
5714
5715 static struct compunit_symtab *
5716 dw2_debug_names_lookup_symbol (struct objfile *objfile, block_enum block_index,
5717                                const char *name, domain_enum domain)
5718 {
5719   struct dwarf2_per_objfile *dwarf2_per_objfile
5720     = get_dwarf2_per_objfile (objfile);
5721
5722   const auto &mapp = dwarf2_per_objfile->debug_names_table;
5723   if (!mapp)
5724     {
5725       /* index is NULL if OBJF_READNOW.  */
5726       return NULL;
5727     }
5728   const auto &map = *mapp;
5729
5730   dw2_debug_names_iterator iter (map, block_index, domain, name);
5731
5732   struct compunit_symtab *stab_best = NULL;
5733   struct dwarf2_per_cu_data *per_cu;
5734   while ((per_cu = iter.next ()) != NULL)
5735     {
5736       struct symbol *sym, *with_opaque = NULL;
5737       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
5738       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
5739       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
5740
5741       sym = block_find_symbol (block, name, domain,
5742                                block_find_non_opaque_type_preferred,
5743                                &with_opaque);
5744
5745       /* Some caution must be observed with overloaded functions and
5746          methods, since the index will not contain any overload
5747          information (but NAME might contain it).  */
5748
5749       if (sym != NULL
5750           && strcmp_iw (sym->search_name (), name) == 0)
5751         return stab;
5752       if (with_opaque != NULL
5753           && strcmp_iw (with_opaque->search_name (), name) == 0)
5754         stab_best = stab;
5755
5756       /* Keep looking through other CUs.  */
5757     }
5758
5759   return stab_best;
5760 }
5761
5762 /* This dumps minimal information about .debug_names.  It is called
5763    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
5764    uses this to verify that .debug_names has been loaded.  */
5765
5766 static void
5767 dw2_debug_names_dump (struct objfile *objfile)
5768 {
5769   struct dwarf2_per_objfile *dwarf2_per_objfile
5770     = get_dwarf2_per_objfile (objfile);
5771
5772   gdb_assert (dwarf2_per_objfile->using_index);
5773   printf_filtered (".debug_names:");
5774   if (dwarf2_per_objfile->debug_names_table)
5775     printf_filtered (" exists\n");
5776   else
5777     printf_filtered (" faked for \"readnow\"\n");
5778   printf_filtered ("\n");
5779 }
5780
5781 static void
5782 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
5783                                              const char *func_name)
5784 {
5785   struct dwarf2_per_objfile *dwarf2_per_objfile
5786     = get_dwarf2_per_objfile (objfile);
5787
5788   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
5789   if (dwarf2_per_objfile->debug_names_table)
5790     {
5791       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
5792
5793       dw2_debug_names_iterator iter (map, {}, VAR_DOMAIN, func_name);
5794
5795       struct dwarf2_per_cu_data *per_cu;
5796       while ((per_cu = iter.next ()) != NULL)
5797         dw2_instantiate_symtab (per_cu, false);
5798     }
5799 }
5800
5801 static void
5802 dw2_debug_names_map_matching_symbols
5803   (struct objfile *objfile,
5804    const lookup_name_info &name, domain_enum domain,
5805    int global,
5806    gdb::function_view<symbol_found_callback_ftype> callback,
5807    symbol_compare_ftype *ordered_compare)
5808 {
5809   struct dwarf2_per_objfile *dwarf2_per_objfile
5810     = get_dwarf2_per_objfile (objfile);
5811
5812   /* debug_names_table is NULL if OBJF_READNOW.  */
5813   if (!dwarf2_per_objfile->debug_names_table)
5814     return;
5815
5816   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
5817   const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
5818
5819   const char *match_name = name.ada ().lookup_name ().c_str ();
5820   auto matcher = [&] (const char *symname)
5821     {
5822       if (ordered_compare == nullptr)
5823         return true;
5824       return ordered_compare (symname, match_name) == 0;
5825     };
5826
5827   dw2_expand_symtabs_matching_symbol (map, name, matcher, ALL_DOMAIN,
5828                                       [&] (offset_type namei)
5829     {
5830       /* The name was matched, now expand corresponding CUs that were
5831          marked.  */
5832       dw2_debug_names_iterator iter (map, block_kind, domain, namei);
5833
5834       struct dwarf2_per_cu_data *per_cu;
5835       while ((per_cu = iter.next ()) != NULL)
5836         dw2_expand_symtabs_matching_one (per_cu, nullptr, nullptr);
5837       return true;
5838     });
5839
5840   /* It's a shame we couldn't do this inside the
5841      dw2_expand_symtabs_matching_symbol callback, but that skips CUs
5842      that have already been expanded.  Instead, this loop matches what
5843      the psymtab code does.  */
5844   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5845     {
5846       struct compunit_symtab *cust = per_cu->v.quick->compunit_symtab;
5847       if (cust != nullptr)
5848         {
5849           const struct block *block
5850             = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
5851           if (!iterate_over_symbols_terminated (block, name,
5852                                                 domain, callback))
5853             break;
5854         }
5855     }
5856 }
5857
5858 static void
5859 dw2_debug_names_expand_symtabs_matching
5860   (struct objfile *objfile,
5861    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5862    const lookup_name_info &lookup_name,
5863    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5864    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5865    enum search_domain kind)
5866 {
5867   struct dwarf2_per_objfile *dwarf2_per_objfile
5868     = get_dwarf2_per_objfile (objfile);
5869
5870   /* debug_names_table is NULL if OBJF_READNOW.  */
5871   if (!dwarf2_per_objfile->debug_names_table)
5872     return;
5873
5874   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5875
5876   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
5877
5878   dw2_expand_symtabs_matching_symbol (map, lookup_name,
5879                                       symbol_matcher,
5880                                       kind, [&] (offset_type namei)
5881     {
5882       /* The name was matched, now expand corresponding CUs that were
5883          marked.  */
5884       dw2_debug_names_iterator iter (map, kind, namei);
5885
5886       struct dwarf2_per_cu_data *per_cu;
5887       while ((per_cu = iter.next ()) != NULL)
5888         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5889                                          expansion_notify);
5890       return true;
5891     });
5892 }
5893
5894 const struct quick_symbol_functions dwarf2_debug_names_functions =
5895 {
5896   dw2_has_symbols,
5897   dw2_find_last_source_symtab,
5898   dw2_forget_cached_source_info,
5899   dw2_map_symtabs_matching_filename,
5900   dw2_debug_names_lookup_symbol,
5901   dw2_print_stats,
5902   dw2_debug_names_dump,
5903   dw2_debug_names_expand_symtabs_for_function,
5904   dw2_expand_all_symtabs,
5905   dw2_expand_symtabs_with_fullname,
5906   dw2_debug_names_map_matching_symbols,
5907   dw2_debug_names_expand_symtabs_matching,
5908   dw2_find_pc_sect_compunit_symtab,
5909   NULL,
5910   dw2_map_symbol_filenames
5911 };
5912
5913 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
5914    to either a dwarf2_per_objfile or dwz_file object.  */
5915
5916 template <typename T>
5917 static gdb::array_view<const gdb_byte>
5918 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
5919 {
5920   dwarf2_section_info *section = &section_owner->gdb_index;
5921
5922   if (section->empty ())
5923     return {};
5924
5925   /* Older elfutils strip versions could keep the section in the main
5926      executable while splitting it for the separate debug info file.  */
5927   if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
5928     return {};
5929
5930   section->read (obj);
5931
5932   /* dwarf2_section_info::size is a bfd_size_type, while
5933      gdb::array_view works with size_t.  On 32-bit hosts, with
5934      --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
5935      is 32-bit.  So we need an explicit narrowing conversion here.
5936      This is fine, because it's impossible to allocate or mmap an
5937      array/buffer larger than what size_t can represent.  */
5938   return gdb::make_array_view (section->buffer, section->size);
5939 }
5940
5941 /* Lookup the index cache for the contents of the index associated to
5942    DWARF2_OBJ.  */
5943
5944 static gdb::array_view<const gdb_byte>
5945 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
5946 {
5947   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
5948   if (build_id == nullptr)
5949     return {};
5950
5951   return global_index_cache.lookup_gdb_index (build_id,
5952                                               &dwarf2_obj->index_cache_res);
5953 }
5954
5955 /* Same as the above, but for DWZ.  */
5956
5957 static gdb::array_view<const gdb_byte>
5958 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
5959 {
5960   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
5961   if (build_id == nullptr)
5962     return {};
5963
5964   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
5965 }
5966
5967 /* See symfile.h.  */
5968
5969 bool
5970 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
5971 {
5972   struct dwarf2_per_objfile *dwarf2_per_objfile
5973     = get_dwarf2_per_objfile (objfile);
5974
5975   /* If we're about to read full symbols, don't bother with the
5976      indices.  In this case we also don't care if some other debug
5977      format is making psymtabs, because they are all about to be
5978      expanded anyway.  */
5979   if ((objfile->flags & OBJF_READNOW))
5980     {
5981       dwarf2_per_objfile->using_index = 1;
5982       create_all_comp_units (dwarf2_per_objfile);
5983       create_all_type_units (dwarf2_per_objfile);
5984       dwarf2_per_objfile->quick_file_names_table
5985         = create_quick_file_names_table
5986             (dwarf2_per_objfile->all_comp_units.size ());
5987
5988       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
5989                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
5990         {
5991           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
5992
5993           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5994                                             struct dwarf2_per_cu_quick_data);
5995         }
5996
5997       /* Return 1 so that gdb sees the "quick" functions.  However,
5998          these functions will be no-ops because we will have expanded
5999          all symtabs.  */
6000       *index_kind = dw_index_kind::GDB_INDEX;
6001       return true;
6002     }
6003
6004   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6005     {
6006       *index_kind = dw_index_kind::DEBUG_NAMES;
6007       return true;
6008     }
6009
6010   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6011                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6012                              get_gdb_index_contents_from_section<dwz_file>))
6013     {
6014       *index_kind = dw_index_kind::GDB_INDEX;
6015       return true;
6016     }
6017
6018   /* ... otherwise, try to find the index in the index cache.  */
6019   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6020                              get_gdb_index_contents_from_cache,
6021                              get_gdb_index_contents_from_cache_dwz))
6022     {
6023       global_index_cache.hit ();
6024       *index_kind = dw_index_kind::GDB_INDEX;
6025       return true;
6026     }
6027
6028   global_index_cache.miss ();
6029   return false;
6030 }
6031
6032 \f
6033
6034 /* Build a partial symbol table.  */
6035
6036 void
6037 dwarf2_build_psymtabs (struct objfile *objfile)
6038 {
6039   struct dwarf2_per_objfile *dwarf2_per_objfile
6040     = get_dwarf2_per_objfile (objfile);
6041
6042   init_psymbol_list (objfile, 1024);
6043
6044   try
6045     {
6046       /* This isn't really ideal: all the data we allocate on the
6047          objfile's obstack is still uselessly kept around.  However,
6048          freeing it seems unsafe.  */
6049       psymtab_discarder psymtabs (objfile);
6050       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6051       psymtabs.keep ();
6052
6053       /* (maybe) store an index in the cache.  */
6054       global_index_cache.store (dwarf2_per_objfile);
6055     }
6056   catch (const gdb_exception_error &except)
6057     {
6058       exception_print (gdb_stderr, except);
6059     }
6060 }
6061
6062 /* Return the total length of the CU described by HEADER.  */
6063
6064 static unsigned int
6065 get_cu_length (const struct comp_unit_head *header)
6066 {
6067   return header->initial_length_size + header->length;
6068 }
6069
6070 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6071
6072 static inline bool
6073 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6074 {
6075   sect_offset bottom = cu_header->sect_off;
6076   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6077
6078   return sect_off >= bottom && sect_off < top;
6079 }
6080
6081 /* Find the base address of the compilation unit for range lists and
6082    location lists.  It will normally be specified by DW_AT_low_pc.
6083    In DWARF-3 draft 4, the base address could be overridden by
6084    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6085    compilation units with discontinuous ranges.  */
6086
6087 static void
6088 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6089 {
6090   struct attribute *attr;
6091
6092   cu->base_known = 0;
6093   cu->base_address = 0;
6094
6095   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6096   if (attr != nullptr)
6097     {
6098       cu->base_address = attr->value_as_address ();
6099       cu->base_known = 1;
6100     }
6101   else
6102     {
6103       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6104       if (attr != nullptr)
6105         {
6106           cu->base_address = attr->value_as_address ();
6107           cu->base_known = 1;
6108         }
6109     }
6110 }
6111
6112 /* Read in the comp unit header information from the debug_info at info_ptr.
6113    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6114    NOTE: This leaves members offset, first_die_offset to be filled in
6115    by the caller.  */
6116
6117 static const gdb_byte *
6118 read_comp_unit_head (struct comp_unit_head *cu_header,
6119                      const gdb_byte *info_ptr,
6120                      struct dwarf2_section_info *section,
6121                      rcuh_kind section_kind)
6122 {
6123   int signed_addr;
6124   unsigned int bytes_read;
6125   const char *filename = section->get_file_name ();
6126   bfd *abfd = section->get_bfd_owner ();
6127
6128   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6129   cu_header->initial_length_size = bytes_read;
6130   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6131   info_ptr += bytes_read;
6132   cu_header->version = read_2_bytes (abfd, info_ptr);
6133   if (cu_header->version < 2 || cu_header->version > 5)
6134     error (_("Dwarf Error: wrong version in compilation unit header "
6135            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6136            cu_header->version, filename);
6137   info_ptr += 2;
6138   if (cu_header->version < 5)
6139     switch (section_kind)
6140       {
6141       case rcuh_kind::COMPILE:
6142         cu_header->unit_type = DW_UT_compile;
6143         break;
6144       case rcuh_kind::TYPE:
6145         cu_header->unit_type = DW_UT_type;
6146         break;
6147       default:
6148         internal_error (__FILE__, __LINE__,
6149                         _("read_comp_unit_head: invalid section_kind"));
6150       }
6151   else
6152     {
6153       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6154                                                  (read_1_byte (abfd, info_ptr));
6155       info_ptr += 1;
6156       switch (cu_header->unit_type)
6157         {
6158         case DW_UT_compile:
6159         case DW_UT_partial:
6160         case DW_UT_skeleton:
6161         case DW_UT_split_compile:
6162           if (section_kind != rcuh_kind::COMPILE)
6163             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6164                    "(is %s, should be %s) [in module %s]"),
6165                    dwarf_unit_type_name (cu_header->unit_type),
6166                    dwarf_unit_type_name (DW_UT_type), filename);
6167           break;
6168         case DW_UT_type:
6169         case DW_UT_split_type:
6170           section_kind = rcuh_kind::TYPE;
6171           break;
6172         default:
6173           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6174                  "(is %#04x, should be one of: %s, %s, %s, %s or %s) "
6175                  "[in module %s]"), cu_header->unit_type,
6176                  dwarf_unit_type_name (DW_UT_compile),
6177                  dwarf_unit_type_name (DW_UT_skeleton),
6178                  dwarf_unit_type_name (DW_UT_split_compile),
6179                  dwarf_unit_type_name (DW_UT_type),
6180                  dwarf_unit_type_name (DW_UT_split_type), filename);
6181         }
6182
6183       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6184       info_ptr += 1;
6185     }
6186   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6187                                                           cu_header,
6188                                                           &bytes_read);
6189   info_ptr += bytes_read;
6190   if (cu_header->version < 5)
6191     {
6192       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6193       info_ptr += 1;
6194     }
6195   signed_addr = bfd_get_sign_extend_vma (abfd);
6196   if (signed_addr < 0)
6197     internal_error (__FILE__, __LINE__,
6198                     _("read_comp_unit_head: dwarf from non elf file"));
6199   cu_header->signed_addr_p = signed_addr;
6200
6201   bool header_has_signature = section_kind == rcuh_kind::TYPE
6202     || cu_header->unit_type == DW_UT_skeleton
6203     || cu_header->unit_type == DW_UT_split_compile;
6204
6205   if (header_has_signature)
6206     {
6207       cu_header->signature = read_8_bytes (abfd, info_ptr);
6208       info_ptr += 8;
6209     }
6210
6211   if (section_kind == rcuh_kind::TYPE)
6212     {
6213       LONGEST type_offset;
6214       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6215       info_ptr += bytes_read;
6216       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6217       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6218         error (_("Dwarf Error: Too big type_offset in compilation unit "
6219                "header (is %s) [in module %s]"), plongest (type_offset),
6220                filename);
6221     }
6222
6223   return info_ptr;
6224 }
6225
6226 /* Helper function that returns the proper abbrev section for
6227    THIS_CU.  */
6228
6229 static struct dwarf2_section_info *
6230 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6231 {
6232   struct dwarf2_section_info *abbrev;
6233   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6234
6235   if (this_cu->is_dwz)
6236     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6237   else
6238     abbrev = &dwarf2_per_objfile->abbrev;
6239
6240   return abbrev;
6241 }
6242
6243 /* Subroutine of read_and_check_comp_unit_head and
6244    read_and_check_type_unit_head to simplify them.
6245    Perform various error checking on the header.  */
6246
6247 static void
6248 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6249                             struct comp_unit_head *header,
6250                             struct dwarf2_section_info *section,
6251                             struct dwarf2_section_info *abbrev_section)
6252 {
6253   const char *filename = section->get_file_name ();
6254
6255   if (to_underlying (header->abbrev_sect_off)
6256       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6257     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6258            "(offset %s + 6) [in module %s]"),
6259            sect_offset_str (header->abbrev_sect_off),
6260            sect_offset_str (header->sect_off),
6261            filename);
6262
6263   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6264      avoid potential 32-bit overflow.  */
6265   if (((ULONGEST) header->sect_off + get_cu_length (header))
6266       > section->size)
6267     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6268            "(offset %s + 0) [in module %s]"),
6269            header->length, sect_offset_str (header->sect_off),
6270            filename);
6271 }
6272
6273 /* Read in a CU/TU header and perform some basic error checking.
6274    The contents of the header are stored in HEADER.
6275    The result is a pointer to the start of the first DIE.  */
6276
6277 static const gdb_byte *
6278 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6279                                struct comp_unit_head *header,
6280                                struct dwarf2_section_info *section,
6281                                struct dwarf2_section_info *abbrev_section,
6282                                const gdb_byte *info_ptr,
6283                                rcuh_kind section_kind)
6284 {
6285   const gdb_byte *beg_of_comp_unit = info_ptr;
6286
6287   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6288
6289   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6290
6291   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6292
6293   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6294                               abbrev_section);
6295
6296   return info_ptr;
6297 }
6298
6299 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6300
6301 static sect_offset
6302 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6303                     struct dwarf2_section_info *section,
6304                     sect_offset sect_off)
6305 {
6306   bfd *abfd = section->get_bfd_owner ();
6307   const gdb_byte *info_ptr;
6308   unsigned int initial_length_size, offset_size;
6309   uint16_t version;
6310
6311   section->read (dwarf2_per_objfile->objfile);
6312   info_ptr = section->buffer + to_underlying (sect_off);
6313   read_initial_length (abfd, info_ptr, &initial_length_size);
6314   offset_size = initial_length_size == 4 ? 4 : 8;
6315   info_ptr += initial_length_size;
6316
6317   version = read_2_bytes (abfd, info_ptr);
6318   info_ptr += 2;
6319   if (version >= 5)
6320     {
6321       /* Skip unit type and address size.  */
6322       info_ptr += 2;
6323     }
6324
6325   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6326 }
6327
6328 /* Allocate a new partial symtab for file named NAME and mark this new
6329    partial symtab as being an include of PST.  */
6330
6331 static void
6332 dwarf2_create_include_psymtab (const char *name, dwarf2_psymtab *pst,
6333                                struct objfile *objfile)
6334 {
6335   dwarf2_psymtab *subpst = new dwarf2_psymtab (name, objfile);
6336
6337   if (!IS_ABSOLUTE_PATH (subpst->filename))
6338     {
6339       /* It shares objfile->objfile_obstack.  */
6340       subpst->dirname = pst->dirname;
6341     }
6342
6343   subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
6344   subpst->dependencies[0] = pst;
6345   subpst->number_of_dependencies = 1;
6346
6347   /* No private part is necessary for include psymtabs.  This property
6348      can be used to differentiate between such include psymtabs and
6349      the regular ones.  */
6350   subpst->per_cu_data = nullptr;
6351 }
6352
6353 /* Read the Line Number Program data and extract the list of files
6354    included by the source file represented by PST.  Build an include
6355    partial symtab for each of these included files.  */
6356
6357 static void
6358 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6359                                struct die_info *die,
6360                                dwarf2_psymtab *pst)
6361 {
6362   line_header_up lh;
6363   struct attribute *attr;
6364
6365   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6366   if (attr != nullptr)
6367     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6368   if (lh == NULL)
6369     return;  /* No linetable, so no includes.  */
6370
6371   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6372      that we pass in the raw text_low here; that is ok because we're
6373      only decoding the line table to make include partial symtabs, and
6374      so the addresses aren't really used.  */
6375   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6376                       pst->raw_text_low (), 1);
6377 }
6378
6379 static hashval_t
6380 hash_signatured_type (const void *item)
6381 {
6382   const struct signatured_type *sig_type
6383     = (const struct signatured_type *) item;
6384
6385   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6386   return sig_type->signature;
6387 }
6388
6389 static int
6390 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6391 {
6392   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6393   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6394
6395   return lhs->signature == rhs->signature;
6396 }
6397
6398 /* Allocate a hash table for signatured types.  */
6399
6400 static htab_up
6401 allocate_signatured_type_table (struct objfile *objfile)
6402 {
6403   return htab_up (htab_create_alloc (41,
6404                                      hash_signatured_type,
6405                                      eq_signatured_type,
6406                                      NULL, xcalloc, xfree));
6407 }
6408
6409 /* A helper function to add a signatured type CU to a table.  */
6410
6411 static int
6412 add_signatured_type_cu_to_table (void **slot, void *datum)
6413 {
6414   struct signatured_type *sigt = (struct signatured_type *) *slot;
6415   std::vector<signatured_type *> *all_type_units
6416     = (std::vector<signatured_type *> *) datum;
6417
6418   all_type_units->push_back (sigt);
6419
6420   return 1;
6421 }
6422
6423 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6424    and fill them into TYPES_HTAB.  It will process only type units,
6425    therefore DW_UT_type.  */
6426
6427 static void
6428 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6429                               struct dwo_file *dwo_file,
6430                               dwarf2_section_info *section, htab_up &types_htab,
6431                               rcuh_kind section_kind)
6432 {
6433   struct objfile *objfile = dwarf2_per_objfile->objfile;
6434   struct dwarf2_section_info *abbrev_section;
6435   bfd *abfd;
6436   const gdb_byte *info_ptr, *end_ptr;
6437
6438   abbrev_section = (dwo_file != NULL
6439                     ? &dwo_file->sections.abbrev
6440                     : &dwarf2_per_objfile->abbrev);
6441
6442   if (dwarf_read_debug)
6443     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6444                         section->get_name (),
6445                         abbrev_section->get_file_name ());
6446
6447   section->read (objfile);
6448   info_ptr = section->buffer;
6449
6450   if (info_ptr == NULL)
6451     return;
6452
6453   /* We can't set abfd until now because the section may be empty or
6454      not present, in which case the bfd is unknown.  */
6455   abfd = section->get_bfd_owner ();
6456
6457   /* We don't use cutu_reader here because we don't need to read
6458      any dies: the signature is in the header.  */
6459
6460   end_ptr = info_ptr + section->size;
6461   while (info_ptr < end_ptr)
6462     {
6463       struct signatured_type *sig_type;
6464       struct dwo_unit *dwo_tu;
6465       void **slot;
6466       const gdb_byte *ptr = info_ptr;
6467       struct comp_unit_head header;
6468       unsigned int length;
6469
6470       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6471
6472       /* Initialize it due to a false compiler warning.  */
6473       header.signature = -1;
6474       header.type_cu_offset_in_tu = (cu_offset) -1;
6475
6476       /* We need to read the type's signature in order to build the hash
6477          table, but we don't need anything else just yet.  */
6478
6479       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6480                                            abbrev_section, ptr, section_kind);
6481
6482       length = get_cu_length (&header);
6483
6484       /* Skip dummy type units.  */
6485       if (ptr >= info_ptr + length
6486           || peek_abbrev_code (abfd, ptr) == 0
6487           || header.unit_type != DW_UT_type)
6488         {
6489           info_ptr += length;
6490           continue;
6491         }
6492
6493       if (types_htab == NULL)
6494         {
6495           if (dwo_file)
6496             types_htab = allocate_dwo_unit_table (objfile);
6497           else
6498             types_htab = allocate_signatured_type_table (objfile);
6499         }
6500
6501       if (dwo_file)
6502         {
6503           sig_type = NULL;
6504           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6505                                    struct dwo_unit);
6506           dwo_tu->dwo_file = dwo_file;
6507           dwo_tu->signature = header.signature;
6508           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6509           dwo_tu->section = section;
6510           dwo_tu->sect_off = sect_off;
6511           dwo_tu->length = length;
6512         }
6513       else
6514         {
6515           /* N.B.: type_offset is not usable if this type uses a DWO file.
6516              The real type_offset is in the DWO file.  */
6517           dwo_tu = NULL;
6518           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6519                                      struct signatured_type);
6520           sig_type->signature = header.signature;
6521           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6522           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6523           sig_type->per_cu.is_debug_types = 1;
6524           sig_type->per_cu.section = section;
6525           sig_type->per_cu.sect_off = sect_off;
6526           sig_type->per_cu.length = length;
6527         }
6528
6529       slot = htab_find_slot (types_htab.get (),
6530                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6531                              INSERT);
6532       gdb_assert (slot != NULL);
6533       if (*slot != NULL)
6534         {
6535           sect_offset dup_sect_off;
6536
6537           if (dwo_file)
6538             {
6539               const struct dwo_unit *dup_tu
6540                 = (const struct dwo_unit *) *slot;
6541
6542               dup_sect_off = dup_tu->sect_off;
6543             }
6544           else
6545             {
6546               const struct signatured_type *dup_tu
6547                 = (const struct signatured_type *) *slot;
6548
6549               dup_sect_off = dup_tu->per_cu.sect_off;
6550             }
6551
6552           complaint (_("debug type entry at offset %s is duplicate to"
6553                        " the entry at offset %s, signature %s"),
6554                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6555                      hex_string (header.signature));
6556         }
6557       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6558
6559       if (dwarf_read_debug > 1)
6560         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6561                             sect_offset_str (sect_off),
6562                             hex_string (header.signature));
6563
6564       info_ptr += length;
6565     }
6566 }
6567
6568 /* Create the hash table of all entries in the .debug_types
6569    (or .debug_types.dwo) section(s).
6570    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6571    otherwise it is NULL.
6572
6573    The result is a pointer to the hash table or NULL if there are no types.
6574
6575    Note: This function processes DWO files only, not DWP files.  */
6576
6577 static void
6578 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6579                                struct dwo_file *dwo_file,
6580                                gdb::array_view<dwarf2_section_info> type_sections,
6581                                htab_up &types_htab)
6582 {
6583   for (dwarf2_section_info &section : type_sections)
6584     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, &section,
6585                                   types_htab, rcuh_kind::TYPE);
6586 }
6587
6588 /* Create the hash table of all entries in the .debug_types section,
6589    and initialize all_type_units.
6590    The result is zero if there is an error (e.g. missing .debug_types section),
6591    otherwise non-zero.  */
6592
6593 static int
6594 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6595 {
6596   htab_up types_htab;
6597
6598   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6599                                 &dwarf2_per_objfile->info, types_htab,
6600                                 rcuh_kind::COMPILE);
6601   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6602                                  dwarf2_per_objfile->types, types_htab);
6603   if (types_htab == NULL)
6604     {
6605       dwarf2_per_objfile->signatured_types = NULL;
6606       return 0;
6607     }
6608
6609   dwarf2_per_objfile->signatured_types = std::move (types_htab);
6610
6611   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6612   dwarf2_per_objfile->all_type_units.reserve
6613     (htab_elements (dwarf2_per_objfile->signatured_types.get ()));
6614
6615   htab_traverse_noresize (dwarf2_per_objfile->signatured_types.get (),
6616                           add_signatured_type_cu_to_table,
6617                           &dwarf2_per_objfile->all_type_units);
6618
6619   return 1;
6620 }
6621
6622 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6623    If SLOT is non-NULL, it is the entry to use in the hash table.
6624    Otherwise we find one.  */
6625
6626 static struct signatured_type *
6627 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6628                void **slot)
6629 {
6630   struct objfile *objfile = dwarf2_per_objfile->objfile;
6631
6632   if (dwarf2_per_objfile->all_type_units.size ()
6633       == dwarf2_per_objfile->all_type_units.capacity ())
6634     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6635
6636   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6637                                               struct signatured_type);
6638
6639   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6640   sig_type->signature = sig;
6641   sig_type->per_cu.is_debug_types = 1;
6642   if (dwarf2_per_objfile->using_index)
6643     {
6644       sig_type->per_cu.v.quick =
6645         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6646                         struct dwarf2_per_cu_quick_data);
6647     }
6648
6649   if (slot == NULL)
6650     {
6651       slot = htab_find_slot (dwarf2_per_objfile->signatured_types.get (),
6652                              sig_type, INSERT);
6653     }
6654   gdb_assert (*slot == NULL);
6655   *slot = sig_type;
6656   /* The rest of sig_type must be filled in by the caller.  */
6657   return sig_type;
6658 }
6659
6660 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6661    Fill in SIG_ENTRY with DWO_ENTRY.  */
6662
6663 static void
6664 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6665                                   struct signatured_type *sig_entry,
6666                                   struct dwo_unit *dwo_entry)
6667 {
6668   /* Make sure we're not clobbering something we don't expect to.  */
6669   gdb_assert (! sig_entry->per_cu.queued);
6670   gdb_assert (sig_entry->per_cu.cu == NULL);
6671   if (dwarf2_per_objfile->using_index)
6672     {
6673       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6674       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6675     }
6676   else
6677       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6678   gdb_assert (sig_entry->signature == dwo_entry->signature);
6679   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6680   gdb_assert (sig_entry->type_unit_group == NULL);
6681   gdb_assert (sig_entry->dwo_unit == NULL);
6682
6683   sig_entry->per_cu.section = dwo_entry->section;
6684   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6685   sig_entry->per_cu.length = dwo_entry->length;
6686   sig_entry->per_cu.reading_dwo_directly = 1;
6687   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6688   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6689   sig_entry->dwo_unit = dwo_entry;
6690 }
6691
6692 /* Subroutine of lookup_signatured_type.
6693    If we haven't read the TU yet, create the signatured_type data structure
6694    for a TU to be read in directly from a DWO file, bypassing the stub.
6695    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6696    using .gdb_index, then when reading a CU we want to stay in the DWO file
6697    containing that CU.  Otherwise we could end up reading several other DWO
6698    files (due to comdat folding) to process the transitive closure of all the
6699    mentioned TUs, and that can be slow.  The current DWO file will have every
6700    type signature that it needs.
6701    We only do this for .gdb_index because in the psymtab case we already have
6702    to read all the DWOs to build the type unit groups.  */
6703
6704 static struct signatured_type *
6705 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6706 {
6707   struct dwarf2_per_objfile *dwarf2_per_objfile
6708     = cu->per_cu->dwarf2_per_objfile;
6709   struct objfile *objfile = dwarf2_per_objfile->objfile;
6710   struct dwo_file *dwo_file;
6711   struct dwo_unit find_dwo_entry, *dwo_entry;
6712   struct signatured_type find_sig_entry, *sig_entry;
6713   void **slot;
6714
6715   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6716
6717   /* If TU skeletons have been removed then we may not have read in any
6718      TUs yet.  */
6719   if (dwarf2_per_objfile->signatured_types == NULL)
6720     {
6721       dwarf2_per_objfile->signatured_types
6722         = allocate_signatured_type_table (objfile);
6723     }
6724
6725   /* We only ever need to read in one copy of a signatured type.
6726      Use the global signatured_types array to do our own comdat-folding
6727      of types.  If this is the first time we're reading this TU, and
6728      the TU has an entry in .gdb_index, replace the recorded data from
6729      .gdb_index with this TU.  */
6730
6731   find_sig_entry.signature = sig;
6732   slot = htab_find_slot (dwarf2_per_objfile->signatured_types.get (),
6733                          &find_sig_entry, INSERT);
6734   sig_entry = (struct signatured_type *) *slot;
6735
6736   /* We can get here with the TU already read, *or* in the process of being
6737      read.  Don't reassign the global entry to point to this DWO if that's
6738      the case.  Also note that if the TU is already being read, it may not
6739      have come from a DWO, the program may be a mix of Fission-compiled
6740      code and non-Fission-compiled code.  */
6741
6742   /* Have we already tried to read this TU?
6743      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6744      needn't exist in the global table yet).  */
6745   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
6746     return sig_entry;
6747
6748   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
6749      dwo_unit of the TU itself.  */
6750   dwo_file = cu->dwo_unit->dwo_file;
6751
6752   /* Ok, this is the first time we're reading this TU.  */
6753   if (dwo_file->tus == NULL)
6754     return NULL;
6755   find_dwo_entry.signature = sig;
6756   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus.get (),
6757                                              &find_dwo_entry);
6758   if (dwo_entry == NULL)
6759     return NULL;
6760
6761   /* If the global table doesn't have an entry for this TU, add one.  */
6762   if (sig_entry == NULL)
6763     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
6764
6765   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
6766   sig_entry->per_cu.tu_read = 1;
6767   return sig_entry;
6768 }
6769
6770 /* Subroutine of lookup_signatured_type.
6771    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6772    then try the DWP file.  If the TU stub (skeleton) has been removed then
6773    it won't be in .gdb_index.  */
6774
6775 static struct signatured_type *
6776 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6777 {
6778   struct dwarf2_per_objfile *dwarf2_per_objfile
6779     = cu->per_cu->dwarf2_per_objfile;
6780   struct objfile *objfile = dwarf2_per_objfile->objfile;
6781   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
6782   struct dwo_unit *dwo_entry;
6783   struct signatured_type find_sig_entry, *sig_entry;
6784   void **slot;
6785
6786   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6787   gdb_assert (dwp_file != NULL);
6788
6789   /* If TU skeletons have been removed then we may not have read in any
6790      TUs yet.  */
6791   if (dwarf2_per_objfile->signatured_types == NULL)
6792     {
6793       dwarf2_per_objfile->signatured_types
6794         = allocate_signatured_type_table (objfile);
6795     }
6796
6797   find_sig_entry.signature = sig;
6798   slot = htab_find_slot (dwarf2_per_objfile->signatured_types.get (),
6799                          &find_sig_entry, INSERT);
6800   sig_entry = (struct signatured_type *) *slot;
6801
6802   /* Have we already tried to read this TU?
6803      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6804      needn't exist in the global table yet).  */
6805   if (sig_entry != NULL)
6806     return sig_entry;
6807
6808   if (dwp_file->tus == NULL)
6809     return NULL;
6810   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
6811                                       sig, 1 /* is_debug_types */);
6812   if (dwo_entry == NULL)
6813     return NULL;
6814
6815   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
6816   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
6817
6818   return sig_entry;
6819 }
6820
6821 /* Lookup a signature based type for DW_FORM_ref_sig8.
6822    Returns NULL if signature SIG is not present in the table.
6823    It is up to the caller to complain about this.  */
6824
6825 static struct signatured_type *
6826 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6827 {
6828   struct dwarf2_per_objfile *dwarf2_per_objfile
6829     = cu->per_cu->dwarf2_per_objfile;
6830
6831   if (cu->dwo_unit
6832       && dwarf2_per_objfile->using_index)
6833     {
6834       /* We're in a DWO/DWP file, and we're using .gdb_index.
6835          These cases require special processing.  */
6836       if (get_dwp_file (dwarf2_per_objfile) == NULL)
6837         return lookup_dwo_signatured_type (cu, sig);
6838       else
6839         return lookup_dwp_signatured_type (cu, sig);
6840     }
6841   else
6842     {
6843       struct signatured_type find_entry, *entry;
6844
6845       if (dwarf2_per_objfile->signatured_types == NULL)
6846         return NULL;
6847       find_entry.signature = sig;
6848       entry = ((struct signatured_type *)
6849                htab_find (dwarf2_per_objfile->signatured_types.get (),
6850                           &find_entry));
6851       return entry;
6852     }
6853 }
6854
6855 /* Return the address base of the compile unit, which, if exists, is stored
6856    either at the attribute DW_AT_GNU_addr_base, or DW_AT_addr_base.  */
6857 static gdb::optional<ULONGEST>
6858 lookup_addr_base (struct die_info *comp_unit_die)
6859 {
6860   struct attribute *attr;
6861   attr = dwarf2_attr_no_follow (comp_unit_die, DW_AT_addr_base);
6862   if (attr == nullptr)
6863     attr = dwarf2_attr_no_follow (comp_unit_die, DW_AT_GNU_addr_base);
6864   if (attr == nullptr)
6865     return gdb::optional<ULONGEST> ();
6866   return DW_UNSND (attr);
6867 }
6868
6869 /* Return range lists base of the compile unit, which, if exists, is stored
6870    either at the attribute DW_AT_rnglists_base or DW_AT_GNU_ranges_base.  */
6871 static ULONGEST
6872 lookup_ranges_base (struct die_info *comp_unit_die)
6873 {
6874   struct attribute *attr;
6875   attr = dwarf2_attr_no_follow (comp_unit_die, DW_AT_rnglists_base);
6876   if (attr == nullptr)
6877     attr = dwarf2_attr_no_follow (comp_unit_die, DW_AT_GNU_ranges_base);
6878   if (attr == nullptr)
6879     return 0;
6880   return DW_UNSND (attr);
6881 }
6882
6883 /* Low level DIE reading support.  */
6884
6885 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
6886
6887 static void
6888 init_cu_die_reader (struct die_reader_specs *reader,
6889                     struct dwarf2_cu *cu,
6890                     struct dwarf2_section_info *section,
6891                     struct dwo_file *dwo_file,
6892                     struct abbrev_table *abbrev_table)
6893 {
6894   gdb_assert (section->readin && section->buffer != NULL);
6895   reader->abfd = section->get_bfd_owner ();
6896   reader->cu = cu;
6897   reader->dwo_file = dwo_file;
6898   reader->die_section = section;
6899   reader->buffer = section->buffer;
6900   reader->buffer_end = section->buffer + section->size;
6901   reader->abbrev_table = abbrev_table;
6902 }
6903
6904 /* Subroutine of cutu_reader to simplify it.
6905    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
6906    There's just a lot of work to do, and cutu_reader is big enough
6907    already.
6908
6909    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
6910    from it to the DIE in the DWO.  If NULL we are skipping the stub.
6911    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
6912    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
6913    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
6914    STUB_COMP_DIR may be non-NULL.
6915    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE
6916    are filled in with the info of the DIE from the DWO file.
6917    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
6918    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
6919    kept around for at least as long as *RESULT_READER.
6920
6921    The result is non-zero if a valid (non-dummy) DIE was found.  */
6922
6923 static int
6924 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
6925                         struct dwo_unit *dwo_unit,
6926                         struct die_info *stub_comp_unit_die,
6927                         const char *stub_comp_dir,
6928                         struct die_reader_specs *result_reader,
6929                         const gdb_byte **result_info_ptr,
6930                         struct die_info **result_comp_unit_die,
6931                         abbrev_table_up *result_dwo_abbrev_table)
6932 {
6933   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6934   struct objfile *objfile = dwarf2_per_objfile->objfile;
6935   struct dwarf2_cu *cu = this_cu->cu;
6936   bfd *abfd;
6937   const gdb_byte *begin_info_ptr, *info_ptr;
6938   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
6939   int i,num_extra_attrs;
6940   struct dwarf2_section_info *dwo_abbrev_section;
6941   struct die_info *comp_unit_die;
6942
6943   /* At most one of these may be provided.  */
6944   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
6945
6946   /* These attributes aren't processed until later:
6947      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
6948      DW_AT_comp_dir is used now, to find the DWO file, but it is also
6949      referenced later.  However, these attributes are found in the stub
6950      which we won't have later.  In order to not impose this complication
6951      on the rest of the code, we read them here and copy them to the
6952      DWO CU/TU die.  */
6953
6954   stmt_list = NULL;
6955   low_pc = NULL;
6956   high_pc = NULL;
6957   ranges = NULL;
6958   comp_dir = NULL;
6959
6960   if (stub_comp_unit_die != NULL)
6961     {
6962       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
6963          DWO file.  */
6964       if (! this_cu->is_debug_types)
6965         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
6966       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
6967       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
6968       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
6969       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
6970
6971       cu->addr_base = lookup_addr_base (stub_comp_unit_die);
6972
6973       /* There should be a DW_AT_rnglists_base (DW_AT_GNU_ranges_base) attribute
6974          here (if needed). We need the value before we can process
6975          DW_AT_ranges.  */
6976       cu->ranges_base = lookup_ranges_base (stub_comp_unit_die);
6977     }
6978   else if (stub_comp_dir != NULL)
6979     {
6980       /* Reconstruct the comp_dir attribute to simplify the code below.  */
6981       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
6982       comp_dir->name = DW_AT_comp_dir;
6983       comp_dir->form = DW_FORM_string;
6984       DW_STRING_IS_CANONICAL (comp_dir) = 0;
6985       DW_STRING (comp_dir) = stub_comp_dir;
6986     }
6987
6988   /* Set up for reading the DWO CU/TU.  */
6989   cu->dwo_unit = dwo_unit;
6990   dwarf2_section_info *section = dwo_unit->section;
6991   section->read (objfile);
6992   abfd = section->get_bfd_owner ();
6993   begin_info_ptr = info_ptr = (section->buffer
6994                                + to_underlying (dwo_unit->sect_off));
6995   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
6996
6997   if (this_cu->is_debug_types)
6998     {
6999       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7000
7001       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7002                                                 &cu->header, section,
7003                                                 dwo_abbrev_section,
7004                                                 info_ptr, rcuh_kind::TYPE);
7005       /* This is not an assert because it can be caused by bad debug info.  */
7006       if (sig_type->signature != cu->header.signature)
7007         {
7008           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7009                    " TU at offset %s [in module %s]"),
7010                  hex_string (sig_type->signature),
7011                  hex_string (cu->header.signature),
7012                  sect_offset_str (dwo_unit->sect_off),
7013                  bfd_get_filename (abfd));
7014         }
7015       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7016       /* For DWOs coming from DWP files, we don't know the CU length
7017          nor the type's offset in the TU until now.  */
7018       dwo_unit->length = get_cu_length (&cu->header);
7019       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7020
7021       /* Establish the type offset that can be used to lookup the type.
7022          For DWO files, we don't know it until now.  */
7023       sig_type->type_offset_in_section
7024         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7025     }
7026   else
7027     {
7028       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7029                                                 &cu->header, section,
7030                                                 dwo_abbrev_section,
7031                                                 info_ptr, rcuh_kind::COMPILE);
7032       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7033       /* For DWOs coming from DWP files, we don't know the CU length
7034          until now.  */
7035       dwo_unit->length = get_cu_length (&cu->header);
7036     }
7037
7038   *result_dwo_abbrev_table
7039     = abbrev_table_read_table (objfile, dwo_abbrev_section,
7040                                cu->header.abbrev_sect_off);
7041   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7042                       result_dwo_abbrev_table->get ());
7043
7044   /* Read in the die, but leave space to copy over the attributes
7045      from the stub.  This has the benefit of simplifying the rest of
7046      the code - all the work to maintain the illusion of a single
7047      DW_TAG_{compile,type}_unit DIE is done here.  */
7048   num_extra_attrs = ((stmt_list != NULL)
7049                      + (low_pc != NULL)
7050                      + (high_pc != NULL)
7051                      + (ranges != NULL)
7052                      + (comp_dir != NULL));
7053   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7054                               num_extra_attrs);
7055
7056   /* Copy over the attributes from the stub to the DIE we just read in.  */
7057   comp_unit_die = *result_comp_unit_die;
7058   i = comp_unit_die->num_attrs;
7059   if (stmt_list != NULL)
7060     comp_unit_die->attrs[i++] = *stmt_list;
7061   if (low_pc != NULL)
7062     comp_unit_die->attrs[i++] = *low_pc;
7063   if (high_pc != NULL)
7064     comp_unit_die->attrs[i++] = *high_pc;
7065   if (ranges != NULL)
7066     comp_unit_die->attrs[i++] = *ranges;
7067   if (comp_dir != NULL)
7068     comp_unit_die->attrs[i++] = *comp_dir;
7069   comp_unit_die->num_attrs += num_extra_attrs;
7070
7071   if (dwarf_die_debug)
7072     {
7073       fprintf_unfiltered (gdb_stdlog,
7074                           "Read die from %s@0x%x of %s:\n",
7075                           section->get_name (),
7076                           (unsigned) (begin_info_ptr - section->buffer),
7077                           bfd_get_filename (abfd));
7078       dump_die (comp_unit_die, dwarf_die_debug);
7079     }
7080
7081   /* Skip dummy compilation units.  */
7082   if (info_ptr >= begin_info_ptr + dwo_unit->length
7083       || peek_abbrev_code (abfd, info_ptr) == 0)
7084     return 0;
7085
7086   *result_info_ptr = info_ptr;
7087   return 1;
7088 }
7089
7090 /* Return the signature of the compile unit, if found. In DWARF 4 and before,
7091    the signature is in the DW_AT_GNU_dwo_id attribute. In DWARF 5 and later, the
7092    signature is part of the header.  */
7093 static gdb::optional<ULONGEST>
7094 lookup_dwo_id (struct dwarf2_cu *cu, struct die_info* comp_unit_die)
7095 {
7096   if (cu->header.version >= 5)
7097     return cu->header.signature;
7098   struct attribute *attr;
7099   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7100   if (attr == nullptr)
7101     return gdb::optional<ULONGEST> ();
7102   return DW_UNSND (attr);
7103 }
7104
7105 /* Subroutine of cutu_reader to simplify it.
7106    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7107    Returns NULL if the specified DWO unit cannot be found.  */
7108
7109 static struct dwo_unit *
7110 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7111                  struct die_info *comp_unit_die,
7112                  const char *dwo_name)
7113 {
7114   struct dwarf2_cu *cu = this_cu->cu;
7115   struct dwo_unit *dwo_unit;
7116   const char *comp_dir;
7117
7118   gdb_assert (cu != NULL);
7119
7120   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7121   dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
7122   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7123
7124   if (this_cu->is_debug_types)
7125     {
7126       struct signatured_type *sig_type;
7127
7128       /* Since this_cu is the first member of struct signatured_type,
7129          we can go from a pointer to one to a pointer to the other.  */
7130       sig_type = (struct signatured_type *) this_cu;
7131       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7132     }
7133   else
7134     {
7135       gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
7136       if (!signature.has_value ())
7137         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7138                  " [in module %s]"),
7139                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7140       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7141                                        *signature);
7142     }
7143
7144   return dwo_unit;
7145 }
7146
7147 /* Subroutine of cutu_reader to simplify it.
7148    See it for a description of the parameters.
7149    Read a TU directly from a DWO file, bypassing the stub.  */
7150
7151 void
7152 cutu_reader::init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7153                                         int use_existing_cu, int keep)
7154 {
7155   struct signatured_type *sig_type;
7156   struct die_reader_specs reader;
7157
7158   /* Verify we can do the following downcast, and that we have the
7159      data we need.  */
7160   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7161   sig_type = (struct signatured_type *) this_cu;
7162   gdb_assert (sig_type->dwo_unit != NULL);
7163
7164   if (use_existing_cu && this_cu->cu != NULL)
7165     {
7166       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7167       /* There's no need to do the rereading_dwo_cu handling that
7168          cutu_reader does since we don't read the stub.  */
7169     }
7170   else
7171     {
7172       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7173       gdb_assert (this_cu->cu == NULL);
7174       m_new_cu.reset (new dwarf2_cu (this_cu));
7175     }
7176
7177   /* A future optimization, if needed, would be to use an existing
7178      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7179      could share abbrev tables.  */
7180
7181   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7182                               NULL /* stub_comp_unit_die */,
7183                               sig_type->dwo_unit->dwo_file->comp_dir,
7184                               &reader, &info_ptr,
7185                               &comp_unit_die,
7186                               &m_dwo_abbrev_table) == 0)
7187     {
7188       /* Dummy die.  */
7189       dummy_p = true;
7190     }
7191 }
7192
7193 /* Initialize a CU (or TU) and read its DIEs.
7194    If the CU defers to a DWO file, read the DWO file as well.
7195
7196    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7197    Otherwise the table specified in the comp unit header is read in and used.
7198    This is an optimization for when we already have the abbrev table.
7199
7200    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7201    Otherwise, a new CU is allocated with xmalloc.
7202
7203    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7204    read_in_chain.  Otherwise the dwarf2_cu data is freed at the
7205    end.  */
7206
7207 cutu_reader::cutu_reader (struct dwarf2_per_cu_data *this_cu,
7208                           struct abbrev_table *abbrev_table,
7209                           int use_existing_cu, int keep,
7210                           bool skip_partial)
7211   : die_reader_specs {},
7212     m_this_cu (this_cu),
7213     m_keep (keep)
7214 {
7215   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7216   struct objfile *objfile = dwarf2_per_objfile->objfile;
7217   struct dwarf2_section_info *section = this_cu->section;
7218   bfd *abfd = section->get_bfd_owner ();
7219   struct dwarf2_cu *cu;
7220   const gdb_byte *begin_info_ptr;
7221   struct signatured_type *sig_type = NULL;
7222   struct dwarf2_section_info *abbrev_section;
7223   /* Non-zero if CU currently points to a DWO file and we need to
7224      reread it.  When this happens we need to reread the skeleton die
7225      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7226   int rereading_dwo_cu = 0;
7227
7228   if (dwarf_die_debug)
7229     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7230                         this_cu->is_debug_types ? "type" : "comp",
7231                         sect_offset_str (this_cu->sect_off));
7232
7233   if (use_existing_cu)
7234     gdb_assert (keep);
7235
7236   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7237      file (instead of going through the stub), short-circuit all of this.  */
7238   if (this_cu->reading_dwo_directly)
7239     {
7240       /* Narrow down the scope of possibilities to have to understand.  */
7241       gdb_assert (this_cu->is_debug_types);
7242       gdb_assert (abbrev_table == NULL);
7243       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep);
7244       return;
7245     }
7246
7247   /* This is cheap if the section is already read in.  */
7248   section->read (objfile);
7249
7250   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7251
7252   abbrev_section = get_abbrev_section_for_cu (this_cu);
7253
7254   if (use_existing_cu && this_cu->cu != NULL)
7255     {
7256       cu = this_cu->cu;
7257       /* If this CU is from a DWO file we need to start over, we need to
7258          refetch the attributes from the skeleton CU.
7259          This could be optimized by retrieving those attributes from when we
7260          were here the first time: the previous comp_unit_die was stored in
7261          comp_unit_obstack.  But there's no data yet that we need this
7262          optimization.  */
7263       if (cu->dwo_unit != NULL)
7264         rereading_dwo_cu = 1;
7265     }
7266   else
7267     {
7268       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7269       gdb_assert (this_cu->cu == NULL);
7270       m_new_cu.reset (new dwarf2_cu (this_cu));
7271       cu = m_new_cu.get ();
7272     }
7273
7274   /* Get the header.  */
7275   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7276     {
7277       /* We already have the header, there's no need to read it in again.  */
7278       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7279     }
7280   else
7281     {
7282       if (this_cu->is_debug_types)
7283         {
7284           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7285                                                     &cu->header, section,
7286                                                     abbrev_section, info_ptr,
7287                                                     rcuh_kind::TYPE);
7288
7289           /* Since per_cu is the first member of struct signatured_type,
7290              we can go from a pointer to one to a pointer to the other.  */
7291           sig_type = (struct signatured_type *) this_cu;
7292           gdb_assert (sig_type->signature == cu->header.signature);
7293           gdb_assert (sig_type->type_offset_in_tu
7294                       == cu->header.type_cu_offset_in_tu);
7295           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7296
7297           /* LENGTH has not been set yet for type units if we're
7298              using .gdb_index.  */
7299           this_cu->length = get_cu_length (&cu->header);
7300
7301           /* Establish the type offset that can be used to lookup the type.  */
7302           sig_type->type_offset_in_section =
7303             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7304
7305           this_cu->dwarf_version = cu->header.version;
7306         }
7307       else
7308         {
7309           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7310                                                     &cu->header, section,
7311                                                     abbrev_section,
7312                                                     info_ptr,
7313                                                     rcuh_kind::COMPILE);
7314
7315           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7316           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7317           this_cu->dwarf_version = cu->header.version;
7318         }
7319     }
7320
7321   /* Skip dummy compilation units.  */
7322   if (info_ptr >= begin_info_ptr + this_cu->length
7323       || peek_abbrev_code (abfd, info_ptr) == 0)
7324     {
7325       dummy_p = true;
7326       return;
7327     }
7328
7329   /* If we don't have them yet, read the abbrevs for this compilation unit.
7330      And if we need to read them now, make sure they're freed when we're
7331      done.  */
7332   if (abbrev_table != NULL)
7333     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7334   else
7335     {
7336       m_abbrev_table_holder
7337         = abbrev_table_read_table (objfile, abbrev_section,
7338                                    cu->header.abbrev_sect_off);
7339       abbrev_table = m_abbrev_table_holder.get ();
7340     }
7341
7342   /* Read the top level CU/TU die.  */
7343   init_cu_die_reader (this, cu, section, NULL, abbrev_table);
7344   info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
7345
7346   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7347     {
7348       dummy_p = true;
7349       return;
7350     }
7351
7352   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7353      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7354      table from the DWO file and pass the ownership over to us.  It will be
7355      referenced from READER, so we must make sure to free it after we're done
7356      with READER.
7357
7358      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7359      DWO CU, that this test will fail (the attribute will not be present).  */
7360   const char *dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
7361   if (dwo_name != nullptr)
7362     {
7363       struct dwo_unit *dwo_unit;
7364       struct die_info *dwo_comp_unit_die;
7365
7366       if (comp_unit_die->has_children)
7367         {
7368           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7369                        " has children (offset %s) [in module %s]"),
7370                      sect_offset_str (this_cu->sect_off),
7371                      bfd_get_filename (abfd));
7372         }
7373       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die, dwo_name);
7374       if (dwo_unit != NULL)
7375         {
7376           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7377                                       comp_unit_die, NULL,
7378                                       this, &info_ptr,
7379                                       &dwo_comp_unit_die,
7380                                       &m_dwo_abbrev_table) == 0)
7381             {
7382               /* Dummy die.  */
7383               dummy_p = true;
7384               return;
7385             }
7386           comp_unit_die = dwo_comp_unit_die;
7387         }
7388       else
7389         {
7390           /* Yikes, we couldn't find the rest of the DIE, we only have
7391              the stub.  A complaint has already been logged.  There's
7392              not much more we can do except pass on the stub DIE to
7393              die_reader_func.  We don't want to throw an error on bad
7394              debug info.  */
7395         }
7396     }
7397 }
7398
7399 cutu_reader::~cutu_reader ()
7400 {
7401   /* Done, clean up.  */
7402   if (m_new_cu != NULL && m_keep && !dummy_p)
7403     {
7404       struct dwarf2_per_objfile *dwarf2_per_objfile
7405         = m_this_cu->dwarf2_per_objfile;
7406       /* Link this CU into read_in_chain.  */
7407       m_this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7408       dwarf2_per_objfile->read_in_chain = m_this_cu;
7409       /* The chain owns it now.  */
7410       m_new_cu.release ();
7411     }
7412 }
7413
7414 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name (DW_AT_dwo_name)
7415    if present. DWO_FILE, if non-NULL, is the DWO file to read (the caller is
7416    assumed to have already done the lookup to find the DWO file).
7417
7418    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7419    THIS_CU->is_debug_types, but nothing else.
7420
7421    We fill in THIS_CU->length.
7422
7423    THIS_CU->cu is always freed when done.
7424    This is done in order to not leave THIS_CU->cu in a state where we have
7425    to care whether it refers to the "main" CU or the DWO CU.
7426
7427    When parent_cu is passed, it is used to provide a default value for
7428    str_offsets_base and addr_base from the parent.  */
7429
7430 cutu_reader::cutu_reader (struct dwarf2_per_cu_data *this_cu,
7431                           struct dwarf2_cu *parent_cu,
7432                           struct dwo_file *dwo_file)
7433   : die_reader_specs {},
7434     m_this_cu (this_cu)
7435 {
7436   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7437   struct objfile *objfile = dwarf2_per_objfile->objfile;
7438   struct dwarf2_section_info *section = this_cu->section;
7439   bfd *abfd = section->get_bfd_owner ();
7440   struct dwarf2_section_info *abbrev_section;
7441   const gdb_byte *begin_info_ptr, *info_ptr;
7442
7443   if (dwarf_die_debug)
7444     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7445                         this_cu->is_debug_types ? "type" : "comp",
7446                         sect_offset_str (this_cu->sect_off));
7447
7448   gdb_assert (this_cu->cu == NULL);
7449
7450   abbrev_section = (dwo_file != NULL
7451                     ? &dwo_file->sections.abbrev
7452                     : get_abbrev_section_for_cu (this_cu));
7453
7454   /* This is cheap if the section is already read in.  */
7455   section->read (objfile);
7456
7457   m_new_cu.reset (new dwarf2_cu (this_cu));
7458
7459   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7460   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7461                                             &m_new_cu->header, section,
7462                                             abbrev_section, info_ptr,
7463                                             (this_cu->is_debug_types
7464                                              ? rcuh_kind::TYPE
7465                                              : rcuh_kind::COMPILE));
7466
7467   if (parent_cu != nullptr)
7468     {
7469       m_new_cu->str_offsets_base = parent_cu->str_offsets_base;
7470       m_new_cu->addr_base = parent_cu->addr_base;
7471     }
7472   this_cu->length = get_cu_length (&m_new_cu->header);
7473
7474   /* Skip dummy compilation units.  */
7475   if (info_ptr >= begin_info_ptr + this_cu->length
7476       || peek_abbrev_code (abfd, info_ptr) == 0)
7477     {
7478       dummy_p = true;
7479       return;
7480     }
7481
7482   m_abbrev_table_holder
7483     = abbrev_table_read_table (objfile, abbrev_section,
7484                                m_new_cu->header.abbrev_sect_off);
7485
7486   init_cu_die_reader (this, m_new_cu.get (), section, dwo_file,
7487                       m_abbrev_table_holder.get ());
7488   info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
7489 }
7490
7491 \f
7492 /* Type Unit Groups.
7493
7494    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7495    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7496    so that all types coming from the same compilation (.o file) are grouped
7497    together.  A future step could be to put the types in the same symtab as
7498    the CU the types ultimately came from.  */
7499
7500 static hashval_t
7501 hash_type_unit_group (const void *item)
7502 {
7503   const struct type_unit_group *tu_group
7504     = (const struct type_unit_group *) item;
7505
7506   return hash_stmt_list_entry (&tu_group->hash);
7507 }
7508
7509 static int
7510 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7511 {
7512   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7513   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7514
7515   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7516 }
7517
7518 /* Allocate a hash table for type unit groups.  */
7519
7520 static htab_up
7521 allocate_type_unit_groups_table (struct objfile *objfile)
7522 {
7523   return htab_up (htab_create_alloc (3,
7524                                      hash_type_unit_group,
7525                                      eq_type_unit_group,
7526                                      NULL, xcalloc, xfree));
7527 }
7528
7529 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7530    partial symtabs.  We combine several TUs per psymtab to not let the size
7531    of any one psymtab grow too big.  */
7532 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7533 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7534
7535 /* Helper routine for get_type_unit_group.
7536    Create the type_unit_group object used to hold one or more TUs.  */
7537
7538 static struct type_unit_group *
7539 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7540 {
7541   struct dwarf2_per_objfile *dwarf2_per_objfile
7542     = cu->per_cu->dwarf2_per_objfile;
7543   struct objfile *objfile = dwarf2_per_objfile->objfile;
7544   struct dwarf2_per_cu_data *per_cu;
7545   struct type_unit_group *tu_group;
7546
7547   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7548                              struct type_unit_group);
7549   per_cu = &tu_group->per_cu;
7550   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7551
7552   if (dwarf2_per_objfile->using_index)
7553     {
7554       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7555                                         struct dwarf2_per_cu_quick_data);
7556     }
7557   else
7558     {
7559       unsigned int line_offset = to_underlying (line_offset_struct);
7560       dwarf2_psymtab *pst;
7561       std::string name;
7562
7563       /* Give the symtab a useful name for debug purposes.  */
7564       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7565         name = string_printf ("<type_units_%d>",
7566                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7567       else
7568         name = string_printf ("<type_units_at_0x%x>", line_offset);
7569
7570       pst = create_partial_symtab (per_cu, name.c_str ());
7571       pst->anonymous = true;
7572     }
7573
7574   tu_group->hash.dwo_unit = cu->dwo_unit;
7575   tu_group->hash.line_sect_off = line_offset_struct;
7576
7577   return tu_group;
7578 }
7579
7580 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7581    STMT_LIST is a DW_AT_stmt_list attribute.  */
7582
7583 static struct type_unit_group *
7584 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7585 {
7586   struct dwarf2_per_objfile *dwarf2_per_objfile
7587     = cu->per_cu->dwarf2_per_objfile;
7588   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7589   struct type_unit_group *tu_group;
7590   void **slot;
7591   unsigned int line_offset;
7592   struct type_unit_group type_unit_group_for_lookup;
7593
7594   if (dwarf2_per_objfile->type_unit_groups == NULL)
7595     {
7596       dwarf2_per_objfile->type_unit_groups =
7597         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7598     }
7599
7600   /* Do we need to create a new group, or can we use an existing one?  */
7601
7602   if (stmt_list)
7603     {
7604       line_offset = DW_UNSND (stmt_list);
7605       ++tu_stats->nr_symtab_sharers;
7606     }
7607   else
7608     {
7609       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7610          We can do various things here like create one group per TU or
7611          spread them over multiple groups to split up the expansion work.
7612          To avoid worst case scenarios (too many groups or too large groups)
7613          we, umm, group them in bunches.  */
7614       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7615                      | (tu_stats->nr_stmt_less_type_units
7616                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7617       ++tu_stats->nr_stmt_less_type_units;
7618     }
7619
7620   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7621   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7622   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups.get (),
7623                          &type_unit_group_for_lookup, INSERT);
7624   if (*slot != NULL)
7625     {
7626       tu_group = (struct type_unit_group *) *slot;
7627       gdb_assert (tu_group != NULL);
7628     }
7629   else
7630     {
7631       sect_offset line_offset_struct = (sect_offset) line_offset;
7632       tu_group = create_type_unit_group (cu, line_offset_struct);
7633       *slot = tu_group;
7634       ++tu_stats->nr_symtabs;
7635     }
7636
7637   return tu_group;
7638 }
7639 \f
7640 /* Partial symbol tables.  */
7641
7642 /* Create a psymtab named NAME and assign it to PER_CU.
7643
7644    The caller must fill in the following details:
7645    dirname, textlow, texthigh.  */
7646
7647 static dwarf2_psymtab *
7648 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7649 {
7650   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7651   dwarf2_psymtab *pst;
7652
7653   pst = new dwarf2_psymtab (name, objfile, 0);
7654
7655   pst->psymtabs_addrmap_supported = true;
7656
7657   /* This is the glue that links PST into GDB's symbol API.  */
7658   pst->per_cu_data = per_cu;
7659   per_cu->v.psymtab = pst;
7660
7661   return pst;
7662 }
7663
7664 /* DIE reader function for process_psymtab_comp_unit.  */
7665
7666 static void
7667 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7668                                   const gdb_byte *info_ptr,
7669                                   struct die_info *comp_unit_die,
7670                                   int want_partial_unit,
7671                                   enum language pretend_language)
7672 {
7673   struct dwarf2_cu *cu = reader->cu;
7674   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7675   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7676   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7677   CORE_ADDR baseaddr;
7678   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7679   dwarf2_psymtab *pst;
7680   enum pc_bounds_kind cu_bounds_kind;
7681   const char *filename;
7682
7683   if (comp_unit_die->tag == DW_TAG_partial_unit && !want_partial_unit)
7684     return;
7685
7686   gdb_assert (! per_cu->is_debug_types);
7687
7688   prepare_one_comp_unit (cu, comp_unit_die, pretend_language);
7689
7690   /* Allocate a new partial symbol table structure.  */
7691   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7692   if (filename == NULL)
7693     filename = "";
7694
7695   pst = create_partial_symtab (per_cu, filename);
7696
7697   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7698   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7699
7700   baseaddr = objfile->text_section_offset ();
7701
7702   dwarf2_find_base_address (comp_unit_die, cu);
7703
7704   /* Possibly set the default values of LOWPC and HIGHPC from
7705      `DW_AT_ranges'.  */
7706   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
7707                                          &best_highpc, cu, pst);
7708   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
7709     {
7710       CORE_ADDR low
7711         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
7712            - baseaddr);
7713       CORE_ADDR high
7714         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
7715            - baseaddr - 1);
7716       /* Store the contiguous range if it is not empty; it can be
7717          empty for CUs with no code.  */
7718       addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
7719                          low, high, pst);
7720     }
7721
7722   /* Check if comp unit has_children.
7723      If so, read the rest of the partial symbols from this comp unit.
7724      If not, there's no more debug_info for this comp unit.  */
7725   if (comp_unit_die->has_children)
7726     {
7727       struct partial_die_info *first_die;
7728       CORE_ADDR lowpc, highpc;
7729
7730       lowpc = ((CORE_ADDR) -1);
7731       highpc = ((CORE_ADDR) 0);
7732
7733       first_die = load_partial_dies (reader, info_ptr, 1);
7734
7735       scan_partial_symbols (first_die, &lowpc, &highpc,
7736                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
7737
7738       /* If we didn't find a lowpc, set it to highpc to avoid
7739          complaints from `maint check'.  */
7740       if (lowpc == ((CORE_ADDR) -1))
7741         lowpc = highpc;
7742
7743       /* If the compilation unit didn't have an explicit address range,
7744          then use the information extracted from its child dies.  */
7745       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
7746         {
7747           best_lowpc = lowpc;
7748           best_highpc = highpc;
7749         }
7750     }
7751   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
7752                                                  best_lowpc + baseaddr)
7753                      - baseaddr);
7754   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
7755                                                   best_highpc + baseaddr)
7756                       - baseaddr);
7757
7758   end_psymtab_common (objfile, pst);
7759
7760   if (!cu->per_cu->imported_symtabs_empty ())
7761     {
7762       int i;
7763       int len = cu->per_cu->imported_symtabs_size ();
7764
7765       /* Fill in 'dependencies' here; we fill in 'users' in a
7766          post-pass.  */
7767       pst->number_of_dependencies = len;
7768       pst->dependencies
7769         = objfile->partial_symtabs->allocate_dependencies (len);
7770       for (i = 0; i < len; ++i)
7771         {
7772           pst->dependencies[i]
7773             = cu->per_cu->imported_symtabs->at (i)->v.psymtab;
7774         }
7775
7776       cu->per_cu->imported_symtabs_free ();
7777     }
7778
7779   /* Get the list of files included in the current compilation unit,
7780      and build a psymtab for each of them.  */
7781   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
7782
7783   if (dwarf_read_debug)
7784     fprintf_unfiltered (gdb_stdlog,
7785                         "Psymtab for %s unit @%s: %s - %s"
7786                         ", %d global, %d static syms\n",
7787                         per_cu->is_debug_types ? "type" : "comp",
7788                         sect_offset_str (per_cu->sect_off),
7789                         paddress (gdbarch, pst->text_low (objfile)),
7790                         paddress (gdbarch, pst->text_high (objfile)),
7791                         pst->n_global_syms, pst->n_static_syms);
7792 }
7793
7794 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
7795    Process compilation unit THIS_CU for a psymtab.  */
7796
7797 static void
7798 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
7799                            int want_partial_unit,
7800                            enum language pretend_language)
7801 {
7802   /* If this compilation unit was already read in, free the
7803      cached copy in order to read it in again.  This is
7804      necessary because we skipped some symbols when we first
7805      read in the compilation unit (see load_partial_dies).
7806      This problem could be avoided, but the benefit is unclear.  */
7807   if (this_cu->cu != NULL)
7808     free_one_cached_comp_unit (this_cu);
7809
7810   cutu_reader reader (this_cu, NULL, 0, 0, false);
7811
7812   if (reader.dummy_p)
7813     {
7814       /* Nothing.  */
7815     }
7816   else if (this_cu->is_debug_types)
7817     build_type_psymtabs_reader (&reader, reader.info_ptr,
7818                                 reader.comp_unit_die);
7819   else
7820     process_psymtab_comp_unit_reader (&reader, reader.info_ptr,
7821                                       reader.comp_unit_die,
7822                                       want_partial_unit,
7823                                       pretend_language);
7824
7825   /* Age out any secondary CUs.  */
7826   age_cached_comp_units (this_cu->dwarf2_per_objfile);
7827 }
7828
7829 /* Reader function for build_type_psymtabs.  */
7830
7831 static void
7832 build_type_psymtabs_reader (const struct die_reader_specs *reader,
7833                             const gdb_byte *info_ptr,
7834                             struct die_info *type_unit_die)
7835 {
7836   struct dwarf2_per_objfile *dwarf2_per_objfile
7837     = reader->cu->per_cu->dwarf2_per_objfile;
7838   struct objfile *objfile = dwarf2_per_objfile->objfile;
7839   struct dwarf2_cu *cu = reader->cu;
7840   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7841   struct signatured_type *sig_type;
7842   struct type_unit_group *tu_group;
7843   struct attribute *attr;
7844   struct partial_die_info *first_die;
7845   CORE_ADDR lowpc, highpc;
7846   dwarf2_psymtab *pst;
7847
7848   gdb_assert (per_cu->is_debug_types);
7849   sig_type = (struct signatured_type *) per_cu;
7850
7851   if (! type_unit_die->has_children)
7852     return;
7853
7854   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
7855   tu_group = get_type_unit_group (cu, attr);
7856
7857   if (tu_group->tus == nullptr)
7858     tu_group->tus = new std::vector<signatured_type *>;
7859   tu_group->tus->push_back (sig_type);
7860
7861   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
7862   pst = create_partial_symtab (per_cu, "");
7863   pst->anonymous = true;
7864
7865   first_die = load_partial_dies (reader, info_ptr, 1);
7866
7867   lowpc = (CORE_ADDR) -1;
7868   highpc = (CORE_ADDR) 0;
7869   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
7870
7871   end_psymtab_common (objfile, pst);
7872 }
7873
7874 /* Struct used to sort TUs by their abbreviation table offset.  */
7875
7876 struct tu_abbrev_offset
7877 {
7878   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
7879   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
7880   {}
7881
7882   signatured_type *sig_type;
7883   sect_offset abbrev_offset;
7884 };
7885
7886 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
7887
7888 static bool
7889 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
7890                           const struct tu_abbrev_offset &b)
7891 {
7892   return a.abbrev_offset < b.abbrev_offset;
7893 }
7894
7895 /* Efficiently read all the type units.
7896    This does the bulk of the work for build_type_psymtabs.
7897
7898    The efficiency is because we sort TUs by the abbrev table they use and
7899    only read each abbrev table once.  In one program there are 200K TUs
7900    sharing 8K abbrev tables.
7901
7902    The main purpose of this function is to support building the
7903    dwarf2_per_objfile->type_unit_groups table.
7904    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
7905    can collapse the search space by grouping them by stmt_list.
7906    The savings can be significant, in the same program from above the 200K TUs
7907    share 8K stmt_list tables.
7908
7909    FUNC is expected to call get_type_unit_group, which will create the
7910    struct type_unit_group if necessary and add it to
7911    dwarf2_per_objfile->type_unit_groups.  */
7912
7913 static void
7914 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
7915 {
7916   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7917   abbrev_table_up abbrev_table;
7918   sect_offset abbrev_offset;
7919
7920   /* It's up to the caller to not call us multiple times.  */
7921   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
7922
7923   if (dwarf2_per_objfile->all_type_units.empty ())
7924     return;
7925
7926   /* TUs typically share abbrev tables, and there can be way more TUs than
7927      abbrev tables.  Sort by abbrev table to reduce the number of times we
7928      read each abbrev table in.
7929      Alternatives are to punt or to maintain a cache of abbrev tables.
7930      This is simpler and efficient enough for now.
7931
7932      Later we group TUs by their DW_AT_stmt_list value (as this defines the
7933      symtab to use).  Typically TUs with the same abbrev offset have the same
7934      stmt_list value too so in practice this should work well.
7935
7936      The basic algorithm here is:
7937
7938       sort TUs by abbrev table
7939       for each TU with same abbrev table:
7940         read abbrev table if first user
7941         read TU top level DIE
7942           [IWBN if DWO skeletons had DW_AT_stmt_list]
7943         call FUNC  */
7944
7945   if (dwarf_read_debug)
7946     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
7947
7948   /* Sort in a separate table to maintain the order of all_type_units
7949      for .gdb_index: TU indices directly index all_type_units.  */
7950   std::vector<tu_abbrev_offset> sorted_by_abbrev;
7951   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
7952
7953   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
7954     sorted_by_abbrev.emplace_back
7955       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
7956                                      sig_type->per_cu.section,
7957                                      sig_type->per_cu.sect_off));
7958
7959   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
7960              sort_tu_by_abbrev_offset);
7961
7962   abbrev_offset = (sect_offset) ~(unsigned) 0;
7963
7964   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
7965     {
7966       /* Switch to the next abbrev table if necessary.  */
7967       if (abbrev_table == NULL
7968           || tu.abbrev_offset != abbrev_offset)
7969         {
7970           abbrev_offset = tu.abbrev_offset;
7971           abbrev_table =
7972             abbrev_table_read_table (dwarf2_per_objfile->objfile,
7973                                      &dwarf2_per_objfile->abbrev,
7974                                      abbrev_offset);
7975           ++tu_stats->nr_uniq_abbrev_tables;
7976         }
7977
7978       cutu_reader reader (&tu.sig_type->per_cu, abbrev_table.get (),
7979                           0, 0, false);
7980       if (!reader.dummy_p)
7981         build_type_psymtabs_reader (&reader, reader.info_ptr,
7982                                     reader.comp_unit_die);
7983     }
7984 }
7985
7986 /* Print collected type unit statistics.  */
7987
7988 static void
7989 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
7990 {
7991   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7992
7993   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
7994   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
7995                       dwarf2_per_objfile->all_type_units.size ());
7996   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
7997                       tu_stats->nr_uniq_abbrev_tables);
7998   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
7999                       tu_stats->nr_symtabs);
8000   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8001                       tu_stats->nr_symtab_sharers);
8002   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8003                       tu_stats->nr_stmt_less_type_units);
8004   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8005                       tu_stats->nr_all_type_units_reallocs);
8006 }
8007
8008 /* Traversal function for build_type_psymtabs.  */
8009
8010 static int
8011 build_type_psymtab_dependencies (void **slot, void *info)
8012 {
8013   struct dwarf2_per_objfile *dwarf2_per_objfile
8014     = (struct dwarf2_per_objfile *) info;
8015   struct objfile *objfile = dwarf2_per_objfile->objfile;
8016   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8017   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8018   dwarf2_psymtab *pst = per_cu->v.psymtab;
8019   int len = (tu_group->tus == nullptr) ? 0 : tu_group->tus->size ();
8020   int i;
8021
8022   gdb_assert (len > 0);
8023   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8024
8025   pst->number_of_dependencies = len;
8026   pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
8027   for (i = 0; i < len; ++i)
8028     {
8029       struct signatured_type *iter = tu_group->tus->at (i);
8030       gdb_assert (iter->per_cu.is_debug_types);
8031       pst->dependencies[i] = iter->per_cu.v.psymtab;
8032       iter->type_unit_group = tu_group;
8033     }
8034
8035   delete tu_group->tus;
8036   tu_group->tus = nullptr;
8037
8038   return 1;
8039 }
8040
8041 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8042    Build partial symbol tables for the .debug_types comp-units.  */
8043
8044 static void
8045 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8046 {
8047   if (! create_all_type_units (dwarf2_per_objfile))
8048     return;
8049
8050   build_type_psymtabs_1 (dwarf2_per_objfile);
8051 }
8052
8053 /* Traversal function for process_skeletonless_type_unit.
8054    Read a TU in a DWO file and build partial symbols for it.  */
8055
8056 static int
8057 process_skeletonless_type_unit (void **slot, void *info)
8058 {
8059   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8060   struct dwarf2_per_objfile *dwarf2_per_objfile
8061     = (struct dwarf2_per_objfile *) info;
8062   struct signatured_type find_entry, *entry;
8063
8064   /* If this TU doesn't exist in the global table, add it and read it in.  */
8065
8066   if (dwarf2_per_objfile->signatured_types == NULL)
8067     {
8068       dwarf2_per_objfile->signatured_types
8069         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8070     }
8071
8072   find_entry.signature = dwo_unit->signature;
8073   slot = htab_find_slot (dwarf2_per_objfile->signatured_types.get (),
8074                          &find_entry, INSERT);
8075   /* If we've already seen this type there's nothing to do.  What's happening
8076      is we're doing our own version of comdat-folding here.  */
8077   if (*slot != NULL)
8078     return 1;
8079
8080   /* This does the job that create_all_type_units would have done for
8081      this TU.  */
8082   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8083   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8084   *slot = entry;
8085
8086   /* This does the job that build_type_psymtabs_1 would have done.  */
8087   cutu_reader reader (&entry->per_cu, NULL, 0, 0, false);
8088   if (!reader.dummy_p)
8089     build_type_psymtabs_reader (&reader, reader.info_ptr,
8090                                 reader.comp_unit_die);
8091
8092   return 1;
8093 }
8094
8095 /* Traversal function for process_skeletonless_type_units.  */
8096
8097 static int
8098 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8099 {
8100   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8101
8102   if (dwo_file->tus != NULL)
8103     htab_traverse_noresize (dwo_file->tus.get (),
8104                             process_skeletonless_type_unit, info);
8105
8106   return 1;
8107 }
8108
8109 /* Scan all TUs of DWO files, verifying we've processed them.
8110    This is needed in case a TU was emitted without its skeleton.
8111    Note: This can't be done until we know what all the DWO files are.  */
8112
8113 static void
8114 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8115 {
8116   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8117   if (get_dwp_file (dwarf2_per_objfile) == NULL
8118       && dwarf2_per_objfile->dwo_files != NULL)
8119     {
8120       htab_traverse_noresize (dwarf2_per_objfile->dwo_files.get (),
8121                               process_dwo_file_for_skeletonless_type_units,
8122                               dwarf2_per_objfile);
8123     }
8124 }
8125
8126 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8127
8128 static void
8129 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8130 {
8131   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8132     {
8133       dwarf2_psymtab *pst = per_cu->v.psymtab;
8134
8135       if (pst == NULL)
8136         continue;
8137
8138       for (int j = 0; j < pst->number_of_dependencies; ++j)
8139         {
8140           /* Set the 'user' field only if it is not already set.  */
8141           if (pst->dependencies[j]->user == NULL)
8142             pst->dependencies[j]->user = pst;
8143         }
8144     }
8145 }
8146
8147 /* Build the partial symbol table by doing a quick pass through the
8148    .debug_info and .debug_abbrev sections.  */
8149
8150 static void
8151 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8152 {
8153   struct objfile *objfile = dwarf2_per_objfile->objfile;
8154
8155   if (dwarf_read_debug)
8156     {
8157       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8158                           objfile_name (objfile));
8159     }
8160
8161   dwarf2_per_objfile->reading_partial_symbols = 1;
8162
8163   dwarf2_per_objfile->info.read (objfile);
8164
8165   /* Any cached compilation units will be linked by the per-objfile
8166      read_in_chain.  Make sure to free them when we're done.  */
8167   free_cached_comp_units freer (dwarf2_per_objfile);
8168
8169   build_type_psymtabs (dwarf2_per_objfile);
8170
8171   create_all_comp_units (dwarf2_per_objfile);
8172
8173   /* Create a temporary address map on a temporary obstack.  We later
8174      copy this to the final obstack.  */
8175   auto_obstack temp_obstack;
8176
8177   scoped_restore save_psymtabs_addrmap
8178     = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
8179                            addrmap_create_mutable (&temp_obstack));
8180
8181   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8182     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8183
8184   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8185   process_skeletonless_type_units (dwarf2_per_objfile);
8186
8187   /* Now that all TUs have been processed we can fill in the dependencies.  */
8188   if (dwarf2_per_objfile->type_unit_groups != NULL)
8189     {
8190       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups.get (),
8191                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8192     }
8193
8194   if (dwarf_read_debug)
8195     print_tu_stats (dwarf2_per_objfile);
8196
8197   set_partial_user (dwarf2_per_objfile);
8198
8199   objfile->partial_symtabs->psymtabs_addrmap
8200     = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
8201                             objfile->partial_symtabs->obstack ());
8202   /* At this point we want to keep the address map.  */
8203   save_psymtabs_addrmap.release ();
8204
8205   if (dwarf_read_debug)
8206     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8207                         objfile_name (objfile));
8208 }
8209
8210 /* Load the partial DIEs for a secondary CU into memory.
8211    This is also used when rereading a primary CU with load_all_dies.  */
8212
8213 static void
8214 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8215 {
8216   cutu_reader reader (this_cu, NULL, 1, 1, false);
8217
8218   if (!reader.dummy_p)
8219     {
8220       prepare_one_comp_unit (reader.cu, reader.comp_unit_die,
8221                              language_minimal);
8222
8223       /* Check if comp unit has_children.
8224          If so, read the rest of the partial symbols from this comp unit.
8225          If not, there's no more debug_info for this comp unit.  */
8226       if (reader.comp_unit_die->has_children)
8227         load_partial_dies (&reader, reader.info_ptr, 0);
8228     }
8229 }
8230
8231 static void
8232 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8233                               struct dwarf2_section_info *section,
8234                               struct dwarf2_section_info *abbrev_section,
8235                               unsigned int is_dwz)
8236 {
8237   const gdb_byte *info_ptr;
8238   struct objfile *objfile = dwarf2_per_objfile->objfile;
8239
8240   if (dwarf_read_debug)
8241     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8242                         section->get_name (),
8243                         section->get_file_name ());
8244
8245   section->read (objfile);
8246
8247   info_ptr = section->buffer;
8248
8249   while (info_ptr < section->buffer + section->size)
8250     {
8251       struct dwarf2_per_cu_data *this_cu;
8252
8253       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8254
8255       comp_unit_head cu_header;
8256       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8257                                      abbrev_section, info_ptr,
8258                                      rcuh_kind::COMPILE);
8259
8260       /* Save the compilation unit for later lookup.  */
8261       if (cu_header.unit_type != DW_UT_type)
8262         {
8263           this_cu = XOBNEW (&objfile->objfile_obstack,
8264                             struct dwarf2_per_cu_data);
8265           memset (this_cu, 0, sizeof (*this_cu));
8266         }
8267       else
8268         {
8269           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8270                                   struct signatured_type);
8271           memset (sig_type, 0, sizeof (*sig_type));
8272           sig_type->signature = cu_header.signature;
8273           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8274           this_cu = &sig_type->per_cu;
8275         }
8276       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8277       this_cu->sect_off = sect_off;
8278       this_cu->length = cu_header.length + cu_header.initial_length_size;
8279       this_cu->is_dwz = is_dwz;
8280       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8281       this_cu->section = section;
8282
8283       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8284
8285       info_ptr = info_ptr + this_cu->length;
8286     }
8287 }
8288
8289 /* Create a list of all compilation units in OBJFILE.
8290    This is only done for -readnow and building partial symtabs.  */
8291
8292 static void
8293 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8294 {
8295   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8296   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8297                                 &dwarf2_per_objfile->abbrev, 0);
8298
8299   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8300   if (dwz != NULL)
8301     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8302                                   1);
8303 }
8304
8305 /* Process all loaded DIEs for compilation unit CU, starting at
8306    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8307    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8308    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8309    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8310
8311 static void
8312 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8313                       CORE_ADDR *highpc, int set_addrmap,
8314                       struct dwarf2_cu *cu)
8315 {
8316   struct partial_die_info *pdi;
8317
8318   /* Now, march along the PDI's, descending into ones which have
8319      interesting children but skipping the children of the other ones,
8320      until we reach the end of the compilation unit.  */
8321
8322   pdi = first_die;
8323
8324   while (pdi != NULL)
8325     {
8326       pdi->fixup (cu);
8327
8328       /* Anonymous namespaces or modules have no name but have interesting
8329          children, so we need to look at them.  Ditto for anonymous
8330          enums.  */
8331
8332       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8333           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8334           || pdi->tag == DW_TAG_imported_unit
8335           || pdi->tag == DW_TAG_inlined_subroutine)
8336         {
8337           switch (pdi->tag)
8338             {
8339             case DW_TAG_subprogram:
8340             case DW_TAG_inlined_subroutine:
8341               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8342               break;
8343             case DW_TAG_constant:
8344             case DW_TAG_variable:
8345             case DW_TAG_typedef:
8346             case DW_TAG_union_type:
8347               if (!pdi->is_declaration)
8348                 {
8349                   add_partial_symbol (pdi, cu);
8350                 }
8351               break;
8352             case DW_TAG_class_type:
8353             case DW_TAG_interface_type:
8354             case DW_TAG_structure_type:
8355               if (!pdi->is_declaration)
8356                 {
8357                   add_partial_symbol (pdi, cu);
8358                 }
8359               if ((cu->language == language_rust
8360                    || cu->language == language_cplus) && pdi->has_children)
8361                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8362                                       set_addrmap, cu);
8363               break;
8364             case DW_TAG_enumeration_type:
8365               if (!pdi->is_declaration)
8366                 add_partial_enumeration (pdi, cu);
8367               break;
8368             case DW_TAG_base_type:
8369             case DW_TAG_subrange_type:
8370               /* File scope base type definitions are added to the partial
8371                  symbol table.  */
8372               add_partial_symbol (pdi, cu);
8373               break;
8374             case DW_TAG_namespace:
8375               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8376               break;
8377             case DW_TAG_module:
8378               if (!pdi->is_declaration)
8379                 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8380               break;
8381             case DW_TAG_imported_unit:
8382               {
8383                 struct dwarf2_per_cu_data *per_cu;
8384
8385                 /* For now we don't handle imported units in type units.  */
8386                 if (cu->per_cu->is_debug_types)
8387                   {
8388                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8389                              " supported in type units [in module %s]"),
8390                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8391                   }
8392
8393                 per_cu = dwarf2_find_containing_comp_unit
8394                            (pdi->d.sect_off, pdi->is_dwz,
8395                             cu->per_cu->dwarf2_per_objfile);
8396
8397                 /* Go read the partial unit, if needed.  */
8398                 if (per_cu->v.psymtab == NULL)
8399                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8400
8401                 cu->per_cu->imported_symtabs_push (per_cu);
8402               }
8403               break;
8404             case DW_TAG_imported_declaration:
8405               add_partial_symbol (pdi, cu);
8406               break;
8407             default:
8408               break;
8409             }
8410         }
8411
8412       /* If the die has a sibling, skip to the sibling.  */
8413
8414       pdi = pdi->die_sibling;
8415     }
8416 }
8417
8418 /* Functions used to compute the fully scoped name of a partial DIE.
8419
8420    Normally, this is simple.  For C++, the parent DIE's fully scoped
8421    name is concatenated with "::" and the partial DIE's name.
8422    Enumerators are an exception; they use the scope of their parent
8423    enumeration type, i.e. the name of the enumeration type is not
8424    prepended to the enumerator.
8425
8426    There are two complexities.  One is DW_AT_specification; in this
8427    case "parent" means the parent of the target of the specification,
8428    instead of the direct parent of the DIE.  The other is compilers
8429    which do not emit DW_TAG_namespace; in this case we try to guess
8430    the fully qualified name of structure types from their members'
8431    linkage names.  This must be done using the DIE's children rather
8432    than the children of any DW_AT_specification target.  We only need
8433    to do this for structures at the top level, i.e. if the target of
8434    any DW_AT_specification (if any; otherwise the DIE itself) does not
8435    have a parent.  */
8436
8437 /* Compute the scope prefix associated with PDI's parent, in
8438    compilation unit CU.  The result will be allocated on CU's
8439    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8440    field.  NULL is returned if no prefix is necessary.  */
8441 static const char *
8442 partial_die_parent_scope (struct partial_die_info *pdi,
8443                           struct dwarf2_cu *cu)
8444 {
8445   const char *grandparent_scope;
8446   struct partial_die_info *parent, *real_pdi;
8447
8448   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8449      then this means the parent of the specification DIE.  */
8450
8451   real_pdi = pdi;
8452   while (real_pdi->has_specification)
8453     {
8454       auto res = find_partial_die (real_pdi->spec_offset,
8455                                    real_pdi->spec_is_dwz, cu);
8456       real_pdi = res.pdi;
8457       cu = res.cu;
8458     }
8459
8460   parent = real_pdi->die_parent;
8461   if (parent == NULL)
8462     return NULL;
8463
8464   if (parent->scope_set)
8465     return parent->scope;
8466
8467   parent->fixup (cu);
8468
8469   grandparent_scope = partial_die_parent_scope (parent, cu);
8470
8471   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8472      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8473      Work around this problem here.  */
8474   if (cu->language == language_cplus
8475       && parent->tag == DW_TAG_namespace
8476       && strcmp (parent->name, "::") == 0
8477       && grandparent_scope == NULL)
8478     {
8479       parent->scope = NULL;
8480       parent->scope_set = 1;
8481       return NULL;
8482     }
8483
8484   /* Nested subroutines in Fortran get a prefix.  */
8485   if (pdi->tag == DW_TAG_enumerator)
8486     /* Enumerators should not get the name of the enumeration as a prefix.  */
8487     parent->scope = grandparent_scope;
8488   else if (parent->tag == DW_TAG_namespace
8489       || parent->tag == DW_TAG_module
8490       || parent->tag == DW_TAG_structure_type
8491       || parent->tag == DW_TAG_class_type
8492       || parent->tag == DW_TAG_interface_type
8493       || parent->tag == DW_TAG_union_type
8494       || parent->tag == DW_TAG_enumeration_type
8495       || (cu->language == language_fortran
8496           && parent->tag == DW_TAG_subprogram
8497           && pdi->tag == DW_TAG_subprogram))
8498     {
8499       if (grandparent_scope == NULL)
8500         parent->scope = parent->name;
8501       else
8502         parent->scope = typename_concat (&cu->comp_unit_obstack,
8503                                          grandparent_scope,
8504                                          parent->name, 0, cu);
8505     }
8506   else
8507     {
8508       /* FIXME drow/2004-04-01: What should we be doing with
8509          function-local names?  For partial symbols, we should probably be
8510          ignoring them.  */
8511       complaint (_("unhandled containing DIE tag %s for DIE at %s"),
8512                  dwarf_tag_name (parent->tag),
8513                  sect_offset_str (pdi->sect_off));
8514       parent->scope = grandparent_scope;
8515     }
8516
8517   parent->scope_set = 1;
8518   return parent->scope;
8519 }
8520
8521 /* Return the fully scoped name associated with PDI, from compilation unit
8522    CU.  The result will be allocated with malloc.  */
8523
8524 static gdb::unique_xmalloc_ptr<char>
8525 partial_die_full_name (struct partial_die_info *pdi,
8526                        struct dwarf2_cu *cu)
8527 {
8528   const char *parent_scope;
8529
8530   /* If this is a template instantiation, we can not work out the
8531      template arguments from partial DIEs.  So, unfortunately, we have
8532      to go through the full DIEs.  At least any work we do building
8533      types here will be reused if full symbols are loaded later.  */
8534   if (pdi->has_template_arguments)
8535     {
8536       pdi->fixup (cu);
8537
8538       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8539         {
8540           struct die_info *die;
8541           struct attribute attr;
8542           struct dwarf2_cu *ref_cu = cu;
8543
8544           /* DW_FORM_ref_addr is using section offset.  */
8545           attr.name = (enum dwarf_attribute) 0;
8546           attr.form = DW_FORM_ref_addr;
8547           attr.u.unsnd = to_underlying (pdi->sect_off);
8548           die = follow_die_ref (NULL, &attr, &ref_cu);
8549
8550           return make_unique_xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8551         }
8552     }
8553
8554   parent_scope = partial_die_parent_scope (pdi, cu);
8555   if (parent_scope == NULL)
8556     return NULL;
8557   else
8558     return gdb::unique_xmalloc_ptr<char> (typename_concat (NULL, parent_scope,
8559                                                            pdi->name, 0, cu));
8560 }
8561
8562 static void
8563 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8564 {
8565   struct dwarf2_per_objfile *dwarf2_per_objfile
8566     = cu->per_cu->dwarf2_per_objfile;
8567   struct objfile *objfile = dwarf2_per_objfile->objfile;
8568   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8569   CORE_ADDR addr = 0;
8570   const char *actual_name = NULL;
8571   CORE_ADDR baseaddr;
8572
8573   baseaddr = objfile->text_section_offset ();
8574
8575   gdb::unique_xmalloc_ptr<char> built_actual_name
8576     = partial_die_full_name (pdi, cu);
8577   if (built_actual_name != NULL)
8578     actual_name = built_actual_name.get ();
8579
8580   if (actual_name == NULL)
8581     actual_name = pdi->name;
8582
8583   switch (pdi->tag)
8584     {
8585     case DW_TAG_inlined_subroutine:
8586     case DW_TAG_subprogram:
8587       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8588               - baseaddr);
8589       if (pdi->is_external
8590           || cu->language == language_ada
8591           || (cu->language == language_fortran
8592               && pdi->die_parent != NULL
8593               && pdi->die_parent->tag == DW_TAG_subprogram))
8594         {
8595           /* Normally, only "external" DIEs are part of the global scope.
8596              But in Ada and Fortran, we want to be able to access nested
8597              procedures globally.  So all Ada and Fortran subprograms are
8598              stored in the global scope.  */
8599           add_psymbol_to_list (actual_name,
8600                                built_actual_name != NULL,
8601                                VAR_DOMAIN, LOC_BLOCK,
8602                                SECT_OFF_TEXT (objfile),
8603                                psymbol_placement::GLOBAL,
8604                                addr,
8605                                cu->language, objfile);
8606         }
8607       else
8608         {
8609           add_psymbol_to_list (actual_name,
8610                                built_actual_name != NULL,
8611                                VAR_DOMAIN, LOC_BLOCK,
8612                                SECT_OFF_TEXT (objfile),
8613                                psymbol_placement::STATIC,
8614                                addr, cu->language, objfile);
8615         }
8616
8617       if (pdi->main_subprogram && actual_name != NULL)
8618         set_objfile_main_name (objfile, actual_name, cu->language);
8619       break;
8620     case DW_TAG_constant:
8621       add_psymbol_to_list (actual_name,
8622                            built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8623                            -1, (pdi->is_external
8624                                 ? psymbol_placement::GLOBAL
8625                                 : psymbol_placement::STATIC),
8626                            0, cu->language, objfile);
8627       break;
8628     case DW_TAG_variable:
8629       if (pdi->d.locdesc)
8630         addr = decode_locdesc (pdi->d.locdesc, cu);
8631
8632       if (pdi->d.locdesc
8633           && addr == 0
8634           && !dwarf2_per_objfile->has_section_at_zero)
8635         {
8636           /* A global or static variable may also have been stripped
8637              out by the linker if unused, in which case its address
8638              will be nullified; do not add such variables into partial
8639              symbol table then.  */
8640         }
8641       else if (pdi->is_external)
8642         {
8643           /* Global Variable.
8644              Don't enter into the minimal symbol tables as there is
8645              a minimal symbol table entry from the ELF symbols already.
8646              Enter into partial symbol table if it has a location
8647              descriptor or a type.
8648              If the location descriptor is missing, new_symbol will create
8649              a LOC_UNRESOLVED symbol, the address of the variable will then
8650              be determined from the minimal symbol table whenever the variable
8651              is referenced.
8652              The address for the partial symbol table entry is not
8653              used by GDB, but it comes in handy for debugging partial symbol
8654              table building.  */
8655
8656           if (pdi->d.locdesc || pdi->has_type)
8657             add_psymbol_to_list (actual_name,
8658                                  built_actual_name != NULL,
8659                                  VAR_DOMAIN, LOC_STATIC,
8660                                  SECT_OFF_TEXT (objfile),
8661                                  psymbol_placement::GLOBAL,
8662                                  addr, cu->language, objfile);
8663         }
8664       else
8665         {
8666           int has_loc = pdi->d.locdesc != NULL;
8667
8668           /* Static Variable.  Skip symbols whose value we cannot know (those
8669              without location descriptors or constant values).  */
8670           if (!has_loc && !pdi->has_const_value)
8671             return;
8672
8673           add_psymbol_to_list (actual_name,
8674                                built_actual_name != NULL,
8675                                VAR_DOMAIN, LOC_STATIC,
8676                                SECT_OFF_TEXT (objfile),
8677                                psymbol_placement::STATIC,
8678                                has_loc ? addr : 0,
8679                                cu->language, objfile);
8680         }
8681       break;
8682     case DW_TAG_typedef:
8683     case DW_TAG_base_type:
8684     case DW_TAG_subrange_type:
8685       add_psymbol_to_list (actual_name,
8686                            built_actual_name != NULL,
8687                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8688                            psymbol_placement::STATIC,
8689                            0, cu->language, objfile);
8690       break;
8691     case DW_TAG_imported_declaration:
8692     case DW_TAG_namespace:
8693       add_psymbol_to_list (actual_name,
8694                            built_actual_name != NULL,
8695                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8696                            psymbol_placement::GLOBAL,
8697                            0, cu->language, objfile);
8698       break;
8699     case DW_TAG_module:
8700       /* With Fortran 77 there might be a "BLOCK DATA" module
8701          available without any name.  If so, we skip the module as it
8702          doesn't bring any value.  */
8703       if (actual_name != nullptr)
8704         add_psymbol_to_list (actual_name,
8705                              built_actual_name != NULL,
8706                              MODULE_DOMAIN, LOC_TYPEDEF, -1,
8707                              psymbol_placement::GLOBAL,
8708                              0, cu->language, objfile);
8709       break;
8710     case DW_TAG_class_type:
8711     case DW_TAG_interface_type:
8712     case DW_TAG_structure_type:
8713     case DW_TAG_union_type:
8714     case DW_TAG_enumeration_type:
8715       /* Skip external references.  The DWARF standard says in the section
8716          about "Structure, Union, and Class Type Entries": "An incomplete
8717          structure, union or class type is represented by a structure,
8718          union or class entry that does not have a byte size attribute
8719          and that has a DW_AT_declaration attribute."  */
8720       if (!pdi->has_byte_size && pdi->is_declaration)
8721         return;
8722
8723       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
8724          static vs. global.  */
8725       add_psymbol_to_list (actual_name,
8726                            built_actual_name != NULL,
8727                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
8728                            cu->language == language_cplus
8729                            ? psymbol_placement::GLOBAL
8730                            : psymbol_placement::STATIC,
8731                            0, cu->language, objfile);
8732
8733       break;
8734     case DW_TAG_enumerator:
8735       add_psymbol_to_list (actual_name,
8736                            built_actual_name != NULL,
8737                            VAR_DOMAIN, LOC_CONST, -1,
8738                            cu->language == language_cplus
8739                            ? psymbol_placement::GLOBAL
8740                            : psymbol_placement::STATIC,
8741                            0, cu->language, objfile);
8742       break;
8743     default:
8744       break;
8745     }
8746 }
8747
8748 /* Read a partial die corresponding to a namespace; also, add a symbol
8749    corresponding to that namespace to the symbol table.  NAMESPACE is
8750    the name of the enclosing namespace.  */
8751
8752 static void
8753 add_partial_namespace (struct partial_die_info *pdi,
8754                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
8755                        int set_addrmap, struct dwarf2_cu *cu)
8756 {
8757   /* Add a symbol for the namespace.  */
8758
8759   add_partial_symbol (pdi, cu);
8760
8761   /* Now scan partial symbols in that namespace.  */
8762
8763   if (pdi->has_children)
8764     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
8765 }
8766
8767 /* Read a partial die corresponding to a Fortran module.  */
8768
8769 static void
8770 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
8771                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
8772 {
8773   /* Add a symbol for the namespace.  */
8774
8775   add_partial_symbol (pdi, cu);
8776
8777   /* Now scan partial symbols in that module.  */
8778
8779   if (pdi->has_children)
8780     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
8781 }
8782
8783 /* Read a partial die corresponding to a subprogram or an inlined
8784    subprogram and create a partial symbol for that subprogram.
8785    When the CU language allows it, this routine also defines a partial
8786    symbol for each nested subprogram that this subprogram contains.
8787    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
8788    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
8789
8790    PDI may also be a lexical block, in which case we simply search
8791    recursively for subprograms defined inside that lexical block.
8792    Again, this is only performed when the CU language allows this
8793    type of definitions.  */
8794
8795 static void
8796 add_partial_subprogram (struct partial_die_info *pdi,
8797                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
8798                         int set_addrmap, struct dwarf2_cu *cu)
8799 {
8800   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
8801     {
8802       if (pdi->has_pc_info)
8803         {
8804           if (pdi->lowpc < *lowpc)
8805             *lowpc = pdi->lowpc;
8806           if (pdi->highpc > *highpc)
8807             *highpc = pdi->highpc;
8808           if (set_addrmap)
8809             {
8810               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
8811               struct gdbarch *gdbarch = get_objfile_arch (objfile);
8812               CORE_ADDR baseaddr;
8813               CORE_ADDR this_highpc;
8814               CORE_ADDR this_lowpc;
8815
8816               baseaddr = objfile->text_section_offset ();
8817               this_lowpc
8818                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
8819                                                pdi->lowpc + baseaddr)
8820                    - baseaddr);
8821               this_highpc
8822                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
8823                                                pdi->highpc + baseaddr)
8824                    - baseaddr);
8825               addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
8826                                  this_lowpc, this_highpc - 1,
8827                                  cu->per_cu->v.psymtab);
8828             }
8829         }
8830
8831       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
8832         {
8833           if (!pdi->is_declaration)
8834             /* Ignore subprogram DIEs that do not have a name, they are
8835                illegal.  Do not emit a complaint at this point, we will
8836                do so when we convert this psymtab into a symtab.  */
8837             if (pdi->name)
8838               add_partial_symbol (pdi, cu);
8839         }
8840     }
8841
8842   if (! pdi->has_children)
8843     return;
8844
8845   if (cu->language == language_ada || cu->language == language_fortran)
8846     {
8847       pdi = pdi->die_child;
8848       while (pdi != NULL)
8849         {
8850           pdi->fixup (cu);
8851           if (pdi->tag == DW_TAG_subprogram
8852               || pdi->tag == DW_TAG_inlined_subroutine
8853               || pdi->tag == DW_TAG_lexical_block)
8854             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8855           pdi = pdi->die_sibling;
8856         }
8857     }
8858 }
8859
8860 /* Read a partial die corresponding to an enumeration type.  */
8861
8862 static void
8863 add_partial_enumeration (struct partial_die_info *enum_pdi,
8864                          struct dwarf2_cu *cu)
8865 {
8866   struct partial_die_info *pdi;
8867
8868   if (enum_pdi->name != NULL)
8869     add_partial_symbol (enum_pdi, cu);
8870
8871   pdi = enum_pdi->die_child;
8872   while (pdi)
8873     {
8874       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
8875         complaint (_("malformed enumerator DIE ignored"));
8876       else
8877         add_partial_symbol (pdi, cu);
8878       pdi = pdi->die_sibling;
8879     }
8880 }
8881
8882 /* Return the initial uleb128 in the die at INFO_PTR.  */
8883
8884 static unsigned int
8885 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
8886 {
8887   unsigned int bytes_read;
8888
8889   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8890 }
8891
8892 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
8893    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
8894
8895    Return the corresponding abbrev, or NULL if the number is zero (indicating
8896    an empty DIE).  In either case *BYTES_READ will be set to the length of
8897    the initial number.  */
8898
8899 static struct abbrev_info *
8900 peek_die_abbrev (const die_reader_specs &reader,
8901                  const gdb_byte *info_ptr, unsigned int *bytes_read)
8902 {
8903   dwarf2_cu *cu = reader.cu;
8904   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
8905   unsigned int abbrev_number
8906     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
8907
8908   if (abbrev_number == 0)
8909     return NULL;
8910
8911   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
8912   if (!abbrev)
8913     {
8914       error (_("Dwarf Error: Could not find abbrev number %d in %s"
8915                " at offset %s [in module %s]"),
8916              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
8917              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
8918     }
8919
8920   return abbrev;
8921 }
8922
8923 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
8924    Returns a pointer to the end of a series of DIEs, terminated by an empty
8925    DIE.  Any children of the skipped DIEs will also be skipped.  */
8926
8927 static const gdb_byte *
8928 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
8929 {
8930   while (1)
8931     {
8932       unsigned int bytes_read;
8933       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
8934
8935       if (abbrev == NULL)
8936         return info_ptr + bytes_read;
8937       else
8938         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
8939     }
8940 }
8941
8942 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
8943    INFO_PTR should point just after the initial uleb128 of a DIE, and the
8944    abbrev corresponding to that skipped uleb128 should be passed in
8945    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
8946    children.  */
8947
8948 static const gdb_byte *
8949 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
8950               struct abbrev_info *abbrev)
8951 {
8952   unsigned int bytes_read;
8953   struct attribute attr;
8954   bfd *abfd = reader->abfd;
8955   struct dwarf2_cu *cu = reader->cu;
8956   const gdb_byte *buffer = reader->buffer;
8957   const gdb_byte *buffer_end = reader->buffer_end;
8958   unsigned int form, i;
8959
8960   for (i = 0; i < abbrev->num_attrs; i++)
8961     {
8962       /* The only abbrev we care about is DW_AT_sibling.  */
8963       if (abbrev->attrs[i].name == DW_AT_sibling)
8964         {
8965           bool ignored;
8966           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr,
8967                           &ignored);
8968           if (attr.form == DW_FORM_ref_addr)
8969             complaint (_("ignoring absolute DW_AT_sibling"));
8970           else
8971             {
8972               sect_offset off = dwarf2_get_ref_die_offset (&attr);
8973               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
8974
8975               if (sibling_ptr < info_ptr)
8976                 complaint (_("DW_AT_sibling points backwards"));
8977               else if (sibling_ptr > reader->buffer_end)
8978                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
8979               else
8980                 return sibling_ptr;
8981             }
8982         }
8983
8984       /* If it isn't DW_AT_sibling, skip this attribute.  */
8985       form = abbrev->attrs[i].form;
8986     skip_attribute:
8987       switch (form)
8988         {
8989         case DW_FORM_ref_addr:
8990           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
8991              and later it is offset sized.  */
8992           if (cu->header.version == 2)
8993             info_ptr += cu->header.addr_size;
8994           else
8995             info_ptr += cu->header.offset_size;
8996           break;
8997         case DW_FORM_GNU_ref_alt:
8998           info_ptr += cu->header.offset_size;
8999           break;
9000         case DW_FORM_addr:
9001           info_ptr += cu->header.addr_size;
9002           break;
9003         case DW_FORM_data1:
9004         case DW_FORM_ref1:
9005         case DW_FORM_flag:
9006         case DW_FORM_strx1:
9007           info_ptr += 1;
9008           break;
9009         case DW_FORM_flag_present:
9010         case DW_FORM_implicit_const:
9011           break;
9012         case DW_FORM_data2:
9013         case DW_FORM_ref2:
9014         case DW_FORM_strx2:
9015           info_ptr += 2;
9016           break;
9017         case DW_FORM_strx3:
9018           info_ptr += 3;
9019           break;
9020         case DW_FORM_data4:
9021         case DW_FORM_ref4:
9022         case DW_FORM_strx4:
9023           info_ptr += 4;
9024           break;
9025         case DW_FORM_data8:
9026         case DW_FORM_ref8:
9027         case DW_FORM_ref_sig8:
9028           info_ptr += 8;
9029           break;
9030         case DW_FORM_data16:
9031           info_ptr += 16;
9032           break;
9033         case DW_FORM_string:
9034           read_direct_string (abfd, info_ptr, &bytes_read);
9035           info_ptr += bytes_read;
9036           break;
9037         case DW_FORM_sec_offset:
9038         case DW_FORM_strp:
9039         case DW_FORM_GNU_strp_alt:
9040           info_ptr += cu->header.offset_size;
9041           break;
9042         case DW_FORM_exprloc:
9043         case DW_FORM_block:
9044           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9045           info_ptr += bytes_read;
9046           break;
9047         case DW_FORM_block1:
9048           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9049           break;
9050         case DW_FORM_block2:
9051           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9052           break;
9053         case DW_FORM_block4:
9054           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9055           break;
9056         case DW_FORM_addrx:
9057         case DW_FORM_strx:
9058         case DW_FORM_sdata:
9059         case DW_FORM_udata:
9060         case DW_FORM_ref_udata:
9061         case DW_FORM_GNU_addr_index:
9062         case DW_FORM_GNU_str_index:
9063         case DW_FORM_rnglistx:
9064           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9065           break;
9066         case DW_FORM_indirect:
9067           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9068           info_ptr += bytes_read;
9069           /* We need to continue parsing from here, so just go back to
9070              the top.  */
9071           goto skip_attribute;
9072
9073         default:
9074           error (_("Dwarf Error: Cannot handle %s "
9075                    "in DWARF reader [in module %s]"),
9076                  dwarf_form_name (form),
9077                  bfd_get_filename (abfd));
9078         }
9079     }
9080
9081   if (abbrev->has_children)
9082     return skip_children (reader, info_ptr);
9083   else
9084     return info_ptr;
9085 }
9086
9087 /* Locate ORIG_PDI's sibling.
9088    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9089
9090 static const gdb_byte *
9091 locate_pdi_sibling (const struct die_reader_specs *reader,
9092                     struct partial_die_info *orig_pdi,
9093                     const gdb_byte *info_ptr)
9094 {
9095   /* Do we know the sibling already?  */
9096
9097   if (orig_pdi->sibling)
9098     return orig_pdi->sibling;
9099
9100   /* Are there any children to deal with?  */
9101
9102   if (!orig_pdi->has_children)
9103     return info_ptr;
9104
9105   /* Skip the children the long way.  */
9106
9107   return skip_children (reader, info_ptr);
9108 }
9109
9110 /* Expand this partial symbol table into a full symbol table.  SELF is
9111    not NULL.  */
9112
9113 void
9114 dwarf2_psymtab::read_symtab (struct objfile *objfile)
9115 {
9116   struct dwarf2_per_objfile *dwarf2_per_objfile
9117     = get_dwarf2_per_objfile (objfile);
9118
9119   gdb_assert (!readin);
9120   /* If this psymtab is constructed from a debug-only objfile, the
9121      has_section_at_zero flag will not necessarily be correct.  We
9122      can get the correct value for this flag by looking at the data
9123      associated with the (presumably stripped) associated objfile.  */
9124   if (objfile->separate_debug_objfile_backlink)
9125     {
9126       struct dwarf2_per_objfile *dpo_backlink
9127         = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9128
9129       dwarf2_per_objfile->has_section_at_zero
9130         = dpo_backlink->has_section_at_zero;
9131     }
9132
9133   dwarf2_per_objfile->reading_partial_symbols = 0;
9134
9135   expand_psymtab (objfile);
9136
9137   process_cu_includes (dwarf2_per_objfile);
9138 }
9139 \f
9140 /* Reading in full CUs.  */
9141
9142 /* Add PER_CU to the queue.  */
9143
9144 static void
9145 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9146                  enum language pretend_language)
9147 {
9148   per_cu->queued = 1;
9149   per_cu->dwarf2_per_objfile->queue.emplace (per_cu, pretend_language);
9150 }
9151
9152 /* If PER_CU is not yet queued, add it to the queue.
9153    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9154    dependency.
9155    The result is non-zero if PER_CU was queued, otherwise the result is zero
9156    meaning either PER_CU is already queued or it is already loaded.
9157
9158    N.B. There is an invariant here that if a CU is queued then it is loaded.
9159    The caller is required to load PER_CU if we return non-zero.  */
9160
9161 static int
9162 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9163                        struct dwarf2_per_cu_data *per_cu,
9164                        enum language pretend_language)
9165 {
9166   /* We may arrive here during partial symbol reading, if we need full
9167      DIEs to process an unusual case (e.g. template arguments).  Do
9168      not queue PER_CU, just tell our caller to load its DIEs.  */
9169   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9170     {
9171       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9172         return 1;
9173       return 0;
9174     }
9175
9176   /* Mark the dependence relation so that we don't flush PER_CU
9177      too early.  */
9178   if (dependent_cu != NULL)
9179     dwarf2_add_dependence (dependent_cu, per_cu);
9180
9181   /* If it's already on the queue, we have nothing to do.  */
9182   if (per_cu->queued)
9183     return 0;
9184
9185   /* If the compilation unit is already loaded, just mark it as
9186      used.  */
9187   if (per_cu->cu != NULL)
9188     {
9189       per_cu->cu->last_used = 0;
9190       return 0;
9191     }
9192
9193   /* Add it to the queue.  */
9194   queue_comp_unit (per_cu, pretend_language);
9195
9196   return 1;
9197 }
9198
9199 /* Process the queue.  */
9200
9201 static void
9202 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9203 {
9204   if (dwarf_read_debug)
9205     {
9206       fprintf_unfiltered (gdb_stdlog,
9207                           "Expanding one or more symtabs of objfile %s ...\n",
9208                           objfile_name (dwarf2_per_objfile->objfile));
9209     }
9210
9211   /* The queue starts out with one item, but following a DIE reference
9212      may load a new CU, adding it to the end of the queue.  */
9213   while (!dwarf2_per_objfile->queue.empty ())
9214     {
9215       dwarf2_queue_item &item = dwarf2_per_objfile->queue.front ();
9216
9217       if ((dwarf2_per_objfile->using_index
9218            ? !item.per_cu->v.quick->compunit_symtab
9219            : (item.per_cu->v.psymtab && !item.per_cu->v.psymtab->readin))
9220           /* Skip dummy CUs.  */
9221           && item.per_cu->cu != NULL)
9222         {
9223           struct dwarf2_per_cu_data *per_cu = item.per_cu;
9224           unsigned int debug_print_threshold;
9225           char buf[100];
9226
9227           if (per_cu->is_debug_types)
9228             {
9229               struct signatured_type *sig_type =
9230                 (struct signatured_type *) per_cu;
9231
9232               sprintf (buf, "TU %s at offset %s",
9233                        hex_string (sig_type->signature),
9234                        sect_offset_str (per_cu->sect_off));
9235               /* There can be 100s of TUs.
9236                  Only print them in verbose mode.  */
9237               debug_print_threshold = 2;
9238             }
9239           else
9240             {
9241               sprintf (buf, "CU at offset %s",
9242                        sect_offset_str (per_cu->sect_off));
9243               debug_print_threshold = 1;
9244             }
9245
9246           if (dwarf_read_debug >= debug_print_threshold)
9247             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9248
9249           if (per_cu->is_debug_types)
9250             process_full_type_unit (per_cu, item.pretend_language);
9251           else
9252             process_full_comp_unit (per_cu, item.pretend_language);
9253
9254           if (dwarf_read_debug >= debug_print_threshold)
9255             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9256         }
9257
9258       item.per_cu->queued = 0;
9259       dwarf2_per_objfile->queue.pop ();
9260     }
9261
9262   if (dwarf_read_debug)
9263     {
9264       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9265                           objfile_name (dwarf2_per_objfile->objfile));
9266     }
9267 }
9268
9269 /* Read in full symbols for PST, and anything it depends on.  */
9270
9271 void
9272 dwarf2_psymtab::expand_psymtab (struct objfile *objfile)
9273 {
9274   struct dwarf2_per_cu_data *per_cu;
9275
9276   if (readin)
9277     return;
9278
9279   read_dependencies (objfile);
9280
9281   per_cu = per_cu_data;
9282
9283   if (per_cu == NULL)
9284     {
9285       /* It's an include file, no symbols to read for it.
9286          Everything is in the parent symtab.  */
9287       readin = true;
9288       return;
9289     }
9290
9291   dw2_do_instantiate_symtab (per_cu, false);
9292 }
9293
9294 /* Trivial hash function for die_info: the hash value of a DIE
9295    is its offset in .debug_info for this objfile.  */
9296
9297 static hashval_t
9298 die_hash (const void *item)
9299 {
9300   const struct die_info *die = (const struct die_info *) item;
9301
9302   return to_underlying (die->sect_off);
9303 }
9304
9305 /* Trivial comparison function for die_info structures: two DIEs
9306    are equal if they have the same offset.  */
9307
9308 static int
9309 die_eq (const void *item_lhs, const void *item_rhs)
9310 {
9311   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9312   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9313
9314   return die_lhs->sect_off == die_rhs->sect_off;
9315 }
9316
9317 /* Load the DIEs associated with PER_CU into memory.  */
9318
9319 static void
9320 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9321                      bool skip_partial,
9322                      enum language pretend_language)
9323 {
9324   gdb_assert (! this_cu->is_debug_types);
9325
9326   cutu_reader reader (this_cu, NULL, 1, 1, skip_partial);
9327   if (reader.dummy_p)
9328     return;
9329
9330   struct dwarf2_cu *cu = reader.cu;
9331   const gdb_byte *info_ptr = reader.info_ptr;
9332
9333   gdb_assert (cu->die_hash == NULL);
9334   cu->die_hash =
9335     htab_create_alloc_ex (cu->header.length / 12,
9336                           die_hash,
9337                           die_eq,
9338                           NULL,
9339                           &cu->comp_unit_obstack,
9340                           hashtab_obstack_allocate,
9341                           dummy_obstack_deallocate);
9342
9343   if (reader.comp_unit_die->has_children)
9344     reader.comp_unit_die->child
9345       = read_die_and_siblings (&reader, reader.info_ptr,
9346                                &info_ptr, reader.comp_unit_die);
9347   cu->dies = reader.comp_unit_die;
9348   /* comp_unit_die is not stored in die_hash, no need.  */
9349
9350   /* We try not to read any attributes in this function, because not
9351      all CUs needed for references have been loaded yet, and symbol
9352      table processing isn't initialized.  But we have to set the CU language,
9353      or we won't be able to build types correctly.
9354      Similarly, if we do not read the producer, we can not apply
9355      producer-specific interpretation.  */
9356   prepare_one_comp_unit (cu, cu->dies, pretend_language);
9357 }
9358
9359 /* Add a DIE to the delayed physname list.  */
9360
9361 static void
9362 add_to_method_list (struct type *type, int fnfield_index, int index,
9363                     const char *name, struct die_info *die,
9364                     struct dwarf2_cu *cu)
9365 {
9366   struct delayed_method_info mi;
9367   mi.type = type;
9368   mi.fnfield_index = fnfield_index;
9369   mi.index = index;
9370   mi.name = name;
9371   mi.die = die;
9372   cu->method_list.push_back (mi);
9373 }
9374
9375 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9376    "const" / "volatile".  If so, decrements LEN by the length of the
9377    modifier and return true.  Otherwise return false.  */
9378
9379 template<size_t N>
9380 static bool
9381 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9382 {
9383   size_t mod_len = sizeof (mod) - 1;
9384   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9385     {
9386       len -= mod_len;
9387       return true;
9388     }
9389   return false;
9390 }
9391
9392 /* Compute the physnames of any methods on the CU's method list.
9393
9394    The computation of method physnames is delayed in order to avoid the
9395    (bad) condition that one of the method's formal parameters is of an as yet
9396    incomplete type.  */
9397
9398 static void
9399 compute_delayed_physnames (struct dwarf2_cu *cu)
9400 {
9401   /* Only C++ delays computing physnames.  */
9402   if (cu->method_list.empty ())
9403     return;
9404   gdb_assert (cu->language == language_cplus);
9405
9406   for (const delayed_method_info &mi : cu->method_list)
9407     {
9408       const char *physname;
9409       struct fn_fieldlist *fn_flp
9410         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9411       physname = dwarf2_physname (mi.name, mi.die, cu);
9412       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9413         = physname ? physname : "";
9414
9415       /* Since there's no tag to indicate whether a method is a
9416          const/volatile overload, extract that information out of the
9417          demangled name.  */
9418       if (physname != NULL)
9419         {
9420           size_t len = strlen (physname);
9421
9422           while (1)
9423             {
9424               if (physname[len] == ')') /* shortcut */
9425                 break;
9426               else if (check_modifier (physname, len, " const"))
9427                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9428               else if (check_modifier (physname, len, " volatile"))
9429                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9430               else
9431                 break;
9432             }
9433         }
9434     }
9435
9436   /* The list is no longer needed.  */
9437   cu->method_list.clear ();
9438 }
9439
9440 /* Go objects should be embedded in a DW_TAG_module DIE,
9441    and it's not clear if/how imported objects will appear.
9442    To keep Go support simple until that's worked out,
9443    go back through what we've read and create something usable.
9444    We could do this while processing each DIE, and feels kinda cleaner,
9445    but that way is more invasive.
9446    This is to, for example, allow the user to type "p var" or "b main"
9447    without having to specify the package name, and allow lookups
9448    of module.object to work in contexts that use the expression
9449    parser.  */
9450
9451 static void
9452 fixup_go_packaging (struct dwarf2_cu *cu)
9453 {
9454   gdb::unique_xmalloc_ptr<char> package_name;
9455   struct pending *list;
9456   int i;
9457
9458   for (list = *cu->get_builder ()->get_global_symbols ();
9459        list != NULL;
9460        list = list->next)
9461     {
9462       for (i = 0; i < list->nsyms; ++i)
9463         {
9464           struct symbol *sym = list->symbol[i];
9465
9466           if (sym->language () == language_go
9467               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9468             {
9469               gdb::unique_xmalloc_ptr<char> this_package_name
9470                 (go_symbol_package_name (sym));
9471
9472               if (this_package_name == NULL)
9473                 continue;
9474               if (package_name == NULL)
9475                 package_name = std::move (this_package_name);
9476               else
9477                 {
9478                   struct objfile *objfile
9479                     = cu->per_cu->dwarf2_per_objfile->objfile;
9480                   if (strcmp (package_name.get (), this_package_name.get ()) != 0)
9481                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9482                                (symbol_symtab (sym) != NULL
9483                                 ? symtab_to_filename_for_display
9484                                     (symbol_symtab (sym))
9485                                 : objfile_name (objfile)),
9486                                this_package_name.get (), package_name.get ());
9487                 }
9488             }
9489         }
9490     }
9491
9492   if (package_name != NULL)
9493     {
9494       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9495       const char *saved_package_name
9496         = obstack_strdup (&objfile->per_bfd->storage_obstack, package_name.get ());
9497       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9498                                      saved_package_name);
9499       struct symbol *sym;
9500
9501       sym = allocate_symbol (objfile);
9502       sym->set_language (language_go, &objfile->objfile_obstack);
9503       sym->compute_and_set_names (saved_package_name, false, objfile->per_bfd);
9504       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9505          e.g., "main" finds the "main" module and not C's main().  */
9506       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9507       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9508       SYMBOL_TYPE (sym) = type;
9509
9510       add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9511     }
9512 }
9513
9514 /* Allocate a fully-qualified name consisting of the two parts on the
9515    obstack.  */
9516
9517 static const char *
9518 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9519 {
9520   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9521 }
9522
9523 /* A helper that allocates a struct discriminant_info to attach to a
9524    union type.  */
9525
9526 static struct discriminant_info *
9527 alloc_discriminant_info (struct type *type, int discriminant_index,
9528                          int default_index)
9529 {
9530   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9531   gdb_assert (discriminant_index == -1
9532               || (discriminant_index >= 0
9533                   && discriminant_index < TYPE_NFIELDS (type)));
9534   gdb_assert (default_index == -1
9535               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9536
9537   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9538
9539   struct discriminant_info *disc
9540     = ((struct discriminant_info *)
9541        TYPE_ZALLOC (type,
9542                     offsetof (struct discriminant_info, discriminants)
9543                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9544   disc->default_index = default_index;
9545   disc->discriminant_index = discriminant_index;
9546
9547   struct dynamic_prop prop;
9548   prop.kind = PROP_UNDEFINED;
9549   prop.data.baton = disc;
9550
9551   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9552
9553   return disc;
9554 }
9555
9556 /* Some versions of rustc emitted enums in an unusual way.
9557
9558    Ordinary enums were emitted as unions.  The first element of each
9559    structure in the union was named "RUST$ENUM$DISR".  This element
9560    held the discriminant.
9561
9562    These versions of Rust also implemented the "non-zero"
9563    optimization.  When the enum had two values, and one is empty and
9564    the other holds a pointer that cannot be zero, the pointer is used
9565    as the discriminant, with a zero value meaning the empty variant.
9566    Here, the union's first member is of the form
9567    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9568    where the fieldnos are the indices of the fields that should be
9569    traversed in order to find the field (which may be several fields deep)
9570    and the variantname is the name of the variant of the case when the
9571    field is zero.
9572
9573    This function recognizes whether TYPE is of one of these forms,
9574    and, if so, smashes it to be a variant type.  */
9575
9576 static void
9577 quirk_rust_enum (struct type *type, struct objfile *objfile)
9578 {
9579   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9580
9581   /* We don't need to deal with empty enums.  */
9582   if (TYPE_NFIELDS (type) == 0)
9583     return;
9584
9585 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9586   if (TYPE_NFIELDS (type) == 1
9587       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9588     {
9589       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9590
9591       /* Decode the field name to find the offset of the
9592          discriminant.  */
9593       ULONGEST bit_offset = 0;
9594       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9595       while (name[0] >= '0' && name[0] <= '9')
9596         {
9597           char *tail;
9598           unsigned long index = strtoul (name, &tail, 10);
9599           name = tail;
9600           if (*name != '$'
9601               || index >= TYPE_NFIELDS (field_type)
9602               || (TYPE_FIELD_LOC_KIND (field_type, index)
9603                   != FIELD_LOC_KIND_BITPOS))
9604             {
9605               complaint (_("Could not parse Rust enum encoding string \"%s\""
9606                            "[in module %s]"),
9607                          TYPE_FIELD_NAME (type, 0),
9608                          objfile_name (objfile));
9609               return;
9610             }
9611           ++name;
9612
9613           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9614           field_type = TYPE_FIELD_TYPE (field_type, index);
9615         }
9616
9617       /* Make a union to hold the variants.  */
9618       struct type *union_type = alloc_type (objfile);
9619       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9620       TYPE_NFIELDS (union_type) = 3;
9621       TYPE_FIELDS (union_type)
9622         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9623       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9624       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9625
9626       /* Put the discriminant must at index 0.  */
9627       TYPE_FIELD_TYPE (union_type, 0) = field_type;
9628       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
9629       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
9630       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
9631
9632       /* The order of fields doesn't really matter, so put the real
9633          field at index 1 and the data-less field at index 2.  */
9634       struct discriminant_info *disc
9635         = alloc_discriminant_info (union_type, 0, 1);
9636       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
9637       TYPE_FIELD_NAME (union_type, 1)
9638         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
9639       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
9640         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9641                               TYPE_FIELD_NAME (union_type, 1));
9642
9643       const char *dataless_name
9644         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9645                               name);
9646       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
9647                                               dataless_name);
9648       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
9649       /* NAME points into the original discriminant name, which
9650          already has the correct lifetime.  */
9651       TYPE_FIELD_NAME (union_type, 2) = name;
9652       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
9653       disc->discriminants[2] = 0;
9654
9655       /* Smash this type to be a structure type.  We have to do this
9656          because the type has already been recorded.  */
9657       TYPE_CODE (type) = TYPE_CODE_STRUCT;
9658       TYPE_NFIELDS (type) = 1;
9659       TYPE_FIELDS (type)
9660         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
9661
9662       /* Install the variant part.  */
9663       TYPE_FIELD_TYPE (type, 0) = union_type;
9664       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
9665       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
9666     }
9667   /* A union with a single anonymous field is probably an old-style
9668      univariant enum.  */
9669   else if (TYPE_NFIELDS (type) == 1 && streq (TYPE_FIELD_NAME (type, 0), ""))
9670     {
9671       /* Smash this type to be a structure type.  We have to do this
9672          because the type has already been recorded.  */
9673       TYPE_CODE (type) = TYPE_CODE_STRUCT;
9674
9675       /* Make a union to hold the variants.  */
9676       struct type *union_type = alloc_type (objfile);
9677       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9678       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
9679       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9680       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9681       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
9682
9683       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
9684       const char *variant_name
9685         = rust_last_path_segment (TYPE_NAME (field_type));
9686       TYPE_FIELD_NAME (union_type, 0) = variant_name;
9687       TYPE_NAME (field_type)
9688         = rust_fully_qualify (&objfile->objfile_obstack,
9689                               TYPE_NAME (type), variant_name);
9690
9691       /* Install the union in the outer struct type.  */
9692       TYPE_NFIELDS (type) = 1;
9693       TYPE_FIELDS (type)
9694         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
9695       TYPE_FIELD_TYPE (type, 0) = union_type;
9696       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
9697       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
9698
9699       alloc_discriminant_info (union_type, -1, 0);
9700     }
9701   else
9702     {
9703       struct type *disr_type = nullptr;
9704       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
9705         {
9706           disr_type = TYPE_FIELD_TYPE (type, i);
9707
9708           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
9709             {
9710               /* All fields of a true enum will be structs.  */
9711               return;
9712             }
9713           else if (TYPE_NFIELDS (disr_type) == 0)
9714             {
9715               /* Could be data-less variant, so keep going.  */
9716               disr_type = nullptr;
9717             }
9718           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
9719                            "RUST$ENUM$DISR") != 0)
9720             {
9721               /* Not a Rust enum.  */
9722               return;
9723             }
9724           else
9725             {
9726               /* Found one.  */
9727               break;
9728             }
9729         }
9730
9731       /* If we got here without a discriminant, then it's probably
9732          just a union.  */
9733       if (disr_type == nullptr)
9734         return;
9735
9736       /* Smash this type to be a structure type.  We have to do this
9737          because the type has already been recorded.  */
9738       TYPE_CODE (type) = TYPE_CODE_STRUCT;
9739
9740       /* Make a union to hold the variants.  */
9741       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
9742       struct type *union_type = alloc_type (objfile);
9743       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9744       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
9745       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9746       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9747       TYPE_FIELDS (union_type)
9748         = (struct field *) TYPE_ZALLOC (union_type,
9749                                         (TYPE_NFIELDS (union_type)
9750                                          * sizeof (struct field)));
9751
9752       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
9753               TYPE_NFIELDS (type) * sizeof (struct field));
9754
9755       /* Install the discriminant at index 0 in the union.  */
9756       TYPE_FIELD (union_type, 0) = *disr_field;
9757       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
9758       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
9759
9760       /* Install the union in the outer struct type.  */
9761       TYPE_FIELD_TYPE (type, 0) = union_type;
9762       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
9763       TYPE_NFIELDS (type) = 1;
9764
9765       /* Set the size and offset of the union type.  */
9766       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
9767
9768       /* We need a way to find the correct discriminant given a
9769          variant name.  For convenience we build a map here.  */
9770       struct type *enum_type = FIELD_TYPE (*disr_field);
9771       std::unordered_map<std::string, ULONGEST> discriminant_map;
9772       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
9773         {
9774           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
9775             {
9776               const char *name
9777                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
9778               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
9779             }
9780         }
9781
9782       int n_fields = TYPE_NFIELDS (union_type);
9783       struct discriminant_info *disc
9784         = alloc_discriminant_info (union_type, 0, -1);
9785       /* Skip the discriminant here.  */
9786       for (int i = 1; i < n_fields; ++i)
9787         {
9788           /* Find the final word in the name of this variant's type.
9789              That name can be used to look up the correct
9790              discriminant.  */
9791           const char *variant_name
9792             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
9793                                                                   i)));
9794
9795           auto iter = discriminant_map.find (variant_name);
9796           if (iter != discriminant_map.end ())
9797             disc->discriminants[i] = iter->second;
9798
9799           /* Remove the discriminant field, if it exists.  */
9800           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
9801           if (TYPE_NFIELDS (sub_type) > 0)
9802             {
9803               --TYPE_NFIELDS (sub_type);
9804               ++TYPE_FIELDS (sub_type);
9805             }
9806           TYPE_FIELD_NAME (union_type, i) = variant_name;
9807           TYPE_NAME (sub_type)
9808             = rust_fully_qualify (&objfile->objfile_obstack,
9809                                   TYPE_NAME (type), variant_name);
9810         }
9811     }
9812 }
9813
9814 /* Rewrite some Rust unions to be structures with variants parts.  */
9815
9816 static void
9817 rust_union_quirks (struct dwarf2_cu *cu)
9818 {
9819   gdb_assert (cu->language == language_rust);
9820   for (type *type_ : cu->rust_unions)
9821     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
9822   /* We don't need this any more.  */
9823   cu->rust_unions.clear ();
9824 }
9825
9826 /* Return the symtab for PER_CU.  This works properly regardless of
9827    whether we're using the index or psymtabs.  */
9828
9829 static struct compunit_symtab *
9830 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
9831 {
9832   return (per_cu->dwarf2_per_objfile->using_index
9833           ? per_cu->v.quick->compunit_symtab
9834           : per_cu->v.psymtab->compunit_symtab);
9835 }
9836
9837 /* A helper function for computing the list of all symbol tables
9838    included by PER_CU.  */
9839
9840 static void
9841 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
9842                                 htab_t all_children, htab_t all_type_symtabs,
9843                                 struct dwarf2_per_cu_data *per_cu,
9844                                 struct compunit_symtab *immediate_parent)
9845 {
9846   void **slot;
9847   struct compunit_symtab *cust;
9848
9849   slot = htab_find_slot (all_children, per_cu, INSERT);
9850   if (*slot != NULL)
9851     {
9852       /* This inclusion and its children have been processed.  */
9853       return;
9854     }
9855
9856   *slot = per_cu;
9857   /* Only add a CU if it has a symbol table.  */
9858   cust = get_compunit_symtab (per_cu);
9859   if (cust != NULL)
9860     {
9861       /* If this is a type unit only add its symbol table if we haven't
9862          seen it yet (type unit per_cu's can share symtabs).  */
9863       if (per_cu->is_debug_types)
9864         {
9865           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
9866           if (*slot == NULL)
9867             {
9868               *slot = cust;
9869               result->push_back (cust);
9870               if (cust->user == NULL)
9871                 cust->user = immediate_parent;
9872             }
9873         }
9874       else
9875         {
9876           result->push_back (cust);
9877           if (cust->user == NULL)
9878             cust->user = immediate_parent;
9879         }
9880     }
9881
9882   if (!per_cu->imported_symtabs_empty ())
9883     for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
9884       {
9885         recursively_compute_inclusions (result, all_children,
9886                                         all_type_symtabs, ptr, cust);
9887       }
9888 }
9889
9890 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
9891    PER_CU.  */
9892
9893 static void
9894 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
9895 {
9896   gdb_assert (! per_cu->is_debug_types);
9897
9898   if (!per_cu->imported_symtabs_empty ())
9899     {
9900       int len;
9901       std::vector<compunit_symtab *> result_symtabs;
9902       htab_t all_children, all_type_symtabs;
9903       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
9904
9905       /* If we don't have a symtab, we can just skip this case.  */
9906       if (cust == NULL)
9907         return;
9908
9909       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
9910                                         NULL, xcalloc, xfree);
9911       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
9912                                             NULL, xcalloc, xfree);
9913
9914       for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
9915         {
9916           recursively_compute_inclusions (&result_symtabs, all_children,
9917                                           all_type_symtabs, ptr, cust);
9918         }
9919
9920       /* Now we have a transitive closure of all the included symtabs.  */
9921       len = result_symtabs.size ();
9922       cust->includes
9923         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
9924                      struct compunit_symtab *, len + 1);
9925       memcpy (cust->includes, result_symtabs.data (),
9926               len * sizeof (compunit_symtab *));
9927       cust->includes[len] = NULL;
9928
9929       htab_delete (all_children);
9930       htab_delete (all_type_symtabs);
9931     }
9932 }
9933
9934 /* Compute the 'includes' field for the symtabs of all the CUs we just
9935    read.  */
9936
9937 static void
9938 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
9939 {
9940   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
9941     {
9942       if (! iter->is_debug_types)
9943         compute_compunit_symtab_includes (iter);
9944     }
9945
9946   dwarf2_per_objfile->just_read_cus.clear ();
9947 }
9948
9949 /* Generate full symbol information for PER_CU, whose DIEs have
9950    already been loaded into memory.  */
9951
9952 static void
9953 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
9954                         enum language pretend_language)
9955 {
9956   struct dwarf2_cu *cu = per_cu->cu;
9957   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
9958   struct objfile *objfile = dwarf2_per_objfile->objfile;
9959   struct gdbarch *gdbarch = get_objfile_arch (objfile);
9960   CORE_ADDR lowpc, highpc;
9961   struct compunit_symtab *cust;
9962   CORE_ADDR baseaddr;
9963   struct block *static_block;
9964   CORE_ADDR addr;
9965
9966   baseaddr = objfile->text_section_offset ();
9967
9968   /* Clear the list here in case something was left over.  */
9969   cu->method_list.clear ();
9970
9971   cu->language = pretend_language;
9972   cu->language_defn = language_def (cu->language);
9973
9974   /* Do line number decoding in read_file_scope () */
9975   process_die (cu->dies, cu);
9976
9977   /* For now fudge the Go package.  */
9978   if (cu->language == language_go)
9979     fixup_go_packaging (cu);
9980
9981   /* Now that we have processed all the DIEs in the CU, all the types
9982      should be complete, and it should now be safe to compute all of the
9983      physnames.  */
9984   compute_delayed_physnames (cu);
9985
9986   if (cu->language == language_rust)
9987     rust_union_quirks (cu);
9988
9989   /* Some compilers don't define a DW_AT_high_pc attribute for the
9990      compilation unit.  If the DW_AT_high_pc is missing, synthesize
9991      it, by scanning the DIE's below the compilation unit.  */
9992   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
9993
9994   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
9995   static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
9996
9997   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
9998      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
9999      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10000      addrmap to help ensure it has an accurate map of pc values belonging to
10001      this comp unit.  */
10002   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10003
10004   cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10005                                                     SECT_OFF_TEXT (objfile),
10006                                                     0);
10007
10008   if (cust != NULL)
10009     {
10010       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10011
10012       /* Set symtab language to language from DW_AT_language.  If the
10013          compilation is from a C file generated by language preprocessors, do
10014          not set the language if it was already deduced by start_subfile.  */
10015       if (!(cu->language == language_c
10016             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10017         COMPUNIT_FILETABS (cust)->language = cu->language;
10018
10019       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10020          produce DW_AT_location with location lists but it can be possibly
10021          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10022          there were bugs in prologue debug info, fixed later in GCC-4.5
10023          by "unwind info for epilogues" patch (which is not directly related).
10024
10025          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10026          needed, it would be wrong due to missing DW_AT_producer there.
10027
10028          Still one can confuse GDB by using non-standard GCC compilation
10029          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10030          */
10031       if (cu->has_loclist && gcc_4_minor >= 5)
10032         cust->locations_valid = 1;
10033
10034       if (gcc_4_minor >= 5)
10035         cust->epilogue_unwind_valid = 1;
10036
10037       cust->call_site_htab = cu->call_site_htab;
10038     }
10039
10040   if (dwarf2_per_objfile->using_index)
10041     per_cu->v.quick->compunit_symtab = cust;
10042   else
10043     {
10044       dwarf2_psymtab *pst = per_cu->v.psymtab;
10045       pst->compunit_symtab = cust;
10046       pst->readin = true;
10047     }
10048
10049   /* Push it for inclusion processing later.  */
10050   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10051
10052   /* Not needed any more.  */
10053   cu->reset_builder ();
10054 }
10055
10056 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10057    already been loaded into memory.  */
10058
10059 static void
10060 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10061                         enum language pretend_language)
10062 {
10063   struct dwarf2_cu *cu = per_cu->cu;
10064   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10065   struct objfile *objfile = dwarf2_per_objfile->objfile;
10066   struct compunit_symtab *cust;
10067   struct signatured_type *sig_type;
10068
10069   gdb_assert (per_cu->is_debug_types);
10070   sig_type = (struct signatured_type *) per_cu;
10071
10072   /* Clear the list here in case something was left over.  */
10073   cu->method_list.clear ();
10074
10075   cu->language = pretend_language;
10076   cu->language_defn = language_def (cu->language);
10077
10078   /* The symbol tables are set up in read_type_unit_scope.  */
10079   process_die (cu->dies, cu);
10080
10081   /* For now fudge the Go package.  */
10082   if (cu->language == language_go)
10083     fixup_go_packaging (cu);
10084
10085   /* Now that we have processed all the DIEs in the CU, all the types
10086      should be complete, and it should now be safe to compute all of the
10087      physnames.  */
10088   compute_delayed_physnames (cu);
10089
10090   if (cu->language == language_rust)
10091     rust_union_quirks (cu);
10092
10093   /* TUs share symbol tables.
10094      If this is the first TU to use this symtab, complete the construction
10095      of it with end_expandable_symtab.  Otherwise, complete the addition of
10096      this TU's symbols to the existing symtab.  */
10097   if (sig_type->type_unit_group->compunit_symtab == NULL)
10098     {
10099       buildsym_compunit *builder = cu->get_builder ();
10100       cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10101       sig_type->type_unit_group->compunit_symtab = cust;
10102
10103       if (cust != NULL)
10104         {
10105           /* Set symtab language to language from DW_AT_language.  If the
10106              compilation is from a C file generated by language preprocessors,
10107              do not set the language if it was already deduced by
10108              start_subfile.  */
10109           if (!(cu->language == language_c
10110                 && COMPUNIT_FILETABS (cust)->language != language_c))
10111             COMPUNIT_FILETABS (cust)->language = cu->language;
10112         }
10113     }
10114   else
10115     {
10116       cu->get_builder ()->augment_type_symtab ();
10117       cust = sig_type->type_unit_group->compunit_symtab;
10118     }
10119
10120   if (dwarf2_per_objfile->using_index)
10121     per_cu->v.quick->compunit_symtab = cust;
10122   else
10123     {
10124       dwarf2_psymtab *pst = per_cu->v.psymtab;
10125       pst->compunit_symtab = cust;
10126       pst->readin = true;
10127     }
10128
10129   /* Not needed any more.  */
10130   cu->reset_builder ();
10131 }
10132
10133 /* Process an imported unit DIE.  */
10134
10135 static void
10136 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10137 {
10138   struct attribute *attr;
10139
10140   /* For now we don't handle imported units in type units.  */
10141   if (cu->per_cu->is_debug_types)
10142     {
10143       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10144                " supported in type units [in module %s]"),
10145              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10146     }
10147
10148   attr = dwarf2_attr (die, DW_AT_import, cu);
10149   if (attr != NULL)
10150     {
10151       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10152       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10153       dwarf2_per_cu_data *per_cu
10154         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10155                                             cu->per_cu->dwarf2_per_objfile);
10156
10157       /* If necessary, add it to the queue and load its DIEs.  */
10158       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10159         load_full_comp_unit (per_cu, false, cu->language);
10160
10161       cu->per_cu->imported_symtabs_push (per_cu);
10162     }
10163 }
10164
10165 /* RAII object that represents a process_die scope: i.e.,
10166    starts/finishes processing a DIE.  */
10167 class process_die_scope
10168 {
10169 public:
10170   process_die_scope (die_info *die, dwarf2_cu *cu)
10171     : m_die (die), m_cu (cu)
10172   {
10173     /* We should only be processing DIEs not already in process.  */
10174     gdb_assert (!m_die->in_process);
10175     m_die->in_process = true;
10176   }
10177
10178   ~process_die_scope ()
10179   {
10180     m_die->in_process = false;
10181
10182     /* If we're done processing the DIE for the CU that owns the line
10183        header, we don't need the line header anymore.  */
10184     if (m_cu->line_header_die_owner == m_die)
10185       {
10186         delete m_cu->line_header;
10187         m_cu->line_header = NULL;
10188         m_cu->line_header_die_owner = NULL;
10189       }
10190   }
10191
10192 private:
10193   die_info *m_die;
10194   dwarf2_cu *m_cu;
10195 };
10196
10197 /* Process a die and its children.  */
10198
10199 static void
10200 process_die (struct die_info *die, struct dwarf2_cu *cu)
10201 {
10202   process_die_scope scope (die, cu);
10203
10204   switch (die->tag)
10205     {
10206     case DW_TAG_padding:
10207       break;
10208     case DW_TAG_compile_unit:
10209     case DW_TAG_partial_unit:
10210       read_file_scope (die, cu);
10211       break;
10212     case DW_TAG_type_unit:
10213       read_type_unit_scope (die, cu);
10214       break;
10215     case DW_TAG_subprogram:
10216       /* Nested subprograms in Fortran get a prefix.  */
10217       if (cu->language == language_fortran
10218           && die->parent != NULL
10219           && die->parent->tag == DW_TAG_subprogram)
10220         cu->processing_has_namespace_info = true;
10221       /* Fall through.  */
10222     case DW_TAG_inlined_subroutine:
10223       read_func_scope (die, cu);
10224       break;
10225     case DW_TAG_lexical_block:
10226     case DW_TAG_try_block:
10227     case DW_TAG_catch_block:
10228       read_lexical_block_scope (die, cu);
10229       break;
10230     case DW_TAG_call_site:
10231     case DW_TAG_GNU_call_site:
10232       read_call_site_scope (die, cu);
10233       break;
10234     case DW_TAG_class_type:
10235     case DW_TAG_interface_type:
10236     case DW_TAG_structure_type:
10237     case DW_TAG_union_type:
10238       process_structure_scope (die, cu);
10239       break;
10240     case DW_TAG_enumeration_type:
10241       process_enumeration_scope (die, cu);
10242       break;
10243
10244     /* These dies have a type, but processing them does not create
10245        a symbol or recurse to process the children.  Therefore we can
10246        read them on-demand through read_type_die.  */
10247     case DW_TAG_subroutine_type:
10248     case DW_TAG_set_type:
10249     case DW_TAG_array_type:
10250     case DW_TAG_pointer_type:
10251     case DW_TAG_ptr_to_member_type:
10252     case DW_TAG_reference_type:
10253     case DW_TAG_rvalue_reference_type:
10254     case DW_TAG_string_type:
10255       break;
10256
10257     case DW_TAG_base_type:
10258     case DW_TAG_subrange_type:
10259     case DW_TAG_typedef:
10260       /* Add a typedef symbol for the type definition, if it has a
10261          DW_AT_name.  */
10262       new_symbol (die, read_type_die (die, cu), cu);
10263       break;
10264     case DW_TAG_common_block:
10265       read_common_block (die, cu);
10266       break;
10267     case DW_TAG_common_inclusion:
10268       break;
10269     case DW_TAG_namespace:
10270       cu->processing_has_namespace_info = true;
10271       read_namespace (die, cu);
10272       break;
10273     case DW_TAG_module:
10274       cu->processing_has_namespace_info = true;
10275       read_module (die, cu);
10276       break;
10277     case DW_TAG_imported_declaration:
10278       cu->processing_has_namespace_info = true;
10279       if (read_namespace_alias (die, cu))
10280         break;
10281       /* The declaration is not a global namespace alias.  */
10282       /* Fall through.  */
10283     case DW_TAG_imported_module:
10284       cu->processing_has_namespace_info = true;
10285       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10286                                  || cu->language != language_fortran))
10287         complaint (_("Tag '%s' has unexpected children"),
10288                    dwarf_tag_name (die->tag));
10289       read_import_statement (die, cu);
10290       break;
10291
10292     case DW_TAG_imported_unit:
10293       process_imported_unit_die (die, cu);
10294       break;
10295
10296     case DW_TAG_variable:
10297       read_variable (die, cu);
10298       break;
10299
10300     default:
10301       new_symbol (die, NULL, cu);
10302       break;
10303     }
10304 }
10305 \f
10306 /* DWARF name computation.  */
10307
10308 /* A helper function for dwarf2_compute_name which determines whether DIE
10309    needs to have the name of the scope prepended to the name listed in the
10310    die.  */
10311
10312 static int
10313 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10314 {
10315   struct attribute *attr;
10316
10317   switch (die->tag)
10318     {
10319     case DW_TAG_namespace:
10320     case DW_TAG_typedef:
10321     case DW_TAG_class_type:
10322     case DW_TAG_interface_type:
10323     case DW_TAG_structure_type:
10324     case DW_TAG_union_type:
10325     case DW_TAG_enumeration_type:
10326     case DW_TAG_enumerator:
10327     case DW_TAG_subprogram:
10328     case DW_TAG_inlined_subroutine:
10329     case DW_TAG_member:
10330     case DW_TAG_imported_declaration:
10331       return 1;
10332
10333     case DW_TAG_variable:
10334     case DW_TAG_constant:
10335       /* We only need to prefix "globally" visible variables.  These include
10336          any variable marked with DW_AT_external or any variable that
10337          lives in a namespace.  [Variables in anonymous namespaces
10338          require prefixing, but they are not DW_AT_external.]  */
10339
10340       if (dwarf2_attr (die, DW_AT_specification, cu))
10341         {
10342           struct dwarf2_cu *spec_cu = cu;
10343
10344           return die_needs_namespace (die_specification (die, &spec_cu),
10345                                       spec_cu);
10346         }
10347
10348       attr = dwarf2_attr (die, DW_AT_external, cu);
10349       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10350           && die->parent->tag != DW_TAG_module)
10351         return 0;
10352       /* A variable in a lexical block of some kind does not need a
10353          namespace, even though in C++ such variables may be external
10354          and have a mangled name.  */
10355       if (die->parent->tag ==  DW_TAG_lexical_block
10356           || die->parent->tag ==  DW_TAG_try_block
10357           || die->parent->tag ==  DW_TAG_catch_block
10358           || die->parent->tag == DW_TAG_subprogram)
10359         return 0;
10360       return 1;
10361
10362     default:
10363       return 0;
10364     }
10365 }
10366
10367 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10368    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10369    defined for the given DIE.  */
10370
10371 static struct attribute *
10372 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10373 {
10374   struct attribute *attr;
10375
10376   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10377   if (attr == NULL)
10378     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10379
10380   return attr;
10381 }
10382
10383 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10384    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10385    defined for the given DIE.  */
10386
10387 static const char *
10388 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10389 {
10390   const char *linkage_name;
10391
10392   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10393   if (linkage_name == NULL)
10394     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10395
10396   return linkage_name;
10397 }
10398
10399 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10400    compute the physname for the object, which include a method's:
10401    - formal parameters (C++),
10402    - receiver type (Go),
10403
10404    The term "physname" is a bit confusing.
10405    For C++, for example, it is the demangled name.
10406    For Go, for example, it's the mangled name.
10407
10408    For Ada, return the DIE's linkage name rather than the fully qualified
10409    name.  PHYSNAME is ignored..
10410
10411    The result is allocated on the objfile_obstack and canonicalized.  */
10412
10413 static const char *
10414 dwarf2_compute_name (const char *name,
10415                      struct die_info *die, struct dwarf2_cu *cu,
10416                      int physname)
10417 {
10418   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10419
10420   if (name == NULL)
10421     name = dwarf2_name (die, cu);
10422
10423   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10424      but otherwise compute it by typename_concat inside GDB.
10425      FIXME: Actually this is not really true, or at least not always true.
10426      It's all very confusing.  compute_and_set_names doesn't try to demangle
10427      Fortran names because there is no mangling standard.  So new_symbol
10428      will set the demangled name to the result of dwarf2_full_name, and it is
10429      the demangled name that GDB uses if it exists.  */
10430   if (cu->language == language_ada
10431       || (cu->language == language_fortran && physname))
10432     {
10433       /* For Ada unit, we prefer the linkage name over the name, as
10434          the former contains the exported name, which the user expects
10435          to be able to reference.  Ideally, we want the user to be able
10436          to reference this entity using either natural or linkage name,
10437          but we haven't started looking at this enhancement yet.  */
10438       const char *linkage_name = dw2_linkage_name (die, cu);
10439
10440       if (linkage_name != NULL)
10441         return linkage_name;
10442     }
10443
10444   /* These are the only languages we know how to qualify names in.  */
10445   if (name != NULL
10446       && (cu->language == language_cplus
10447           || cu->language == language_fortran || cu->language == language_d
10448           || cu->language == language_rust))
10449     {
10450       if (die_needs_namespace (die, cu))
10451         {
10452           const char *prefix;
10453           const char *canonical_name = NULL;
10454
10455           string_file buf;
10456
10457           prefix = determine_prefix (die, cu);
10458           if (*prefix != '\0')
10459             {
10460               gdb::unique_xmalloc_ptr<char> prefixed_name
10461                 (typename_concat (NULL, prefix, name, physname, cu));
10462
10463               buf.puts (prefixed_name.get ());
10464             }
10465           else
10466             buf.puts (name);
10467
10468           /* Template parameters may be specified in the DIE's DW_AT_name, or
10469              as children with DW_TAG_template_type_param or
10470              DW_TAG_value_type_param.  If the latter, add them to the name
10471              here.  If the name already has template parameters, then
10472              skip this step; some versions of GCC emit both, and
10473              it is more efficient to use the pre-computed name.
10474
10475              Something to keep in mind about this process: it is very
10476              unlikely, or in some cases downright impossible, to produce
10477              something that will match the mangled name of a function.
10478              If the definition of the function has the same debug info,
10479              we should be able to match up with it anyway.  But fallbacks
10480              using the minimal symbol, for instance to find a method
10481              implemented in a stripped copy of libstdc++, will not work.
10482              If we do not have debug info for the definition, we will have to
10483              match them up some other way.
10484
10485              When we do name matching there is a related problem with function
10486              templates; two instantiated function templates are allowed to
10487              differ only by their return types, which we do not add here.  */
10488
10489           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10490             {
10491               struct attribute *attr;
10492               struct die_info *child;
10493               int first = 1;
10494
10495               die->building_fullname = 1;
10496
10497               for (child = die->child; child != NULL; child = child->sibling)
10498                 {
10499                   struct type *type;
10500                   LONGEST value;
10501                   const gdb_byte *bytes;
10502                   struct dwarf2_locexpr_baton *baton;
10503                   struct value *v;
10504
10505                   if (child->tag != DW_TAG_template_type_param
10506                       && child->tag != DW_TAG_template_value_param)
10507                     continue;
10508
10509                   if (first)
10510                     {
10511                       buf.puts ("<");
10512                       first = 0;
10513                     }
10514                   else
10515                     buf.puts (", ");
10516
10517                   attr = dwarf2_attr (child, DW_AT_type, cu);
10518                   if (attr == NULL)
10519                     {
10520                       complaint (_("template parameter missing DW_AT_type"));
10521                       buf.puts ("UNKNOWN_TYPE");
10522                       continue;
10523                     }
10524                   type = die_type (child, cu);
10525
10526                   if (child->tag == DW_TAG_template_type_param)
10527                     {
10528                       c_print_type (type, "", &buf, -1, 0, cu->language,
10529                                     &type_print_raw_options);
10530                       continue;
10531                     }
10532
10533                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10534                   if (attr == NULL)
10535                     {
10536                       complaint (_("template parameter missing "
10537                                    "DW_AT_const_value"));
10538                       buf.puts ("UNKNOWN_VALUE");
10539                       continue;
10540                     }
10541
10542                   dwarf2_const_value_attr (attr, type, name,
10543                                            &cu->comp_unit_obstack, cu,
10544                                            &value, &bytes, &baton);
10545
10546                   if (TYPE_NOSIGN (type))
10547                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10548                        changed, this can use value_print instead.  */
10549                     c_printchar (value, type, &buf);
10550                   else
10551                     {
10552                       struct value_print_options opts;
10553
10554                       if (baton != NULL)
10555                         v = dwarf2_evaluate_loc_desc (type, NULL,
10556                                                       baton->data,
10557                                                       baton->size,
10558                                                       baton->per_cu);
10559                       else if (bytes != NULL)
10560                         {
10561                           v = allocate_value (type);
10562                           memcpy (value_contents_writeable (v), bytes,
10563                                   TYPE_LENGTH (type));
10564                         }
10565                       else
10566                         v = value_from_longest (type, value);
10567
10568                       /* Specify decimal so that we do not depend on
10569                          the radix.  */
10570                       get_formatted_print_options (&opts, 'd');
10571                       opts.raw = 1;
10572                       value_print (v, &buf, &opts);
10573                       release_value (v);
10574                     }
10575                 }
10576
10577               die->building_fullname = 0;
10578
10579               if (!first)
10580                 {
10581                   /* Close the argument list, with a space if necessary
10582                      (nested templates).  */
10583                   if (!buf.empty () && buf.string ().back () == '>')
10584                     buf.puts (" >");
10585                   else
10586                     buf.puts (">");
10587                 }
10588             }
10589
10590           /* For C++ methods, append formal parameter type
10591              information, if PHYSNAME.  */
10592
10593           if (physname && die->tag == DW_TAG_subprogram
10594               && cu->language == language_cplus)
10595             {
10596               struct type *type = read_type_die (die, cu);
10597
10598               c_type_print_args (type, &buf, 1, cu->language,
10599                                  &type_print_raw_options);
10600
10601               if (cu->language == language_cplus)
10602                 {
10603                   /* Assume that an artificial first parameter is
10604                      "this", but do not crash if it is not.  RealView
10605                      marks unnamed (and thus unused) parameters as
10606                      artificial; there is no way to differentiate
10607                      the two cases.  */
10608                   if (TYPE_NFIELDS (type) > 0
10609                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10610                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10611                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10612                                                                         0))))
10613                     buf.puts (" const");
10614                 }
10615             }
10616
10617           const std::string &intermediate_name = buf.string ();
10618
10619           if (cu->language == language_cplus)
10620             canonical_name
10621               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
10622                                           &objfile->per_bfd->storage_obstack);
10623
10624           /* If we only computed INTERMEDIATE_NAME, or if
10625              INTERMEDIATE_NAME is already canonical, then we need to
10626              copy it to the appropriate obstack.  */
10627           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
10628             name = obstack_strdup (&objfile->per_bfd->storage_obstack,
10629                                    intermediate_name);
10630           else
10631             name = canonical_name;
10632         }
10633     }
10634
10635   return name;
10636 }
10637
10638 /* Return the fully qualified name of DIE, based on its DW_AT_name.
10639    If scope qualifiers are appropriate they will be added.  The result
10640    will be allocated on the storage_obstack, or NULL if the DIE does
10641    not have a name.  NAME may either be from a previous call to
10642    dwarf2_name or NULL.
10643
10644    The output string will be canonicalized (if C++).  */
10645
10646 static const char *
10647 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10648 {
10649   return dwarf2_compute_name (name, die, cu, 0);
10650 }
10651
10652 /* Construct a physname for the given DIE in CU.  NAME may either be
10653    from a previous call to dwarf2_name or NULL.  The result will be
10654    allocated on the objfile_objstack or NULL if the DIE does not have a
10655    name.
10656
10657    The output string will be canonicalized (if C++).  */
10658
10659 static const char *
10660 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10661 {
10662   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10663   const char *retval, *mangled = NULL, *canon = NULL;
10664   int need_copy = 1;
10665
10666   /* In this case dwarf2_compute_name is just a shortcut not building anything
10667      on its own.  */
10668   if (!die_needs_namespace (die, cu))
10669     return dwarf2_compute_name (name, die, cu, 1);
10670
10671   mangled = dw2_linkage_name (die, cu);
10672
10673   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
10674      See https://github.com/rust-lang/rust/issues/32925.  */
10675   if (cu->language == language_rust && mangled != NULL
10676       && strchr (mangled, '{') != NULL)
10677     mangled = NULL;
10678
10679   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
10680      has computed.  */
10681   gdb::unique_xmalloc_ptr<char> demangled;
10682   if (mangled != NULL)
10683     {
10684
10685       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
10686         {
10687           /* Do nothing (do not demangle the symbol name).  */
10688         }
10689       else if (cu->language == language_go)
10690         {
10691           /* This is a lie, but we already lie to the caller new_symbol.
10692              new_symbol assumes we return the mangled name.
10693              This just undoes that lie until things are cleaned up.  */
10694         }
10695       else
10696         {
10697           /* Use DMGL_RET_DROP for C++ template functions to suppress
10698              their return type.  It is easier for GDB users to search
10699              for such functions as `name(params)' than `long name(params)'.
10700              In such case the minimal symbol names do not match the full
10701              symbol names but for template functions there is never a need
10702              to look up their definition from their declaration so
10703              the only disadvantage remains the minimal symbol variant
10704              `long name(params)' does not have the proper inferior type.  */
10705           demangled.reset (gdb_demangle (mangled,
10706                                          (DMGL_PARAMS | DMGL_ANSI
10707                                           | DMGL_RET_DROP)));
10708         }
10709       if (demangled)
10710         canon = demangled.get ();
10711       else
10712         {
10713           canon = mangled;
10714           need_copy = 0;
10715         }
10716     }
10717
10718   if (canon == NULL || check_physname)
10719     {
10720       const char *physname = dwarf2_compute_name (name, die, cu, 1);
10721
10722       if (canon != NULL && strcmp (physname, canon) != 0)
10723         {
10724           /* It may not mean a bug in GDB.  The compiler could also
10725              compute DW_AT_linkage_name incorrectly.  But in such case
10726              GDB would need to be bug-to-bug compatible.  */
10727
10728           complaint (_("Computed physname <%s> does not match demangled <%s> "
10729                        "(from linkage <%s>) - DIE at %s [in module %s]"),
10730                      physname, canon, mangled, sect_offset_str (die->sect_off),
10731                      objfile_name (objfile));
10732
10733           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
10734              is available here - over computed PHYSNAME.  It is safer
10735              against both buggy GDB and buggy compilers.  */
10736
10737           retval = canon;
10738         }
10739       else
10740         {
10741           retval = physname;
10742           need_copy = 0;
10743         }
10744     }
10745   else
10746     retval = canon;
10747
10748   if (need_copy)
10749     retval = obstack_strdup (&objfile->per_bfd->storage_obstack, retval);
10750
10751   return retval;
10752 }
10753
10754 /* Inspect DIE in CU for a namespace alias.  If one exists, record
10755    a new symbol for it.
10756
10757    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
10758
10759 static int
10760 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
10761 {
10762   struct attribute *attr;
10763
10764   /* If the die does not have a name, this is not a namespace
10765      alias.  */
10766   attr = dwarf2_attr (die, DW_AT_name, cu);
10767   if (attr != NULL)
10768     {
10769       int num;
10770       struct die_info *d = die;
10771       struct dwarf2_cu *imported_cu = cu;
10772
10773       /* If the compiler has nested DW_AT_imported_declaration DIEs,
10774          keep inspecting DIEs until we hit the underlying import.  */
10775 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
10776       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
10777         {
10778           attr = dwarf2_attr (d, DW_AT_import, cu);
10779           if (attr == NULL)
10780             break;
10781
10782           d = follow_die_ref (d, attr, &imported_cu);
10783           if (d->tag != DW_TAG_imported_declaration)
10784             break;
10785         }
10786
10787       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
10788         {
10789           complaint (_("DIE at %s has too many recursively imported "
10790                        "declarations"), sect_offset_str (d->sect_off));
10791           return 0;
10792         }
10793
10794       if (attr != NULL)
10795         {
10796           struct type *type;
10797           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10798
10799           type = get_die_type_at_offset (sect_off, cu->per_cu);
10800           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
10801             {
10802               /* This declaration is a global namespace alias.  Add
10803                  a symbol for it whose type is the aliased namespace.  */
10804               new_symbol (die, type, cu);
10805               return 1;
10806             }
10807         }
10808     }
10809
10810   return 0;
10811 }
10812
10813 /* Return the using directives repository (global or local?) to use in the
10814    current context for CU.
10815
10816    For Ada, imported declarations can materialize renamings, which *may* be
10817    global.  However it is impossible (for now?) in DWARF to distinguish
10818    "external" imported declarations and "static" ones.  As all imported
10819    declarations seem to be static in all other languages, make them all CU-wide
10820    global only in Ada.  */
10821
10822 static struct using_direct **
10823 using_directives (struct dwarf2_cu *cu)
10824 {
10825   if (cu->language == language_ada
10826       && cu->get_builder ()->outermost_context_p ())
10827     return cu->get_builder ()->get_global_using_directives ();
10828   else
10829     return cu->get_builder ()->get_local_using_directives ();
10830 }
10831
10832 /* Read the import statement specified by the given die and record it.  */
10833
10834 static void
10835 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
10836 {
10837   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10838   struct attribute *import_attr;
10839   struct die_info *imported_die, *child_die;
10840   struct dwarf2_cu *imported_cu;
10841   const char *imported_name;
10842   const char *imported_name_prefix;
10843   const char *canonical_name;
10844   const char *import_alias;
10845   const char *imported_declaration = NULL;
10846   const char *import_prefix;
10847   std::vector<const char *> excludes;
10848
10849   import_attr = dwarf2_attr (die, DW_AT_import, cu);
10850   if (import_attr == NULL)
10851     {
10852       complaint (_("Tag '%s' has no DW_AT_import"),
10853                  dwarf_tag_name (die->tag));
10854       return;
10855     }
10856
10857   imported_cu = cu;
10858   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
10859   imported_name = dwarf2_name (imported_die, imported_cu);
10860   if (imported_name == NULL)
10861     {
10862       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
10863
10864         The import in the following code:
10865         namespace A
10866           {
10867             typedef int B;
10868           }
10869
10870         int main ()
10871           {
10872             using A::B;
10873             B b;
10874             return b;
10875           }
10876
10877         ...
10878          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
10879             <52>   DW_AT_decl_file   : 1
10880             <53>   DW_AT_decl_line   : 6
10881             <54>   DW_AT_import      : <0x75>
10882          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
10883             <59>   DW_AT_name        : B
10884             <5b>   DW_AT_decl_file   : 1
10885             <5c>   DW_AT_decl_line   : 2
10886             <5d>   DW_AT_type        : <0x6e>
10887         ...
10888          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
10889             <76>   DW_AT_byte_size   : 4
10890             <77>   DW_AT_encoding    : 5        (signed)
10891
10892         imports the wrong die ( 0x75 instead of 0x58 ).
10893         This case will be ignored until the gcc bug is fixed.  */
10894       return;
10895     }
10896
10897   /* Figure out the local name after import.  */
10898   import_alias = dwarf2_name (die, cu);
10899
10900   /* Figure out where the statement is being imported to.  */
10901   import_prefix = determine_prefix (die, cu);
10902
10903   /* Figure out what the scope of the imported die is and prepend it
10904      to the name of the imported die.  */
10905   imported_name_prefix = determine_prefix (imported_die, imported_cu);
10906
10907   if (imported_die->tag != DW_TAG_namespace
10908       && imported_die->tag != DW_TAG_module)
10909     {
10910       imported_declaration = imported_name;
10911       canonical_name = imported_name_prefix;
10912     }
10913   else if (strlen (imported_name_prefix) > 0)
10914     canonical_name = obconcat (&objfile->objfile_obstack,
10915                                imported_name_prefix,
10916                                (cu->language == language_d ? "." : "::"),
10917                                imported_name, (char *) NULL);
10918   else
10919     canonical_name = imported_name;
10920
10921   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
10922     for (child_die = die->child; child_die && child_die->tag;
10923          child_die = sibling_die (child_die))
10924       {
10925         /* DWARF-4: A Fortran use statement with a “rename list” may be
10926            represented by an imported module entry with an import attribute
10927            referring to the module and owned entries corresponding to those
10928            entities that are renamed as part of being imported.  */
10929
10930         if (child_die->tag != DW_TAG_imported_declaration)
10931           {
10932             complaint (_("child DW_TAG_imported_declaration expected "
10933                          "- DIE at %s [in module %s]"),
10934                        sect_offset_str (child_die->sect_off),
10935                        objfile_name (objfile));
10936             continue;
10937           }
10938
10939         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
10940         if (import_attr == NULL)
10941           {
10942             complaint (_("Tag '%s' has no DW_AT_import"),
10943                        dwarf_tag_name (child_die->tag));
10944             continue;
10945           }
10946
10947         imported_cu = cu;
10948         imported_die = follow_die_ref_or_sig (child_die, import_attr,
10949                                               &imported_cu);
10950         imported_name = dwarf2_name (imported_die, imported_cu);
10951         if (imported_name == NULL)
10952           {
10953             complaint (_("child DW_TAG_imported_declaration has unknown "
10954                          "imported name - DIE at %s [in module %s]"),
10955                        sect_offset_str (child_die->sect_off),
10956                        objfile_name (objfile));
10957             continue;
10958           }
10959
10960         excludes.push_back (imported_name);
10961
10962         process_die (child_die, cu);
10963       }
10964
10965   add_using_directive (using_directives (cu),
10966                        import_prefix,
10967                        canonical_name,
10968                        import_alias,
10969                        imported_declaration,
10970                        excludes,
10971                        0,
10972                        &objfile->objfile_obstack);
10973 }
10974
10975 /* ICC<14 does not output the required DW_AT_declaration on incomplete
10976    types, but gives them a size of zero.  Starting with version 14,
10977    ICC is compatible with GCC.  */
10978
10979 static bool
10980 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
10981 {
10982   if (!cu->checked_producer)
10983     check_producer (cu);
10984
10985   return cu->producer_is_icc_lt_14;
10986 }
10987
10988 /* ICC generates a DW_AT_type for C void functions.  This was observed on
10989    ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
10990    which says that void functions should not have a DW_AT_type.  */
10991
10992 static bool
10993 producer_is_icc (struct dwarf2_cu *cu)
10994 {
10995   if (!cu->checked_producer)
10996     check_producer (cu);
10997
10998   return cu->producer_is_icc;
10999 }
11000
11001 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11002    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11003    this, it was first present in GCC release 4.3.0.  */
11004
11005 static bool
11006 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11007 {
11008   if (!cu->checked_producer)
11009     check_producer (cu);
11010
11011   return cu->producer_is_gcc_lt_4_3;
11012 }
11013
11014 static file_and_directory
11015 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11016 {
11017   file_and_directory res;
11018
11019   /* Find the filename.  Do not use dwarf2_name here, since the filename
11020      is not a source language identifier.  */
11021   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11022   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11023
11024   if (res.comp_dir == NULL
11025       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11026       && IS_ABSOLUTE_PATH (res.name))
11027     {
11028       res.comp_dir_storage = ldirname (res.name);
11029       if (!res.comp_dir_storage.empty ())
11030         res.comp_dir = res.comp_dir_storage.c_str ();
11031     }
11032   if (res.comp_dir != NULL)
11033     {
11034       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11035          directory, get rid of it.  */
11036       const char *cp = strchr (res.comp_dir, ':');
11037
11038       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11039         res.comp_dir = cp + 1;
11040     }
11041
11042   if (res.name == NULL)
11043     res.name = "<unknown>";
11044
11045   return res;
11046 }
11047
11048 /* Handle DW_AT_stmt_list for a compilation unit.
11049    DIE is the DW_TAG_compile_unit die for CU.
11050    COMP_DIR is the compilation directory.  LOWPC is passed to
11051    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11052
11053 static void
11054 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11055                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11056 {
11057   struct dwarf2_per_objfile *dwarf2_per_objfile
11058     = cu->per_cu->dwarf2_per_objfile;
11059   struct attribute *attr;
11060   struct line_header line_header_local;
11061   hashval_t line_header_local_hash;
11062   void **slot;
11063   int decode_mapping;
11064
11065   gdb_assert (! cu->per_cu->is_debug_types);
11066
11067   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11068   if (attr == NULL)
11069     return;
11070
11071   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11072
11073   /* The line header hash table is only created if needed (it exists to
11074      prevent redundant reading of the line table for partial_units).
11075      If we're given a partial_unit, we'll need it.  If we're given a
11076      compile_unit, then use the line header hash table if it's already
11077      created, but don't create one just yet.  */
11078
11079   if (dwarf2_per_objfile->line_header_hash == NULL
11080       && die->tag == DW_TAG_partial_unit)
11081     {
11082       dwarf2_per_objfile->line_header_hash
11083         .reset (htab_create_alloc (127, line_header_hash_voidp,
11084                                    line_header_eq_voidp,
11085                                    free_line_header_voidp,
11086                                    xcalloc, xfree));
11087     }
11088
11089   line_header_local.sect_off = line_offset;
11090   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11091   line_header_local_hash = line_header_hash (&line_header_local);
11092   if (dwarf2_per_objfile->line_header_hash != NULL)
11093     {
11094       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash.get (),
11095                                        &line_header_local,
11096                                        line_header_local_hash, NO_INSERT);
11097
11098       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11099          is not present in *SLOT (since if there is something in *SLOT then
11100          it will be for a partial_unit).  */
11101       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11102         {
11103           gdb_assert (*slot != NULL);
11104           cu->line_header = (struct line_header *) *slot;
11105           return;
11106         }
11107     }
11108
11109   /* dwarf_decode_line_header does not yet provide sufficient information.
11110      We always have to call also dwarf_decode_lines for it.  */
11111   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11112   if (lh == NULL)
11113     return;
11114
11115   cu->line_header = lh.release ();
11116   cu->line_header_die_owner = die;
11117
11118   if (dwarf2_per_objfile->line_header_hash == NULL)
11119     slot = NULL;
11120   else
11121     {
11122       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash.get (),
11123                                        &line_header_local,
11124                                        line_header_local_hash, INSERT);
11125       gdb_assert (slot != NULL);
11126     }
11127   if (slot != NULL && *slot == NULL)
11128     {
11129       /* This newly decoded line number information unit will be owned
11130          by line_header_hash hash table.  */
11131       *slot = cu->line_header;
11132       cu->line_header_die_owner = NULL;
11133     }
11134   else
11135     {
11136       /* We cannot free any current entry in (*slot) as that struct line_header
11137          may be already used by multiple CUs.  Create only temporary decoded
11138          line_header for this CU - it may happen at most once for each line
11139          number information unit.  And if we're not using line_header_hash
11140          then this is what we want as well.  */
11141       gdb_assert (die->tag != DW_TAG_partial_unit);
11142     }
11143   decode_mapping = (die->tag != DW_TAG_partial_unit);
11144   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11145                       decode_mapping);
11146
11147 }
11148
11149 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11150
11151 static void
11152 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11153 {
11154   struct dwarf2_per_objfile *dwarf2_per_objfile
11155     = cu->per_cu->dwarf2_per_objfile;
11156   struct objfile *objfile = dwarf2_per_objfile->objfile;
11157   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11158   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11159   CORE_ADDR highpc = ((CORE_ADDR) 0);
11160   struct attribute *attr;
11161   struct die_info *child_die;
11162   CORE_ADDR baseaddr;
11163
11164   prepare_one_comp_unit (cu, die, cu->language);
11165   baseaddr = objfile->text_section_offset ();
11166
11167   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11168
11169   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11170      from finish_block.  */
11171   if (lowpc == ((CORE_ADDR) -1))
11172     lowpc = highpc;
11173   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11174
11175   file_and_directory fnd = find_file_and_directory (die, cu);
11176
11177   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11178      standardised yet.  As a workaround for the language detection we fall
11179      back to the DW_AT_producer string.  */
11180   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11181     cu->language = language_opencl;
11182
11183   /* Similar hack for Go.  */
11184   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11185     set_cu_language (DW_LANG_Go, cu);
11186
11187   cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11188
11189   /* Decode line number information if present.  We do this before
11190      processing child DIEs, so that the line header table is available
11191      for DW_AT_decl_file.  */
11192   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11193
11194   /* Process all dies in compilation unit.  */
11195   if (die->child != NULL)
11196     {
11197       child_die = die->child;
11198       while (child_die && child_die->tag)
11199         {
11200           process_die (child_die, cu);
11201           child_die = sibling_die (child_die);
11202         }
11203     }
11204
11205   /* Decode macro information, if present.  Dwarf 2 macro information
11206      refers to information in the line number info statement program
11207      header, so we can only read it if we've read the header
11208      successfully.  */
11209   attr = dwarf2_attr (die, DW_AT_macros, cu);
11210   if (attr == NULL)
11211     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11212   if (attr && cu->line_header)
11213     {
11214       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11215         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11216
11217       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11218     }
11219   else
11220     {
11221       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11222       if (attr && cu->line_header)
11223         {
11224           unsigned int macro_offset = DW_UNSND (attr);
11225
11226           dwarf_decode_macros (cu, macro_offset, 0);
11227         }
11228     }
11229 }
11230
11231 void
11232 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11233 {
11234   struct type_unit_group *tu_group;
11235   int first_time;
11236   struct attribute *attr;
11237   unsigned int i;
11238   struct signatured_type *sig_type;
11239
11240   gdb_assert (per_cu->is_debug_types);
11241   sig_type = (struct signatured_type *) per_cu;
11242
11243   attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11244
11245   /* If we're using .gdb_index (includes -readnow) then
11246      per_cu->type_unit_group may not have been set up yet.  */
11247   if (sig_type->type_unit_group == NULL)
11248     sig_type->type_unit_group = get_type_unit_group (this, attr);
11249   tu_group = sig_type->type_unit_group;
11250
11251   /* If we've already processed this stmt_list there's no real need to
11252      do it again, we could fake it and just recreate the part we need
11253      (file name,index -> symtab mapping).  If data shows this optimization
11254      is useful we can do it then.  */
11255   first_time = tu_group->compunit_symtab == NULL;
11256
11257   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11258      debug info.  */
11259   line_header_up lh;
11260   if (attr != NULL)
11261     {
11262       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11263       lh = dwarf_decode_line_header (line_offset, this);
11264     }
11265   if (lh == NULL)
11266     {
11267       if (first_time)
11268         start_symtab ("", NULL, 0);
11269       else
11270         {
11271           gdb_assert (tu_group->symtabs == NULL);
11272           gdb_assert (m_builder == nullptr);
11273           struct compunit_symtab *cust = tu_group->compunit_symtab;
11274           m_builder.reset (new struct buildsym_compunit
11275                            (COMPUNIT_OBJFILE (cust), "",
11276                             COMPUNIT_DIRNAME (cust),
11277                             compunit_language (cust),
11278                             0, cust));
11279         }
11280       return;
11281     }
11282
11283   line_header = lh.release ();
11284   line_header_die_owner = die;
11285
11286   if (first_time)
11287     {
11288       struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11289
11290       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11291          still initializing it, and our caller (a few levels up)
11292          process_full_type_unit still needs to know if this is the first
11293          time.  */
11294
11295       tu_group->num_symtabs = line_header->file_names_size ();
11296       tu_group->symtabs = XNEWVEC (struct symtab *,
11297                                    line_header->file_names_size ());
11298
11299       auto &file_names = line_header->file_names ();
11300       for (i = 0; i < file_names.size (); ++i)
11301         {
11302           file_entry &fe = file_names[i];
11303           dwarf2_start_subfile (this, fe.name,
11304                                 fe.include_dir (line_header));
11305           buildsym_compunit *b = get_builder ();
11306           if (b->get_current_subfile ()->symtab == NULL)
11307             {
11308               /* NOTE: start_subfile will recognize when it's been
11309                  passed a file it has already seen.  So we can't
11310                  assume there's a simple mapping from
11311                  cu->line_header->file_names to subfiles, plus
11312                  cu->line_header->file_names may contain dups.  */
11313               b->get_current_subfile ()->symtab
11314                 = allocate_symtab (cust, b->get_current_subfile ()->name);
11315             }
11316
11317           fe.symtab = b->get_current_subfile ()->symtab;
11318           tu_group->symtabs[i] = fe.symtab;
11319         }
11320     }
11321   else
11322     {
11323       gdb_assert (m_builder == nullptr);
11324       struct compunit_symtab *cust = tu_group->compunit_symtab;
11325       m_builder.reset (new struct buildsym_compunit
11326                        (COMPUNIT_OBJFILE (cust), "",
11327                         COMPUNIT_DIRNAME (cust),
11328                         compunit_language (cust),
11329                         0, cust));
11330
11331       auto &file_names = line_header->file_names ();
11332       for (i = 0; i < file_names.size (); ++i)
11333         {
11334           file_entry &fe = file_names[i];
11335           fe.symtab = tu_group->symtabs[i];
11336         }
11337     }
11338
11339   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11340      so they don't have a "real" (so to speak) symtab anyway.
11341      There is later code that will assign the main symtab to all symbols
11342      that don't have one.  We need to handle the case of a symbol with a
11343      missing symtab (DW_AT_decl_file) anyway.  */
11344 }
11345
11346 /* Process DW_TAG_type_unit.
11347    For TUs we want to skip the first top level sibling if it's not the
11348    actual type being defined by this TU.  In this case the first top
11349    level sibling is there to provide context only.  */
11350
11351 static void
11352 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11353 {
11354   struct die_info *child_die;
11355
11356   prepare_one_comp_unit (cu, die, language_minimal);
11357
11358   /* Initialize (or reinitialize) the machinery for building symtabs.
11359      We do this before processing child DIEs, so that the line header table
11360      is available for DW_AT_decl_file.  */
11361   cu->setup_type_unit_groups (die);
11362
11363   if (die->child != NULL)
11364     {
11365       child_die = die->child;
11366       while (child_die && child_die->tag)
11367         {
11368           process_die (child_die, cu);
11369           child_die = sibling_die (child_die);
11370         }
11371     }
11372 }
11373 \f
11374 /* DWO/DWP files.
11375
11376    http://gcc.gnu.org/wiki/DebugFission
11377    http://gcc.gnu.org/wiki/DebugFissionDWP
11378
11379    To simplify handling of both DWO files ("object" files with the DWARF info)
11380    and DWP files (a file with the DWOs packaged up into one file), we treat
11381    DWP files as having a collection of virtual DWO files.  */
11382
11383 static hashval_t
11384 hash_dwo_file (const void *item)
11385 {
11386   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11387   hashval_t hash;
11388
11389   hash = htab_hash_string (dwo_file->dwo_name);
11390   if (dwo_file->comp_dir != NULL)
11391     hash += htab_hash_string (dwo_file->comp_dir);
11392   return hash;
11393 }
11394
11395 static int
11396 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11397 {
11398   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11399   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11400
11401   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11402     return 0;
11403   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11404     return lhs->comp_dir == rhs->comp_dir;
11405   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11406 }
11407
11408 /* Allocate a hash table for DWO files.  */
11409
11410 static htab_up
11411 allocate_dwo_file_hash_table (struct objfile *objfile)
11412 {
11413   auto delete_dwo_file = [] (void *item)
11414     {
11415       struct dwo_file *dwo_file = (struct dwo_file *) item;
11416
11417       delete dwo_file;
11418     };
11419
11420   return htab_up (htab_create_alloc (41,
11421                                      hash_dwo_file,
11422                                      eq_dwo_file,
11423                                      delete_dwo_file,
11424                                      xcalloc, xfree));
11425 }
11426
11427 /* Lookup DWO file DWO_NAME.  */
11428
11429 static void **
11430 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11431                       const char *dwo_name,
11432                       const char *comp_dir)
11433 {
11434   struct dwo_file find_entry;
11435   void **slot;
11436
11437   if (dwarf2_per_objfile->dwo_files == NULL)
11438     dwarf2_per_objfile->dwo_files
11439       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11440
11441   find_entry.dwo_name = dwo_name;
11442   find_entry.comp_dir = comp_dir;
11443   slot = htab_find_slot (dwarf2_per_objfile->dwo_files.get (), &find_entry,
11444                          INSERT);
11445
11446   return slot;
11447 }
11448
11449 static hashval_t
11450 hash_dwo_unit (const void *item)
11451 {
11452   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11453
11454   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11455   return dwo_unit->signature;
11456 }
11457
11458 static int
11459 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11460 {
11461   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11462   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11463
11464   /* The signature is assumed to be unique within the DWO file.
11465      So while object file CU dwo_id's always have the value zero,
11466      that's OK, assuming each object file DWO file has only one CU,
11467      and that's the rule for now.  */
11468   return lhs->signature == rhs->signature;
11469 }
11470
11471 /* Allocate a hash table for DWO CUs,TUs.
11472    There is one of these tables for each of CUs,TUs for each DWO file.  */
11473
11474 static htab_up
11475 allocate_dwo_unit_table (struct objfile *objfile)
11476 {
11477   /* Start out with a pretty small number.
11478      Generally DWO files contain only one CU and maybe some TUs.  */
11479   return htab_up (htab_create_alloc (3,
11480                                      hash_dwo_unit,
11481                                      eq_dwo_unit,
11482                                      NULL, xcalloc, xfree));
11483 }
11484
11485 /* die_reader_func for create_dwo_cu.  */
11486
11487 static void
11488 create_dwo_cu_reader (const struct die_reader_specs *reader,
11489                       const gdb_byte *info_ptr,
11490                       struct die_info *comp_unit_die,
11491                       struct dwo_file *dwo_file,
11492                       struct dwo_unit *dwo_unit)
11493 {
11494   struct dwarf2_cu *cu = reader->cu;
11495   sect_offset sect_off = cu->per_cu->sect_off;
11496   struct dwarf2_section_info *section = cu->per_cu->section;
11497
11498   gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
11499   if (!signature.has_value ())
11500     {
11501       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11502                    " its dwo_id [in module %s]"),
11503                  sect_offset_str (sect_off), dwo_file->dwo_name);
11504       return;
11505     }
11506
11507   dwo_unit->dwo_file = dwo_file;
11508   dwo_unit->signature = *signature;
11509   dwo_unit->section = section;
11510   dwo_unit->sect_off = sect_off;
11511   dwo_unit->length = cu->per_cu->length;
11512
11513   if (dwarf_read_debug)
11514     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11515                         sect_offset_str (sect_off),
11516                         hex_string (dwo_unit->signature));
11517 }
11518
11519 /* Create the dwo_units for the CUs in a DWO_FILE.
11520    Note: This function processes DWO files only, not DWP files.  */
11521
11522 static void
11523 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11524                        dwarf2_cu *cu, struct dwo_file &dwo_file,
11525                        dwarf2_section_info &section, htab_up &cus_htab)
11526 {
11527   struct objfile *objfile = dwarf2_per_objfile->objfile;
11528   const gdb_byte *info_ptr, *end_ptr;
11529
11530   section.read (objfile);
11531   info_ptr = section.buffer;
11532
11533   if (info_ptr == NULL)
11534     return;
11535
11536   if (dwarf_read_debug)
11537     {
11538       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11539                           section.get_name (),
11540                           section.get_file_name ());
11541     }
11542
11543   end_ptr = info_ptr + section.size;
11544   while (info_ptr < end_ptr)
11545     {
11546       struct dwarf2_per_cu_data per_cu;
11547       struct dwo_unit read_unit {};
11548       struct dwo_unit *dwo_unit;
11549       void **slot;
11550       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11551
11552       memset (&per_cu, 0, sizeof (per_cu));
11553       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11554       per_cu.is_debug_types = 0;
11555       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11556       per_cu.section = &section;
11557
11558       cutu_reader reader (&per_cu, cu, &dwo_file);
11559       if (!reader.dummy_p)
11560         create_dwo_cu_reader (&reader, reader.info_ptr, reader.comp_unit_die,
11561                               &dwo_file, &read_unit);
11562       info_ptr += per_cu.length;
11563
11564       // If the unit could not be parsed, skip it.
11565       if (read_unit.dwo_file == NULL)
11566         continue;
11567
11568       if (cus_htab == NULL)
11569         cus_htab = allocate_dwo_unit_table (objfile);
11570
11571       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11572       *dwo_unit = read_unit;
11573       slot = htab_find_slot (cus_htab.get (), dwo_unit, INSERT);
11574       gdb_assert (slot != NULL);
11575       if (*slot != NULL)
11576         {
11577           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11578           sect_offset dup_sect_off = dup_cu->sect_off;
11579
11580           complaint (_("debug cu entry at offset %s is duplicate to"
11581                        " the entry at offset %s, signature %s"),
11582                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11583                      hex_string (dwo_unit->signature));
11584         }
11585       *slot = (void *)dwo_unit;
11586     }
11587 }
11588
11589 /* DWP file .debug_{cu,tu}_index section format:
11590    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11591
11592    DWP Version 1:
11593
11594    Both index sections have the same format, and serve to map a 64-bit
11595    signature to a set of section numbers.  Each section begins with a header,
11596    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11597    indexes, and a pool of 32-bit section numbers.  The index sections will be
11598    aligned at 8-byte boundaries in the file.
11599
11600    The index section header consists of:
11601
11602     V, 32 bit version number
11603     -, 32 bits unused
11604     N, 32 bit number of compilation units or type units in the index
11605     M, 32 bit number of slots in the hash table
11606
11607    Numbers are recorded using the byte order of the application binary.
11608
11609    The hash table begins at offset 16 in the section, and consists of an array
11610    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
11611    order of the application binary).  Unused slots in the hash table are 0.
11612    (We rely on the extreme unlikeliness of a signature being exactly 0.)
11613
11614    The parallel table begins immediately after the hash table
11615    (at offset 16 + 8 * M from the beginning of the section), and consists of an
11616    array of 32-bit indexes (using the byte order of the application binary),
11617    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
11618    table contains a 32-bit index into the pool of section numbers.  For unused
11619    hash table slots, the corresponding entry in the parallel table will be 0.
11620
11621    The pool of section numbers begins immediately following the hash table
11622    (at offset 16 + 12 * M from the beginning of the section).  The pool of
11623    section numbers consists of an array of 32-bit words (using the byte order
11624    of the application binary).  Each item in the array is indexed starting
11625    from 0.  The hash table entry provides the index of the first section
11626    number in the set.  Additional section numbers in the set follow, and the
11627    set is terminated by a 0 entry (section number 0 is not used in ELF).
11628
11629    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
11630    section must be the first entry in the set, and the .debug_abbrev.dwo must
11631    be the second entry. Other members of the set may follow in any order.
11632
11633    ---
11634
11635    DWP Version 2:
11636
11637    DWP Version 2 combines all the .debug_info, etc. sections into one,
11638    and the entries in the index tables are now offsets into these sections.
11639    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
11640    section.
11641
11642    Index Section Contents:
11643     Header
11644     Hash Table of Signatures   dwp_hash_table.hash_table
11645     Parallel Table of Indices  dwp_hash_table.unit_table
11646     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
11647     Table of Section Sizes     dwp_hash_table.v2.sizes
11648
11649    The index section header consists of:
11650
11651     V, 32 bit version number
11652     L, 32 bit number of columns in the table of section offsets
11653     N, 32 bit number of compilation units or type units in the index
11654     M, 32 bit number of slots in the hash table
11655
11656    Numbers are recorded using the byte order of the application binary.
11657
11658    The hash table has the same format as version 1.
11659    The parallel table of indices has the same format as version 1,
11660    except that the entries are origin-1 indices into the table of sections
11661    offsets and the table of section sizes.
11662
11663    The table of offsets begins immediately following the parallel table
11664    (at offset 16 + 12 * M from the beginning of the section).  The table is
11665    a two-dimensional array of 32-bit words (using the byte order of the
11666    application binary), with L columns and N+1 rows, in row-major order.
11667    Each row in the array is indexed starting from 0.  The first row provides
11668    a key to the remaining rows: each column in this row provides an identifier
11669    for a debug section, and the offsets in the same column of subsequent rows
11670    refer to that section.  The section identifiers are:
11671
11672     DW_SECT_INFO         1  .debug_info.dwo
11673     DW_SECT_TYPES        2  .debug_types.dwo
11674     DW_SECT_ABBREV       3  .debug_abbrev.dwo
11675     DW_SECT_LINE         4  .debug_line.dwo
11676     DW_SECT_LOC          5  .debug_loc.dwo
11677     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
11678     DW_SECT_MACINFO      7  .debug_macinfo.dwo
11679     DW_SECT_MACRO        8  .debug_macro.dwo
11680
11681    The offsets provided by the CU and TU index sections are the base offsets
11682    for the contributions made by each CU or TU to the corresponding section
11683    in the package file.  Each CU and TU header contains an abbrev_offset
11684    field, used to find the abbreviations table for that CU or TU within the
11685    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
11686    be interpreted as relative to the base offset given in the index section.
11687    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
11688    should be interpreted as relative to the base offset for .debug_line.dwo,
11689    and offsets into other debug sections obtained from DWARF attributes should
11690    also be interpreted as relative to the corresponding base offset.
11691
11692    The table of sizes begins immediately following the table of offsets.
11693    Like the table of offsets, it is a two-dimensional array of 32-bit words,
11694    with L columns and N rows, in row-major order.  Each row in the array is
11695    indexed starting from 1 (row 0 is shared by the two tables).
11696
11697    ---
11698
11699    Hash table lookup is handled the same in version 1 and 2:
11700
11701    We assume that N and M will not exceed 2^32 - 1.
11702    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
11703
11704    Given a 64-bit compilation unit signature or a type signature S, an entry
11705    in the hash table is located as follows:
11706
11707    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
11708       the low-order k bits all set to 1.
11709
11710    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
11711
11712    3) If the hash table entry at index H matches the signature, use that
11713       entry.  If the hash table entry at index H is unused (all zeroes),
11714       terminate the search: the signature is not present in the table.
11715
11716    4) Let H = (H + H') modulo M. Repeat at Step 3.
11717
11718    Because M > N and H' and M are relatively prime, the search is guaranteed
11719    to stop at an unused slot or find the match.  */
11720
11721 /* Create a hash table to map DWO IDs to their CU/TU entry in
11722    .debug_{info,types}.dwo in DWP_FILE.
11723    Returns NULL if there isn't one.
11724    Note: This function processes DWP files only, not DWO files.  */
11725
11726 static struct dwp_hash_table *
11727 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11728                        struct dwp_file *dwp_file, int is_debug_types)
11729 {
11730   struct objfile *objfile = dwarf2_per_objfile->objfile;
11731   bfd *dbfd = dwp_file->dbfd.get ();
11732   const gdb_byte *index_ptr, *index_end;
11733   struct dwarf2_section_info *index;
11734   uint32_t version, nr_columns, nr_units, nr_slots;
11735   struct dwp_hash_table *htab;
11736
11737   if (is_debug_types)
11738     index = &dwp_file->sections.tu_index;
11739   else
11740     index = &dwp_file->sections.cu_index;
11741
11742   if (index->empty ())
11743     return NULL;
11744   index->read (objfile);
11745
11746   index_ptr = index->buffer;
11747   index_end = index_ptr + index->size;
11748
11749   version = read_4_bytes (dbfd, index_ptr);
11750   index_ptr += 4;
11751   if (version == 2)
11752     nr_columns = read_4_bytes (dbfd, index_ptr);
11753   else
11754     nr_columns = 0;
11755   index_ptr += 4;
11756   nr_units = read_4_bytes (dbfd, index_ptr);
11757   index_ptr += 4;
11758   nr_slots = read_4_bytes (dbfd, index_ptr);
11759   index_ptr += 4;
11760
11761   if (version != 1 && version != 2)
11762     {
11763       error (_("Dwarf Error: unsupported DWP file version (%s)"
11764                " [in module %s]"),
11765              pulongest (version), dwp_file->name);
11766     }
11767   if (nr_slots != (nr_slots & -nr_slots))
11768     {
11769       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
11770                " is not power of 2 [in module %s]"),
11771              pulongest (nr_slots), dwp_file->name);
11772     }
11773
11774   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
11775   htab->version = version;
11776   htab->nr_columns = nr_columns;
11777   htab->nr_units = nr_units;
11778   htab->nr_slots = nr_slots;
11779   htab->hash_table = index_ptr;
11780   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
11781
11782   /* Exit early if the table is empty.  */
11783   if (nr_slots == 0 || nr_units == 0
11784       || (version == 2 && nr_columns == 0))
11785     {
11786       /* All must be zero.  */
11787       if (nr_slots != 0 || nr_units != 0
11788           || (version == 2 && nr_columns != 0))
11789         {
11790           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
11791                        " all zero [in modules %s]"),
11792                      dwp_file->name);
11793         }
11794       return htab;
11795     }
11796
11797   if (version == 1)
11798     {
11799       htab->section_pool.v1.indices =
11800         htab->unit_table + sizeof (uint32_t) * nr_slots;
11801       /* It's harder to decide whether the section is too small in v1.
11802          V1 is deprecated anyway so we punt.  */
11803     }
11804   else
11805     {
11806       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
11807       int *ids = htab->section_pool.v2.section_ids;
11808       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
11809       /* Reverse map for error checking.  */
11810       int ids_seen[DW_SECT_MAX + 1];
11811       int i;
11812
11813       if (nr_columns < 2)
11814         {
11815           error (_("Dwarf Error: bad DWP hash table, too few columns"
11816                    " in section table [in module %s]"),
11817                  dwp_file->name);
11818         }
11819       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
11820         {
11821           error (_("Dwarf Error: bad DWP hash table, too many columns"
11822                    " in section table [in module %s]"),
11823                  dwp_file->name);
11824         }
11825       memset (ids, 255, sizeof_ids);
11826       memset (ids_seen, 255, sizeof (ids_seen));
11827       for (i = 0; i < nr_columns; ++i)
11828         {
11829           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
11830
11831           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
11832             {
11833               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
11834                        " in section table [in module %s]"),
11835                      id, dwp_file->name);
11836             }
11837           if (ids_seen[id] != -1)
11838             {
11839               error (_("Dwarf Error: bad DWP hash table, duplicate section"
11840                        " id %d in section table [in module %s]"),
11841                      id, dwp_file->name);
11842             }
11843           ids_seen[id] = i;
11844           ids[i] = id;
11845         }
11846       /* Must have exactly one info or types section.  */
11847       if (((ids_seen[DW_SECT_INFO] != -1)
11848            + (ids_seen[DW_SECT_TYPES] != -1))
11849           != 1)
11850         {
11851           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
11852                    " DWO info/types section [in module %s]"),
11853                  dwp_file->name);
11854         }
11855       /* Must have an abbrev section.  */
11856       if (ids_seen[DW_SECT_ABBREV] == -1)
11857         {
11858           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
11859                    " section [in module %s]"),
11860                  dwp_file->name);
11861         }
11862       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
11863       htab->section_pool.v2.sizes =
11864         htab->section_pool.v2.offsets + (sizeof (uint32_t)
11865                                          * nr_units * nr_columns);
11866       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
11867                                           * nr_units * nr_columns))
11868           > index_end)
11869         {
11870           error (_("Dwarf Error: DWP index section is corrupt (too small)"
11871                    " [in module %s]"),
11872                  dwp_file->name);
11873         }
11874     }
11875
11876   return htab;
11877 }
11878
11879 /* Update SECTIONS with the data from SECTP.
11880
11881    This function is like the other "locate" section routines that are
11882    passed to bfd_map_over_sections, but in this context the sections to
11883    read comes from the DWP V1 hash table, not the full ELF section table.
11884
11885    The result is non-zero for success, or zero if an error was found.  */
11886
11887 static int
11888 locate_v1_virtual_dwo_sections (asection *sectp,
11889                                 struct virtual_v1_dwo_sections *sections)
11890 {
11891   const struct dwop_section_names *names = &dwop_section_names;
11892
11893   if (section_is_p (sectp->name, &names->abbrev_dwo))
11894     {
11895       /* There can be only one.  */
11896       if (sections->abbrev.s.section != NULL)
11897         return 0;
11898       sections->abbrev.s.section = sectp;
11899       sections->abbrev.size = bfd_section_size (sectp);
11900     }
11901   else if (section_is_p (sectp->name, &names->info_dwo)
11902            || section_is_p (sectp->name, &names->types_dwo))
11903     {
11904       /* There can be only one.  */
11905       if (sections->info_or_types.s.section != NULL)
11906         return 0;
11907       sections->info_or_types.s.section = sectp;
11908       sections->info_or_types.size = bfd_section_size (sectp);
11909     }
11910   else if (section_is_p (sectp->name, &names->line_dwo))
11911     {
11912       /* There can be only one.  */
11913       if (sections->line.s.section != NULL)
11914         return 0;
11915       sections->line.s.section = sectp;
11916       sections->line.size = bfd_section_size (sectp);
11917     }
11918   else if (section_is_p (sectp->name, &names->loc_dwo))
11919     {
11920       /* There can be only one.  */
11921       if (sections->loc.s.section != NULL)
11922         return 0;
11923       sections->loc.s.section = sectp;
11924       sections->loc.size = bfd_section_size (sectp);
11925     }
11926   else if (section_is_p (sectp->name, &names->macinfo_dwo))
11927     {
11928       /* There can be only one.  */
11929       if (sections->macinfo.s.section != NULL)
11930         return 0;
11931       sections->macinfo.s.section = sectp;
11932       sections->macinfo.size = bfd_section_size (sectp);
11933     }
11934   else if (section_is_p (sectp->name, &names->macro_dwo))
11935     {
11936       /* There can be only one.  */
11937       if (sections->macro.s.section != NULL)
11938         return 0;
11939       sections->macro.s.section = sectp;
11940       sections->macro.size = bfd_section_size (sectp);
11941     }
11942   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
11943     {
11944       /* There can be only one.  */
11945       if (sections->str_offsets.s.section != NULL)
11946         return 0;
11947       sections->str_offsets.s.section = sectp;
11948       sections->str_offsets.size = bfd_section_size (sectp);
11949     }
11950   else
11951     {
11952       /* No other kind of section is valid.  */
11953       return 0;
11954     }
11955
11956   return 1;
11957 }
11958
11959 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
11960    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
11961    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
11962    This is for DWP version 1 files.  */
11963
11964 static struct dwo_unit *
11965 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
11966                            struct dwp_file *dwp_file,
11967                            uint32_t unit_index,
11968                            const char *comp_dir,
11969                            ULONGEST signature, int is_debug_types)
11970 {
11971   struct objfile *objfile = dwarf2_per_objfile->objfile;
11972   const struct dwp_hash_table *dwp_htab =
11973     is_debug_types ? dwp_file->tus : dwp_file->cus;
11974   bfd *dbfd = dwp_file->dbfd.get ();
11975   const char *kind = is_debug_types ? "TU" : "CU";
11976   struct dwo_file *dwo_file;
11977   struct dwo_unit *dwo_unit;
11978   struct virtual_v1_dwo_sections sections;
11979   void **dwo_file_slot;
11980   int i;
11981
11982   gdb_assert (dwp_file->version == 1);
11983
11984   if (dwarf_read_debug)
11985     {
11986       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
11987                           kind,
11988                           pulongest (unit_index), hex_string (signature),
11989                           dwp_file->name);
11990     }
11991
11992   /* Fetch the sections of this DWO unit.
11993      Put a limit on the number of sections we look for so that bad data
11994      doesn't cause us to loop forever.  */
11995
11996 #define MAX_NR_V1_DWO_SECTIONS \
11997   (1 /* .debug_info or .debug_types */ \
11998    + 1 /* .debug_abbrev */ \
11999    + 1 /* .debug_line */ \
12000    + 1 /* .debug_loc */ \
12001    + 1 /* .debug_str_offsets */ \
12002    + 1 /* .debug_macro or .debug_macinfo */ \
12003    + 1 /* trailing zero */)
12004
12005   memset (&sections, 0, sizeof (sections));
12006
12007   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12008     {
12009       asection *sectp;
12010       uint32_t section_nr =
12011         read_4_bytes (dbfd,
12012                       dwp_htab->section_pool.v1.indices
12013                       + (unit_index + i) * sizeof (uint32_t));
12014
12015       if (section_nr == 0)
12016         break;
12017       if (section_nr >= dwp_file->num_sections)
12018         {
12019           error (_("Dwarf Error: bad DWP hash table, section number too large"
12020                    " [in module %s]"),
12021                  dwp_file->name);
12022         }
12023
12024       sectp = dwp_file->elf_sections[section_nr];
12025       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12026         {
12027           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12028                    " [in module %s]"),
12029                  dwp_file->name);
12030         }
12031     }
12032
12033   if (i < 2
12034       || sections.info_or_types.empty ()
12035       || sections.abbrev.empty ())
12036     {
12037       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12038                " [in module %s]"),
12039              dwp_file->name);
12040     }
12041   if (i == MAX_NR_V1_DWO_SECTIONS)
12042     {
12043       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12044                " [in module %s]"),
12045              dwp_file->name);
12046     }
12047
12048   /* It's easier for the rest of the code if we fake a struct dwo_file and
12049      have dwo_unit "live" in that.  At least for now.
12050
12051      The DWP file can be made up of a random collection of CUs and TUs.
12052      However, for each CU + set of TUs that came from the same original DWO
12053      file, we can combine them back into a virtual DWO file to save space
12054      (fewer struct dwo_file objects to allocate).  Remember that for really
12055      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12056
12057   std::string virtual_dwo_name =
12058     string_printf ("virtual-dwo/%d-%d-%d-%d",
12059                    sections.abbrev.get_id (),
12060                    sections.line.get_id (),
12061                    sections.loc.get_id (),
12062                    sections.str_offsets.get_id ());
12063   /* Can we use an existing virtual DWO file?  */
12064   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12065                                         virtual_dwo_name.c_str (),
12066                                         comp_dir);
12067   /* Create one if necessary.  */
12068   if (*dwo_file_slot == NULL)
12069     {
12070       if (dwarf_read_debug)
12071         {
12072           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12073                               virtual_dwo_name.c_str ());
12074         }
12075       dwo_file = new struct dwo_file;
12076       dwo_file->dwo_name = obstack_strdup (&objfile->objfile_obstack,
12077                                            virtual_dwo_name);
12078       dwo_file->comp_dir = comp_dir;
12079       dwo_file->sections.abbrev = sections.abbrev;
12080       dwo_file->sections.line = sections.line;
12081       dwo_file->sections.loc = sections.loc;
12082       dwo_file->sections.macinfo = sections.macinfo;
12083       dwo_file->sections.macro = sections.macro;
12084       dwo_file->sections.str_offsets = sections.str_offsets;
12085       /* The "str" section is global to the entire DWP file.  */
12086       dwo_file->sections.str = dwp_file->sections.str;
12087       /* The info or types section is assigned below to dwo_unit,
12088          there's no need to record it in dwo_file.
12089          Also, we can't simply record type sections in dwo_file because
12090          we record a pointer into the vector in dwo_unit.  As we collect more
12091          types we'll grow the vector and eventually have to reallocate space
12092          for it, invalidating all copies of pointers into the previous
12093          contents.  */
12094       *dwo_file_slot = dwo_file;
12095     }
12096   else
12097     {
12098       if (dwarf_read_debug)
12099         {
12100           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12101                               virtual_dwo_name.c_str ());
12102         }
12103       dwo_file = (struct dwo_file *) *dwo_file_slot;
12104     }
12105
12106   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12107   dwo_unit->dwo_file = dwo_file;
12108   dwo_unit->signature = signature;
12109   dwo_unit->section =
12110     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12111   *dwo_unit->section = sections.info_or_types;
12112   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12113
12114   return dwo_unit;
12115 }
12116
12117 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12118    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12119    piece within that section used by a TU/CU, return a virtual section
12120    of just that piece.  */
12121
12122 static struct dwarf2_section_info
12123 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12124                        struct dwarf2_section_info *section,
12125                        bfd_size_type offset, bfd_size_type size)
12126 {
12127   struct dwarf2_section_info result;
12128   asection *sectp;
12129
12130   gdb_assert (section != NULL);
12131   gdb_assert (!section->is_virtual);
12132
12133   memset (&result, 0, sizeof (result));
12134   result.s.containing_section = section;
12135   result.is_virtual = true;
12136
12137   if (size == 0)
12138     return result;
12139
12140   sectp = section->get_bfd_section ();
12141
12142   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12143      bounds of the real section.  This is a pretty-rare event, so just
12144      flag an error (easier) instead of a warning and trying to cope.  */
12145   if (sectp == NULL
12146       || offset + size > bfd_section_size (sectp))
12147     {
12148       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12149                " in section %s [in module %s]"),
12150              sectp ? bfd_section_name (sectp) : "<unknown>",
12151              objfile_name (dwarf2_per_objfile->objfile));
12152     }
12153
12154   result.virtual_offset = offset;
12155   result.size = size;
12156   return result;
12157 }
12158
12159 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12160    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12161    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12162    This is for DWP version 2 files.  */
12163
12164 static struct dwo_unit *
12165 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12166                            struct dwp_file *dwp_file,
12167                            uint32_t unit_index,
12168                            const char *comp_dir,
12169                            ULONGEST signature, int is_debug_types)
12170 {
12171   struct objfile *objfile = dwarf2_per_objfile->objfile;
12172   const struct dwp_hash_table *dwp_htab =
12173     is_debug_types ? dwp_file->tus : dwp_file->cus;
12174   bfd *dbfd = dwp_file->dbfd.get ();
12175   const char *kind = is_debug_types ? "TU" : "CU";
12176   struct dwo_file *dwo_file;
12177   struct dwo_unit *dwo_unit;
12178   struct virtual_v2_dwo_sections sections;
12179   void **dwo_file_slot;
12180   int i;
12181
12182   gdb_assert (dwp_file->version == 2);
12183
12184   if (dwarf_read_debug)
12185     {
12186       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12187                           kind,
12188                           pulongest (unit_index), hex_string (signature),
12189                           dwp_file->name);
12190     }
12191
12192   /* Fetch the section offsets of this DWO unit.  */
12193
12194   memset (&sections, 0, sizeof (sections));
12195
12196   for (i = 0; i < dwp_htab->nr_columns; ++i)
12197     {
12198       uint32_t offset = read_4_bytes (dbfd,
12199                                       dwp_htab->section_pool.v2.offsets
12200                                       + (((unit_index - 1) * dwp_htab->nr_columns
12201                                           + i)
12202                                          * sizeof (uint32_t)));
12203       uint32_t size = read_4_bytes (dbfd,
12204                                     dwp_htab->section_pool.v2.sizes
12205                                     + (((unit_index - 1) * dwp_htab->nr_columns
12206                                         + i)
12207                                        * sizeof (uint32_t)));
12208
12209       switch (dwp_htab->section_pool.v2.section_ids[i])
12210         {
12211         case DW_SECT_INFO:
12212         case DW_SECT_TYPES:
12213           sections.info_or_types_offset = offset;
12214           sections.info_or_types_size = size;
12215           break;
12216         case DW_SECT_ABBREV:
12217           sections.abbrev_offset = offset;
12218           sections.abbrev_size = size;
12219           break;
12220         case DW_SECT_LINE:
12221           sections.line_offset = offset;
12222           sections.line_size = size;
12223           break;
12224         case DW_SECT_LOC:
12225           sections.loc_offset = offset;
12226           sections.loc_size = size;
12227           break;
12228         case DW_SECT_STR_OFFSETS:
12229           sections.str_offsets_offset = offset;
12230           sections.str_offsets_size = size;
12231           break;
12232         case DW_SECT_MACINFO:
12233           sections.macinfo_offset = offset;
12234           sections.macinfo_size = size;
12235           break;
12236         case DW_SECT_MACRO:
12237           sections.macro_offset = offset;
12238           sections.macro_size = size;
12239           break;
12240         }
12241     }
12242
12243   /* It's easier for the rest of the code if we fake a struct dwo_file and
12244      have dwo_unit "live" in that.  At least for now.
12245
12246      The DWP file can be made up of a random collection of CUs and TUs.
12247      However, for each CU + set of TUs that came from the same original DWO
12248      file, we can combine them back into a virtual DWO file to save space
12249      (fewer struct dwo_file objects to allocate).  Remember that for really
12250      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12251
12252   std::string virtual_dwo_name =
12253     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12254                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12255                    (long) (sections.line_size ? sections.line_offset : 0),
12256                    (long) (sections.loc_size ? sections.loc_offset : 0),
12257                    (long) (sections.str_offsets_size
12258                            ? sections.str_offsets_offset : 0));
12259   /* Can we use an existing virtual DWO file?  */
12260   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12261                                         virtual_dwo_name.c_str (),
12262                                         comp_dir);
12263   /* Create one if necessary.  */
12264   if (*dwo_file_slot == NULL)
12265     {
12266       if (dwarf_read_debug)
12267         {
12268           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12269                               virtual_dwo_name.c_str ());
12270         }
12271       dwo_file = new struct dwo_file;
12272       dwo_file->dwo_name = obstack_strdup (&objfile->objfile_obstack,
12273                                            virtual_dwo_name);
12274       dwo_file->comp_dir = comp_dir;
12275       dwo_file->sections.abbrev =
12276         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12277                                sections.abbrev_offset, sections.abbrev_size);
12278       dwo_file->sections.line =
12279         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12280                                sections.line_offset, sections.line_size);
12281       dwo_file->sections.loc =
12282         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12283                                sections.loc_offset, sections.loc_size);
12284       dwo_file->sections.macinfo =
12285         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12286                                sections.macinfo_offset, sections.macinfo_size);
12287       dwo_file->sections.macro =
12288         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12289                                sections.macro_offset, sections.macro_size);
12290       dwo_file->sections.str_offsets =
12291         create_dwp_v2_section (dwarf2_per_objfile,
12292                                &dwp_file->sections.str_offsets,
12293                                sections.str_offsets_offset,
12294                                sections.str_offsets_size);
12295       /* The "str" section is global to the entire DWP file.  */
12296       dwo_file->sections.str = dwp_file->sections.str;
12297       /* The info or types section is assigned below to dwo_unit,
12298          there's no need to record it in dwo_file.
12299          Also, we can't simply record type sections in dwo_file because
12300          we record a pointer into the vector in dwo_unit.  As we collect more
12301          types we'll grow the vector and eventually have to reallocate space
12302          for it, invalidating all copies of pointers into the previous
12303          contents.  */
12304       *dwo_file_slot = dwo_file;
12305     }
12306   else
12307     {
12308       if (dwarf_read_debug)
12309         {
12310           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12311                               virtual_dwo_name.c_str ());
12312         }
12313       dwo_file = (struct dwo_file *) *dwo_file_slot;
12314     }
12315
12316   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12317   dwo_unit->dwo_file = dwo_file;
12318   dwo_unit->signature = signature;
12319   dwo_unit->section =
12320     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12321   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12322                                               is_debug_types
12323                                               ? &dwp_file->sections.types
12324                                               : &dwp_file->sections.info,
12325                                               sections.info_or_types_offset,
12326                                               sections.info_or_types_size);
12327   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12328
12329   return dwo_unit;
12330 }
12331
12332 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12333    Returns NULL if the signature isn't found.  */
12334
12335 static struct dwo_unit *
12336 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12337                         struct dwp_file *dwp_file, const char *comp_dir,
12338                         ULONGEST signature, int is_debug_types)
12339 {
12340   const struct dwp_hash_table *dwp_htab =
12341     is_debug_types ? dwp_file->tus : dwp_file->cus;
12342   bfd *dbfd = dwp_file->dbfd.get ();
12343   uint32_t mask = dwp_htab->nr_slots - 1;
12344   uint32_t hash = signature & mask;
12345   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12346   unsigned int i;
12347   void **slot;
12348   struct dwo_unit find_dwo_cu;
12349
12350   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12351   find_dwo_cu.signature = signature;
12352   slot = htab_find_slot (is_debug_types
12353                          ? dwp_file->loaded_tus.get ()
12354                          : dwp_file->loaded_cus.get (),
12355                          &find_dwo_cu, INSERT);
12356
12357   if (*slot != NULL)
12358     return (struct dwo_unit *) *slot;
12359
12360   /* Use a for loop so that we don't loop forever on bad debug info.  */
12361   for (i = 0; i < dwp_htab->nr_slots; ++i)
12362     {
12363       ULONGEST signature_in_table;
12364
12365       signature_in_table =
12366         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12367       if (signature_in_table == signature)
12368         {
12369           uint32_t unit_index =
12370             read_4_bytes (dbfd,
12371                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12372
12373           if (dwp_file->version == 1)
12374             {
12375               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12376                                                  dwp_file, unit_index,
12377                                                  comp_dir, signature,
12378                                                  is_debug_types);
12379             }
12380           else
12381             {
12382               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12383                                                  dwp_file, unit_index,
12384                                                  comp_dir, signature,
12385                                                  is_debug_types);
12386             }
12387           return (struct dwo_unit *) *slot;
12388         }
12389       if (signature_in_table == 0)
12390         return NULL;
12391       hash = (hash + hash2) & mask;
12392     }
12393
12394   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12395            " [in module %s]"),
12396          dwp_file->name);
12397 }
12398
12399 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12400    Open the file specified by FILE_NAME and hand it off to BFD for
12401    preliminary analysis.  Return a newly initialized bfd *, which
12402    includes a canonicalized copy of FILE_NAME.
12403    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12404    SEARCH_CWD is true if the current directory is to be searched.
12405    It will be searched before debug-file-directory.
12406    If successful, the file is added to the bfd include table of the
12407    objfile's bfd (see gdb_bfd_record_inclusion).
12408    If unable to find/open the file, return NULL.
12409    NOTE: This function is derived from symfile_bfd_open.  */
12410
12411 static gdb_bfd_ref_ptr
12412 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12413                     const char *file_name, int is_dwp, int search_cwd)
12414 {
12415   int desc;
12416   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12417      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12418      to debug_file_directory.  */
12419   const char *search_path;
12420   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12421
12422   gdb::unique_xmalloc_ptr<char> search_path_holder;
12423   if (search_cwd)
12424     {
12425       if (*debug_file_directory != '\0')
12426         {
12427           search_path_holder.reset (concat (".", dirname_separator_string,
12428                                             debug_file_directory,
12429                                             (char *) NULL));
12430           search_path = search_path_holder.get ();
12431         }
12432       else
12433         search_path = ".";
12434     }
12435   else
12436     search_path = debug_file_directory;
12437
12438   openp_flags flags = OPF_RETURN_REALPATH;
12439   if (is_dwp)
12440     flags |= OPF_SEARCH_IN_PATH;
12441
12442   gdb::unique_xmalloc_ptr<char> absolute_name;
12443   desc = openp (search_path, flags, file_name,
12444                 O_RDONLY | O_BINARY, &absolute_name);
12445   if (desc < 0)
12446     return NULL;
12447
12448   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12449                                          gnutarget, desc));
12450   if (sym_bfd == NULL)
12451     return NULL;
12452   bfd_set_cacheable (sym_bfd.get (), 1);
12453
12454   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12455     return NULL;
12456
12457   /* Success.  Record the bfd as having been included by the objfile's bfd.
12458      This is important because things like demangled_names_hash lives in the
12459      objfile's per_bfd space and may have references to things like symbol
12460      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12461   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12462
12463   return sym_bfd;
12464 }
12465
12466 /* Try to open DWO file FILE_NAME.
12467    COMP_DIR is the DW_AT_comp_dir attribute.
12468    The result is the bfd handle of the file.
12469    If there is a problem finding or opening the file, return NULL.
12470    Upon success, the canonicalized path of the file is stored in the bfd,
12471    same as symfile_bfd_open.  */
12472
12473 static gdb_bfd_ref_ptr
12474 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12475                const char *file_name, const char *comp_dir)
12476 {
12477   if (IS_ABSOLUTE_PATH (file_name))
12478     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12479                                0 /*is_dwp*/, 0 /*search_cwd*/);
12480
12481   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12482
12483   if (comp_dir != NULL)
12484     {
12485       gdb::unique_xmalloc_ptr<char> path_to_try
12486         (concat (comp_dir, SLASH_STRING, file_name, (char *) NULL));
12487
12488       /* NOTE: If comp_dir is a relative path, this will also try the
12489          search path, which seems useful.  */
12490       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12491                                                 path_to_try.get (),
12492                                                 0 /*is_dwp*/,
12493                                                 1 /*search_cwd*/));
12494       if (abfd != NULL)
12495         return abfd;
12496     }
12497
12498   /* That didn't work, try debug-file-directory, which, despite its name,
12499      is a list of paths.  */
12500
12501   if (*debug_file_directory == '\0')
12502     return NULL;
12503
12504   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12505                              0 /*is_dwp*/, 1 /*search_cwd*/);
12506 }
12507
12508 /* This function is mapped across the sections and remembers the offset and
12509    size of each of the DWO debugging sections we are interested in.  */
12510
12511 static void
12512 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12513 {
12514   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12515   const struct dwop_section_names *names = &dwop_section_names;
12516
12517   if (section_is_p (sectp->name, &names->abbrev_dwo))
12518     {
12519       dwo_sections->abbrev.s.section = sectp;
12520       dwo_sections->abbrev.size = bfd_section_size (sectp);
12521     }
12522   else if (section_is_p (sectp->name, &names->info_dwo))
12523     {
12524       dwo_sections->info.s.section = sectp;
12525       dwo_sections->info.size = bfd_section_size (sectp);
12526     }
12527   else if (section_is_p (sectp->name, &names->line_dwo))
12528     {
12529       dwo_sections->line.s.section = sectp;
12530       dwo_sections->line.size = bfd_section_size (sectp);
12531     }
12532   else if (section_is_p (sectp->name, &names->loc_dwo))
12533     {
12534       dwo_sections->loc.s.section = sectp;
12535       dwo_sections->loc.size = bfd_section_size (sectp);
12536     }
12537   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12538     {
12539       dwo_sections->macinfo.s.section = sectp;
12540       dwo_sections->macinfo.size = bfd_section_size (sectp);
12541     }
12542   else if (section_is_p (sectp->name, &names->macro_dwo))
12543     {
12544       dwo_sections->macro.s.section = sectp;
12545       dwo_sections->macro.size = bfd_section_size (sectp);
12546     }
12547   else if (section_is_p (sectp->name, &names->str_dwo))
12548     {
12549       dwo_sections->str.s.section = sectp;
12550       dwo_sections->str.size = bfd_section_size (sectp);
12551     }
12552   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12553     {
12554       dwo_sections->str_offsets.s.section = sectp;
12555       dwo_sections->str_offsets.size = bfd_section_size (sectp);
12556     }
12557   else if (section_is_p (sectp->name, &names->types_dwo))
12558     {
12559       struct dwarf2_section_info type_section;
12560
12561       memset (&type_section, 0, sizeof (type_section));
12562       type_section.s.section = sectp;
12563       type_section.size = bfd_section_size (sectp);
12564       dwo_sections->types.push_back (type_section);
12565     }
12566 }
12567
12568 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12569    by PER_CU.  This is for the non-DWP case.
12570    The result is NULL if DWO_NAME can't be found.  */
12571
12572 static struct dwo_file *
12573 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12574                         const char *dwo_name, const char *comp_dir)
12575 {
12576   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12577
12578   gdb_bfd_ref_ptr dbfd = open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir);
12579   if (dbfd == NULL)
12580     {
12581       if (dwarf_read_debug)
12582         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12583       return NULL;
12584     }
12585
12586   dwo_file_up dwo_file (new struct dwo_file);
12587   dwo_file->dwo_name = dwo_name;
12588   dwo_file->comp_dir = comp_dir;
12589   dwo_file->dbfd = std::move (dbfd);
12590
12591   bfd_map_over_sections (dwo_file->dbfd.get (), dwarf2_locate_dwo_sections,
12592                          &dwo_file->sections);
12593
12594   create_cus_hash_table (dwarf2_per_objfile, per_cu->cu, *dwo_file,
12595                          dwo_file->sections.info, dwo_file->cus);
12596
12597   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12598                                  dwo_file->sections.types, dwo_file->tus);
12599
12600   if (dwarf_read_debug)
12601     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
12602
12603   return dwo_file.release ();
12604 }
12605
12606 /* This function is mapped across the sections and remembers the offset and
12607    size of each of the DWP debugging sections common to version 1 and 2 that
12608    we are interested in.  */
12609
12610 static void
12611 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
12612                                    void *dwp_file_ptr)
12613 {
12614   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
12615   const struct dwop_section_names *names = &dwop_section_names;
12616   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12617
12618   /* Record the ELF section number for later lookup: this is what the
12619      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
12620   gdb_assert (elf_section_nr < dwp_file->num_sections);
12621   dwp_file->elf_sections[elf_section_nr] = sectp;
12622
12623   /* Look for specific sections that we need.  */
12624   if (section_is_p (sectp->name, &names->str_dwo))
12625     {
12626       dwp_file->sections.str.s.section = sectp;
12627       dwp_file->sections.str.size = bfd_section_size (sectp);
12628     }
12629   else if (section_is_p (sectp->name, &names->cu_index))
12630     {
12631       dwp_file->sections.cu_index.s.section = sectp;
12632       dwp_file->sections.cu_index.size = bfd_section_size (sectp);
12633     }
12634   else if (section_is_p (sectp->name, &names->tu_index))
12635     {
12636       dwp_file->sections.tu_index.s.section = sectp;
12637       dwp_file->sections.tu_index.size = bfd_section_size (sectp);
12638     }
12639 }
12640
12641 /* This function is mapped across the sections and remembers the offset and
12642    size of each of the DWP version 2 debugging sections that we are interested
12643    in.  This is split into a separate function because we don't know if we
12644    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
12645
12646 static void
12647 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
12648 {
12649   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
12650   const struct dwop_section_names *names = &dwop_section_names;
12651   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12652
12653   /* Record the ELF section number for later lookup: this is what the
12654      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
12655   gdb_assert (elf_section_nr < dwp_file->num_sections);
12656   dwp_file->elf_sections[elf_section_nr] = sectp;
12657
12658   /* Look for specific sections that we need.  */
12659   if (section_is_p (sectp->name, &names->abbrev_dwo))
12660     {
12661       dwp_file->sections.abbrev.s.section = sectp;
12662       dwp_file->sections.abbrev.size = bfd_section_size (sectp);
12663     }
12664   else if (section_is_p (sectp->name, &names->info_dwo))
12665     {
12666       dwp_file->sections.info.s.section = sectp;
12667       dwp_file->sections.info.size = bfd_section_size (sectp);
12668     }
12669   else if (section_is_p (sectp->name, &names->line_dwo))
12670     {
12671       dwp_file->sections.line.s.section = sectp;
12672       dwp_file->sections.line.size = bfd_section_size (sectp);
12673     }
12674   else if (section_is_p (sectp->name, &names->loc_dwo))
12675     {
12676       dwp_file->sections.loc.s.section = sectp;
12677       dwp_file->sections.loc.size = bfd_section_size (sectp);
12678     }
12679   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12680     {
12681       dwp_file->sections.macinfo.s.section = sectp;
12682       dwp_file->sections.macinfo.size = bfd_section_size (sectp);
12683     }
12684   else if (section_is_p (sectp->name, &names->macro_dwo))
12685     {
12686       dwp_file->sections.macro.s.section = sectp;
12687       dwp_file->sections.macro.size = bfd_section_size (sectp);
12688     }
12689   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12690     {
12691       dwp_file->sections.str_offsets.s.section = sectp;
12692       dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
12693     }
12694   else if (section_is_p (sectp->name, &names->types_dwo))
12695     {
12696       dwp_file->sections.types.s.section = sectp;
12697       dwp_file->sections.types.size = bfd_section_size (sectp);
12698     }
12699 }
12700
12701 /* Hash function for dwp_file loaded CUs/TUs.  */
12702
12703 static hashval_t
12704 hash_dwp_loaded_cutus (const void *item)
12705 {
12706   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
12707
12708   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
12709   return dwo_unit->signature;
12710 }
12711
12712 /* Equality function for dwp_file loaded CUs/TUs.  */
12713
12714 static int
12715 eq_dwp_loaded_cutus (const void *a, const void *b)
12716 {
12717   const struct dwo_unit *dua = (const struct dwo_unit *) a;
12718   const struct dwo_unit *dub = (const struct dwo_unit *) b;
12719
12720   return dua->signature == dub->signature;
12721 }
12722
12723 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
12724
12725 static htab_up
12726 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
12727 {
12728   return htab_up (htab_create_alloc (3,
12729                                      hash_dwp_loaded_cutus,
12730                                      eq_dwp_loaded_cutus,
12731                                      NULL, xcalloc, xfree));
12732 }
12733
12734 /* Try to open DWP file FILE_NAME.
12735    The result is the bfd handle of the file.
12736    If there is a problem finding or opening the file, return NULL.
12737    Upon success, the canonicalized path of the file is stored in the bfd,
12738    same as symfile_bfd_open.  */
12739
12740 static gdb_bfd_ref_ptr
12741 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12742                const char *file_name)
12743 {
12744   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
12745                                             1 /*is_dwp*/,
12746                                             1 /*search_cwd*/));
12747   if (abfd != NULL)
12748     return abfd;
12749
12750   /* Work around upstream bug 15652.
12751      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
12752      [Whether that's a "bug" is debatable, but it is getting in our way.]
12753      We have no real idea where the dwp file is, because gdb's realpath-ing
12754      of the executable's path may have discarded the needed info.
12755      [IWBN if the dwp file name was recorded in the executable, akin to
12756      .gnu_debuglink, but that doesn't exist yet.]
12757      Strip the directory from FILE_NAME and search again.  */
12758   if (*debug_file_directory != '\0')
12759     {
12760       /* Don't implicitly search the current directory here.
12761          If the user wants to search "." to handle this case,
12762          it must be added to debug-file-directory.  */
12763       return try_open_dwop_file (dwarf2_per_objfile,
12764                                  lbasename (file_name), 1 /*is_dwp*/,
12765                                  0 /*search_cwd*/);
12766     }
12767
12768   return NULL;
12769 }
12770
12771 /* Initialize the use of the DWP file for the current objfile.
12772    By convention the name of the DWP file is ${objfile}.dwp.
12773    The result is NULL if it can't be found.  */
12774
12775 static std::unique_ptr<struct dwp_file>
12776 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
12777 {
12778   struct objfile *objfile = dwarf2_per_objfile->objfile;
12779
12780   /* Try to find first .dwp for the binary file before any symbolic links
12781      resolving.  */
12782
12783   /* If the objfile is a debug file, find the name of the real binary
12784      file and get the name of dwp file from there.  */
12785   std::string dwp_name;
12786   if (objfile->separate_debug_objfile_backlink != NULL)
12787     {
12788       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
12789       const char *backlink_basename = lbasename (backlink->original_name);
12790
12791       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
12792     }
12793   else
12794     dwp_name = objfile->original_name;
12795
12796   dwp_name += ".dwp";
12797
12798   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
12799   if (dbfd == NULL
12800       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
12801     {
12802       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
12803       dwp_name = objfile_name (objfile);
12804       dwp_name += ".dwp";
12805       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
12806     }
12807
12808   if (dbfd == NULL)
12809     {
12810       if (dwarf_read_debug)
12811         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
12812       return std::unique_ptr<dwp_file> ();
12813     }
12814
12815   const char *name = bfd_get_filename (dbfd.get ());
12816   std::unique_ptr<struct dwp_file> dwp_file
12817     (new struct dwp_file (name, std::move (dbfd)));
12818
12819   dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
12820   dwp_file->elf_sections =
12821     OBSTACK_CALLOC (&objfile->objfile_obstack,
12822                     dwp_file->num_sections, asection *);
12823
12824   bfd_map_over_sections (dwp_file->dbfd.get (),
12825                          dwarf2_locate_common_dwp_sections,
12826                          dwp_file.get ());
12827
12828   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
12829                                          0);
12830
12831   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
12832                                          1);
12833
12834   /* The DWP file version is stored in the hash table.  Oh well.  */
12835   if (dwp_file->cus && dwp_file->tus
12836       && dwp_file->cus->version != dwp_file->tus->version)
12837     {
12838       /* Technically speaking, we should try to limp along, but this is
12839          pretty bizarre.  We use pulongest here because that's the established
12840          portability solution (e.g, we cannot use %u for uint32_t).  */
12841       error (_("Dwarf Error: DWP file CU version %s doesn't match"
12842                " TU version %s [in DWP file %s]"),
12843              pulongest (dwp_file->cus->version),
12844              pulongest (dwp_file->tus->version), dwp_name.c_str ());
12845     }
12846
12847   if (dwp_file->cus)
12848     dwp_file->version = dwp_file->cus->version;
12849   else if (dwp_file->tus)
12850     dwp_file->version = dwp_file->tus->version;
12851   else
12852     dwp_file->version = 2;
12853
12854   if (dwp_file->version == 2)
12855     bfd_map_over_sections (dwp_file->dbfd.get (),
12856                            dwarf2_locate_v2_dwp_sections,
12857                            dwp_file.get ());
12858
12859   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
12860   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
12861
12862   if (dwarf_read_debug)
12863     {
12864       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
12865       fprintf_unfiltered (gdb_stdlog,
12866                           "    %s CUs, %s TUs\n",
12867                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
12868                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
12869     }
12870
12871   return dwp_file;
12872 }
12873
12874 /* Wrapper around open_and_init_dwp_file, only open it once.  */
12875
12876 static struct dwp_file *
12877 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
12878 {
12879   if (! dwarf2_per_objfile->dwp_checked)
12880     {
12881       dwarf2_per_objfile->dwp_file
12882         = open_and_init_dwp_file (dwarf2_per_objfile);
12883       dwarf2_per_objfile->dwp_checked = 1;
12884     }
12885   return dwarf2_per_objfile->dwp_file.get ();
12886 }
12887
12888 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
12889    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
12890    or in the DWP file for the objfile, referenced by THIS_UNIT.
12891    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
12892    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
12893
12894    This is called, for example, when wanting to read a variable with a
12895    complex location.  Therefore we don't want to do file i/o for every call.
12896    Therefore we don't want to look for a DWO file on every call.
12897    Therefore we first see if we've already seen SIGNATURE in a DWP file,
12898    then we check if we've already seen DWO_NAME, and only THEN do we check
12899    for a DWO file.
12900
12901    The result is a pointer to the dwo_unit object or NULL if we didn't find it
12902    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
12903
12904 static struct dwo_unit *
12905 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
12906                  const char *dwo_name, const char *comp_dir,
12907                  ULONGEST signature, int is_debug_types)
12908 {
12909   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
12910   struct objfile *objfile = dwarf2_per_objfile->objfile;
12911   const char *kind = is_debug_types ? "TU" : "CU";
12912   void **dwo_file_slot;
12913   struct dwo_file *dwo_file;
12914   struct dwp_file *dwp_file;
12915
12916   /* First see if there's a DWP file.
12917      If we have a DWP file but didn't find the DWO inside it, don't
12918      look for the original DWO file.  It makes gdb behave differently
12919      depending on whether one is debugging in the build tree.  */
12920
12921   dwp_file = get_dwp_file (dwarf2_per_objfile);
12922   if (dwp_file != NULL)
12923     {
12924       const struct dwp_hash_table *dwp_htab =
12925         is_debug_types ? dwp_file->tus : dwp_file->cus;
12926
12927       if (dwp_htab != NULL)
12928         {
12929           struct dwo_unit *dwo_cutu =
12930             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
12931                                     signature, is_debug_types);
12932
12933           if (dwo_cutu != NULL)
12934             {
12935               if (dwarf_read_debug)
12936                 {
12937                   fprintf_unfiltered (gdb_stdlog,
12938                                       "Virtual DWO %s %s found: @%s\n",
12939                                       kind, hex_string (signature),
12940                                       host_address_to_string (dwo_cutu));
12941                 }
12942               return dwo_cutu;
12943             }
12944         }
12945     }
12946   else
12947     {
12948       /* No DWP file, look for the DWO file.  */
12949
12950       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12951                                             dwo_name, comp_dir);
12952       if (*dwo_file_slot == NULL)
12953         {
12954           /* Read in the file and build a table of the CUs/TUs it contains.  */
12955           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
12956         }
12957       /* NOTE: This will be NULL if unable to open the file.  */
12958       dwo_file = (struct dwo_file *) *dwo_file_slot;
12959
12960       if (dwo_file != NULL)
12961         {
12962           struct dwo_unit *dwo_cutu = NULL;
12963
12964           if (is_debug_types && dwo_file->tus)
12965             {
12966               struct dwo_unit find_dwo_cutu;
12967
12968               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
12969               find_dwo_cutu.signature = signature;
12970               dwo_cutu
12971                 = (struct dwo_unit *) htab_find (dwo_file->tus.get (),
12972                                                  &find_dwo_cutu);
12973             }
12974           else if (!is_debug_types && dwo_file->cus)
12975             {
12976               struct dwo_unit find_dwo_cutu;
12977
12978               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
12979               find_dwo_cutu.signature = signature;
12980               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus.get (),
12981                                                        &find_dwo_cutu);
12982             }
12983
12984           if (dwo_cutu != NULL)
12985             {
12986               if (dwarf_read_debug)
12987                 {
12988                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
12989                                       kind, dwo_name, hex_string (signature),
12990                                       host_address_to_string (dwo_cutu));
12991                 }
12992               return dwo_cutu;
12993             }
12994         }
12995     }
12996
12997   /* We didn't find it.  This could mean a dwo_id mismatch, or
12998      someone deleted the DWO/DWP file, or the search path isn't set up
12999      correctly to find the file.  */
13000
13001   if (dwarf_read_debug)
13002     {
13003       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13004                           kind, dwo_name, hex_string (signature));
13005     }
13006
13007   /* This is a warning and not a complaint because it can be caused by
13008      pilot error (e.g., user accidentally deleting the DWO).  */
13009   {
13010     /* Print the name of the DWP file if we looked there, helps the user
13011        better diagnose the problem.  */
13012     std::string dwp_text;
13013
13014     if (dwp_file != NULL)
13015       dwp_text = string_printf (" [in DWP file %s]",
13016                                 lbasename (dwp_file->name));
13017
13018     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13019                " [in module %s]"),
13020              kind, dwo_name, hex_string (signature),
13021              dwp_text.c_str (),
13022              this_unit->is_debug_types ? "TU" : "CU",
13023              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13024   }
13025   return NULL;
13026 }
13027
13028 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13029    See lookup_dwo_cutu_unit for details.  */
13030
13031 static struct dwo_unit *
13032 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13033                       const char *dwo_name, const char *comp_dir,
13034                       ULONGEST signature)
13035 {
13036   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13037 }
13038
13039 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13040    See lookup_dwo_cutu_unit for details.  */
13041
13042 static struct dwo_unit *
13043 lookup_dwo_type_unit (struct signatured_type *this_tu,
13044                       const char *dwo_name, const char *comp_dir)
13045 {
13046   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13047 }
13048
13049 /* Traversal function for queue_and_load_all_dwo_tus.  */
13050
13051 static int
13052 queue_and_load_dwo_tu (void **slot, void *info)
13053 {
13054   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13055   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13056   ULONGEST signature = dwo_unit->signature;
13057   struct signatured_type *sig_type =
13058     lookup_dwo_signatured_type (per_cu->cu, signature);
13059
13060   if (sig_type != NULL)
13061     {
13062       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13063
13064       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13065          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13066          while processing PER_CU.  */
13067       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13068         load_full_type_unit (sig_cu);
13069       per_cu->imported_symtabs_push (sig_cu);
13070     }
13071
13072   return 1;
13073 }
13074
13075 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13076    The DWO may have the only definition of the type, though it may not be
13077    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13078    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13079
13080 static void
13081 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13082 {
13083   struct dwo_unit *dwo_unit;
13084   struct dwo_file *dwo_file;
13085
13086   gdb_assert (!per_cu->is_debug_types);
13087   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13088   gdb_assert (per_cu->cu != NULL);
13089
13090   dwo_unit = per_cu->cu->dwo_unit;
13091   gdb_assert (dwo_unit != NULL);
13092
13093   dwo_file = dwo_unit->dwo_file;
13094   if (dwo_file->tus != NULL)
13095     htab_traverse_noresize (dwo_file->tus.get (), queue_and_load_dwo_tu,
13096                             per_cu);
13097 }
13098
13099 /* Read in various DIEs.  */
13100
13101 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13102    Inherit only the children of the DW_AT_abstract_origin DIE not being
13103    already referenced by DW_AT_abstract_origin from the children of the
13104    current DIE.  */
13105
13106 static void
13107 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13108 {
13109   struct die_info *child_die;
13110   sect_offset *offsetp;
13111   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13112   struct die_info *origin_die;
13113   /* Iterator of the ORIGIN_DIE children.  */
13114   struct die_info *origin_child_die;
13115   struct attribute *attr;
13116   struct dwarf2_cu *origin_cu;
13117   struct pending **origin_previous_list_in_scope;
13118
13119   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13120   if (!attr)
13121     return;
13122
13123   /* Note that following die references may follow to a die in a
13124      different cu.  */
13125
13126   origin_cu = cu;
13127   origin_die = follow_die_ref (die, attr, &origin_cu);
13128
13129   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13130      symbols in.  */
13131   origin_previous_list_in_scope = origin_cu->list_in_scope;
13132   origin_cu->list_in_scope = cu->list_in_scope;
13133
13134   if (die->tag != origin_die->tag
13135       && !(die->tag == DW_TAG_inlined_subroutine
13136            && origin_die->tag == DW_TAG_subprogram))
13137     complaint (_("DIE %s and its abstract origin %s have different tags"),
13138                sect_offset_str (die->sect_off),
13139                sect_offset_str (origin_die->sect_off));
13140
13141   std::vector<sect_offset> offsets;
13142
13143   for (child_die = die->child;
13144        child_die && child_die->tag;
13145        child_die = sibling_die (child_die))
13146     {
13147       struct die_info *child_origin_die;
13148       struct dwarf2_cu *child_origin_cu;
13149
13150       /* We are trying to process concrete instance entries:
13151          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13152          it's not relevant to our analysis here. i.e. detecting DIEs that are
13153          present in the abstract instance but not referenced in the concrete
13154          one.  */
13155       if (child_die->tag == DW_TAG_call_site
13156           || child_die->tag == DW_TAG_GNU_call_site)
13157         continue;
13158
13159       /* For each CHILD_DIE, find the corresponding child of
13160          ORIGIN_DIE.  If there is more than one layer of
13161          DW_AT_abstract_origin, follow them all; there shouldn't be,
13162          but GCC versions at least through 4.4 generate this (GCC PR
13163          40573).  */
13164       child_origin_die = child_die;
13165       child_origin_cu = cu;
13166       while (1)
13167         {
13168           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13169                               child_origin_cu);
13170           if (attr == NULL)
13171             break;
13172           child_origin_die = follow_die_ref (child_origin_die, attr,
13173                                              &child_origin_cu);
13174         }
13175
13176       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13177          counterpart may exist.  */
13178       if (child_origin_die != child_die)
13179         {
13180           if (child_die->tag != child_origin_die->tag
13181               && !(child_die->tag == DW_TAG_inlined_subroutine
13182                    && child_origin_die->tag == DW_TAG_subprogram))
13183             complaint (_("Child DIE %s and its abstract origin %s have "
13184                          "different tags"),
13185                        sect_offset_str (child_die->sect_off),
13186                        sect_offset_str (child_origin_die->sect_off));
13187           if (child_origin_die->parent != origin_die)
13188             complaint (_("Child DIE %s and its abstract origin %s have "
13189                          "different parents"),
13190                        sect_offset_str (child_die->sect_off),
13191                        sect_offset_str (child_origin_die->sect_off));
13192           else
13193             offsets.push_back (child_origin_die->sect_off);
13194         }
13195     }
13196   std::sort (offsets.begin (), offsets.end ());
13197   sect_offset *offsets_end = offsets.data () + offsets.size ();
13198   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13199     if (offsetp[-1] == *offsetp)
13200       complaint (_("Multiple children of DIE %s refer "
13201                    "to DIE %s as their abstract origin"),
13202                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13203
13204   offsetp = offsets.data ();
13205   origin_child_die = origin_die->child;
13206   while (origin_child_die && origin_child_die->tag)
13207     {
13208       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13209       while (offsetp < offsets_end
13210              && *offsetp < origin_child_die->sect_off)
13211         offsetp++;
13212       if (offsetp >= offsets_end
13213           || *offsetp > origin_child_die->sect_off)
13214         {
13215           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13216              Check whether we're already processing ORIGIN_CHILD_DIE.
13217              This can happen with mutually referenced abstract_origins.
13218              PR 16581.  */
13219           if (!origin_child_die->in_process)
13220             process_die (origin_child_die, origin_cu);
13221         }
13222       origin_child_die = sibling_die (origin_child_die);
13223     }
13224   origin_cu->list_in_scope = origin_previous_list_in_scope;
13225
13226   if (cu != origin_cu)
13227     compute_delayed_physnames (origin_cu);
13228 }
13229
13230 static void
13231 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13232 {
13233   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13234   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13235   struct context_stack *newobj;
13236   CORE_ADDR lowpc;
13237   CORE_ADDR highpc;
13238   struct die_info *child_die;
13239   struct attribute *attr, *call_line, *call_file;
13240   const char *name;
13241   CORE_ADDR baseaddr;
13242   struct block *block;
13243   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13244   std::vector<struct symbol *> template_args;
13245   struct template_symbol *templ_func = NULL;
13246
13247   if (inlined_func)
13248     {
13249       /* If we do not have call site information, we can't show the
13250          caller of this inlined function.  That's too confusing, so
13251          only use the scope for local variables.  */
13252       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13253       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13254       if (call_line == NULL || call_file == NULL)
13255         {
13256           read_lexical_block_scope (die, cu);
13257           return;
13258         }
13259     }
13260
13261   baseaddr = objfile->text_section_offset ();
13262
13263   name = dwarf2_name (die, cu);
13264
13265   /* Ignore functions with missing or empty names.  These are actually
13266      illegal according to the DWARF standard.  */
13267   if (name == NULL)
13268     {
13269       complaint (_("missing name for subprogram DIE at %s"),
13270                  sect_offset_str (die->sect_off));
13271       return;
13272     }
13273
13274   /* Ignore functions with missing or invalid low and high pc attributes.  */
13275   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13276       <= PC_BOUNDS_INVALID)
13277     {
13278       attr = dwarf2_attr (die, DW_AT_external, cu);
13279       if (!attr || !DW_UNSND (attr))
13280         complaint (_("cannot get low and high bounds "
13281                      "for subprogram DIE at %s"),
13282                    sect_offset_str (die->sect_off));
13283       return;
13284     }
13285
13286   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13287   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13288
13289   /* If we have any template arguments, then we must allocate a
13290      different sort of symbol.  */
13291   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13292     {
13293       if (child_die->tag == DW_TAG_template_type_param
13294           || child_die->tag == DW_TAG_template_value_param)
13295         {
13296           templ_func = allocate_template_symbol (objfile);
13297           templ_func->subclass = SYMBOL_TEMPLATE;
13298           break;
13299         }
13300     }
13301
13302   newobj = cu->get_builder ()->push_context (0, lowpc);
13303   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13304                              (struct symbol *) templ_func);
13305
13306   if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
13307     set_objfile_main_name (objfile, newobj->name->linkage_name (),
13308                            cu->language);
13309
13310   /* If there is a location expression for DW_AT_frame_base, record
13311      it.  */
13312   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13313   if (attr != nullptr)
13314     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13315
13316   /* If there is a location for the static link, record it.  */
13317   newobj->static_link = NULL;
13318   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13319   if (attr != nullptr)
13320     {
13321       newobj->static_link
13322         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13323       attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
13324                             dwarf2_per_cu_addr_type (cu->per_cu));
13325     }
13326
13327   cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13328
13329   if (die->child != NULL)
13330     {
13331       child_die = die->child;
13332       while (child_die && child_die->tag)
13333         {
13334           if (child_die->tag == DW_TAG_template_type_param
13335               || child_die->tag == DW_TAG_template_value_param)
13336             {
13337               struct symbol *arg = new_symbol (child_die, NULL, cu);
13338
13339               if (arg != NULL)
13340                 template_args.push_back (arg);
13341             }
13342           else
13343             process_die (child_die, cu);
13344           child_die = sibling_die (child_die);
13345         }
13346     }
13347
13348   inherit_abstract_dies (die, cu);
13349
13350   /* If we have a DW_AT_specification, we might need to import using
13351      directives from the context of the specification DIE.  See the
13352      comment in determine_prefix.  */
13353   if (cu->language == language_cplus
13354       && dwarf2_attr (die, DW_AT_specification, cu))
13355     {
13356       struct dwarf2_cu *spec_cu = cu;
13357       struct die_info *spec_die = die_specification (die, &spec_cu);
13358
13359       while (spec_die)
13360         {
13361           child_die = spec_die->child;
13362           while (child_die && child_die->tag)
13363             {
13364               if (child_die->tag == DW_TAG_imported_module)
13365                 process_die (child_die, spec_cu);
13366               child_die = sibling_die (child_die);
13367             }
13368
13369           /* In some cases, GCC generates specification DIEs that
13370              themselves contain DW_AT_specification attributes.  */
13371           spec_die = die_specification (spec_die, &spec_cu);
13372         }
13373     }
13374
13375   struct context_stack cstk = cu->get_builder ()->pop_context ();
13376   /* Make a block for the local symbols within.  */
13377   block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13378                                      cstk.static_link, lowpc, highpc);
13379
13380   /* For C++, set the block's scope.  */
13381   if ((cu->language == language_cplus
13382        || cu->language == language_fortran
13383        || cu->language == language_d
13384        || cu->language == language_rust)
13385       && cu->processing_has_namespace_info)
13386     block_set_scope (block, determine_prefix (die, cu),
13387                      &objfile->objfile_obstack);
13388
13389   /* If we have address ranges, record them.  */
13390   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13391
13392   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13393
13394   /* Attach template arguments to function.  */
13395   if (!template_args.empty ())
13396     {
13397       gdb_assert (templ_func != NULL);
13398
13399       templ_func->n_template_arguments = template_args.size ();
13400       templ_func->template_arguments
13401         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13402                      templ_func->n_template_arguments);
13403       memcpy (templ_func->template_arguments,
13404               template_args.data (),
13405               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13406
13407       /* Make sure that the symtab is set on the new symbols.  Even
13408          though they don't appear in this symtab directly, other parts
13409          of gdb assume that symbols do, and this is reasonably
13410          true.  */
13411       for (symbol *sym : template_args)
13412         symbol_set_symtab (sym, symbol_symtab (templ_func));
13413     }
13414
13415   /* In C++, we can have functions nested inside functions (e.g., when
13416      a function declares a class that has methods).  This means that
13417      when we finish processing a function scope, we may need to go
13418      back to building a containing block's symbol lists.  */
13419   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13420   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13421
13422   /* If we've finished processing a top-level function, subsequent
13423      symbols go in the file symbol list.  */
13424   if (cu->get_builder ()->outermost_context_p ())
13425     cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13426 }
13427
13428 /* Process all the DIES contained within a lexical block scope.  Start
13429    a new scope, process the dies, and then close the scope.  */
13430
13431 static void
13432 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13433 {
13434   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13435   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13436   CORE_ADDR lowpc, highpc;
13437   struct die_info *child_die;
13438   CORE_ADDR baseaddr;
13439
13440   baseaddr = objfile->text_section_offset ();
13441
13442   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13443   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13444      as multiple lexical blocks?  Handling children in a sane way would
13445      be nasty.  Might be easier to properly extend generic blocks to
13446      describe ranges.  */
13447   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13448     {
13449     case PC_BOUNDS_NOT_PRESENT:
13450       /* DW_TAG_lexical_block has no attributes, process its children as if
13451          there was no wrapping by that DW_TAG_lexical_block.
13452          GCC does no longer produces such DWARF since GCC r224161.  */
13453       for (child_die = die->child;
13454            child_die != NULL && child_die->tag;
13455            child_die = sibling_die (child_die))
13456         process_die (child_die, cu);
13457       return;
13458     case PC_BOUNDS_INVALID:
13459       return;
13460     }
13461   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13462   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13463
13464   cu->get_builder ()->push_context (0, lowpc);
13465   if (die->child != NULL)
13466     {
13467       child_die = die->child;
13468       while (child_die && child_die->tag)
13469         {
13470           process_die (child_die, cu);
13471           child_die = sibling_die (child_die);
13472         }
13473     }
13474   inherit_abstract_dies (die, cu);
13475   struct context_stack cstk = cu->get_builder ()->pop_context ();
13476
13477   if (*cu->get_builder ()->get_local_symbols () != NULL
13478       || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13479     {
13480       struct block *block
13481         = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13482                                      cstk.start_addr, highpc);
13483
13484       /* Note that recording ranges after traversing children, as we
13485          do here, means that recording a parent's ranges entails
13486          walking across all its children's ranges as they appear in
13487          the address map, which is quadratic behavior.
13488
13489          It would be nicer to record the parent's ranges before
13490          traversing its children, simply overriding whatever you find
13491          there.  But since we don't even decide whether to create a
13492          block until after we've traversed its children, that's hard
13493          to do.  */
13494       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13495     }
13496   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13497   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13498 }
13499
13500 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13501
13502 static void
13503 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13504 {
13505   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13506   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13507   CORE_ADDR pc, baseaddr;
13508   struct attribute *attr;
13509   struct call_site *call_site, call_site_local;
13510   void **slot;
13511   int nparams;
13512   struct die_info *child_die;
13513
13514   baseaddr = objfile->text_section_offset ();
13515
13516   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13517   if (attr == NULL)
13518     {
13519       /* This was a pre-DWARF-5 GNU extension alias
13520          for DW_AT_call_return_pc.  */
13521       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13522     }
13523   if (!attr)
13524     {
13525       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13526                    "DIE %s [in module %s]"),
13527                  sect_offset_str (die->sect_off), objfile_name (objfile));
13528       return;
13529     }
13530   pc = attr->value_as_address () + baseaddr;
13531   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13532
13533   if (cu->call_site_htab == NULL)
13534     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13535                                                NULL, &objfile->objfile_obstack,
13536                                                hashtab_obstack_allocate, NULL);
13537   call_site_local.pc = pc;
13538   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13539   if (*slot != NULL)
13540     {
13541       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13542                    "DIE %s [in module %s]"),
13543                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13544                  objfile_name (objfile));
13545       return;
13546     }
13547
13548   /* Count parameters at the caller.  */
13549
13550   nparams = 0;
13551   for (child_die = die->child; child_die && child_die->tag;
13552        child_die = sibling_die (child_die))
13553     {
13554       if (child_die->tag != DW_TAG_call_site_parameter
13555           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13556         {
13557           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13558                        "DW_TAG_call_site child DIE %s [in module %s]"),
13559                      child_die->tag, sect_offset_str (child_die->sect_off),
13560                      objfile_name (objfile));
13561           continue;
13562         }
13563
13564       nparams++;
13565     }
13566
13567   call_site
13568     = ((struct call_site *)
13569        obstack_alloc (&objfile->objfile_obstack,
13570                       sizeof (*call_site)
13571                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13572   *slot = call_site;
13573   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13574   call_site->pc = pc;
13575
13576   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13577       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
13578     {
13579       struct die_info *func_die;
13580
13581       /* Skip also over DW_TAG_inlined_subroutine.  */
13582       for (func_die = die->parent;
13583            func_die && func_die->tag != DW_TAG_subprogram
13584            && func_die->tag != DW_TAG_subroutine_type;
13585            func_die = func_die->parent);
13586
13587       /* DW_AT_call_all_calls is a superset
13588          of DW_AT_call_all_tail_calls.  */
13589       if (func_die
13590           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
13591           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
13592           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
13593           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
13594         {
13595           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
13596              not complete.  But keep CALL_SITE for look ups via call_site_htab,
13597              both the initial caller containing the real return address PC and
13598              the final callee containing the current PC of a chain of tail
13599              calls do not need to have the tail call list complete.  But any
13600              function candidate for a virtual tail call frame searched via
13601              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
13602              determined unambiguously.  */
13603         }
13604       else
13605         {
13606           struct type *func_type = NULL;
13607
13608           if (func_die)
13609             func_type = get_die_type (func_die, cu);
13610           if (func_type != NULL)
13611             {
13612               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
13613
13614               /* Enlist this call site to the function.  */
13615               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
13616               TYPE_TAIL_CALL_LIST (func_type) = call_site;
13617             }
13618           else
13619             complaint (_("Cannot find function owning DW_TAG_call_site "
13620                          "DIE %s [in module %s]"),
13621                        sect_offset_str (die->sect_off), objfile_name (objfile));
13622         }
13623     }
13624
13625   attr = dwarf2_attr (die, DW_AT_call_target, cu);
13626   if (attr == NULL)
13627     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
13628   if (attr == NULL)
13629     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
13630   if (attr == NULL)
13631     {
13632       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
13633       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13634     }
13635   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
13636   if (!attr || (attr->form_is_block () && DW_BLOCK (attr)->size == 0))
13637     /* Keep NULL DWARF_BLOCK.  */;
13638   else if (attr->form_is_block ())
13639     {
13640       struct dwarf2_locexpr_baton *dlbaton;
13641
13642       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
13643       dlbaton->data = DW_BLOCK (attr)->data;
13644       dlbaton->size = DW_BLOCK (attr)->size;
13645       dlbaton->per_cu = cu->per_cu;
13646
13647       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
13648     }
13649   else if (attr->form_is_ref ())
13650     {
13651       struct dwarf2_cu *target_cu = cu;
13652       struct die_info *target_die;
13653
13654       target_die = follow_die_ref (die, attr, &target_cu);
13655       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
13656       if (die_is_declaration (target_die, target_cu))
13657         {
13658           const char *target_physname;
13659
13660           /* Prefer the mangled name; otherwise compute the demangled one.  */
13661           target_physname = dw2_linkage_name (target_die, target_cu);
13662           if (target_physname == NULL)
13663             target_physname = dwarf2_physname (NULL, target_die, target_cu);
13664           if (target_physname == NULL)
13665             complaint (_("DW_AT_call_target target DIE has invalid "
13666                          "physname, for referencing DIE %s [in module %s]"),
13667                        sect_offset_str (die->sect_off), objfile_name (objfile));
13668           else
13669             SET_FIELD_PHYSNAME (call_site->target, target_physname);
13670         }
13671       else
13672         {
13673           CORE_ADDR lowpc;
13674
13675           /* DW_AT_entry_pc should be preferred.  */
13676           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
13677               <= PC_BOUNDS_INVALID)
13678             complaint (_("DW_AT_call_target target DIE has invalid "
13679                          "low pc, for referencing DIE %s [in module %s]"),
13680                        sect_offset_str (die->sect_off), objfile_name (objfile));
13681           else
13682             {
13683               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13684               SET_FIELD_PHYSADDR (call_site->target, lowpc);
13685             }
13686         }
13687     }
13688   else
13689     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
13690                  "block nor reference, for DIE %s [in module %s]"),
13691                sect_offset_str (die->sect_off), objfile_name (objfile));
13692
13693   call_site->per_cu = cu->per_cu;
13694
13695   for (child_die = die->child;
13696        child_die && child_die->tag;
13697        child_die = sibling_die (child_die))
13698     {
13699       struct call_site_parameter *parameter;
13700       struct attribute *loc, *origin;
13701
13702       if (child_die->tag != DW_TAG_call_site_parameter
13703           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13704         {
13705           /* Already printed the complaint above.  */
13706           continue;
13707         }
13708
13709       gdb_assert (call_site->parameter_count < nparams);
13710       parameter = &call_site->parameter[call_site->parameter_count];
13711
13712       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
13713          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
13714          register is contained in DW_AT_call_value.  */
13715
13716       loc = dwarf2_attr (child_die, DW_AT_location, cu);
13717       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
13718       if (origin == NULL)
13719         {
13720           /* This was a pre-DWARF-5 GNU extension alias
13721              for DW_AT_call_parameter.  */
13722           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
13723         }
13724       if (loc == NULL && origin != NULL && origin->form_is_ref ())
13725         {
13726           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
13727
13728           sect_offset sect_off
13729             = (sect_offset) dwarf2_get_ref_die_offset (origin);
13730           if (!offset_in_cu_p (&cu->header, sect_off))
13731             {
13732               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
13733                  binding can be done only inside one CU.  Such referenced DIE
13734                  therefore cannot be even moved to DW_TAG_partial_unit.  */
13735               complaint (_("DW_AT_call_parameter offset is not in CU for "
13736                            "DW_TAG_call_site child DIE %s [in module %s]"),
13737                          sect_offset_str (child_die->sect_off),
13738                          objfile_name (objfile));
13739               continue;
13740             }
13741           parameter->u.param_cu_off
13742             = (cu_offset) (sect_off - cu->header.sect_off);
13743         }
13744       else if (loc == NULL || origin != NULL || !loc->form_is_block ())
13745         {
13746           complaint (_("No DW_FORM_block* DW_AT_location for "
13747                        "DW_TAG_call_site child DIE %s [in module %s]"),
13748                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
13749           continue;
13750         }
13751       else
13752         {
13753           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
13754             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
13755           if (parameter->u.dwarf_reg != -1)
13756             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
13757           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
13758                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
13759                                              &parameter->u.fb_offset))
13760             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
13761           else
13762             {
13763               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
13764                            "for DW_FORM_block* DW_AT_location is supported for "
13765                            "DW_TAG_call_site child DIE %s "
13766                            "[in module %s]"),
13767                          sect_offset_str (child_die->sect_off),
13768                          objfile_name (objfile));
13769               continue;
13770             }
13771         }
13772
13773       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
13774       if (attr == NULL)
13775         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
13776       if (attr == NULL || !attr->form_is_block ())
13777         {
13778           complaint (_("No DW_FORM_block* DW_AT_call_value for "
13779                        "DW_TAG_call_site child DIE %s [in module %s]"),
13780                      sect_offset_str (child_die->sect_off),
13781                      objfile_name (objfile));
13782           continue;
13783         }
13784       parameter->value = DW_BLOCK (attr)->data;
13785       parameter->value_size = DW_BLOCK (attr)->size;
13786
13787       /* Parameters are not pre-cleared by memset above.  */
13788       parameter->data_value = NULL;
13789       parameter->data_value_size = 0;
13790       call_site->parameter_count++;
13791
13792       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
13793       if (attr == NULL)
13794         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
13795       if (attr != nullptr)
13796         {
13797           if (!attr->form_is_block ())
13798             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
13799                          "DW_TAG_call_site child DIE %s [in module %s]"),
13800                        sect_offset_str (child_die->sect_off),
13801                        objfile_name (objfile));
13802           else
13803             {
13804               parameter->data_value = DW_BLOCK (attr)->data;
13805               parameter->data_value_size = DW_BLOCK (attr)->size;
13806             }
13807         }
13808     }
13809 }
13810
13811 /* Helper function for read_variable.  If DIE represents a virtual
13812    table, then return the type of the concrete object that is
13813    associated with the virtual table.  Otherwise, return NULL.  */
13814
13815 static struct type *
13816 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
13817 {
13818   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
13819   if (attr == NULL)
13820     return NULL;
13821
13822   /* Find the type DIE.  */
13823   struct die_info *type_die = NULL;
13824   struct dwarf2_cu *type_cu = cu;
13825
13826   if (attr->form_is_ref ())
13827     type_die = follow_die_ref (die, attr, &type_cu);
13828   if (type_die == NULL)
13829     return NULL;
13830
13831   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
13832     return NULL;
13833   return die_containing_type (type_die, type_cu);
13834 }
13835
13836 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
13837
13838 static void
13839 read_variable (struct die_info *die, struct dwarf2_cu *cu)
13840 {
13841   struct rust_vtable_symbol *storage = NULL;
13842
13843   if (cu->language == language_rust)
13844     {
13845       struct type *containing_type = rust_containing_type (die, cu);
13846
13847       if (containing_type != NULL)
13848         {
13849           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13850
13851           storage = new (&objfile->objfile_obstack) rust_vtable_symbol ();
13852           initialize_objfile_symbol (storage);
13853           storage->concrete_type = containing_type;
13854           storage->subclass = SYMBOL_RUST_VTABLE;
13855         }
13856     }
13857
13858   struct symbol *res = new_symbol (die, NULL, cu, storage);
13859   struct attribute *abstract_origin
13860     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13861   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
13862   if (res == NULL && loc && abstract_origin)
13863     {
13864       /* We have a variable without a name, but with a location and an abstract
13865          origin.  This may be a concrete instance of an abstract variable
13866          referenced from an DW_OP_GNU_variable_value, so save it to find it back
13867          later.  */
13868       struct dwarf2_cu *origin_cu = cu;
13869       struct die_info *origin_die
13870         = follow_die_ref (die, abstract_origin, &origin_cu);
13871       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
13872       dpo->abstract_to_concrete[origin_die->sect_off].push_back (die->sect_off);
13873     }
13874 }
13875
13876 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
13877    reading .debug_rnglists.
13878    Callback's type should be:
13879     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
13880    Return true if the attributes are present and valid, otherwise,
13881    return false.  */
13882
13883 template <typename Callback>
13884 static bool
13885 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
13886                          Callback &&callback)
13887 {
13888   struct dwarf2_per_objfile *dwarf2_per_objfile
13889     = cu->per_cu->dwarf2_per_objfile;
13890   struct objfile *objfile = dwarf2_per_objfile->objfile;
13891   bfd *obfd = objfile->obfd;
13892   /* Base address selection entry.  */
13893   CORE_ADDR base;
13894   int found_base;
13895   const gdb_byte *buffer;
13896   CORE_ADDR baseaddr;
13897   bool overflow = false;
13898
13899   found_base = cu->base_known;
13900   base = cu->base_address;
13901
13902   dwarf2_per_objfile->rnglists.read (objfile);
13903   if (offset >= dwarf2_per_objfile->rnglists.size)
13904     {
13905       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
13906                  offset);
13907       return false;
13908     }
13909   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
13910
13911   baseaddr = objfile->text_section_offset ();
13912
13913   while (1)
13914     {
13915       /* Initialize it due to a false compiler warning.  */
13916       CORE_ADDR range_beginning = 0, range_end = 0;
13917       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
13918                                  + dwarf2_per_objfile->rnglists.size);
13919       unsigned int bytes_read;
13920
13921       if (buffer == buf_end)
13922         {
13923           overflow = true;
13924           break;
13925         }
13926       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
13927       switch (rlet)
13928         {
13929         case DW_RLE_end_of_list:
13930           break;
13931         case DW_RLE_base_address:
13932           if (buffer + cu->header.addr_size > buf_end)
13933             {
13934               overflow = true;
13935               break;
13936             }
13937           base = read_address (obfd, buffer, cu, &bytes_read);
13938           found_base = 1;
13939           buffer += bytes_read;
13940           break;
13941         case DW_RLE_start_length:
13942           if (buffer + cu->header.addr_size > buf_end)
13943             {
13944               overflow = true;
13945               break;
13946             }
13947           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
13948           buffer += bytes_read;
13949           range_end = (range_beginning
13950                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
13951           buffer += bytes_read;
13952           if (buffer > buf_end)
13953             {
13954               overflow = true;
13955               break;
13956             }
13957           break;
13958         case DW_RLE_offset_pair:
13959           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13960           buffer += bytes_read;
13961           if (buffer > buf_end)
13962             {
13963               overflow = true;
13964               break;
13965             }
13966           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13967           buffer += bytes_read;
13968           if (buffer > buf_end)
13969             {
13970               overflow = true;
13971               break;
13972             }
13973           break;
13974         case DW_RLE_start_end:
13975           if (buffer + 2 * cu->header.addr_size > buf_end)
13976             {
13977               overflow = true;
13978               break;
13979             }
13980           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
13981           buffer += bytes_read;
13982           range_end = read_address (obfd, buffer, cu, &bytes_read);
13983           buffer += bytes_read;
13984           break;
13985         default:
13986           complaint (_("Invalid .debug_rnglists data (no base address)"));
13987           return false;
13988         }
13989       if (rlet == DW_RLE_end_of_list || overflow)
13990         break;
13991       if (rlet == DW_RLE_base_address)
13992         continue;
13993
13994       if (!found_base)
13995         {
13996           /* We have no valid base address for the ranges
13997              data.  */
13998           complaint (_("Invalid .debug_rnglists data (no base address)"));
13999           return false;
14000         }
14001
14002       if (range_beginning > range_end)
14003         {
14004           /* Inverted range entries are invalid.  */
14005           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14006           return false;
14007         }
14008
14009       /* Empty range entries have no effect.  */
14010       if (range_beginning == range_end)
14011         continue;
14012
14013       range_beginning += base;
14014       range_end += base;
14015
14016       /* A not-uncommon case of bad debug info.
14017          Don't pollute the addrmap with bad data.  */
14018       if (range_beginning + baseaddr == 0
14019           && !dwarf2_per_objfile->has_section_at_zero)
14020         {
14021           complaint (_(".debug_rnglists entry has start address of zero"
14022                        " [in module %s]"), objfile_name (objfile));
14023           continue;
14024         }
14025
14026       callback (range_beginning, range_end);
14027     }
14028
14029   if (overflow)
14030     {
14031       complaint (_("Offset %d is not terminated "
14032                    "for DW_AT_ranges attribute"),
14033                  offset);
14034       return false;
14035     }
14036
14037   return true;
14038 }
14039
14040 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14041    Callback's type should be:
14042     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14043    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14044
14045 template <typename Callback>
14046 static int
14047 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14048                        Callback &&callback)
14049 {
14050   struct dwarf2_per_objfile *dwarf2_per_objfile
14051       = cu->per_cu->dwarf2_per_objfile;
14052   struct objfile *objfile = dwarf2_per_objfile->objfile;
14053   struct comp_unit_head *cu_header = &cu->header;
14054   bfd *obfd = objfile->obfd;
14055   unsigned int addr_size = cu_header->addr_size;
14056   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14057   /* Base address selection entry.  */
14058   CORE_ADDR base;
14059   int found_base;
14060   unsigned int dummy;
14061   const gdb_byte *buffer;
14062   CORE_ADDR baseaddr;
14063
14064   if (cu_header->version >= 5)
14065     return dwarf2_rnglists_process (offset, cu, callback);
14066
14067   found_base = cu->base_known;
14068   base = cu->base_address;
14069
14070   dwarf2_per_objfile->ranges.read (objfile);
14071   if (offset >= dwarf2_per_objfile->ranges.size)
14072     {
14073       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14074                  offset);
14075       return 0;
14076     }
14077   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14078
14079   baseaddr = objfile->text_section_offset ();
14080
14081   while (1)
14082     {
14083       CORE_ADDR range_beginning, range_end;
14084
14085       range_beginning = read_address (obfd, buffer, cu, &dummy);
14086       buffer += addr_size;
14087       range_end = read_address (obfd, buffer, cu, &dummy);
14088       buffer += addr_size;
14089       offset += 2 * addr_size;
14090
14091       /* An end of list marker is a pair of zero addresses.  */
14092       if (range_beginning == 0 && range_end == 0)
14093         /* Found the end of list entry.  */
14094         break;
14095
14096       /* Each base address selection entry is a pair of 2 values.
14097          The first is the largest possible address, the second is
14098          the base address.  Check for a base address here.  */
14099       if ((range_beginning & mask) == mask)
14100         {
14101           /* If we found the largest possible address, then we already
14102              have the base address in range_end.  */
14103           base = range_end;
14104           found_base = 1;
14105           continue;
14106         }
14107
14108       if (!found_base)
14109         {
14110           /* We have no valid base address for the ranges
14111              data.  */
14112           complaint (_("Invalid .debug_ranges data (no base address)"));
14113           return 0;
14114         }
14115
14116       if (range_beginning > range_end)
14117         {
14118           /* Inverted range entries are invalid.  */
14119           complaint (_("Invalid .debug_ranges data (inverted range)"));
14120           return 0;
14121         }
14122
14123       /* Empty range entries have no effect.  */
14124       if (range_beginning == range_end)
14125         continue;
14126
14127       range_beginning += base;
14128       range_end += base;
14129
14130       /* A not-uncommon case of bad debug info.
14131          Don't pollute the addrmap with bad data.  */
14132       if (range_beginning + baseaddr == 0
14133           && !dwarf2_per_objfile->has_section_at_zero)
14134         {
14135           complaint (_(".debug_ranges entry has start address of zero"
14136                        " [in module %s]"), objfile_name (objfile));
14137           continue;
14138         }
14139
14140       callback (range_beginning, range_end);
14141     }
14142
14143   return 1;
14144 }
14145
14146 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14147    Return 1 if the attributes are present and valid, otherwise, return 0.
14148    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14149
14150 static int
14151 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14152                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14153                     dwarf2_psymtab *ranges_pst)
14154 {
14155   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14156   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14157   const CORE_ADDR baseaddr = objfile->text_section_offset ();
14158   int low_set = 0;
14159   CORE_ADDR low = 0;
14160   CORE_ADDR high = 0;
14161   int retval;
14162
14163   retval = dwarf2_ranges_process (offset, cu,
14164     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14165     {
14166       if (ranges_pst != NULL)
14167         {
14168           CORE_ADDR lowpc;
14169           CORE_ADDR highpc;
14170
14171           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14172                                                range_beginning + baseaddr)
14173                    - baseaddr);
14174           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14175                                                 range_end + baseaddr)
14176                     - baseaddr);
14177           addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14178                              lowpc, highpc - 1, ranges_pst);
14179         }
14180
14181       /* FIXME: This is recording everything as a low-high
14182          segment of consecutive addresses.  We should have a
14183          data structure for discontiguous block ranges
14184          instead.  */
14185       if (! low_set)
14186         {
14187           low = range_beginning;
14188           high = range_end;
14189           low_set = 1;
14190         }
14191       else
14192         {
14193           if (range_beginning < low)
14194             low = range_beginning;
14195           if (range_end > high)
14196             high = range_end;
14197         }
14198     });
14199   if (!retval)
14200     return 0;
14201
14202   if (! low_set)
14203     /* If the first entry is an end-of-list marker, the range
14204        describes an empty scope, i.e. no instructions.  */
14205     return 0;
14206
14207   if (low_return)
14208     *low_return = low;
14209   if (high_return)
14210     *high_return = high;
14211   return 1;
14212 }
14213
14214 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14215    definition for the return value.  *LOWPC and *HIGHPC are set iff
14216    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14217
14218 static enum pc_bounds_kind
14219 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14220                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14221                       dwarf2_psymtab *pst)
14222 {
14223   struct dwarf2_per_objfile *dwarf2_per_objfile
14224     = cu->per_cu->dwarf2_per_objfile;
14225   struct attribute *attr;
14226   struct attribute *attr_high;
14227   CORE_ADDR low = 0;
14228   CORE_ADDR high = 0;
14229   enum pc_bounds_kind ret;
14230
14231   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14232   if (attr_high)
14233     {
14234       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14235       if (attr != nullptr)
14236         {
14237           low = attr->value_as_address ();
14238           high = attr_high->value_as_address ();
14239           if (cu->header.version >= 4 && attr_high->form_is_constant ())
14240             high += low;
14241         }
14242       else
14243         /* Found high w/o low attribute.  */
14244         return PC_BOUNDS_INVALID;
14245
14246       /* Found consecutive range of addresses.  */
14247       ret = PC_BOUNDS_HIGH_LOW;
14248     }
14249   else
14250     {
14251       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14252       if (attr != NULL)
14253         {
14254           /* DW_AT_rnglists_base does not apply to DIEs from the DWO skeleton.
14255              We take advantage of the fact that DW_AT_ranges does not appear
14256              in DW_TAG_compile_unit of DWO files.  */
14257           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14258           unsigned int ranges_offset = (DW_UNSND (attr)
14259                                         + (need_ranges_base
14260                                            ? cu->ranges_base
14261                                            : 0));
14262
14263           /* Value of the DW_AT_ranges attribute is the offset in the
14264              .debug_ranges section.  */
14265           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14266             return PC_BOUNDS_INVALID;
14267           /* Found discontinuous range of addresses.  */
14268           ret = PC_BOUNDS_RANGES;
14269         }
14270       else
14271         return PC_BOUNDS_NOT_PRESENT;
14272     }
14273
14274   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14275   if (high <= low)
14276     return PC_BOUNDS_INVALID;
14277
14278   /* When using the GNU linker, .gnu.linkonce. sections are used to
14279      eliminate duplicate copies of functions and vtables and such.
14280      The linker will arbitrarily choose one and discard the others.
14281      The AT_*_pc values for such functions refer to local labels in
14282      these sections.  If the section from that file was discarded, the
14283      labels are not in the output, so the relocs get a value of 0.
14284      If this is a discarded function, mark the pc bounds as invalid,
14285      so that GDB will ignore it.  */
14286   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14287     return PC_BOUNDS_INVALID;
14288
14289   *lowpc = low;
14290   if (highpc)
14291     *highpc = high;
14292   return ret;
14293 }
14294
14295 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14296    its low and high PC addresses.  Do nothing if these addresses could not
14297    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14298    and HIGHPC to the high address if greater than HIGHPC.  */
14299
14300 static void
14301 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14302                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14303                                  struct dwarf2_cu *cu)
14304 {
14305   CORE_ADDR low, high;
14306   struct die_info *child = die->child;
14307
14308   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14309     {
14310       *lowpc = std::min (*lowpc, low);
14311       *highpc = std::max (*highpc, high);
14312     }
14313
14314   /* If the language does not allow nested subprograms (either inside
14315      subprograms or lexical blocks), we're done.  */
14316   if (cu->language != language_ada)
14317     return;
14318
14319   /* Check all the children of the given DIE.  If it contains nested
14320      subprograms, then check their pc bounds.  Likewise, we need to
14321      check lexical blocks as well, as they may also contain subprogram
14322      definitions.  */
14323   while (child && child->tag)
14324     {
14325       if (child->tag == DW_TAG_subprogram
14326           || child->tag == DW_TAG_lexical_block)
14327         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14328       child = sibling_die (child);
14329     }
14330 }
14331
14332 /* Get the low and high pc's represented by the scope DIE, and store
14333    them in *LOWPC and *HIGHPC.  If the correct values can't be
14334    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14335
14336 static void
14337 get_scope_pc_bounds (struct die_info *die,
14338                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14339                      struct dwarf2_cu *cu)
14340 {
14341   CORE_ADDR best_low = (CORE_ADDR) -1;
14342   CORE_ADDR best_high = (CORE_ADDR) 0;
14343   CORE_ADDR current_low, current_high;
14344
14345   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14346       >= PC_BOUNDS_RANGES)
14347     {
14348       best_low = current_low;
14349       best_high = current_high;
14350     }
14351   else
14352     {
14353       struct die_info *child = die->child;
14354
14355       while (child && child->tag)
14356         {
14357           switch (child->tag) {
14358           case DW_TAG_subprogram:
14359             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14360             break;
14361           case DW_TAG_namespace:
14362           case DW_TAG_module:
14363             /* FIXME: carlton/2004-01-16: Should we do this for
14364                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14365                that current GCC's always emit the DIEs corresponding
14366                to definitions of methods of classes as children of a
14367                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14368                the DIEs giving the declarations, which could be
14369                anywhere).  But I don't see any reason why the
14370                standards says that they have to be there.  */
14371             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14372
14373             if (current_low != ((CORE_ADDR) -1))
14374               {
14375                 best_low = std::min (best_low, current_low);
14376                 best_high = std::max (best_high, current_high);
14377               }
14378             break;
14379           default:
14380             /* Ignore.  */
14381             break;
14382           }
14383
14384           child = sibling_die (child);
14385         }
14386     }
14387
14388   *lowpc = best_low;
14389   *highpc = best_high;
14390 }
14391
14392 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14393    in DIE.  */
14394
14395 static void
14396 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14397                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14398 {
14399   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14400   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14401   struct attribute *attr;
14402   struct attribute *attr_high;
14403
14404   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14405   if (attr_high)
14406     {
14407       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14408       if (attr != nullptr)
14409         {
14410           CORE_ADDR low = attr->value_as_address ();
14411           CORE_ADDR high = attr_high->value_as_address ();
14412
14413           if (cu->header.version >= 4 && attr_high->form_is_constant ())
14414             high += low;
14415
14416           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14417           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14418           cu->get_builder ()->record_block_range (block, low, high - 1);
14419         }
14420     }
14421
14422   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14423   if (attr != nullptr)
14424     {
14425       /* DW_AT_rnglists_base does not apply to DIEs from the DWO skeleton.
14426          We take advantage of the fact that DW_AT_ranges does not appear
14427          in DW_TAG_compile_unit of DWO files.  */
14428       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14429
14430       /* The value of the DW_AT_ranges attribute is the offset of the
14431          address range list in the .debug_ranges section.  */
14432       unsigned long offset = (DW_UNSND (attr)
14433                               + (need_ranges_base ? cu->ranges_base : 0));
14434
14435       std::vector<blockrange> blockvec;
14436       dwarf2_ranges_process (offset, cu,
14437         [&] (CORE_ADDR start, CORE_ADDR end)
14438         {
14439           start += baseaddr;
14440           end += baseaddr;
14441           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14442           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14443           cu->get_builder ()->record_block_range (block, start, end - 1);
14444           blockvec.emplace_back (start, end);
14445         });
14446
14447       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14448     }
14449 }
14450
14451 /* Check whether the producer field indicates either of GCC < 4.6, or the
14452    Intel C/C++ compiler, and cache the result in CU.  */
14453
14454 static void
14455 check_producer (struct dwarf2_cu *cu)
14456 {
14457   int major, minor;
14458
14459   if (cu->producer == NULL)
14460     {
14461       /* For unknown compilers expect their behavior is DWARF version
14462          compliant.
14463
14464          GCC started to support .debug_types sections by -gdwarf-4 since
14465          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14466          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14467          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14468          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14469     }
14470   else if (producer_is_gcc (cu->producer, &major, &minor))
14471     {
14472       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14473       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14474     }
14475   else if (producer_is_icc (cu->producer, &major, &minor))
14476     {
14477       cu->producer_is_icc = true;
14478       cu->producer_is_icc_lt_14 = major < 14;
14479     }
14480   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14481     cu->producer_is_codewarrior = true;
14482   else
14483     {
14484       /* For other non-GCC compilers, expect their behavior is DWARF version
14485          compliant.  */
14486     }
14487
14488   cu->checked_producer = true;
14489 }
14490
14491 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14492    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14493    during 4.6.0 experimental.  */
14494
14495 static bool
14496 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14497 {
14498   if (!cu->checked_producer)
14499     check_producer (cu);
14500
14501   return cu->producer_is_gxx_lt_4_6;
14502 }
14503
14504
14505 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14506    with incorrect is_stmt attributes.  */
14507
14508 static bool
14509 producer_is_codewarrior (struct dwarf2_cu *cu)
14510 {
14511   if (!cu->checked_producer)
14512     check_producer (cu);
14513
14514   return cu->producer_is_codewarrior;
14515 }
14516
14517 /* Return the default accessibility type if it is not overridden by
14518    DW_AT_accessibility.  */
14519
14520 static enum dwarf_access_attribute
14521 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14522 {
14523   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14524     {
14525       /* The default DWARF 2 accessibility for members is public, the default
14526          accessibility for inheritance is private.  */
14527
14528       if (die->tag != DW_TAG_inheritance)
14529         return DW_ACCESS_public;
14530       else
14531         return DW_ACCESS_private;
14532     }
14533   else
14534     {
14535       /* DWARF 3+ defines the default accessibility a different way.  The same
14536          rules apply now for DW_TAG_inheritance as for the members and it only
14537          depends on the container kind.  */
14538
14539       if (die->parent->tag == DW_TAG_class_type)
14540         return DW_ACCESS_private;
14541       else
14542         return DW_ACCESS_public;
14543     }
14544 }
14545
14546 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14547    offset.  If the attribute was not found return 0, otherwise return
14548    1.  If it was found but could not properly be handled, set *OFFSET
14549    to 0.  */
14550
14551 static int
14552 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14553                              LONGEST *offset)
14554 {
14555   struct attribute *attr;
14556
14557   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14558   if (attr != NULL)
14559     {
14560       *offset = 0;
14561
14562       /* Note that we do not check for a section offset first here.
14563          This is because DW_AT_data_member_location is new in DWARF 4,
14564          so if we see it, we can assume that a constant form is really
14565          a constant and not a section offset.  */
14566       if (attr->form_is_constant ())
14567         *offset = dwarf2_get_attr_constant_value (attr, 0);
14568       else if (attr->form_is_section_offset ())
14569         dwarf2_complex_location_expr_complaint ();
14570       else if (attr->form_is_block ())
14571         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14572       else
14573         dwarf2_complex_location_expr_complaint ();
14574
14575       return 1;
14576     }
14577
14578   return 0;
14579 }
14580
14581 /* Add an aggregate field to the field list.  */
14582
14583 static void
14584 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14585                   struct dwarf2_cu *cu)
14586 {
14587   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14588   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14589   struct nextfield *new_field;
14590   struct attribute *attr;
14591   struct field *fp;
14592   const char *fieldname = "";
14593
14594   if (die->tag == DW_TAG_inheritance)
14595     {
14596       fip->baseclasses.emplace_back ();
14597       new_field = &fip->baseclasses.back ();
14598     }
14599   else
14600     {
14601       fip->fields.emplace_back ();
14602       new_field = &fip->fields.back ();
14603     }
14604
14605   fip->nfields++;
14606
14607   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
14608   if (attr != nullptr)
14609     new_field->accessibility = DW_UNSND (attr);
14610   else
14611     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
14612   if (new_field->accessibility != DW_ACCESS_public)
14613     fip->non_public_fields = 1;
14614
14615   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
14616   if (attr != nullptr)
14617     new_field->virtuality = DW_UNSND (attr);
14618   else
14619     new_field->virtuality = DW_VIRTUALITY_none;
14620
14621   fp = &new_field->field;
14622
14623   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
14624     {
14625       LONGEST offset;
14626
14627       /* Data member other than a C++ static data member.  */
14628
14629       /* Get type of field.  */
14630       fp->type = die_type (die, cu);
14631
14632       SET_FIELD_BITPOS (*fp, 0);
14633
14634       /* Get bit size of field (zero if none).  */
14635       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
14636       if (attr != nullptr)
14637         {
14638           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
14639         }
14640       else
14641         {
14642           FIELD_BITSIZE (*fp) = 0;
14643         }
14644
14645       /* Get bit offset of field.  */
14646       if (handle_data_member_location (die, cu, &offset))
14647         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
14648       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
14649       if (attr != nullptr)
14650         {
14651           if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
14652             {
14653               /* For big endian bits, the DW_AT_bit_offset gives the
14654                  additional bit offset from the MSB of the containing
14655                  anonymous object to the MSB of the field.  We don't
14656                  have to do anything special since we don't need to
14657                  know the size of the anonymous object.  */
14658               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
14659             }
14660           else
14661             {
14662               /* For little endian bits, compute the bit offset to the
14663                  MSB of the anonymous object, subtract off the number of
14664                  bits from the MSB of the field to the MSB of the
14665                  object, and then subtract off the number of bits of
14666                  the field itself.  The result is the bit offset of
14667                  the LSB of the field.  */
14668               int anonymous_size;
14669               int bit_offset = DW_UNSND (attr);
14670
14671               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14672               if (attr != nullptr)
14673                 {
14674                   /* The size of the anonymous object containing
14675                      the bit field is explicit, so use the
14676                      indicated size (in bytes).  */
14677                   anonymous_size = DW_UNSND (attr);
14678                 }
14679               else
14680                 {
14681                   /* The size of the anonymous object containing
14682                      the bit field must be inferred from the type
14683                      attribute of the data member containing the
14684                      bit field.  */
14685                   anonymous_size = TYPE_LENGTH (fp->type);
14686                 }
14687               SET_FIELD_BITPOS (*fp,
14688                                 (FIELD_BITPOS (*fp)
14689                                  + anonymous_size * bits_per_byte
14690                                  - bit_offset - FIELD_BITSIZE (*fp)));
14691             }
14692         }
14693       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
14694       if (attr != NULL)
14695         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
14696                                 + dwarf2_get_attr_constant_value (attr, 0)));
14697
14698       /* Get name of field.  */
14699       fieldname = dwarf2_name (die, cu);
14700       if (fieldname == NULL)
14701         fieldname = "";
14702
14703       /* The name is already allocated along with this objfile, so we don't
14704          need to duplicate it for the type.  */
14705       fp->name = fieldname;
14706
14707       /* Change accessibility for artificial fields (e.g. virtual table
14708          pointer or virtual base class pointer) to private.  */
14709       if (dwarf2_attr (die, DW_AT_artificial, cu))
14710         {
14711           FIELD_ARTIFICIAL (*fp) = 1;
14712           new_field->accessibility = DW_ACCESS_private;
14713           fip->non_public_fields = 1;
14714         }
14715     }
14716   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
14717     {
14718       /* C++ static member.  */
14719
14720       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
14721          is a declaration, but all versions of G++ as of this writing
14722          (so through at least 3.2.1) incorrectly generate
14723          DW_TAG_variable tags.  */
14724
14725       const char *physname;
14726
14727       /* Get name of field.  */
14728       fieldname = dwarf2_name (die, cu);
14729       if (fieldname == NULL)
14730         return;
14731
14732       attr = dwarf2_attr (die, DW_AT_const_value, cu);
14733       if (attr
14734           /* Only create a symbol if this is an external value.
14735              new_symbol checks this and puts the value in the global symbol
14736              table, which we want.  If it is not external, new_symbol
14737              will try to put the value in cu->list_in_scope which is wrong.  */
14738           && dwarf2_flag_true_p (die, DW_AT_external, cu))
14739         {
14740           /* A static const member, not much different than an enum as far as
14741              we're concerned, except that we can support more types.  */
14742           new_symbol (die, NULL, cu);
14743         }
14744
14745       /* Get physical name.  */
14746       physname = dwarf2_physname (fieldname, die, cu);
14747
14748       /* The name is already allocated along with this objfile, so we don't
14749          need to duplicate it for the type.  */
14750       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
14751       FIELD_TYPE (*fp) = die_type (die, cu);
14752       FIELD_NAME (*fp) = fieldname;
14753     }
14754   else if (die->tag == DW_TAG_inheritance)
14755     {
14756       LONGEST offset;
14757
14758       /* C++ base class field.  */
14759       if (handle_data_member_location (die, cu, &offset))
14760         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
14761       FIELD_BITSIZE (*fp) = 0;
14762       FIELD_TYPE (*fp) = die_type (die, cu);
14763       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
14764     }
14765   else if (die->tag == DW_TAG_variant_part)
14766     {
14767       /* process_structure_scope will treat this DIE as a union.  */
14768       process_structure_scope (die, cu);
14769
14770       /* The variant part is relative to the start of the enclosing
14771          structure.  */
14772       SET_FIELD_BITPOS (*fp, 0);
14773       fp->type = get_die_type (die, cu);
14774       fp->artificial = 1;
14775       fp->name = "<<variant>>";
14776
14777       /* Normally a DW_TAG_variant_part won't have a size, but our
14778          representation requires one, so set it to the maximum of the
14779          child sizes, being sure to account for the offset at which
14780          each child is seen.  */
14781       if (TYPE_LENGTH (fp->type) == 0)
14782         {
14783           unsigned max = 0;
14784           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
14785             {
14786               unsigned len = ((TYPE_FIELD_BITPOS (fp->type, i) + 7) / 8
14787                               + TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)));
14788               if (len > max)
14789                 max = len;
14790             }
14791           TYPE_LENGTH (fp->type) = max;
14792         }
14793     }
14794   else
14795     gdb_assert_not_reached ("missing case in dwarf2_add_field");
14796 }
14797
14798 /* Can the type given by DIE define another type?  */
14799
14800 static bool
14801 type_can_define_types (const struct die_info *die)
14802 {
14803   switch (die->tag)
14804     {
14805     case DW_TAG_typedef:
14806     case DW_TAG_class_type:
14807     case DW_TAG_structure_type:
14808     case DW_TAG_union_type:
14809     case DW_TAG_enumeration_type:
14810       return true;
14811
14812     default:
14813       return false;
14814     }
14815 }
14816
14817 /* Add a type definition defined in the scope of the FIP's class.  */
14818
14819 static void
14820 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
14821                       struct dwarf2_cu *cu)
14822 {
14823   struct decl_field fp;
14824   memset (&fp, 0, sizeof (fp));
14825
14826   gdb_assert (type_can_define_types (die));
14827
14828   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
14829   fp.name = dwarf2_name (die, cu);
14830   fp.type = read_type_die (die, cu);
14831
14832   /* Save accessibility.  */
14833   enum dwarf_access_attribute accessibility;
14834   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
14835   if (attr != NULL)
14836     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
14837   else
14838     accessibility = dwarf2_default_access_attribute (die, cu);
14839   switch (accessibility)
14840     {
14841     case DW_ACCESS_public:
14842       /* The assumed value if neither private nor protected.  */
14843       break;
14844     case DW_ACCESS_private:
14845       fp.is_private = 1;
14846       break;
14847     case DW_ACCESS_protected:
14848       fp.is_protected = 1;
14849       break;
14850     default:
14851       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
14852     }
14853
14854   if (die->tag == DW_TAG_typedef)
14855     fip->typedef_field_list.push_back (fp);
14856   else
14857     fip->nested_types_list.push_back (fp);
14858 }
14859
14860 /* Create the vector of fields, and attach it to the type.  */
14861
14862 static void
14863 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
14864                               struct dwarf2_cu *cu)
14865 {
14866   int nfields = fip->nfields;
14867
14868   /* Record the field count, allocate space for the array of fields,
14869      and create blank accessibility bitfields if necessary.  */
14870   TYPE_NFIELDS (type) = nfields;
14871   TYPE_FIELDS (type) = (struct field *)
14872     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
14873
14874   if (fip->non_public_fields && cu->language != language_ada)
14875     {
14876       ALLOCATE_CPLUS_STRUCT_TYPE (type);
14877
14878       TYPE_FIELD_PRIVATE_BITS (type) =
14879         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
14880       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
14881
14882       TYPE_FIELD_PROTECTED_BITS (type) =
14883         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
14884       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
14885
14886       TYPE_FIELD_IGNORE_BITS (type) =
14887         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
14888       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
14889     }
14890
14891   /* If the type has baseclasses, allocate and clear a bit vector for
14892      TYPE_FIELD_VIRTUAL_BITS.  */
14893   if (!fip->baseclasses.empty () && cu->language != language_ada)
14894     {
14895       int num_bytes = B_BYTES (fip->baseclasses.size ());
14896       unsigned char *pointer;
14897
14898       ALLOCATE_CPLUS_STRUCT_TYPE (type);
14899       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
14900       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
14901       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
14902       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
14903     }
14904
14905   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
14906     {
14907       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
14908
14909       for (int index = 0; index < nfields; ++index)
14910         {
14911           struct nextfield &field = fip->fields[index];
14912
14913           if (field.variant.is_discriminant)
14914             di->discriminant_index = index;
14915           else if (field.variant.default_branch)
14916             di->default_index = index;
14917           else
14918             di->discriminants[index] = field.variant.discriminant_value;
14919         }
14920     }
14921
14922   /* Copy the saved-up fields into the field vector.  */
14923   for (int i = 0; i < nfields; ++i)
14924     {
14925       struct nextfield &field
14926         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
14927            : fip->fields[i - fip->baseclasses.size ()]);
14928
14929       TYPE_FIELD (type, i) = field.field;
14930       switch (field.accessibility)
14931         {
14932         case DW_ACCESS_private:
14933           if (cu->language != language_ada)
14934             SET_TYPE_FIELD_PRIVATE (type, i);
14935           break;
14936
14937         case DW_ACCESS_protected:
14938           if (cu->language != language_ada)
14939             SET_TYPE_FIELD_PROTECTED (type, i);
14940           break;
14941
14942         case DW_ACCESS_public:
14943           break;
14944
14945         default:
14946           /* Unknown accessibility.  Complain and treat it as public.  */
14947           {
14948             complaint (_("unsupported accessibility %d"),
14949                        field.accessibility);
14950           }
14951           break;
14952         }
14953       if (i < fip->baseclasses.size ())
14954         {
14955           switch (field.virtuality)
14956             {
14957             case DW_VIRTUALITY_virtual:
14958             case DW_VIRTUALITY_pure_virtual:
14959               if (cu->language == language_ada)
14960                 error (_("unexpected virtuality in component of Ada type"));
14961               SET_TYPE_FIELD_VIRTUAL (type, i);
14962               break;
14963             }
14964         }
14965     }
14966 }
14967
14968 /* Return true if this member function is a constructor, false
14969    otherwise.  */
14970
14971 static int
14972 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
14973 {
14974   const char *fieldname;
14975   const char *type_name;
14976   int len;
14977
14978   if (die->parent == NULL)
14979     return 0;
14980
14981   if (die->parent->tag != DW_TAG_structure_type
14982       && die->parent->tag != DW_TAG_union_type
14983       && die->parent->tag != DW_TAG_class_type)
14984     return 0;
14985
14986   fieldname = dwarf2_name (die, cu);
14987   type_name = dwarf2_name (die->parent, cu);
14988   if (fieldname == NULL || type_name == NULL)
14989     return 0;
14990
14991   len = strlen (fieldname);
14992   return (strncmp (fieldname, type_name, len) == 0
14993           && (type_name[len] == '\0' || type_name[len] == '<'));
14994 }
14995
14996 /* Check if the given VALUE is a recognized enum
14997    dwarf_defaulted_attribute constant according to DWARF5 spec,
14998    Table 7.24.  */
14999
15000 static bool
15001 is_valid_DW_AT_defaulted (ULONGEST value)
15002 {
15003   switch (value)
15004     {
15005     case DW_DEFAULTED_no:
15006     case DW_DEFAULTED_in_class:
15007     case DW_DEFAULTED_out_of_class:
15008       return true;
15009     }
15010
15011   complaint (_("unrecognized DW_AT_defaulted value (%s)"), pulongest (value));
15012   return false;
15013 }
15014
15015 /* Add a member function to the proper fieldlist.  */
15016
15017 static void
15018 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15019                       struct type *type, struct dwarf2_cu *cu)
15020 {
15021   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15022   struct attribute *attr;
15023   int i;
15024   struct fnfieldlist *flp = nullptr;
15025   struct fn_field *fnp;
15026   const char *fieldname;
15027   struct type *this_type;
15028   enum dwarf_access_attribute accessibility;
15029
15030   if (cu->language == language_ada)
15031     error (_("unexpected member function in Ada type"));
15032
15033   /* Get name of member function.  */
15034   fieldname = dwarf2_name (die, cu);
15035   if (fieldname == NULL)
15036     return;
15037
15038   /* Look up member function name in fieldlist.  */
15039   for (i = 0; i < fip->fnfieldlists.size (); i++)
15040     {
15041       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15042         {
15043           flp = &fip->fnfieldlists[i];
15044           break;
15045         }
15046     }
15047
15048   /* Create a new fnfieldlist if necessary.  */
15049   if (flp == nullptr)
15050     {
15051       fip->fnfieldlists.emplace_back ();
15052       flp = &fip->fnfieldlists.back ();
15053       flp->name = fieldname;
15054       i = fip->fnfieldlists.size () - 1;
15055     }
15056
15057   /* Create a new member function field and add it to the vector of
15058      fnfieldlists.  */
15059   flp->fnfields.emplace_back ();
15060   fnp = &flp->fnfields.back ();
15061
15062   /* Delay processing of the physname until later.  */
15063   if (cu->language == language_cplus)
15064     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15065                         die, cu);
15066   else
15067     {
15068       const char *physname = dwarf2_physname (fieldname, die, cu);
15069       fnp->physname = physname ? physname : "";
15070     }
15071
15072   fnp->type = alloc_type (objfile);
15073   this_type = read_type_die (die, cu);
15074   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15075     {
15076       int nparams = TYPE_NFIELDS (this_type);
15077
15078       /* TYPE is the domain of this method, and THIS_TYPE is the type
15079            of the method itself (TYPE_CODE_METHOD).  */
15080       smash_to_method_type (fnp->type, type,
15081                             TYPE_TARGET_TYPE (this_type),
15082                             TYPE_FIELDS (this_type),
15083                             TYPE_NFIELDS (this_type),
15084                             TYPE_VARARGS (this_type));
15085
15086       /* Handle static member functions.
15087          Dwarf2 has no clean way to discern C++ static and non-static
15088          member functions.  G++ helps GDB by marking the first
15089          parameter for non-static member functions (which is the this
15090          pointer) as artificial.  We obtain this information from
15091          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15092       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15093         fnp->voffset = VOFFSET_STATIC;
15094     }
15095   else
15096     complaint (_("member function type missing for '%s'"),
15097                dwarf2_full_name (fieldname, die, cu));
15098
15099   /* Get fcontext from DW_AT_containing_type if present.  */
15100   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15101     fnp->fcontext = die_containing_type (die, cu);
15102
15103   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15104      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15105
15106   /* Get accessibility.  */
15107   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15108   if (attr != nullptr)
15109     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15110   else
15111     accessibility = dwarf2_default_access_attribute (die, cu);
15112   switch (accessibility)
15113     {
15114     case DW_ACCESS_private:
15115       fnp->is_private = 1;
15116       break;
15117     case DW_ACCESS_protected:
15118       fnp->is_protected = 1;
15119       break;
15120     }
15121
15122   /* Check for artificial methods.  */
15123   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15124   if (attr && DW_UNSND (attr) != 0)
15125     fnp->is_artificial = 1;
15126
15127   /* Check for defaulted methods.  */
15128   attr = dwarf2_attr (die, DW_AT_defaulted, cu);
15129   if (attr != nullptr && is_valid_DW_AT_defaulted (DW_UNSND (attr)))
15130     fnp->defaulted = (enum dwarf_defaulted_attribute) DW_UNSND (attr);
15131
15132   /* Check for deleted methods.  */
15133   attr = dwarf2_attr (die, DW_AT_deleted, cu);
15134   if (attr != nullptr && DW_UNSND (attr) != 0)
15135     fnp->is_deleted = 1;
15136
15137   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15138
15139   /* Get index in virtual function table if it is a virtual member
15140      function.  For older versions of GCC, this is an offset in the
15141      appropriate virtual table, as specified by DW_AT_containing_type.
15142      For everyone else, it is an expression to be evaluated relative
15143      to the object address.  */
15144
15145   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15146   if (attr != nullptr)
15147     {
15148       if (attr->form_is_block () && DW_BLOCK (attr)->size > 0)
15149         {
15150           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15151             {
15152               /* Old-style GCC.  */
15153               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15154             }
15155           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15156                    || (DW_BLOCK (attr)->size > 1
15157                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15158                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15159             {
15160               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15161               if ((fnp->voffset % cu->header.addr_size) != 0)
15162                 dwarf2_complex_location_expr_complaint ();
15163               else
15164                 fnp->voffset /= cu->header.addr_size;
15165               fnp->voffset += 2;
15166             }
15167           else
15168             dwarf2_complex_location_expr_complaint ();
15169
15170           if (!fnp->fcontext)
15171             {
15172               /* If there is no `this' field and no DW_AT_containing_type,
15173                  we cannot actually find a base class context for the
15174                  vtable!  */
15175               if (TYPE_NFIELDS (this_type) == 0
15176                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15177                 {
15178                   complaint (_("cannot determine context for virtual member "
15179                                "function \"%s\" (offset %s)"),
15180                              fieldname, sect_offset_str (die->sect_off));
15181                 }
15182               else
15183                 {
15184                   fnp->fcontext
15185                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15186                 }
15187             }
15188         }
15189       else if (attr->form_is_section_offset ())
15190         {
15191           dwarf2_complex_location_expr_complaint ();
15192         }
15193       else
15194         {
15195           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15196                                                  fieldname);
15197         }
15198     }
15199   else
15200     {
15201       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15202       if (attr && DW_UNSND (attr))
15203         {
15204           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15205           complaint (_("Member function \"%s\" (offset %s) is virtual "
15206                        "but the vtable offset is not specified"),
15207                      fieldname, sect_offset_str (die->sect_off));
15208           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15209           TYPE_CPLUS_DYNAMIC (type) = 1;
15210         }
15211     }
15212 }
15213
15214 /* Create the vector of member function fields, and attach it to the type.  */
15215
15216 static void
15217 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15218                                  struct dwarf2_cu *cu)
15219 {
15220   if (cu->language == language_ada)
15221     error (_("unexpected member functions in Ada type"));
15222
15223   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15224   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15225     TYPE_ALLOC (type,
15226                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15227
15228   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15229     {
15230       struct fnfieldlist &nf = fip->fnfieldlists[i];
15231       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15232
15233       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15234       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15235       fn_flp->fn_fields = (struct fn_field *)
15236         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15237
15238       for (int k = 0; k < nf.fnfields.size (); ++k)
15239         fn_flp->fn_fields[k] = nf.fnfields[k];
15240     }
15241
15242   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15243 }
15244
15245 /* Returns non-zero if NAME is the name of a vtable member in CU's
15246    language, zero otherwise.  */
15247 static int
15248 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15249 {
15250   static const char vptr[] = "_vptr";
15251
15252   /* Look for the C++ form of the vtable.  */
15253   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15254     return 1;
15255
15256   return 0;
15257 }
15258
15259 /* GCC outputs unnamed structures that are really pointers to member
15260    functions, with the ABI-specified layout.  If TYPE describes
15261    such a structure, smash it into a member function type.
15262
15263    GCC shouldn't do this; it should just output pointer to member DIEs.
15264    This is GCC PR debug/28767.  */
15265
15266 static void
15267 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15268 {
15269   struct type *pfn_type, *self_type, *new_type;
15270
15271   /* Check for a structure with no name and two children.  */
15272   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15273     return;
15274
15275   /* Check for __pfn and __delta members.  */
15276   if (TYPE_FIELD_NAME (type, 0) == NULL
15277       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15278       || TYPE_FIELD_NAME (type, 1) == NULL
15279       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15280     return;
15281
15282   /* Find the type of the method.  */
15283   pfn_type = TYPE_FIELD_TYPE (type, 0);
15284   if (pfn_type == NULL
15285       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15286       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15287     return;
15288
15289   /* Look for the "this" argument.  */
15290   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15291   if (TYPE_NFIELDS (pfn_type) == 0
15292       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15293       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15294     return;
15295
15296   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15297   new_type = alloc_type (objfile);
15298   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15299                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15300                         TYPE_VARARGS (pfn_type));
15301   smash_to_methodptr_type (type, new_type);
15302 }
15303
15304 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15305    appropriate error checking and issuing complaints if there is a
15306    problem.  */
15307
15308 static ULONGEST
15309 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15310 {
15311   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15312
15313   if (attr == nullptr)
15314     return 0;
15315
15316   if (!attr->form_is_constant ())
15317     {
15318       complaint (_("DW_AT_alignment must have constant form"
15319                    " - DIE at %s [in module %s]"),
15320                  sect_offset_str (die->sect_off),
15321                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15322       return 0;
15323     }
15324
15325   ULONGEST align;
15326   if (attr->form == DW_FORM_sdata)
15327     {
15328       LONGEST val = DW_SND (attr);
15329       if (val < 0)
15330         {
15331           complaint (_("DW_AT_alignment value must not be negative"
15332                        " - DIE at %s [in module %s]"),
15333                      sect_offset_str (die->sect_off),
15334                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15335           return 0;
15336         }
15337       align = val;
15338     }
15339   else
15340     align = DW_UNSND (attr);
15341
15342   if (align == 0)
15343     {
15344       complaint (_("DW_AT_alignment value must not be zero"
15345                    " - DIE at %s [in module %s]"),
15346                  sect_offset_str (die->sect_off),
15347                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15348       return 0;
15349     }
15350   if ((align & (align - 1)) != 0)
15351     {
15352       complaint (_("DW_AT_alignment value must be a power of 2"
15353                    " - DIE at %s [in module %s]"),
15354                  sect_offset_str (die->sect_off),
15355                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15356       return 0;
15357     }
15358
15359   return align;
15360 }
15361
15362 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15363    the alignment for TYPE.  */
15364
15365 static void
15366 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15367                      struct type *type)
15368 {
15369   if (!set_type_align (type, get_alignment (cu, die)))
15370     complaint (_("DW_AT_alignment value too large"
15371                  " - DIE at %s [in module %s]"),
15372                sect_offset_str (die->sect_off),
15373                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15374 }
15375
15376 /* Check if the given VALUE is a valid enum dwarf_calling_convention
15377    constant for a type, according to DWARF5 spec, Table 5.5.  */
15378
15379 static bool
15380 is_valid_DW_AT_calling_convention_for_type (ULONGEST value)
15381 {
15382   switch (value)
15383     {
15384     case DW_CC_normal:
15385     case DW_CC_pass_by_reference:
15386     case DW_CC_pass_by_value:
15387       return true;
15388
15389     default:
15390       complaint (_("unrecognized DW_AT_calling_convention value "
15391                    "(%s) for a type"), pulongest (value));
15392       return false;
15393     }
15394 }
15395
15396 /* Check if the given VALUE is a valid enum dwarf_calling_convention
15397    constant for a subroutine, according to DWARF5 spec, Table 3.3, and
15398    also according to GNU-specific values (see include/dwarf2.h).  */
15399
15400 static bool
15401 is_valid_DW_AT_calling_convention_for_subroutine (ULONGEST value)
15402 {
15403   switch (value)
15404     {
15405     case DW_CC_normal:
15406     case DW_CC_program:
15407     case DW_CC_nocall:
15408       return true;
15409
15410     case DW_CC_GNU_renesas_sh:
15411     case DW_CC_GNU_borland_fastcall_i386:
15412     case DW_CC_GDB_IBM_OpenCL:
15413       return true;
15414
15415     default:
15416       complaint (_("unrecognized DW_AT_calling_convention value "
15417                    "(%s) for a subroutine"), pulongest (value));
15418       return false;
15419     }
15420 }
15421
15422 /* Called when we find the DIE that starts a structure or union scope
15423    (definition) to create a type for the structure or union.  Fill in
15424    the type's name and general properties; the members will not be
15425    processed until process_structure_scope.  A symbol table entry for
15426    the type will also not be done until process_structure_scope (assuming
15427    the type has a name).
15428
15429    NOTE: we need to call these functions regardless of whether or not the
15430    DIE has a DW_AT_name attribute, since it might be an anonymous
15431    structure or union.  This gets the type entered into our set of
15432    user defined types.  */
15433
15434 static struct type *
15435 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15436 {
15437   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15438   struct type *type;
15439   struct attribute *attr;
15440   const char *name;
15441
15442   /* If the definition of this type lives in .debug_types, read that type.
15443      Don't follow DW_AT_specification though, that will take us back up
15444      the chain and we want to go down.  */
15445   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15446   if (attr != nullptr)
15447     {
15448       type = get_DW_AT_signature_type (die, attr, cu);
15449
15450       /* The type's CU may not be the same as CU.
15451          Ensure TYPE is recorded with CU in die_type_hash.  */
15452       return set_die_type (die, type, cu);
15453     }
15454
15455   type = alloc_type (objfile);
15456   INIT_CPLUS_SPECIFIC (type);
15457
15458   name = dwarf2_name (die, cu);
15459   if (name != NULL)
15460     {
15461       if (cu->language == language_cplus
15462           || cu->language == language_d
15463           || cu->language == language_rust)
15464         {
15465           const char *full_name = dwarf2_full_name (name, die, cu);
15466
15467           /* dwarf2_full_name might have already finished building the DIE's
15468              type.  If so, there is no need to continue.  */
15469           if (get_die_type (die, cu) != NULL)
15470             return get_die_type (die, cu);
15471
15472           TYPE_NAME (type) = full_name;
15473         }
15474       else
15475         {
15476           /* The name is already allocated along with this objfile, so
15477              we don't need to duplicate it for the type.  */
15478           TYPE_NAME (type) = name;
15479         }
15480     }
15481
15482   if (die->tag == DW_TAG_structure_type)
15483     {
15484       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15485     }
15486   else if (die->tag == DW_TAG_union_type)
15487     {
15488       TYPE_CODE (type) = TYPE_CODE_UNION;
15489     }
15490   else if (die->tag == DW_TAG_variant_part)
15491     {
15492       TYPE_CODE (type) = TYPE_CODE_UNION;
15493       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15494     }
15495   else
15496     {
15497       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15498     }
15499
15500   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15501     TYPE_DECLARED_CLASS (type) = 1;
15502
15503   /* Store the calling convention in the type if it's available in
15504      the die.  Otherwise the calling convention remains set to
15505      the default value DW_CC_normal.  */
15506   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
15507   if (attr != nullptr
15508       && is_valid_DW_AT_calling_convention_for_type (DW_UNSND (attr)))
15509     {
15510       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15511       TYPE_CPLUS_CALLING_CONVENTION (type)
15512         = (enum dwarf_calling_convention) (DW_UNSND (attr));
15513     }
15514
15515   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15516   if (attr != nullptr)
15517     {
15518       if (attr->form_is_constant ())
15519         TYPE_LENGTH (type) = DW_UNSND (attr);
15520       else
15521         {
15522           /* For the moment, dynamic type sizes are not supported
15523              by GDB's struct type.  The actual size is determined
15524              on-demand when resolving the type of a given object,
15525              so set the type's length to zero for now.  Otherwise,
15526              we record an expression as the length, and that expression
15527              could lead to a very large value, which could eventually
15528              lead to us trying to allocate that much memory when creating
15529              a value of that type.  */
15530           TYPE_LENGTH (type) = 0;
15531         }
15532     }
15533   else
15534     {
15535       TYPE_LENGTH (type) = 0;
15536     }
15537
15538   maybe_set_alignment (cu, die, type);
15539
15540   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15541     {
15542       /* ICC<14 does not output the required DW_AT_declaration on
15543          incomplete types, but gives them a size of zero.  */
15544       TYPE_STUB (type) = 1;
15545     }
15546   else
15547     TYPE_STUB_SUPPORTED (type) = 1;
15548
15549   if (die_is_declaration (die, cu))
15550     TYPE_STUB (type) = 1;
15551   else if (attr == NULL && die->child == NULL
15552            && producer_is_realview (cu->producer))
15553     /* RealView does not output the required DW_AT_declaration
15554        on incomplete types.  */
15555     TYPE_STUB (type) = 1;
15556
15557   /* We need to add the type field to the die immediately so we don't
15558      infinitely recurse when dealing with pointers to the structure
15559      type within the structure itself.  */
15560   set_die_type (die, type, cu);
15561
15562   /* set_die_type should be already done.  */
15563   set_descriptive_type (type, die, cu);
15564
15565   return type;
15566 }
15567
15568 /* A helper for process_structure_scope that handles a single member
15569    DIE.  */
15570
15571 static void
15572 handle_struct_member_die (struct die_info *child_die, struct type *type,
15573                           struct field_info *fi,
15574                           std::vector<struct symbol *> *template_args,
15575                           struct dwarf2_cu *cu)
15576 {
15577   if (child_die->tag == DW_TAG_member
15578       || child_die->tag == DW_TAG_variable
15579       || child_die->tag == DW_TAG_variant_part)
15580     {
15581       /* NOTE: carlton/2002-11-05: A C++ static data member
15582          should be a DW_TAG_member that is a declaration, but
15583          all versions of G++ as of this writing (so through at
15584          least 3.2.1) incorrectly generate DW_TAG_variable
15585          tags for them instead.  */
15586       dwarf2_add_field (fi, child_die, cu);
15587     }
15588   else if (child_die->tag == DW_TAG_subprogram)
15589     {
15590       /* Rust doesn't have member functions in the C++ sense.
15591          However, it does emit ordinary functions as children
15592          of a struct DIE.  */
15593       if (cu->language == language_rust)
15594         read_func_scope (child_die, cu);
15595       else
15596         {
15597           /* C++ member function.  */
15598           dwarf2_add_member_fn (fi, child_die, type, cu);
15599         }
15600     }
15601   else if (child_die->tag == DW_TAG_inheritance)
15602     {
15603       /* C++ base class field.  */
15604       dwarf2_add_field (fi, child_die, cu);
15605     }
15606   else if (type_can_define_types (child_die))
15607     dwarf2_add_type_defn (fi, child_die, cu);
15608   else if (child_die->tag == DW_TAG_template_type_param
15609            || child_die->tag == DW_TAG_template_value_param)
15610     {
15611       struct symbol *arg = new_symbol (child_die, NULL, cu);
15612
15613       if (arg != NULL)
15614         template_args->push_back (arg);
15615     }
15616   else if (child_die->tag == DW_TAG_variant)
15617     {
15618       /* In a variant we want to get the discriminant and also add a
15619          field for our sole member child.  */
15620       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15621
15622       for (die_info *variant_child = child_die->child;
15623            variant_child != NULL;
15624            variant_child = sibling_die (variant_child))
15625         {
15626           if (variant_child->tag == DW_TAG_member)
15627             {
15628               handle_struct_member_die (variant_child, type, fi,
15629                                         template_args, cu);
15630               /* Only handle the one.  */
15631               break;
15632             }
15633         }
15634
15635       /* We don't handle this but we might as well report it if we see
15636          it.  */
15637       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15638           complaint (_("DW_AT_discr_list is not supported yet"
15639                        " - DIE at %s [in module %s]"),
15640                      sect_offset_str (child_die->sect_off),
15641                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15642
15643       /* The first field was just added, so we can stash the
15644          discriminant there.  */
15645       gdb_assert (!fi->fields.empty ());
15646       if (discr == NULL)
15647         fi->fields.back ().variant.default_branch = true;
15648       else
15649         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15650     }
15651 }
15652
15653 /* Finish creating a structure or union type, including filling in
15654    its members and creating a symbol for it.  */
15655
15656 static void
15657 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15658 {
15659   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15660   struct die_info *child_die;
15661   struct type *type;
15662
15663   type = get_die_type (die, cu);
15664   if (type == NULL)
15665     type = read_structure_type (die, cu);
15666
15667   /* When reading a DW_TAG_variant_part, we need to notice when we
15668      read the discriminant member, so we can record it later in the
15669      discriminant_info.  */
15670   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15671   sect_offset discr_offset {};
15672   bool has_template_parameters = false;
15673
15674   if (is_variant_part)
15675     {
15676       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15677       if (discr == NULL)
15678         {
15679           /* Maybe it's a univariant form, an extension we support.
15680              In this case arrange not to check the offset.  */
15681           is_variant_part = false;
15682         }
15683       else if (discr->form_is_ref ())
15684         {
15685           struct dwarf2_cu *target_cu = cu;
15686           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15687
15688           discr_offset = target_die->sect_off;
15689         }
15690       else
15691         {
15692           complaint (_("DW_AT_discr does not have DIE reference form"
15693                        " - DIE at %s [in module %s]"),
15694                      sect_offset_str (die->sect_off),
15695                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15696           is_variant_part = false;
15697         }
15698     }
15699
15700   if (die->child != NULL && ! die_is_declaration (die, cu))
15701     {
15702       struct field_info fi;
15703       std::vector<struct symbol *> template_args;
15704
15705       child_die = die->child;
15706
15707       while (child_die && child_die->tag)
15708         {
15709           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
15710
15711           if (is_variant_part && discr_offset == child_die->sect_off)
15712             fi.fields.back ().variant.is_discriminant = true;
15713
15714           child_die = sibling_die (child_die);
15715         }
15716
15717       /* Attach template arguments to type.  */
15718       if (!template_args.empty ())
15719         {
15720           has_template_parameters = true;
15721           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15722           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
15723           TYPE_TEMPLATE_ARGUMENTS (type)
15724             = XOBNEWVEC (&objfile->objfile_obstack,
15725                          struct symbol *,
15726                          TYPE_N_TEMPLATE_ARGUMENTS (type));
15727           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
15728                   template_args.data (),
15729                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
15730                    * sizeof (struct symbol *)));
15731         }
15732
15733       /* Attach fields and member functions to the type.  */
15734       if (fi.nfields)
15735         dwarf2_attach_fields_to_type (&fi, type, cu);
15736       if (!fi.fnfieldlists.empty ())
15737         {
15738           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
15739
15740           /* Get the type which refers to the base class (possibly this
15741              class itself) which contains the vtable pointer for the current
15742              class from the DW_AT_containing_type attribute.  This use of
15743              DW_AT_containing_type is a GNU extension.  */
15744
15745           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15746             {
15747               struct type *t = die_containing_type (die, cu);
15748
15749               set_type_vptr_basetype (type, t);
15750               if (type == t)
15751                 {
15752                   int i;
15753
15754                   /* Our own class provides vtbl ptr.  */
15755                   for (i = TYPE_NFIELDS (t) - 1;
15756                        i >= TYPE_N_BASECLASSES (t);
15757                        --i)
15758                     {
15759                       const char *fieldname = TYPE_FIELD_NAME (t, i);
15760
15761                       if (is_vtable_name (fieldname, cu))
15762                         {
15763                           set_type_vptr_fieldno (type, i);
15764                           break;
15765                         }
15766                     }
15767
15768                   /* Complain if virtual function table field not found.  */
15769                   if (i < TYPE_N_BASECLASSES (t))
15770                     complaint (_("virtual function table pointer "
15771                                  "not found when defining class '%s'"),
15772                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
15773                 }
15774               else
15775                 {
15776                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
15777                 }
15778             }
15779           else if (cu->producer
15780                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
15781             {
15782               /* The IBM XLC compiler does not provide direct indication
15783                  of the containing type, but the vtable pointer is
15784                  always named __vfp.  */
15785
15786               int i;
15787
15788               for (i = TYPE_NFIELDS (type) - 1;
15789                    i >= TYPE_N_BASECLASSES (type);
15790                    --i)
15791                 {
15792                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
15793                     {
15794                       set_type_vptr_fieldno (type, i);
15795                       set_type_vptr_basetype (type, type);
15796                       break;
15797                     }
15798                 }
15799             }
15800         }
15801
15802       /* Copy fi.typedef_field_list linked list elements content into the
15803          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
15804       if (!fi.typedef_field_list.empty ())
15805         {
15806           int count = fi.typedef_field_list.size ();
15807
15808           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15809           TYPE_TYPEDEF_FIELD_ARRAY (type)
15810             = ((struct decl_field *)
15811                TYPE_ALLOC (type,
15812                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
15813           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
15814
15815           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
15816             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
15817         }
15818
15819       /* Copy fi.nested_types_list linked list elements content into the
15820          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
15821       if (!fi.nested_types_list.empty () && cu->language != language_ada)
15822         {
15823           int count = fi.nested_types_list.size ();
15824
15825           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15826           TYPE_NESTED_TYPES_ARRAY (type)
15827             = ((struct decl_field *)
15828                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
15829           TYPE_NESTED_TYPES_COUNT (type) = count;
15830
15831           for (int i = 0; i < fi.nested_types_list.size (); ++i)
15832             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
15833         }
15834     }
15835
15836   quirk_gcc_member_function_pointer (type, objfile);
15837   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
15838     cu->rust_unions.push_back (type);
15839
15840   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
15841      snapshots) has been known to create a die giving a declaration
15842      for a class that has, as a child, a die giving a definition for a
15843      nested class.  So we have to process our children even if the
15844      current die is a declaration.  Normally, of course, a declaration
15845      won't have any children at all.  */
15846
15847   child_die = die->child;
15848
15849   while (child_die != NULL && child_die->tag)
15850     {
15851       if (child_die->tag == DW_TAG_member
15852           || child_die->tag == DW_TAG_variable
15853           || child_die->tag == DW_TAG_inheritance
15854           || child_die->tag == DW_TAG_template_value_param
15855           || child_die->tag == DW_TAG_template_type_param)
15856         {
15857           /* Do nothing.  */
15858         }
15859       else
15860         process_die (child_die, cu);
15861
15862       child_die = sibling_die (child_die);
15863     }
15864
15865   /* Do not consider external references.  According to the DWARF standard,
15866      these DIEs are identified by the fact that they have no byte_size
15867      attribute, and a declaration attribute.  */
15868   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
15869       || !die_is_declaration (die, cu))
15870     {
15871       struct symbol *sym = new_symbol (die, type, cu);
15872
15873       if (has_template_parameters)
15874         {
15875           struct symtab *symtab;
15876           if (sym != nullptr)
15877             symtab = symbol_symtab (sym);
15878           else if (cu->line_header != nullptr)
15879             {
15880               /* Any related symtab will do.  */
15881               symtab
15882                 = cu->line_header->file_names ()[0].symtab;
15883             }
15884           else
15885             {
15886               symtab = nullptr;
15887               complaint (_("could not find suitable "
15888                            "symtab for template parameter"
15889                            " - DIE at %s [in module %s]"),
15890                          sect_offset_str (die->sect_off),
15891                          objfile_name (objfile));
15892             }
15893
15894           if (symtab != nullptr)
15895             {
15896               /* Make sure that the symtab is set on the new symbols.
15897                  Even though they don't appear in this symtab directly,
15898                  other parts of gdb assume that symbols do, and this is
15899                  reasonably true.  */
15900               for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
15901                 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
15902             }
15903         }
15904     }
15905 }
15906
15907 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
15908    update TYPE using some information only available in DIE's children.  */
15909
15910 static void
15911 update_enumeration_type_from_children (struct die_info *die,
15912                                        struct type *type,
15913                                        struct dwarf2_cu *cu)
15914 {
15915   struct die_info *child_die;
15916   int unsigned_enum = 1;
15917   int flag_enum = 1;
15918   ULONGEST mask = 0;
15919
15920   auto_obstack obstack;
15921
15922   for (child_die = die->child;
15923        child_die != NULL && child_die->tag;
15924        child_die = sibling_die (child_die))
15925     {
15926       struct attribute *attr;
15927       LONGEST value;
15928       const gdb_byte *bytes;
15929       struct dwarf2_locexpr_baton *baton;
15930       const char *name;
15931
15932       if (child_die->tag != DW_TAG_enumerator)
15933         continue;
15934
15935       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
15936       if (attr == NULL)
15937         continue;
15938
15939       name = dwarf2_name (child_die, cu);
15940       if (name == NULL)
15941         name = "<anonymous enumerator>";
15942
15943       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
15944                                &value, &bytes, &baton);
15945       if (value < 0)
15946         {
15947           unsigned_enum = 0;
15948           flag_enum = 0;
15949         }
15950       else if ((mask & value) != 0)
15951         flag_enum = 0;
15952       else
15953         mask |= value;
15954
15955       /* If we already know that the enum type is neither unsigned, nor
15956          a flag type, no need to look at the rest of the enumerates.  */
15957       if (!unsigned_enum && !flag_enum)
15958         break;
15959     }
15960
15961   if (unsigned_enum)
15962     TYPE_UNSIGNED (type) = 1;
15963   if (flag_enum)
15964     TYPE_FLAG_ENUM (type) = 1;
15965 }
15966
15967 /* Given a DW_AT_enumeration_type die, set its type.  We do not
15968    complete the type's fields yet, or create any symbols.  */
15969
15970 static struct type *
15971 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
15972 {
15973   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15974   struct type *type;
15975   struct attribute *attr;
15976   const char *name;
15977
15978   /* If the definition of this type lives in .debug_types, read that type.
15979      Don't follow DW_AT_specification though, that will take us back up
15980      the chain and we want to go down.  */
15981   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15982   if (attr != nullptr)
15983     {
15984       type = get_DW_AT_signature_type (die, attr, cu);
15985
15986       /* The type's CU may not be the same as CU.
15987          Ensure TYPE is recorded with CU in die_type_hash.  */
15988       return set_die_type (die, type, cu);
15989     }
15990
15991   type = alloc_type (objfile);
15992
15993   TYPE_CODE (type) = TYPE_CODE_ENUM;
15994   name = dwarf2_full_name (NULL, die, cu);
15995   if (name != NULL)
15996     TYPE_NAME (type) = name;
15997
15998   attr = dwarf2_attr (die, DW_AT_type, cu);
15999   if (attr != NULL)
16000     {
16001       struct type *underlying_type = die_type (die, cu);
16002
16003       TYPE_TARGET_TYPE (type) = underlying_type;
16004     }
16005
16006   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16007   if (attr != nullptr)
16008     {
16009       TYPE_LENGTH (type) = DW_UNSND (attr);
16010     }
16011   else
16012     {
16013       TYPE_LENGTH (type) = 0;
16014     }
16015
16016   maybe_set_alignment (cu, die, type);
16017
16018   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16019      declared as private in the package spec, and then defined only
16020      inside the package body.  Such types are known as Taft Amendment
16021      Types.  When another package uses such a type, an incomplete DIE
16022      may be generated by the compiler.  */
16023   if (die_is_declaration (die, cu))
16024     TYPE_STUB (type) = 1;
16025
16026   /* Finish the creation of this type by using the enum's children.
16027      We must call this even when the underlying type has been provided
16028      so that we can determine if we're looking at a "flag" enum.  */
16029   update_enumeration_type_from_children (die, type, cu);
16030
16031   /* If this type has an underlying type that is not a stub, then we
16032      may use its attributes.  We always use the "unsigned" attribute
16033      in this situation, because ordinarily we guess whether the type
16034      is unsigned -- but the guess can be wrong and the underlying type
16035      can tell us the reality.  However, we defer to a local size
16036      attribute if one exists, because this lets the compiler override
16037      the underlying type if needed.  */
16038   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16039     {
16040       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16041       if (TYPE_LENGTH (type) == 0)
16042         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16043       if (TYPE_RAW_ALIGN (type) == 0
16044           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16045         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16046     }
16047
16048   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16049
16050   return set_die_type (die, type, cu);
16051 }
16052
16053 /* Given a pointer to a die which begins an enumeration, process all
16054    the dies that define the members of the enumeration, and create the
16055    symbol for the enumeration type.
16056
16057    NOTE: We reverse the order of the element list.  */
16058
16059 static void
16060 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16061 {
16062   struct type *this_type;
16063
16064   this_type = get_die_type (die, cu);
16065   if (this_type == NULL)
16066     this_type = read_enumeration_type (die, cu);
16067
16068   if (die->child != NULL)
16069     {
16070       struct die_info *child_die;
16071       struct symbol *sym;
16072       std::vector<struct field> fields;
16073       const char *name;
16074
16075       child_die = die->child;
16076       while (child_die && child_die->tag)
16077         {
16078           if (child_die->tag != DW_TAG_enumerator)
16079             {
16080               process_die (child_die, cu);
16081             }
16082           else
16083             {
16084               name = dwarf2_name (child_die, cu);
16085               if (name)
16086                 {
16087                   sym = new_symbol (child_die, this_type, cu);
16088
16089                   fields.emplace_back ();
16090                   struct field &field = fields.back ();
16091
16092                   FIELD_NAME (field) = sym->linkage_name ();
16093                   FIELD_TYPE (field) = NULL;
16094                   SET_FIELD_ENUMVAL (field, SYMBOL_VALUE (sym));
16095                   FIELD_BITSIZE (field) = 0;
16096                 }
16097             }
16098
16099           child_die = sibling_die (child_die);
16100         }
16101
16102       if (!fields.empty ())
16103         {
16104           TYPE_NFIELDS (this_type) = fields.size ();
16105           TYPE_FIELDS (this_type) = (struct field *)
16106             TYPE_ALLOC (this_type, sizeof (struct field) * fields.size ());
16107           memcpy (TYPE_FIELDS (this_type), fields.data (),
16108                   sizeof (struct field) * fields.size ());
16109         }
16110     }
16111
16112   /* If we are reading an enum from a .debug_types unit, and the enum
16113      is a declaration, and the enum is not the signatured type in the
16114      unit, then we do not want to add a symbol for it.  Adding a
16115      symbol would in some cases obscure the true definition of the
16116      enum, giving users an incomplete type when the definition is
16117      actually available.  Note that we do not want to do this for all
16118      enums which are just declarations, because C++0x allows forward
16119      enum declarations.  */
16120   if (cu->per_cu->is_debug_types
16121       && die_is_declaration (die, cu))
16122     {
16123       struct signatured_type *sig_type;
16124
16125       sig_type = (struct signatured_type *) cu->per_cu;
16126       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16127       if (sig_type->type_offset_in_section != die->sect_off)
16128         return;
16129     }
16130
16131   new_symbol (die, this_type, cu);
16132 }
16133
16134 /* Extract all information from a DW_TAG_array_type DIE and put it in
16135    the DIE's type field.  For now, this only handles one dimensional
16136    arrays.  */
16137
16138 static struct type *
16139 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16140 {
16141   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16142   struct die_info *child_die;
16143   struct type *type;
16144   struct type *element_type, *range_type, *index_type;
16145   struct attribute *attr;
16146   const char *name;
16147   struct dynamic_prop *byte_stride_prop = NULL;
16148   unsigned int bit_stride = 0;
16149
16150   element_type = die_type (die, cu);
16151
16152   /* The die_type call above may have already set the type for this DIE.  */
16153   type = get_die_type (die, cu);
16154   if (type)
16155     return type;
16156
16157   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16158   if (attr != NULL)
16159     {
16160       int stride_ok;
16161       struct type *prop_type
16162         = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
16163
16164       byte_stride_prop
16165         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16166       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
16167                                         prop_type);
16168       if (!stride_ok)
16169         {
16170           complaint (_("unable to read array DW_AT_byte_stride "
16171                        " - DIE at %s [in module %s]"),
16172                      sect_offset_str (die->sect_off),
16173                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16174           /* Ignore this attribute.  We will likely not be able to print
16175              arrays of this type correctly, but there is little we can do
16176              to help if we cannot read the attribute's value.  */
16177           byte_stride_prop = NULL;
16178         }
16179     }
16180
16181   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16182   if (attr != NULL)
16183     bit_stride = DW_UNSND (attr);
16184
16185   /* Irix 6.2 native cc creates array types without children for
16186      arrays with unspecified length.  */
16187   if (die->child == NULL)
16188     {
16189       index_type = objfile_type (objfile)->builtin_int;
16190       range_type = create_static_range_type (NULL, index_type, 0, -1);
16191       type = create_array_type_with_stride (NULL, element_type, range_type,
16192                                             byte_stride_prop, bit_stride);
16193       return set_die_type (die, type, cu);
16194     }
16195
16196   std::vector<struct type *> range_types;
16197   child_die = die->child;
16198   while (child_die && child_die->tag)
16199     {
16200       if (child_die->tag == DW_TAG_subrange_type)
16201         {
16202           struct type *child_type = read_type_die (child_die, cu);
16203
16204           if (child_type != NULL)
16205             {
16206               /* The range type was succesfully read.  Save it for the
16207                  array type creation.  */
16208               range_types.push_back (child_type);
16209             }
16210         }
16211       child_die = sibling_die (child_die);
16212     }
16213
16214   /* Dwarf2 dimensions are output from left to right, create the
16215      necessary array types in backwards order.  */
16216
16217   type = element_type;
16218
16219   if (read_array_order (die, cu) == DW_ORD_col_major)
16220     {
16221       int i = 0;
16222
16223       while (i < range_types.size ())
16224         type = create_array_type_with_stride (NULL, type, range_types[i++],
16225                                               byte_stride_prop, bit_stride);
16226     }
16227   else
16228     {
16229       size_t ndim = range_types.size ();
16230       while (ndim-- > 0)
16231         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16232                                               byte_stride_prop, bit_stride);
16233     }
16234
16235   /* Understand Dwarf2 support for vector types (like they occur on
16236      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16237      array type.  This is not part of the Dwarf2/3 standard yet, but a
16238      custom vendor extension.  The main difference between a regular
16239      array and the vector variant is that vectors are passed by value
16240      to functions.  */
16241   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16242   if (attr != nullptr)
16243     make_vector_type (type);
16244
16245   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16246      implementation may choose to implement triple vectors using this
16247      attribute.  */
16248   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16249   if (attr != nullptr)
16250     {
16251       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16252         TYPE_LENGTH (type) = DW_UNSND (attr);
16253       else
16254         complaint (_("DW_AT_byte_size for array type smaller "
16255                      "than the total size of elements"));
16256     }
16257
16258   name = dwarf2_name (die, cu);
16259   if (name)
16260     TYPE_NAME (type) = name;
16261
16262   maybe_set_alignment (cu, die, type);
16263
16264   /* Install the type in the die.  */
16265   set_die_type (die, type, cu);
16266
16267   /* set_die_type should be already done.  */
16268   set_descriptive_type (type, die, cu);
16269
16270   return type;
16271 }
16272
16273 static enum dwarf_array_dim_ordering
16274 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16275 {
16276   struct attribute *attr;
16277
16278   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16279
16280   if (attr != nullptr)
16281     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16282
16283   /* GNU F77 is a special case, as at 08/2004 array type info is the
16284      opposite order to the dwarf2 specification, but data is still
16285      laid out as per normal fortran.
16286
16287      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16288      version checking.  */
16289
16290   if (cu->language == language_fortran
16291       && cu->producer && strstr (cu->producer, "GNU F77"))
16292     {
16293       return DW_ORD_row_major;
16294     }
16295
16296   switch (cu->language_defn->la_array_ordering)
16297     {
16298     case array_column_major:
16299       return DW_ORD_col_major;
16300     case array_row_major:
16301     default:
16302       return DW_ORD_row_major;
16303     };
16304 }
16305
16306 /* Extract all information from a DW_TAG_set_type DIE and put it in
16307    the DIE's type field.  */
16308
16309 static struct type *
16310 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16311 {
16312   struct type *domain_type, *set_type;
16313   struct attribute *attr;
16314
16315   domain_type = die_type (die, cu);
16316
16317   /* The die_type call above may have already set the type for this DIE.  */
16318   set_type = get_die_type (die, cu);
16319   if (set_type)
16320     return set_type;
16321
16322   set_type = create_set_type (NULL, domain_type);
16323
16324   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16325   if (attr != nullptr)
16326     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16327
16328   maybe_set_alignment (cu, die, set_type);
16329
16330   return set_die_type (die, set_type, cu);
16331 }
16332
16333 /* A helper for read_common_block that creates a locexpr baton.
16334    SYM is the symbol which we are marking as computed.
16335    COMMON_DIE is the DIE for the common block.
16336    COMMON_LOC is the location expression attribute for the common
16337    block itself.
16338    MEMBER_LOC is the location expression attribute for the particular
16339    member of the common block that we are processing.
16340    CU is the CU from which the above come.  */
16341
16342 static void
16343 mark_common_block_symbol_computed (struct symbol *sym,
16344                                    struct die_info *common_die,
16345                                    struct attribute *common_loc,
16346                                    struct attribute *member_loc,
16347                                    struct dwarf2_cu *cu)
16348 {
16349   struct dwarf2_per_objfile *dwarf2_per_objfile
16350     = cu->per_cu->dwarf2_per_objfile;
16351   struct objfile *objfile = dwarf2_per_objfile->objfile;
16352   struct dwarf2_locexpr_baton *baton;
16353   gdb_byte *ptr;
16354   unsigned int cu_off;
16355   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16356   LONGEST offset = 0;
16357
16358   gdb_assert (common_loc && member_loc);
16359   gdb_assert (common_loc->form_is_block ());
16360   gdb_assert (member_loc->form_is_block ()
16361               || member_loc->form_is_constant ());
16362
16363   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16364   baton->per_cu = cu->per_cu;
16365   gdb_assert (baton->per_cu);
16366
16367   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16368
16369   if (member_loc->form_is_constant ())
16370     {
16371       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16372       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16373     }
16374   else
16375     baton->size += DW_BLOCK (member_loc)->size;
16376
16377   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16378   baton->data = ptr;
16379
16380   *ptr++ = DW_OP_call4;
16381   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16382   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16383   ptr += 4;
16384
16385   if (member_loc->form_is_constant ())
16386     {
16387       *ptr++ = DW_OP_addr;
16388       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16389       ptr += cu->header.addr_size;
16390     }
16391   else
16392     {
16393       /* We have to copy the data here, because DW_OP_call4 will only
16394          use a DW_AT_location attribute.  */
16395       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16396       ptr += DW_BLOCK (member_loc)->size;
16397     }
16398
16399   *ptr++ = DW_OP_plus;
16400   gdb_assert (ptr - baton->data == baton->size);
16401
16402   SYMBOL_LOCATION_BATON (sym) = baton;
16403   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16404 }
16405
16406 /* Create appropriate locally-scoped variables for all the
16407    DW_TAG_common_block entries.  Also create a struct common_block
16408    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16409    is used to separate the common blocks name namespace from regular
16410    variable names.  */
16411
16412 static void
16413 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16414 {
16415   struct attribute *attr;
16416
16417   attr = dwarf2_attr (die, DW_AT_location, cu);
16418   if (attr != nullptr)
16419     {
16420       /* Support the .debug_loc offsets.  */
16421       if (attr->form_is_block ())
16422         {
16423           /* Ok.  */
16424         }
16425       else if (attr->form_is_section_offset ())
16426         {
16427           dwarf2_complex_location_expr_complaint ();
16428           attr = NULL;
16429         }
16430       else
16431         {
16432           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16433                                                  "common block member");
16434           attr = NULL;
16435         }
16436     }
16437
16438   if (die->child != NULL)
16439     {
16440       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16441       struct die_info *child_die;
16442       size_t n_entries = 0, size;
16443       struct common_block *common_block;
16444       struct symbol *sym;
16445
16446       for (child_die = die->child;
16447            child_die && child_die->tag;
16448            child_die = sibling_die (child_die))
16449         ++n_entries;
16450
16451       size = (sizeof (struct common_block)
16452               + (n_entries - 1) * sizeof (struct symbol *));
16453       common_block
16454         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16455                                                  size);
16456       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16457       common_block->n_entries = 0;
16458
16459       for (child_die = die->child;
16460            child_die && child_die->tag;
16461            child_die = sibling_die (child_die))
16462         {
16463           /* Create the symbol in the DW_TAG_common_block block in the current
16464              symbol scope.  */
16465           sym = new_symbol (child_die, NULL, cu);
16466           if (sym != NULL)
16467             {
16468               struct attribute *member_loc;
16469
16470               common_block->contents[common_block->n_entries++] = sym;
16471
16472               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16473                                         cu);
16474               if (member_loc)
16475                 {
16476                   /* GDB has handled this for a long time, but it is
16477                      not specified by DWARF.  It seems to have been
16478                      emitted by gfortran at least as recently as:
16479                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16480                   complaint (_("Variable in common block has "
16481                                "DW_AT_data_member_location "
16482                                "- DIE at %s [in module %s]"),
16483                                sect_offset_str (child_die->sect_off),
16484                              objfile_name (objfile));
16485
16486                   if (member_loc->form_is_section_offset ())
16487                     dwarf2_complex_location_expr_complaint ();
16488                   else if (member_loc->form_is_constant ()
16489                            || member_loc->form_is_block ())
16490                     {
16491                       if (attr != nullptr)
16492                         mark_common_block_symbol_computed (sym, die, attr,
16493                                                            member_loc, cu);
16494                     }
16495                   else
16496                     dwarf2_complex_location_expr_complaint ();
16497                 }
16498             }
16499         }
16500
16501       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16502       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16503     }
16504 }
16505
16506 /* Create a type for a C++ namespace.  */
16507
16508 static struct type *
16509 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16510 {
16511   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16512   const char *previous_prefix, *name;
16513   int is_anonymous;
16514   struct type *type;
16515
16516   /* For extensions, reuse the type of the original namespace.  */
16517   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16518     {
16519       struct die_info *ext_die;
16520       struct dwarf2_cu *ext_cu = cu;
16521
16522       ext_die = dwarf2_extension (die, &ext_cu);
16523       type = read_type_die (ext_die, ext_cu);
16524
16525       /* EXT_CU may not be the same as CU.
16526          Ensure TYPE is recorded with CU in die_type_hash.  */
16527       return set_die_type (die, type, cu);
16528     }
16529
16530   name = namespace_name (die, &is_anonymous, cu);
16531
16532   /* Now build the name of the current namespace.  */
16533
16534   previous_prefix = determine_prefix (die, cu);
16535   if (previous_prefix[0] != '\0')
16536     name = typename_concat (&objfile->objfile_obstack,
16537                             previous_prefix, name, 0, cu);
16538
16539   /* Create the type.  */
16540   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16541
16542   return set_die_type (die, type, cu);
16543 }
16544
16545 /* Read a namespace scope.  */
16546
16547 static void
16548 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16549 {
16550   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16551   int is_anonymous;
16552
16553   /* Add a symbol associated to this if we haven't seen the namespace
16554      before.  Also, add a using directive if it's an anonymous
16555      namespace.  */
16556
16557   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16558     {
16559       struct type *type;
16560
16561       type = read_type_die (die, cu);
16562       new_symbol (die, type, cu);
16563
16564       namespace_name (die, &is_anonymous, cu);
16565       if (is_anonymous)
16566         {
16567           const char *previous_prefix = determine_prefix (die, cu);
16568
16569           std::vector<const char *> excludes;
16570           add_using_directive (using_directives (cu),
16571                                previous_prefix, TYPE_NAME (type), NULL,
16572                                NULL, excludes, 0, &objfile->objfile_obstack);
16573         }
16574     }
16575
16576   if (die->child != NULL)
16577     {
16578       struct die_info *child_die = die->child;
16579
16580       while (child_die && child_die->tag)
16581         {
16582           process_die (child_die, cu);
16583           child_die = sibling_die (child_die);
16584         }
16585     }
16586 }
16587
16588 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16589    imported module.  Still we need that type as local Fortran "use ... only"
16590    declaration imports depend on the created type in determine_prefix.  */
16591
16592 static struct type *
16593 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16594 {
16595   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16596   const char *module_name;
16597   struct type *type;
16598
16599   module_name = dwarf2_name (die, cu);
16600   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16601
16602   return set_die_type (die, type, cu);
16603 }
16604
16605 /* Read a Fortran module.  */
16606
16607 static void
16608 read_module (struct die_info *die, struct dwarf2_cu *cu)
16609 {
16610   struct die_info *child_die = die->child;
16611   struct type *type;
16612
16613   type = read_type_die (die, cu);
16614   new_symbol (die, type, cu);
16615
16616   while (child_die && child_die->tag)
16617     {
16618       process_die (child_die, cu);
16619       child_die = sibling_die (child_die);
16620     }
16621 }
16622
16623 /* Return the name of the namespace represented by DIE.  Set
16624    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16625    namespace.  */
16626
16627 static const char *
16628 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16629 {
16630   struct die_info *current_die;
16631   const char *name = NULL;
16632
16633   /* Loop through the extensions until we find a name.  */
16634
16635   for (current_die = die;
16636        current_die != NULL;
16637        current_die = dwarf2_extension (die, &cu))
16638     {
16639       /* We don't use dwarf2_name here so that we can detect the absence
16640          of a name -> anonymous namespace.  */
16641       name = dwarf2_string_attr (die, DW_AT_name, cu);
16642
16643       if (name != NULL)
16644         break;
16645     }
16646
16647   /* Is it an anonymous namespace?  */
16648
16649   *is_anonymous = (name == NULL);
16650   if (*is_anonymous)
16651     name = CP_ANONYMOUS_NAMESPACE_STR;
16652
16653   return name;
16654 }
16655
16656 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16657    the user defined type vector.  */
16658
16659 static struct type *
16660 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16661 {
16662   struct gdbarch *gdbarch
16663     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16664   struct comp_unit_head *cu_header = &cu->header;
16665   struct type *type;
16666   struct attribute *attr_byte_size;
16667   struct attribute *attr_address_class;
16668   int byte_size, addr_class;
16669   struct type *target_type;
16670
16671   target_type = die_type (die, cu);
16672
16673   /* The die_type call above may have already set the type for this DIE.  */
16674   type = get_die_type (die, cu);
16675   if (type)
16676     return type;
16677
16678   type = lookup_pointer_type (target_type);
16679
16680   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16681   if (attr_byte_size)
16682     byte_size = DW_UNSND (attr_byte_size);
16683   else
16684     byte_size = cu_header->addr_size;
16685
16686   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16687   if (attr_address_class)
16688     addr_class = DW_UNSND (attr_address_class);
16689   else
16690     addr_class = DW_ADDR_none;
16691
16692   ULONGEST alignment = get_alignment (cu, die);
16693
16694   /* If the pointer size, alignment, or address class is different
16695      than the default, create a type variant marked as such and set
16696      the length accordingly.  */
16697   if (TYPE_LENGTH (type) != byte_size
16698       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
16699           && alignment != TYPE_RAW_ALIGN (type))
16700       || addr_class != DW_ADDR_none)
16701     {
16702       if (gdbarch_address_class_type_flags_p (gdbarch))
16703         {
16704           int type_flags;
16705
16706           type_flags = gdbarch_address_class_type_flags
16707                          (gdbarch, byte_size, addr_class);
16708           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
16709                       == 0);
16710           type = make_type_with_address_space (type, type_flags);
16711         }
16712       else if (TYPE_LENGTH (type) != byte_size)
16713         {
16714           complaint (_("invalid pointer size %d"), byte_size);
16715         }
16716       else if (TYPE_RAW_ALIGN (type) != alignment)
16717         {
16718           complaint (_("Invalid DW_AT_alignment"
16719                        " - DIE at %s [in module %s]"),
16720                      sect_offset_str (die->sect_off),
16721                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16722         }
16723       else
16724         {
16725           /* Should we also complain about unhandled address classes?  */
16726         }
16727     }
16728
16729   TYPE_LENGTH (type) = byte_size;
16730   set_type_align (type, alignment);
16731   return set_die_type (die, type, cu);
16732 }
16733
16734 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
16735    the user defined type vector.  */
16736
16737 static struct type *
16738 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
16739 {
16740   struct type *type;
16741   struct type *to_type;
16742   struct type *domain;
16743
16744   to_type = die_type (die, cu);
16745   domain = die_containing_type (die, cu);
16746
16747   /* The calls above may have already set the type for this DIE.  */
16748   type = get_die_type (die, cu);
16749   if (type)
16750     return type;
16751
16752   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
16753     type = lookup_methodptr_type (to_type);
16754   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
16755     {
16756       struct type *new_type
16757         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
16758
16759       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
16760                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
16761                             TYPE_VARARGS (to_type));
16762       type = lookup_methodptr_type (new_type);
16763     }
16764   else
16765     type = lookup_memberptr_type (to_type, domain);
16766
16767   return set_die_type (die, type, cu);
16768 }
16769
16770 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
16771    the user defined type vector.  */
16772
16773 static struct type *
16774 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
16775                           enum type_code refcode)
16776 {
16777   struct comp_unit_head *cu_header = &cu->header;
16778   struct type *type, *target_type;
16779   struct attribute *attr;
16780
16781   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
16782
16783   target_type = die_type (die, cu);
16784
16785   /* The die_type call above may have already set the type for this DIE.  */
16786   type = get_die_type (die, cu);
16787   if (type)
16788     return type;
16789
16790   type = lookup_reference_type (target_type, refcode);
16791   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16792   if (attr != nullptr)
16793     {
16794       TYPE_LENGTH (type) = DW_UNSND (attr);
16795     }
16796   else
16797     {
16798       TYPE_LENGTH (type) = cu_header->addr_size;
16799     }
16800   maybe_set_alignment (cu, die, type);
16801   return set_die_type (die, type, cu);
16802 }
16803
16804 /* Add the given cv-qualifiers to the element type of the array.  GCC
16805    outputs DWARF type qualifiers that apply to an array, not the
16806    element type.  But GDB relies on the array element type to carry
16807    the cv-qualifiers.  This mimics section 6.7.3 of the C99
16808    specification.  */
16809
16810 static struct type *
16811 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
16812                    struct type *base_type, int cnst, int voltl)
16813 {
16814   struct type *el_type, *inner_array;
16815
16816   base_type = copy_type (base_type);
16817   inner_array = base_type;
16818
16819   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
16820     {
16821       TYPE_TARGET_TYPE (inner_array) =
16822         copy_type (TYPE_TARGET_TYPE (inner_array));
16823       inner_array = TYPE_TARGET_TYPE (inner_array);
16824     }
16825
16826   el_type = TYPE_TARGET_TYPE (inner_array);
16827   cnst |= TYPE_CONST (el_type);
16828   voltl |= TYPE_VOLATILE (el_type);
16829   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
16830
16831   return set_die_type (die, base_type, cu);
16832 }
16833
16834 static struct type *
16835 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
16836 {
16837   struct type *base_type, *cv_type;
16838
16839   base_type = die_type (die, cu);
16840
16841   /* The die_type call above may have already set the type for this DIE.  */
16842   cv_type = get_die_type (die, cu);
16843   if (cv_type)
16844     return cv_type;
16845
16846   /* In case the const qualifier is applied to an array type, the element type
16847      is so qualified, not the array type (section 6.7.3 of C99).  */
16848   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
16849     return add_array_cv_type (die, cu, base_type, 1, 0);
16850
16851   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
16852   return set_die_type (die, cv_type, cu);
16853 }
16854
16855 static struct type *
16856 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
16857 {
16858   struct type *base_type, *cv_type;
16859
16860   base_type = die_type (die, cu);
16861
16862   /* The die_type call above may have already set the type for this DIE.  */
16863   cv_type = get_die_type (die, cu);
16864   if (cv_type)
16865     return cv_type;
16866
16867   /* In case the volatile qualifier is applied to an array type, the
16868      element type is so qualified, not the array type (section 6.7.3
16869      of C99).  */
16870   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
16871     return add_array_cv_type (die, cu, base_type, 0, 1);
16872
16873   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
16874   return set_die_type (die, cv_type, cu);
16875 }
16876
16877 /* Handle DW_TAG_restrict_type.  */
16878
16879 static struct type *
16880 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
16881 {
16882   struct type *base_type, *cv_type;
16883
16884   base_type = die_type (die, cu);
16885
16886   /* The die_type call above may have already set the type for this DIE.  */
16887   cv_type = get_die_type (die, cu);
16888   if (cv_type)
16889     return cv_type;
16890
16891   cv_type = make_restrict_type (base_type);
16892   return set_die_type (die, cv_type, cu);
16893 }
16894
16895 /* Handle DW_TAG_atomic_type.  */
16896
16897 static struct type *
16898 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
16899 {
16900   struct type *base_type, *cv_type;
16901
16902   base_type = die_type (die, cu);
16903
16904   /* The die_type call above may have already set the type for this DIE.  */
16905   cv_type = get_die_type (die, cu);
16906   if (cv_type)
16907     return cv_type;
16908
16909   cv_type = make_atomic_type (base_type);
16910   return set_die_type (die, cv_type, cu);
16911 }
16912
16913 /* Extract all information from a DW_TAG_string_type DIE and add to
16914    the user defined type vector.  It isn't really a user defined type,
16915    but it behaves like one, with other DIE's using an AT_user_def_type
16916    attribute to reference it.  */
16917
16918 static struct type *
16919 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
16920 {
16921   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16922   struct gdbarch *gdbarch = get_objfile_arch (objfile);
16923   struct type *type, *range_type, *index_type, *char_type;
16924   struct attribute *attr;
16925   struct dynamic_prop prop;
16926   bool length_is_constant = true;
16927   LONGEST length;
16928
16929   /* There are a couple of places where bit sizes might be made use of
16930      when parsing a DW_TAG_string_type, however, no producer that we know
16931      of make use of these.  Handling bit sizes that are a multiple of the
16932      byte size is easy enough, but what about other bit sizes?  Lets deal
16933      with that problem when we have to.  Warn about these attributes being
16934      unsupported, then parse the type and ignore them like we always
16935      have.  */
16936   if (dwarf2_attr (die, DW_AT_bit_size, cu) != nullptr
16937       || dwarf2_attr (die, DW_AT_string_length_bit_size, cu) != nullptr)
16938     {
16939       static bool warning_printed = false;
16940       if (!warning_printed)
16941         {
16942           warning (_("DW_AT_bit_size and DW_AT_string_length_bit_size not "
16943                      "currently supported on DW_TAG_string_type."));
16944           warning_printed = true;
16945         }
16946     }
16947
16948   attr = dwarf2_attr (die, DW_AT_string_length, cu);
16949   if (attr != nullptr && !attr->form_is_constant ())
16950     {
16951       /* The string length describes the location at which the length of
16952          the string can be found.  The size of the length field can be
16953          specified with one of the attributes below.  */
16954       struct type *prop_type;
16955       struct attribute *len
16956         = dwarf2_attr (die, DW_AT_string_length_byte_size, cu);
16957       if (len == nullptr)
16958         len = dwarf2_attr (die, DW_AT_byte_size, cu);
16959       if (len != nullptr && len->form_is_constant ())
16960         {
16961           /* Pass 0 as the default as we know this attribute is constant
16962              and the default value will not be returned.  */
16963           LONGEST sz = dwarf2_get_attr_constant_value (len, 0);
16964           prop_type = dwarf2_per_cu_int_type (cu->per_cu, sz, true);
16965         }
16966       else
16967         {
16968           /* If the size is not specified then we assume it is the size of
16969              an address on this target.  */
16970           prop_type = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, true);
16971         }
16972
16973       /* Convert the attribute into a dynamic property.  */
16974       if (!attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
16975         length = 1;
16976       else
16977         length_is_constant = false;
16978     }
16979   else if (attr != nullptr)
16980     {
16981       /* This DW_AT_string_length just contains the length with no
16982          indirection.  There's no need to create a dynamic property in this
16983          case.  Pass 0 for the default value as we know it will not be
16984          returned in this case.  */
16985       length = dwarf2_get_attr_constant_value (attr, 0);
16986     }
16987   else if ((attr = dwarf2_attr (die, DW_AT_byte_size, cu)) != nullptr)
16988     {
16989       /* We don't currently support non-constant byte sizes for strings.  */
16990       length = dwarf2_get_attr_constant_value (attr, 1);
16991     }
16992   else
16993     {
16994       /* Use 1 as a fallback length if we have nothing else.  */
16995       length = 1;
16996     }
16997
16998   index_type = objfile_type (objfile)->builtin_int;
16999   if (length_is_constant)
17000     range_type = create_static_range_type (NULL, index_type, 1, length);
17001   else
17002     {
17003       struct dynamic_prop low_bound;
17004
17005       low_bound.kind = PROP_CONST;
17006       low_bound.data.const_val = 1;
17007       range_type = create_range_type (NULL, index_type, &low_bound, &prop, 0);
17008     }
17009   char_type = language_string_char_type (cu->language_defn, gdbarch);
17010   type = create_string_type (NULL, char_type, range_type);
17011
17012   return set_die_type (die, type, cu);
17013 }
17014
17015 /* Assuming that DIE corresponds to a function, returns nonzero
17016    if the function is prototyped.  */
17017
17018 static int
17019 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17020 {
17021   struct attribute *attr;
17022
17023   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17024   if (attr && (DW_UNSND (attr) != 0))
17025     return 1;
17026
17027   /* The DWARF standard implies that the DW_AT_prototyped attribute
17028      is only meaningful for C, but the concept also extends to other
17029      languages that allow unprototyped functions (Eg: Objective C).
17030      For all other languages, assume that functions are always
17031      prototyped.  */
17032   if (cu->language != language_c
17033       && cu->language != language_objc
17034       && cu->language != language_opencl)
17035     return 1;
17036
17037   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17038      prototyped and unprototyped functions; default to prototyped,
17039      since that is more common in modern code (and RealView warns
17040      about unprototyped functions).  */
17041   if (producer_is_realview (cu->producer))
17042     return 1;
17043
17044   return 0;
17045 }
17046
17047 /* Handle DIES due to C code like:
17048
17049    struct foo
17050    {
17051    int (*funcp)(int a, long l);
17052    int b;
17053    };
17054
17055    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17056
17057 static struct type *
17058 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17059 {
17060   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17061   struct type *type;            /* Type that this function returns.  */
17062   struct type *ftype;           /* Function that returns above type.  */
17063   struct attribute *attr;
17064
17065   type = die_type (die, cu);
17066
17067   /* The die_type call above may have already set the type for this DIE.  */
17068   ftype = get_die_type (die, cu);
17069   if (ftype)
17070     return ftype;
17071
17072   ftype = lookup_function_type (type);
17073
17074   if (prototyped_function_p (die, cu))
17075     TYPE_PROTOTYPED (ftype) = 1;
17076
17077   /* Store the calling convention in the type if it's available in
17078      the subroutine die.  Otherwise set the calling convention to
17079      the default value DW_CC_normal.  */
17080   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17081   if (attr != nullptr
17082       && is_valid_DW_AT_calling_convention_for_subroutine (DW_UNSND (attr)))
17083     TYPE_CALLING_CONVENTION (ftype)
17084       = (enum dwarf_calling_convention) (DW_UNSND (attr));
17085   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17086     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17087   else
17088     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17089
17090   /* Record whether the function returns normally to its caller or not
17091      if the DWARF producer set that information.  */
17092   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17093   if (attr && (DW_UNSND (attr) != 0))
17094     TYPE_NO_RETURN (ftype) = 1;
17095
17096   /* We need to add the subroutine type to the die immediately so
17097      we don't infinitely recurse when dealing with parameters
17098      declared as the same subroutine type.  */
17099   set_die_type (die, ftype, cu);
17100
17101   if (die->child != NULL)
17102     {
17103       struct type *void_type = objfile_type (objfile)->builtin_void;
17104       struct die_info *child_die;
17105       int nparams, iparams;
17106
17107       /* Count the number of parameters.
17108          FIXME: GDB currently ignores vararg functions, but knows about
17109          vararg member functions.  */
17110       nparams = 0;
17111       child_die = die->child;
17112       while (child_die && child_die->tag)
17113         {
17114           if (child_die->tag == DW_TAG_formal_parameter)
17115             nparams++;
17116           else if (child_die->tag == DW_TAG_unspecified_parameters)
17117             TYPE_VARARGS (ftype) = 1;
17118           child_die = sibling_die (child_die);
17119         }
17120
17121       /* Allocate storage for parameters and fill them in.  */
17122       TYPE_NFIELDS (ftype) = nparams;
17123       TYPE_FIELDS (ftype) = (struct field *)
17124         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17125
17126       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17127          even if we error out during the parameters reading below.  */
17128       for (iparams = 0; iparams < nparams; iparams++)
17129         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17130
17131       iparams = 0;
17132       child_die = die->child;
17133       while (child_die && child_die->tag)
17134         {
17135           if (child_die->tag == DW_TAG_formal_parameter)
17136             {
17137               struct type *arg_type;
17138
17139               /* DWARF version 2 has no clean way to discern C++
17140                  static and non-static member functions.  G++ helps
17141                  GDB by marking the first parameter for non-static
17142                  member functions (which is the this pointer) as
17143                  artificial.  We pass this information to
17144                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17145
17146                  DWARF version 3 added DW_AT_object_pointer, which GCC
17147                  4.5 does not yet generate.  */
17148               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17149               if (attr != nullptr)
17150                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17151               else
17152                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17153               arg_type = die_type (child_die, cu);
17154
17155               /* RealView does not mark THIS as const, which the testsuite
17156                  expects.  GCC marks THIS as const in method definitions,
17157                  but not in the class specifications (GCC PR 43053).  */
17158               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17159                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17160                 {
17161                   int is_this = 0;
17162                   struct dwarf2_cu *arg_cu = cu;
17163                   const char *name = dwarf2_name (child_die, cu);
17164
17165                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17166                   if (attr != nullptr)
17167                     {
17168                       /* If the compiler emits this, use it.  */
17169                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17170                         is_this = 1;
17171                     }
17172                   else if (name && strcmp (name, "this") == 0)
17173                     /* Function definitions will have the argument names.  */
17174                     is_this = 1;
17175                   else if (name == NULL && iparams == 0)
17176                     /* Declarations may not have the names, so like
17177                        elsewhere in GDB, assume an artificial first
17178                        argument is "this".  */
17179                     is_this = 1;
17180
17181                   if (is_this)
17182                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17183                                              arg_type, 0);
17184                 }
17185
17186               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17187               iparams++;
17188             }
17189           child_die = sibling_die (child_die);
17190         }
17191     }
17192
17193   return ftype;
17194 }
17195
17196 static struct type *
17197 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17198 {
17199   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17200   const char *name = NULL;
17201   struct type *this_type, *target_type;
17202
17203   name = dwarf2_full_name (NULL, die, cu);
17204   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17205   TYPE_TARGET_STUB (this_type) = 1;
17206   set_die_type (die, this_type, cu);
17207   target_type = die_type (die, cu);
17208   if (target_type != this_type)
17209     TYPE_TARGET_TYPE (this_type) = target_type;
17210   else
17211     {
17212       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17213          spec and cause infinite loops in GDB.  */
17214       complaint (_("Self-referential DW_TAG_typedef "
17215                    "- DIE at %s [in module %s]"),
17216                  sect_offset_str (die->sect_off), objfile_name (objfile));
17217       TYPE_TARGET_TYPE (this_type) = NULL;
17218     }
17219   return this_type;
17220 }
17221
17222 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17223    (which may be different from NAME) to the architecture back-end to allow
17224    it to guess the correct format if necessary.  */
17225
17226 static struct type *
17227 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17228                         const char *name_hint, enum bfd_endian byte_order)
17229 {
17230   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17231   const struct floatformat **format;
17232   struct type *type;
17233
17234   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17235   if (format)
17236     type = init_float_type (objfile, bits, name, format, byte_order);
17237   else
17238     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17239
17240   return type;
17241 }
17242
17243 /* Allocate an integer type of size BITS and name NAME.  */
17244
17245 static struct type *
17246 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17247                           int bits, int unsigned_p, const char *name)
17248 {
17249   struct type *type;
17250
17251   /* Versions of Intel's C Compiler generate an integer type called "void"
17252      instead of using DW_TAG_unspecified_type.  This has been seen on
17253      at least versions 14, 17, and 18.  */
17254   if (bits == 0 && producer_is_icc (cu) && name != nullptr
17255       && strcmp (name, "void") == 0)
17256     type = objfile_type (objfile)->builtin_void;
17257   else
17258     type = init_integer_type (objfile, bits, unsigned_p, name);
17259
17260   return type;
17261 }
17262
17263 /* Initialise and return a floating point type of size BITS suitable for
17264    use as a component of a complex number.  The NAME_HINT is passed through
17265    when initialising the floating point type and is the name of the complex
17266    type.
17267
17268    As DWARF doesn't currently provide an explicit name for the components
17269    of a complex number, but it can be helpful to have these components
17270    named, we try to select a suitable name based on the size of the
17271    component.  */
17272 static struct type *
17273 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17274                                  struct objfile *objfile,
17275                                  int bits, const char *name_hint,
17276                                  enum bfd_endian byte_order)
17277 {
17278   gdbarch *gdbarch = get_objfile_arch (objfile);
17279   struct type *tt = nullptr;
17280
17281   /* Try to find a suitable floating point builtin type of size BITS.
17282      We're going to use the name of this type as the name for the complex
17283      target type that we are about to create.  */
17284   switch (cu->language)
17285     {
17286     case language_fortran:
17287       switch (bits)
17288         {
17289         case 32:
17290           tt = builtin_f_type (gdbarch)->builtin_real;
17291           break;
17292         case 64:
17293           tt = builtin_f_type (gdbarch)->builtin_real_s8;
17294           break;
17295         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17296         case 128:
17297           tt = builtin_f_type (gdbarch)->builtin_real_s16;
17298           break;
17299         }
17300       break;
17301     default:
17302       switch (bits)
17303         {
17304         case 32:
17305           tt = builtin_type (gdbarch)->builtin_float;
17306           break;
17307         case 64:
17308           tt = builtin_type (gdbarch)->builtin_double;
17309           break;
17310         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17311         case 128:
17312           tt = builtin_type (gdbarch)->builtin_long_double;
17313           break;
17314         }
17315       break;
17316     }
17317
17318   /* If the type we found doesn't match the size we were looking for, then
17319      pretend we didn't find a type at all, the complex target type we
17320      create will then be nameless.  */
17321   if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17322     tt = nullptr;
17323
17324   const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17325   return dwarf2_init_float_type (objfile, bits, name, name_hint, byte_order);
17326 }
17327
17328 /* Find a representation of a given base type and install
17329    it in the TYPE field of the die.  */
17330
17331 static struct type *
17332 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17333 {
17334   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17335   struct type *type;
17336   struct attribute *attr;
17337   int encoding = 0, bits = 0;
17338   const char *name;
17339   gdbarch *arch;
17340
17341   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17342   if (attr != nullptr)
17343     encoding = DW_UNSND (attr);
17344   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17345   if (attr != nullptr)
17346     bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17347   name = dwarf2_name (die, cu);
17348   if (!name)
17349     complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17350
17351   arch = get_objfile_arch (objfile);
17352   enum bfd_endian byte_order = gdbarch_byte_order (arch);
17353
17354   attr = dwarf2_attr (die, DW_AT_endianity, cu);
17355   if (attr)
17356     {
17357       int endianity = DW_UNSND (attr);
17358
17359       switch (endianity)
17360         {
17361         case DW_END_big:
17362           byte_order = BFD_ENDIAN_BIG;
17363           break;
17364         case DW_END_little:
17365           byte_order = BFD_ENDIAN_LITTLE;
17366           break;
17367         default:
17368           complaint (_("DW_AT_endianity has unrecognized value %d"), endianity);
17369           break;
17370         }
17371     }
17372
17373   switch (encoding)
17374     {
17375       case DW_ATE_address:
17376         /* Turn DW_ATE_address into a void * pointer.  */
17377         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17378         type = init_pointer_type (objfile, bits, name, type);
17379         break;
17380       case DW_ATE_boolean:
17381         type = init_boolean_type (objfile, bits, 1, name);
17382         break;
17383       case DW_ATE_complex_float:
17384         type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name,
17385                                                 byte_order);
17386         type = init_complex_type (objfile, name, type);
17387         break;
17388       case DW_ATE_decimal_float:
17389         type = init_decfloat_type (objfile, bits, name);
17390         break;
17391       case DW_ATE_float:
17392         type = dwarf2_init_float_type (objfile, bits, name, name, byte_order);
17393         break;
17394       case DW_ATE_signed:
17395         type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17396         break;
17397       case DW_ATE_unsigned:
17398         if (cu->language == language_fortran
17399             && name
17400             && startswith (name, "character("))
17401           type = init_character_type (objfile, bits, 1, name);
17402         else
17403           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17404         break;
17405       case DW_ATE_signed_char:
17406         if (cu->language == language_ada || cu->language == language_m2
17407             || cu->language == language_pascal
17408             || cu->language == language_fortran)
17409           type = init_character_type (objfile, bits, 0, name);
17410         else
17411           type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17412         break;
17413       case DW_ATE_unsigned_char:
17414         if (cu->language == language_ada || cu->language == language_m2
17415             || cu->language == language_pascal
17416             || cu->language == language_fortran
17417             || cu->language == language_rust)
17418           type = init_character_type (objfile, bits, 1, name);
17419         else
17420           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17421         break;
17422       case DW_ATE_UTF:
17423         {
17424           if (bits == 16)
17425             type = builtin_type (arch)->builtin_char16;
17426           else if (bits == 32)
17427             type = builtin_type (arch)->builtin_char32;
17428           else
17429             {
17430               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17431                          bits);
17432               type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17433             }
17434           return set_die_type (die, type, cu);
17435         }
17436         break;
17437
17438       default:
17439         complaint (_("unsupported DW_AT_encoding: '%s'"),
17440                    dwarf_type_encoding_name (encoding));
17441         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17442         break;
17443     }
17444
17445   if (name && strcmp (name, "char") == 0)
17446     TYPE_NOSIGN (type) = 1;
17447
17448   maybe_set_alignment (cu, die, type);
17449
17450   TYPE_ENDIANITY_NOT_DEFAULT (type) = gdbarch_byte_order (arch) != byte_order;
17451
17452   return set_die_type (die, type, cu);
17453 }
17454
17455 /* Parse dwarf attribute if it's a block, reference or constant and put the
17456    resulting value of the attribute into struct bound_prop.
17457    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17458
17459 static int
17460 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17461                       struct dwarf2_cu *cu, struct dynamic_prop *prop,
17462                       struct type *default_type)
17463 {
17464   struct dwarf2_property_baton *baton;
17465   struct obstack *obstack
17466     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17467
17468   gdb_assert (default_type != NULL);
17469
17470   if (attr == NULL || prop == NULL)
17471     return 0;
17472
17473   if (attr->form_is_block ())
17474     {
17475       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17476       baton->property_type = default_type;
17477       baton->locexpr.per_cu = cu->per_cu;
17478       baton->locexpr.size = DW_BLOCK (attr)->size;
17479       baton->locexpr.data = DW_BLOCK (attr)->data;
17480       switch (attr->name)
17481         {
17482         case DW_AT_string_length:
17483           baton->locexpr.is_reference = true;
17484           break;
17485         default:
17486           baton->locexpr.is_reference = false;
17487           break;
17488         }
17489       prop->data.baton = baton;
17490       prop->kind = PROP_LOCEXPR;
17491       gdb_assert (prop->data.baton != NULL);
17492     }
17493   else if (attr->form_is_ref ())
17494     {
17495       struct dwarf2_cu *target_cu = cu;
17496       struct die_info *target_die;
17497       struct attribute *target_attr;
17498
17499       target_die = follow_die_ref (die, attr, &target_cu);
17500       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17501       if (target_attr == NULL)
17502         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17503                                    target_cu);
17504       if (target_attr == NULL)
17505         return 0;
17506
17507       switch (target_attr->name)
17508         {
17509           case DW_AT_location:
17510             if (target_attr->form_is_section_offset ())
17511               {
17512                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17513                 baton->property_type = die_type (target_die, target_cu);
17514                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17515                 prop->data.baton = baton;
17516                 prop->kind = PROP_LOCLIST;
17517                 gdb_assert (prop->data.baton != NULL);
17518               }
17519             else if (target_attr->form_is_block ())
17520               {
17521                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17522                 baton->property_type = die_type (target_die, target_cu);
17523                 baton->locexpr.per_cu = cu->per_cu;
17524                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17525                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17526                 baton->locexpr.is_reference = true;
17527                 prop->data.baton = baton;
17528                 prop->kind = PROP_LOCEXPR;
17529                 gdb_assert (prop->data.baton != NULL);
17530               }
17531             else
17532               {
17533                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17534                                                        "dynamic property");
17535                 return 0;
17536               }
17537             break;
17538           case DW_AT_data_member_location:
17539             {
17540               LONGEST offset;
17541
17542               if (!handle_data_member_location (target_die, target_cu,
17543                                                 &offset))
17544                 return 0;
17545
17546               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17547               baton->property_type = read_type_die (target_die->parent,
17548                                                       target_cu);
17549               baton->offset_info.offset = offset;
17550               baton->offset_info.type = die_type (target_die, target_cu);
17551               prop->data.baton = baton;
17552               prop->kind = PROP_ADDR_OFFSET;
17553               break;
17554             }
17555         }
17556     }
17557   else if (attr->form_is_constant ())
17558     {
17559       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17560       prop->kind = PROP_CONST;
17561     }
17562   else
17563     {
17564       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17565                                              dwarf2_name (die, cu));
17566       return 0;
17567     }
17568
17569   return 1;
17570 }
17571
17572 /* Find an integer type SIZE_IN_BYTES bytes in size and return it.
17573    UNSIGNED_P controls if the integer is unsigned or not.  */
17574
17575 static struct type *
17576 dwarf2_per_cu_int_type (struct dwarf2_per_cu_data *per_cu,
17577                         int size_in_bytes, bool unsigned_p)
17578 {
17579   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
17580   struct type *int_type;
17581
17582   /* Helper macro to examine the various builtin types.  */
17583 #define TRY_TYPE(F)                                                     \
17584   int_type = (unsigned_p                                                \
17585               ? objfile_type (objfile)->builtin_unsigned_ ## F          \
17586               : objfile_type (objfile)->builtin_ ## F);                 \
17587   if (int_type != NULL && TYPE_LENGTH (int_type) == size_in_bytes)      \
17588     return int_type
17589
17590   TRY_TYPE (char);
17591   TRY_TYPE (short);
17592   TRY_TYPE (int);
17593   TRY_TYPE (long);
17594   TRY_TYPE (long_long);
17595
17596 #undef TRY_TYPE
17597
17598   gdb_assert_not_reached ("unable to find suitable integer type");
17599 }
17600
17601 /* Find an integer type the same size as the address size given in the
17602    compilation unit header for PER_CU.  UNSIGNED_P controls if the integer
17603    is unsigned or not.  */
17604
17605 static struct type *
17606 dwarf2_per_cu_addr_sized_int_type (struct dwarf2_per_cu_data *per_cu,
17607                                    bool unsigned_p)
17608 {
17609   int addr_size = dwarf2_per_cu_addr_size (per_cu);
17610   return dwarf2_per_cu_int_type (per_cu, addr_size, unsigned_p);
17611 }
17612
17613 /* Read the DW_AT_type attribute for a sub-range.  If this attribute is not
17614    present (which is valid) then compute the default type based on the
17615    compilation units address size.  */
17616
17617 static struct type *
17618 read_subrange_index_type (struct die_info *die, struct dwarf2_cu *cu)
17619 {
17620   struct type *index_type = die_type (die, cu);
17621
17622   /* Dwarf-2 specifications explicitly allows to create subrange types
17623      without specifying a base type.
17624      In that case, the base type must be set to the type of
17625      the lower bound, upper bound or count, in that order, if any of these
17626      three attributes references an object that has a type.
17627      If no base type is found, the Dwarf-2 specifications say that
17628      a signed integer type of size equal to the size of an address should
17629      be used.
17630      For the following C code: `extern char gdb_int [];'
17631      GCC produces an empty range DIE.
17632      FIXME: muller/2010-05-28: Possible references to object for low bound,
17633      high bound or count are not yet handled by this code.  */
17634   if (TYPE_CODE (index_type) == TYPE_CODE_VOID)
17635     index_type = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
17636
17637   return index_type;
17638 }
17639
17640 /* Read the given DW_AT_subrange DIE.  */
17641
17642 static struct type *
17643 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17644 {
17645   struct type *base_type, *orig_base_type;
17646   struct type *range_type;
17647   struct attribute *attr;
17648   struct dynamic_prop low, high;
17649   int low_default_is_valid;
17650   int high_bound_is_count = 0;
17651   const char *name;
17652   ULONGEST negative_mask;
17653
17654   orig_base_type = read_subrange_index_type (die, cu);
17655
17656   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17657      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17658      creating the range type, but we use the result of check_typedef
17659      when examining properties of the type.  */
17660   base_type = check_typedef (orig_base_type);
17661
17662   /* The die_type call above may have already set the type for this DIE.  */
17663   range_type = get_die_type (die, cu);
17664   if (range_type)
17665     return range_type;
17666
17667   low.kind = PROP_CONST;
17668   high.kind = PROP_CONST;
17669   high.data.const_val = 0;
17670
17671   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17672      omitting DW_AT_lower_bound.  */
17673   switch (cu->language)
17674     {
17675     case language_c:
17676     case language_cplus:
17677       low.data.const_val = 0;
17678       low_default_is_valid = 1;
17679       break;
17680     case language_fortran:
17681       low.data.const_val = 1;
17682       low_default_is_valid = 1;
17683       break;
17684     case language_d:
17685     case language_objc:
17686     case language_rust:
17687       low.data.const_val = 0;
17688       low_default_is_valid = (cu->header.version >= 4);
17689       break;
17690     case language_ada:
17691     case language_m2:
17692     case language_pascal:
17693       low.data.const_val = 1;
17694       low_default_is_valid = (cu->header.version >= 4);
17695       break;
17696     default:
17697       low.data.const_val = 0;
17698       low_default_is_valid = 0;
17699       break;
17700     }
17701
17702   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17703   if (attr != nullptr)
17704     attr_to_dynamic_prop (attr, die, cu, &low, base_type);
17705   else if (!low_default_is_valid)
17706     complaint (_("Missing DW_AT_lower_bound "
17707                                       "- DIE at %s [in module %s]"),
17708                sect_offset_str (die->sect_off),
17709                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17710
17711   struct attribute *attr_ub, *attr_count;
17712   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17713   if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type))
17714     {
17715       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17716       if (attr_to_dynamic_prop (attr, die, cu, &high, base_type))
17717         {
17718           /* If bounds are constant do the final calculation here.  */
17719           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17720             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17721           else
17722             high_bound_is_count = 1;
17723         }
17724       else
17725         {
17726           if (attr_ub != NULL)
17727             complaint (_("Unresolved DW_AT_upper_bound "
17728                          "- DIE at %s [in module %s]"),
17729                        sect_offset_str (die->sect_off),
17730                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17731           if (attr_count != NULL)
17732             complaint (_("Unresolved DW_AT_count "
17733                          "- DIE at %s [in module %s]"),
17734                        sect_offset_str (die->sect_off),
17735                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17736         }
17737     }
17738
17739   LONGEST bias = 0;
17740   struct attribute *bias_attr = dwarf2_attr (die, DW_AT_GNU_bias, cu);
17741   if (bias_attr != nullptr && bias_attr->form_is_constant ())
17742     bias = dwarf2_get_attr_constant_value (bias_attr, 0);
17743
17744   /* Normally, the DWARF producers are expected to use a signed
17745      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17746      But this is unfortunately not always the case, as witnessed
17747      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17748      is used instead.  To work around that ambiguity, we treat
17749      the bounds as signed, and thus sign-extend their values, when
17750      the base type is signed.  */
17751   negative_mask =
17752     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17753   if (low.kind == PROP_CONST
17754       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17755     low.data.const_val |= negative_mask;
17756   if (high.kind == PROP_CONST
17757       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17758     high.data.const_val |= negative_mask;
17759
17760   /* Check for bit and byte strides.  */
17761   struct dynamic_prop byte_stride_prop;
17762   attribute *attr_byte_stride = dwarf2_attr (die, DW_AT_byte_stride, cu);
17763   if (attr_byte_stride != nullptr)
17764     {
17765       struct type *prop_type
17766         = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
17767       attr_to_dynamic_prop (attr_byte_stride, die, cu, &byte_stride_prop,
17768                             prop_type);
17769     }
17770
17771   struct dynamic_prop bit_stride_prop;
17772   attribute *attr_bit_stride = dwarf2_attr (die, DW_AT_bit_stride, cu);
17773   if (attr_bit_stride != nullptr)
17774     {
17775       /* It only makes sense to have either a bit or byte stride.  */
17776       if (attr_byte_stride != nullptr)
17777         {
17778           complaint (_("Found DW_AT_bit_stride and DW_AT_byte_stride "
17779                        "- DIE at %s [in module %s]"),
17780                      sect_offset_str (die->sect_off),
17781                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17782           attr_bit_stride = nullptr;
17783         }
17784       else
17785         {
17786           struct type *prop_type
17787             = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
17788           attr_to_dynamic_prop (attr_bit_stride, die, cu, &bit_stride_prop,
17789                                 prop_type);
17790         }
17791     }
17792
17793   if (attr_byte_stride != nullptr
17794       || attr_bit_stride != nullptr)
17795     {
17796       bool byte_stride_p = (attr_byte_stride != nullptr);
17797       struct dynamic_prop *stride
17798         = byte_stride_p ? &byte_stride_prop : &bit_stride_prop;
17799
17800       range_type
17801         = create_range_type_with_stride (NULL, orig_base_type, &low,
17802                                          &high, bias, stride, byte_stride_p);
17803     }
17804   else
17805     range_type = create_range_type (NULL, orig_base_type, &low, &high, bias);
17806
17807   if (high_bound_is_count)
17808     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17809
17810   /* Ada expects an empty array on no boundary attributes.  */
17811   if (attr == NULL && cu->language != language_ada)
17812     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17813
17814   name = dwarf2_name (die, cu);
17815   if (name)
17816     TYPE_NAME (range_type) = name;
17817
17818   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17819   if (attr != nullptr)
17820     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17821
17822   maybe_set_alignment (cu, die, range_type);
17823
17824   set_die_type (die, range_type, cu);
17825
17826   /* set_die_type should be already done.  */
17827   set_descriptive_type (range_type, die, cu);
17828
17829   return range_type;
17830 }
17831
17832 static struct type *
17833 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17834 {
17835   struct type *type;
17836
17837   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17838                     NULL);
17839   TYPE_NAME (type) = dwarf2_name (die, cu);
17840
17841   /* In Ada, an unspecified type is typically used when the description
17842      of the type is deferred to a different unit.  When encountering
17843      such a type, we treat it as a stub, and try to resolve it later on,
17844      when needed.  */
17845   if (cu->language == language_ada)
17846     TYPE_STUB (type) = 1;
17847
17848   return set_die_type (die, type, cu);
17849 }
17850
17851 /* Read a single die and all its descendents.  Set the die's sibling
17852    field to NULL; set other fields in the die correctly, and set all
17853    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17854    location of the info_ptr after reading all of those dies.  PARENT
17855    is the parent of the die in question.  */
17856
17857 static struct die_info *
17858 read_die_and_children (const struct die_reader_specs *reader,
17859                        const gdb_byte *info_ptr,
17860                        const gdb_byte **new_info_ptr,
17861                        struct die_info *parent)
17862 {
17863   struct die_info *die;
17864   const gdb_byte *cur_ptr;
17865
17866   cur_ptr = read_full_die_1 (reader, &die, info_ptr, 0);
17867   if (die == NULL)
17868     {
17869       *new_info_ptr = cur_ptr;
17870       return NULL;
17871     }
17872   store_in_ref_table (die, reader->cu);
17873
17874   if (die->has_children)
17875     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17876   else
17877     {
17878       die->child = NULL;
17879       *new_info_ptr = cur_ptr;
17880     }
17881
17882   die->sibling = NULL;
17883   die->parent = parent;
17884   return die;
17885 }
17886
17887 /* Read a die, all of its descendents, and all of its siblings; set
17888    all of the fields of all of the dies correctly.  Arguments are as
17889    in read_die_and_children.  */
17890
17891 static struct die_info *
17892 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17893                          const gdb_byte *info_ptr,
17894                          const gdb_byte **new_info_ptr,
17895                          struct die_info *parent)
17896 {
17897   struct die_info *first_die, *last_sibling;
17898   const gdb_byte *cur_ptr;
17899
17900   cur_ptr = info_ptr;
17901   first_die = last_sibling = NULL;
17902
17903   while (1)
17904     {
17905       struct die_info *die
17906         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17907
17908       if (die == NULL)
17909         {
17910           *new_info_ptr = cur_ptr;
17911           return first_die;
17912         }
17913
17914       if (!first_die)
17915         first_die = die;
17916       else
17917         last_sibling->sibling = die;
17918
17919       last_sibling = die;
17920     }
17921 }
17922
17923 /* Read a die, all of its descendents, and all of its siblings; set
17924    all of the fields of all of the dies correctly.  Arguments are as
17925    in read_die_and_children.
17926    This the main entry point for reading a DIE and all its children.  */
17927
17928 static struct die_info *
17929 read_die_and_siblings (const struct die_reader_specs *reader,
17930                        const gdb_byte *info_ptr,
17931                        const gdb_byte **new_info_ptr,
17932                        struct die_info *parent)
17933 {
17934   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17935                                                   new_info_ptr, parent);
17936
17937   if (dwarf_die_debug)
17938     {
17939       fprintf_unfiltered (gdb_stdlog,
17940                           "Read die from %s@0x%x of %s:\n",
17941                           reader->die_section->get_name (),
17942                           (unsigned) (info_ptr - reader->die_section->buffer),
17943                           bfd_get_filename (reader->abfd));
17944       dump_die (die, dwarf_die_debug);
17945     }
17946
17947   return die;
17948 }
17949
17950 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17951    attributes.
17952    The caller is responsible for filling in the extra attributes
17953    and updating (*DIEP)->num_attrs.
17954    Set DIEP to point to a newly allocated die with its information,
17955    except for its child, sibling, and parent fields.  */
17956
17957 static const gdb_byte *
17958 read_full_die_1 (const struct die_reader_specs *reader,
17959                  struct die_info **diep, const gdb_byte *info_ptr,
17960                  int num_extra_attrs)
17961 {
17962   unsigned int abbrev_number, bytes_read, i;
17963   struct abbrev_info *abbrev;
17964   struct die_info *die;
17965   struct dwarf2_cu *cu = reader->cu;
17966   bfd *abfd = reader->abfd;
17967
17968   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
17969   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
17970   info_ptr += bytes_read;
17971   if (!abbrev_number)
17972     {
17973       *diep = NULL;
17974       return info_ptr;
17975     }
17976
17977   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
17978   if (!abbrev)
17979     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
17980            abbrev_number,
17981            bfd_get_filename (abfd));
17982
17983   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
17984   die->sect_off = sect_off;
17985   die->tag = abbrev->tag;
17986   die->abbrev = abbrev_number;
17987   die->has_children = abbrev->has_children;
17988
17989   /* Make the result usable.
17990      The caller needs to update num_attrs after adding the extra
17991      attributes.  */
17992   die->num_attrs = abbrev->num_attrs;
17993
17994   std::vector<int> indexes_that_need_reprocess;
17995   for (i = 0; i < abbrev->num_attrs; ++i)
17996     {
17997       bool need_reprocess;
17998       info_ptr =
17999         read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18000                         info_ptr, &need_reprocess);
18001       if (need_reprocess)
18002         indexes_that_need_reprocess.push_back (i);
18003     }
18004
18005   struct attribute *attr = dwarf2_attr_no_follow (die, DW_AT_str_offsets_base);
18006   if (attr != nullptr)
18007     cu->str_offsets_base = DW_UNSND (attr);
18008
18009   auto maybe_addr_base = lookup_addr_base(die);
18010   if (maybe_addr_base.has_value ())
18011     cu->addr_base = *maybe_addr_base;
18012   for (int index : indexes_that_need_reprocess)
18013     read_attribute_reprocess (reader, &die->attrs[index]);
18014   *diep = die;
18015   return info_ptr;
18016 }
18017
18018 /* Read a die and all its attributes.
18019    Set DIEP to point to a newly allocated die with its information,
18020    except for its child, sibling, and parent fields.  */
18021
18022 static const gdb_byte *
18023 read_full_die (const struct die_reader_specs *reader,
18024                struct die_info **diep, const gdb_byte *info_ptr)
18025 {
18026   const gdb_byte *result;
18027
18028   result = read_full_die_1 (reader, diep, info_ptr, 0);
18029
18030   if (dwarf_die_debug)
18031     {
18032       fprintf_unfiltered (gdb_stdlog,
18033                           "Read die from %s@0x%x of %s:\n",
18034                           reader->die_section->get_name (),
18035                           (unsigned) (info_ptr - reader->die_section->buffer),
18036                           bfd_get_filename (reader->abfd));
18037       dump_die (*diep, dwarf_die_debug);
18038     }
18039
18040   return result;
18041 }
18042 \f
18043
18044 /* Returns nonzero if TAG represents a type that we might generate a partial
18045    symbol for.  */
18046
18047 static int
18048 is_type_tag_for_partial (int tag)
18049 {
18050   switch (tag)
18051     {
18052 #if 0
18053     /* Some types that would be reasonable to generate partial symbols for,
18054        that we don't at present.  */
18055     case DW_TAG_array_type:
18056     case DW_TAG_file_type:
18057     case DW_TAG_ptr_to_member_type:
18058     case DW_TAG_set_type:
18059     case DW_TAG_string_type:
18060     case DW_TAG_subroutine_type:
18061 #endif
18062     case DW_TAG_base_type:
18063     case DW_TAG_class_type:
18064     case DW_TAG_interface_type:
18065     case DW_TAG_enumeration_type:
18066     case DW_TAG_structure_type:
18067     case DW_TAG_subrange_type:
18068     case DW_TAG_typedef:
18069     case DW_TAG_union_type:
18070       return 1;
18071     default:
18072       return 0;
18073     }
18074 }
18075
18076 /* Load all DIEs that are interesting for partial symbols into memory.  */
18077
18078 static struct partial_die_info *
18079 load_partial_dies (const struct die_reader_specs *reader,
18080                    const gdb_byte *info_ptr, int building_psymtab)
18081 {
18082   struct dwarf2_cu *cu = reader->cu;
18083   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18084   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18085   unsigned int bytes_read;
18086   unsigned int load_all = 0;
18087   int nesting_level = 1;
18088
18089   parent_die = NULL;
18090   last_die = NULL;
18091
18092   gdb_assert (cu->per_cu != NULL);
18093   if (cu->per_cu->load_all_dies)
18094     load_all = 1;
18095
18096   cu->partial_dies
18097     = htab_create_alloc_ex (cu->header.length / 12,
18098                             partial_die_hash,
18099                             partial_die_eq,
18100                             NULL,
18101                             &cu->comp_unit_obstack,
18102                             hashtab_obstack_allocate,
18103                             dummy_obstack_deallocate);
18104
18105   while (1)
18106     {
18107       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18108
18109       /* A NULL abbrev means the end of a series of children.  */
18110       if (abbrev == NULL)
18111         {
18112           if (--nesting_level == 0)
18113             return first_die;
18114
18115           info_ptr += bytes_read;
18116           last_die = parent_die;
18117           parent_die = parent_die->die_parent;
18118           continue;
18119         }
18120
18121       /* Check for template arguments.  We never save these; if
18122          they're seen, we just mark the parent, and go on our way.  */
18123       if (parent_die != NULL
18124           && cu->language == language_cplus
18125           && (abbrev->tag == DW_TAG_template_type_param
18126               || abbrev->tag == DW_TAG_template_value_param))
18127         {
18128           parent_die->has_template_arguments = 1;
18129
18130           if (!load_all)
18131             {
18132               /* We don't need a partial DIE for the template argument.  */
18133               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18134               continue;
18135             }
18136         }
18137
18138       /* We only recurse into c++ subprograms looking for template arguments.
18139          Skip their other children.  */
18140       if (!load_all
18141           && cu->language == language_cplus
18142           && parent_die != NULL
18143           && parent_die->tag == DW_TAG_subprogram)
18144         {
18145           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18146           continue;
18147         }
18148
18149       /* Check whether this DIE is interesting enough to save.  Normally
18150          we would not be interested in members here, but there may be
18151          later variables referencing them via DW_AT_specification (for
18152          static members).  */
18153       if (!load_all
18154           && !is_type_tag_for_partial (abbrev->tag)
18155           && abbrev->tag != DW_TAG_constant
18156           && abbrev->tag != DW_TAG_enumerator
18157           && abbrev->tag != DW_TAG_subprogram
18158           && abbrev->tag != DW_TAG_inlined_subroutine
18159           && abbrev->tag != DW_TAG_lexical_block
18160           && abbrev->tag != DW_TAG_variable
18161           && abbrev->tag != DW_TAG_namespace
18162           && abbrev->tag != DW_TAG_module
18163           && abbrev->tag != DW_TAG_member
18164           && abbrev->tag != DW_TAG_imported_unit
18165           && abbrev->tag != DW_TAG_imported_declaration)
18166         {
18167           /* Otherwise we skip to the next sibling, if any.  */
18168           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18169           continue;
18170         }
18171
18172       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18173                                    abbrev);
18174
18175       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18176
18177       /* This two-pass algorithm for processing partial symbols has a
18178          high cost in cache pressure.  Thus, handle some simple cases
18179          here which cover the majority of C partial symbols.  DIEs
18180          which neither have specification tags in them, nor could have
18181          specification tags elsewhere pointing at them, can simply be
18182          processed and discarded.
18183
18184          This segment is also optional; scan_partial_symbols and
18185          add_partial_symbol will handle these DIEs if we chain
18186          them in normally.  When compilers which do not emit large
18187          quantities of duplicate debug information are more common,
18188          this code can probably be removed.  */
18189
18190       /* Any complete simple types at the top level (pretty much all
18191          of them, for a language without namespaces), can be processed
18192          directly.  */
18193       if (parent_die == NULL
18194           && pdi.has_specification == 0
18195           && pdi.is_declaration == 0
18196           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18197               || pdi.tag == DW_TAG_base_type
18198               || pdi.tag == DW_TAG_subrange_type))
18199         {
18200           if (building_psymtab && pdi.name != NULL)
18201             add_psymbol_to_list (pdi.name, false,
18202                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18203                                  psymbol_placement::STATIC,
18204                                  0, cu->language, objfile);
18205           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18206           continue;
18207         }
18208
18209       /* The exception for DW_TAG_typedef with has_children above is
18210          a workaround of GCC PR debug/47510.  In the case of this complaint
18211          type_name_or_error will error on such types later.
18212
18213          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18214          it could not find the child DIEs referenced later, this is checked
18215          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18216
18217       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18218         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18219                      "- DIE at %s [in module %s]"),
18220                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18221
18222       /* If we're at the second level, and we're an enumerator, and
18223          our parent has no specification (meaning possibly lives in a
18224          namespace elsewhere), then we can add the partial symbol now
18225          instead of queueing it.  */
18226       if (pdi.tag == DW_TAG_enumerator
18227           && parent_die != NULL
18228           && parent_die->die_parent == NULL
18229           && parent_die->tag == DW_TAG_enumeration_type
18230           && parent_die->has_specification == 0)
18231         {
18232           if (pdi.name == NULL)
18233             complaint (_("malformed enumerator DIE ignored"));
18234           else if (building_psymtab)
18235             add_psymbol_to_list (pdi.name, false,
18236                                  VAR_DOMAIN, LOC_CONST, -1,
18237                                  cu->language == language_cplus
18238                                  ? psymbol_placement::GLOBAL
18239                                  : psymbol_placement::STATIC,
18240                                  0, cu->language, objfile);
18241
18242           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18243           continue;
18244         }
18245
18246       struct partial_die_info *part_die
18247         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18248
18249       /* We'll save this DIE so link it in.  */
18250       part_die->die_parent = parent_die;
18251       part_die->die_sibling = NULL;
18252       part_die->die_child = NULL;
18253
18254       if (last_die && last_die == parent_die)
18255         last_die->die_child = part_die;
18256       else if (last_die)
18257         last_die->die_sibling = part_die;
18258
18259       last_die = part_die;
18260
18261       if (first_die == NULL)
18262         first_die = part_die;
18263
18264       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18265          find interesting need to be in the hash table, because we
18266          also have the parent/sibling/child chains; only those that we
18267          might refer to by offset later during partial symbol reading.
18268
18269          For now this means things that might have be the target of a
18270          DW_AT_specification, DW_AT_abstract_origin, or
18271          DW_AT_extension.  DW_AT_extension will refer only to
18272          namespaces; DW_AT_abstract_origin refers to functions (and
18273          many things under the function DIE, but we do not recurse
18274          into function DIEs during partial symbol reading) and
18275          possibly variables as well; DW_AT_specification refers to
18276          declarations.  Declarations ought to have the DW_AT_declaration
18277          flag.  It happens that GCC forgets to put it in sometimes, but
18278          only for functions, not for types.
18279
18280          Adding more things than necessary to the hash table is harmless
18281          except for the performance cost.  Adding too few will result in
18282          wasted time in find_partial_die, when we reread the compilation
18283          unit with load_all_dies set.  */
18284
18285       if (load_all
18286           || abbrev->tag == DW_TAG_constant
18287           || abbrev->tag == DW_TAG_subprogram
18288           || abbrev->tag == DW_TAG_variable
18289           || abbrev->tag == DW_TAG_namespace
18290           || part_die->is_declaration)
18291         {
18292           void **slot;
18293
18294           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18295                                            to_underlying (part_die->sect_off),
18296                                            INSERT);
18297           *slot = part_die;
18298         }
18299
18300       /* For some DIEs we want to follow their children (if any).  For C
18301          we have no reason to follow the children of structures; for other
18302          languages we have to, so that we can get at method physnames
18303          to infer fully qualified class names, for DW_AT_specification,
18304          and for C++ template arguments.  For C++, we also look one level
18305          inside functions to find template arguments (if the name of the
18306          function does not already contain the template arguments).
18307
18308          For Ada and Fortran, we need to scan the children of subprograms
18309          and lexical blocks as well because these languages allow the
18310          definition of nested entities that could be interesting for the
18311          debugger, such as nested subprograms for instance.  */
18312       if (last_die->has_children
18313           && (load_all
18314               || last_die->tag == DW_TAG_namespace
18315               || last_die->tag == DW_TAG_module
18316               || last_die->tag == DW_TAG_enumeration_type
18317               || (cu->language == language_cplus
18318                   && last_die->tag == DW_TAG_subprogram
18319                   && (last_die->name == NULL
18320                       || strchr (last_die->name, '<') == NULL))
18321               || (cu->language != language_c
18322                   && (last_die->tag == DW_TAG_class_type
18323                       || last_die->tag == DW_TAG_interface_type
18324                       || last_die->tag == DW_TAG_structure_type
18325                       || last_die->tag == DW_TAG_union_type))
18326               || ((cu->language == language_ada
18327                    || cu->language == language_fortran)
18328                   && (last_die->tag == DW_TAG_subprogram
18329                       || last_die->tag == DW_TAG_lexical_block))))
18330         {
18331           nesting_level++;
18332           parent_die = last_die;
18333           continue;
18334         }
18335
18336       /* Otherwise we skip to the next sibling, if any.  */
18337       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18338
18339       /* Back to the top, do it again.  */
18340     }
18341 }
18342
18343 partial_die_info::partial_die_info (sect_offset sect_off_,
18344                                     struct abbrev_info *abbrev)
18345   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18346 {
18347 }
18348
18349 /* Read a minimal amount of information into the minimal die structure.
18350    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18351
18352 const gdb_byte *
18353 partial_die_info::read (const struct die_reader_specs *reader,
18354                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18355 {
18356   struct dwarf2_cu *cu = reader->cu;
18357   struct dwarf2_per_objfile *dwarf2_per_objfile
18358     = cu->per_cu->dwarf2_per_objfile;
18359   unsigned int i;
18360   int has_low_pc_attr = 0;
18361   int has_high_pc_attr = 0;
18362   int high_pc_relative = 0;
18363
18364   std::vector<struct attribute> attr_vec (abbrev.num_attrs);
18365   for (i = 0; i < abbrev.num_attrs; ++i)
18366     {
18367       bool need_reprocess;
18368       info_ptr = read_attribute (reader, &attr_vec[i], &abbrev.attrs[i],
18369                                  info_ptr, &need_reprocess);
18370       /* String and address offsets that need to do the reprocessing have
18371          already been read at this point, so there is no need to wait until
18372          the loop terminates to do the reprocessing.  */
18373       if (need_reprocess)
18374         read_attribute_reprocess (reader, &attr_vec[i]);
18375       attribute &attr = attr_vec[i];
18376       /* Store the data if it is of an attribute we want to keep in a
18377          partial symbol table.  */
18378       switch (attr.name)
18379         {
18380         case DW_AT_name:
18381           switch (tag)
18382             {
18383             case DW_TAG_compile_unit:
18384             case DW_TAG_partial_unit:
18385             case DW_TAG_type_unit:
18386               /* Compilation units have a DW_AT_name that is a filename, not
18387                  a source language identifier.  */
18388             case DW_TAG_enumeration_type:
18389             case DW_TAG_enumerator:
18390               /* These tags always have simple identifiers already; no need
18391                  to canonicalize them.  */
18392               name = DW_STRING (&attr);
18393               break;
18394             default:
18395               {
18396                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18397
18398                 name
18399                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18400                                               &objfile->per_bfd->storage_obstack);
18401               }
18402               break;
18403             }
18404           break;
18405         case DW_AT_linkage_name:
18406         case DW_AT_MIPS_linkage_name:
18407           /* Note that both forms of linkage name might appear.  We
18408              assume they will be the same, and we only store the last
18409              one we see.  */
18410           linkage_name = DW_STRING (&attr);
18411           break;
18412         case DW_AT_low_pc:
18413           has_low_pc_attr = 1;
18414           lowpc = attr.value_as_address ();
18415           break;
18416         case DW_AT_high_pc:
18417           has_high_pc_attr = 1;
18418           highpc = attr.value_as_address ();
18419           if (cu->header.version >= 4 && attr.form_is_constant ())
18420                 high_pc_relative = 1;
18421           break;
18422         case DW_AT_location:
18423           /* Support the .debug_loc offsets.  */
18424           if (attr.form_is_block ())
18425             {
18426                d.locdesc = DW_BLOCK (&attr);
18427             }
18428           else if (attr.form_is_section_offset ())
18429             {
18430               dwarf2_complex_location_expr_complaint ();
18431             }
18432           else
18433             {
18434               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18435                                                      "partial symbol information");
18436             }
18437           break;
18438         case DW_AT_external:
18439           is_external = DW_UNSND (&attr);
18440           break;
18441         case DW_AT_declaration:
18442           is_declaration = DW_UNSND (&attr);
18443           break;
18444         case DW_AT_type:
18445           has_type = 1;
18446           break;
18447         case DW_AT_abstract_origin:
18448         case DW_AT_specification:
18449         case DW_AT_extension:
18450           has_specification = 1;
18451           spec_offset = dwarf2_get_ref_die_offset (&attr);
18452           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18453                                    || cu->per_cu->is_dwz);
18454           break;
18455         case DW_AT_sibling:
18456           /* Ignore absolute siblings, they might point outside of
18457              the current compile unit.  */
18458           if (attr.form == DW_FORM_ref_addr)
18459             complaint (_("ignoring absolute DW_AT_sibling"));
18460           else
18461             {
18462               const gdb_byte *buffer = reader->buffer;
18463               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18464               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18465
18466               if (sibling_ptr < info_ptr)
18467                 complaint (_("DW_AT_sibling points backwards"));
18468               else if (sibling_ptr > reader->buffer_end)
18469                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18470               else
18471                 sibling = sibling_ptr;
18472             }
18473           break;
18474         case DW_AT_byte_size:
18475           has_byte_size = 1;
18476           break;
18477         case DW_AT_const_value:
18478           has_const_value = 1;
18479           break;
18480         case DW_AT_calling_convention:
18481           /* DWARF doesn't provide a way to identify a program's source-level
18482              entry point.  DW_AT_calling_convention attributes are only meant
18483              to describe functions' calling conventions.
18484
18485              However, because it's a necessary piece of information in
18486              Fortran, and before DWARF 4 DW_CC_program was the only
18487              piece of debugging information whose definition refers to
18488              a 'main program' at all, several compilers marked Fortran
18489              main programs with DW_CC_program --- even when those
18490              functions use the standard calling conventions.
18491
18492              Although DWARF now specifies a way to provide this
18493              information, we support this practice for backward
18494              compatibility.  */
18495           if (DW_UNSND (&attr) == DW_CC_program
18496               && cu->language == language_fortran)
18497             main_subprogram = 1;
18498           break;
18499         case DW_AT_inline:
18500           if (DW_UNSND (&attr) == DW_INL_inlined
18501               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18502             may_be_inlined = 1;
18503           break;
18504
18505         case DW_AT_import:
18506           if (tag == DW_TAG_imported_unit)
18507             {
18508               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18509               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18510                                   || cu->per_cu->is_dwz);
18511             }
18512           break;
18513
18514         case DW_AT_main_subprogram:
18515           main_subprogram = DW_UNSND (&attr);
18516           break;
18517
18518         case DW_AT_ranges:
18519           {
18520             /* It would be nice to reuse dwarf2_get_pc_bounds here,
18521                but that requires a full DIE, so instead we just
18522                reimplement it.  */
18523             int need_ranges_base = tag != DW_TAG_compile_unit;
18524             unsigned int ranges_offset = (DW_UNSND (&attr)
18525                                           + (need_ranges_base
18526                                              ? cu->ranges_base
18527                                              : 0));
18528
18529             /* Value of the DW_AT_ranges attribute is the offset in the
18530                .debug_ranges section.  */
18531             if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18532                                     nullptr))
18533               has_pc_info = 1;
18534           }
18535           break;
18536
18537         default:
18538           break;
18539         }
18540     }
18541
18542   /* For Ada, if both the name and the linkage name appear, we prefer
18543      the latter.  This lets "catch exception" work better, regardless
18544      of the order in which the name and linkage name were emitted.
18545      Really, though, this is just a workaround for the fact that gdb
18546      doesn't store both the name and the linkage name.  */
18547   if (cu->language == language_ada && linkage_name != nullptr)
18548     name = linkage_name;
18549
18550   if (high_pc_relative)
18551     highpc += lowpc;
18552
18553   if (has_low_pc_attr && has_high_pc_attr)
18554     {
18555       /* When using the GNU linker, .gnu.linkonce. sections are used to
18556          eliminate duplicate copies of functions and vtables and such.
18557          The linker will arbitrarily choose one and discard the others.
18558          The AT_*_pc values for such functions refer to local labels in
18559          these sections.  If the section from that file was discarded, the
18560          labels are not in the output, so the relocs get a value of 0.
18561          If this is a discarded function, mark the pc bounds as invalid,
18562          so that GDB will ignore it.  */
18563       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18564         {
18565           struct objfile *objfile = dwarf2_per_objfile->objfile;
18566           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18567
18568           complaint (_("DW_AT_low_pc %s is zero "
18569                        "for DIE at %s [in module %s]"),
18570                      paddress (gdbarch, lowpc),
18571                      sect_offset_str (sect_off),
18572                      objfile_name (objfile));
18573         }
18574       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18575       else if (lowpc >= highpc)
18576         {
18577           struct objfile *objfile = dwarf2_per_objfile->objfile;
18578           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18579
18580           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18581                        "for DIE at %s [in module %s]"),
18582                      paddress (gdbarch, lowpc),
18583                      paddress (gdbarch, highpc),
18584                      sect_offset_str (sect_off),
18585                      objfile_name (objfile));
18586         }
18587       else
18588         has_pc_info = 1;
18589     }
18590
18591   return info_ptr;
18592 }
18593
18594 /* Find a cached partial DIE at OFFSET in CU.  */
18595
18596 struct partial_die_info *
18597 dwarf2_cu::find_partial_die (sect_offset sect_off)
18598 {
18599   struct partial_die_info *lookup_die = NULL;
18600   struct partial_die_info part_die (sect_off);
18601
18602   lookup_die = ((struct partial_die_info *)
18603                 htab_find_with_hash (partial_dies, &part_die,
18604                                      to_underlying (sect_off)));
18605
18606   return lookup_die;
18607 }
18608
18609 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18610    except in the case of .debug_types DIEs which do not reference
18611    outside their CU (they do however referencing other types via
18612    DW_FORM_ref_sig8).  */
18613
18614 static const struct cu_partial_die_info
18615 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18616 {
18617   struct dwarf2_per_objfile *dwarf2_per_objfile
18618     = cu->per_cu->dwarf2_per_objfile;
18619   struct objfile *objfile = dwarf2_per_objfile->objfile;
18620   struct dwarf2_per_cu_data *per_cu = NULL;
18621   struct partial_die_info *pd = NULL;
18622
18623   if (offset_in_dwz == cu->per_cu->is_dwz
18624       && offset_in_cu_p (&cu->header, sect_off))
18625     {
18626       pd = cu->find_partial_die (sect_off);
18627       if (pd != NULL)
18628         return { cu, pd };
18629       /* We missed recording what we needed.
18630          Load all dies and try again.  */
18631       per_cu = cu->per_cu;
18632     }
18633   else
18634     {
18635       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18636       if (cu->per_cu->is_debug_types)
18637         {
18638           error (_("Dwarf Error: Type Unit at offset %s contains"
18639                    " external reference to offset %s [in module %s].\n"),
18640                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18641                  bfd_get_filename (objfile->obfd));
18642         }
18643       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18644                                                  dwarf2_per_objfile);
18645
18646       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18647         load_partial_comp_unit (per_cu);
18648
18649       per_cu->cu->last_used = 0;
18650       pd = per_cu->cu->find_partial_die (sect_off);
18651     }
18652
18653   /* If we didn't find it, and not all dies have been loaded,
18654      load them all and try again.  */
18655
18656   if (pd == NULL && per_cu->load_all_dies == 0)
18657     {
18658       per_cu->load_all_dies = 1;
18659
18660       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18661          THIS_CU->cu may already be in use.  So we can't just free it and
18662          replace its DIEs with the ones we read in.  Instead, we leave those
18663          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18664          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18665          set.  */
18666       load_partial_comp_unit (per_cu);
18667
18668       pd = per_cu->cu->find_partial_die (sect_off);
18669     }
18670
18671   if (pd == NULL)
18672     internal_error (__FILE__, __LINE__,
18673                     _("could not find partial DIE %s "
18674                       "in cache [from module %s]\n"),
18675                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18676   return { per_cu->cu, pd };
18677 }
18678
18679 /* See if we can figure out if the class lives in a namespace.  We do
18680    this by looking for a member function; its demangled name will
18681    contain namespace info, if there is any.  */
18682
18683 static void
18684 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18685                                   struct dwarf2_cu *cu)
18686 {
18687   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18688      what template types look like, because the demangler
18689      frequently doesn't give the same name as the debug info.  We
18690      could fix this by only using the demangled name to get the
18691      prefix (but see comment in read_structure_type).  */
18692
18693   struct partial_die_info *real_pdi;
18694   struct partial_die_info *child_pdi;
18695
18696   /* If this DIE (this DIE's specification, if any) has a parent, then
18697      we should not do this.  We'll prepend the parent's fully qualified
18698      name when we create the partial symbol.  */
18699
18700   real_pdi = struct_pdi;
18701   while (real_pdi->has_specification)
18702     {
18703       auto res = find_partial_die (real_pdi->spec_offset,
18704                                    real_pdi->spec_is_dwz, cu);
18705       real_pdi = res.pdi;
18706       cu = res.cu;
18707     }
18708
18709   if (real_pdi->die_parent != NULL)
18710     return;
18711
18712   for (child_pdi = struct_pdi->die_child;
18713        child_pdi != NULL;
18714        child_pdi = child_pdi->die_sibling)
18715     {
18716       if (child_pdi->tag == DW_TAG_subprogram
18717           && child_pdi->linkage_name != NULL)
18718         {
18719           gdb::unique_xmalloc_ptr<char> actual_class_name
18720             (language_class_name_from_physname (cu->language_defn,
18721                                                 child_pdi->linkage_name));
18722           if (actual_class_name != NULL)
18723             {
18724               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18725               struct_pdi->name
18726                 = obstack_strdup (&objfile->per_bfd->storage_obstack,
18727                                   actual_class_name.get ());
18728             }
18729           break;
18730         }
18731     }
18732 }
18733
18734 void
18735 partial_die_info::fixup (struct dwarf2_cu *cu)
18736 {
18737   /* Once we've fixed up a die, there's no point in doing so again.
18738      This also avoids a memory leak if we were to call
18739      guess_partial_die_structure_name multiple times.  */
18740   if (fixup_called)
18741     return;
18742
18743   /* If we found a reference attribute and the DIE has no name, try
18744      to find a name in the referred to DIE.  */
18745
18746   if (name == NULL && has_specification)
18747     {
18748       struct partial_die_info *spec_die;
18749
18750       auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
18751       spec_die = res.pdi;
18752       cu = res.cu;
18753
18754       spec_die->fixup (cu);
18755
18756       if (spec_die->name)
18757         {
18758           name = spec_die->name;
18759
18760           /* Copy DW_AT_external attribute if it is set.  */
18761           if (spec_die->is_external)
18762             is_external = spec_die->is_external;
18763         }
18764     }
18765
18766   /* Set default names for some unnamed DIEs.  */
18767
18768   if (name == NULL && tag == DW_TAG_namespace)
18769     name = CP_ANONYMOUS_NAMESPACE_STR;
18770
18771   /* If there is no parent die to provide a namespace, and there are
18772      children, see if we can determine the namespace from their linkage
18773      name.  */
18774   if (cu->language == language_cplus
18775       && !cu->per_cu->dwarf2_per_objfile->types.empty ()
18776       && die_parent == NULL
18777       && has_children
18778       && (tag == DW_TAG_class_type
18779           || tag == DW_TAG_structure_type
18780           || tag == DW_TAG_union_type))
18781     guess_partial_die_structure_name (this, cu);
18782
18783   /* GCC might emit a nameless struct or union that has a linkage
18784      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18785   if (name == NULL
18786       && (tag == DW_TAG_class_type
18787           || tag == DW_TAG_interface_type
18788           || tag == DW_TAG_structure_type
18789           || tag == DW_TAG_union_type)
18790       && linkage_name != NULL)
18791     {
18792       gdb::unique_xmalloc_ptr<char> demangled
18793         (gdb_demangle (linkage_name, DMGL_TYPES));
18794       if (demangled != nullptr)
18795         {
18796           const char *base;
18797
18798           /* Strip any leading namespaces/classes, keep only the base name.
18799              DW_AT_name for named DIEs does not contain the prefixes.  */
18800           base = strrchr (demangled.get (), ':');
18801           if (base && base > demangled.get () && base[-1] == ':')
18802             base++;
18803           else
18804             base = demangled.get ();
18805
18806           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18807           name = obstack_strdup (&objfile->per_bfd->storage_obstack, base);
18808         }
18809     }
18810
18811   fixup_called = 1;
18812 }
18813
18814 /* Process the attributes that had to be skipped in the first round. These
18815    attributes are the ones that need str_offsets_base or addr_base attributes.
18816    They could not have been processed in the first round, because at the time
18817    the values of str_offsets_base or addr_base may not have been known.  */
18818 void read_attribute_reprocess (const struct die_reader_specs *reader,
18819                                struct attribute *attr)
18820 {
18821   struct dwarf2_cu *cu = reader->cu;
18822   switch (attr->form)
18823     {
18824       case DW_FORM_addrx:
18825       case DW_FORM_GNU_addr_index:
18826         DW_ADDR (attr) = read_addr_index (cu, DW_UNSND (attr));
18827         break;
18828       case DW_FORM_strx:
18829       case DW_FORM_strx1:
18830       case DW_FORM_strx2:
18831       case DW_FORM_strx3:
18832       case DW_FORM_strx4:
18833       case DW_FORM_GNU_str_index:
18834         {
18835           unsigned int str_index = DW_UNSND (attr);
18836           if (reader->dwo_file != NULL)
18837             {
18838               DW_STRING (attr) = read_dwo_str_index (reader, str_index);
18839               DW_STRING_IS_CANONICAL (attr) = 0;
18840             }
18841           else
18842             {
18843               DW_STRING (attr) = read_stub_str_index (cu, str_index);
18844               DW_STRING_IS_CANONICAL (attr) = 0;
18845             }
18846           break;
18847         }
18848       default:
18849         gdb_assert_not_reached (_("Unexpected DWARF form."));
18850     }
18851 }
18852
18853 /* Read an attribute value described by an attribute form.  */
18854
18855 static const gdb_byte *
18856 read_attribute_value (const struct die_reader_specs *reader,
18857                       struct attribute *attr, unsigned form,
18858                       LONGEST implicit_const, const gdb_byte *info_ptr,
18859                       bool *need_reprocess)
18860 {
18861   struct dwarf2_cu *cu = reader->cu;
18862   struct dwarf2_per_objfile *dwarf2_per_objfile
18863     = cu->per_cu->dwarf2_per_objfile;
18864   struct objfile *objfile = dwarf2_per_objfile->objfile;
18865   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18866   bfd *abfd = reader->abfd;
18867   struct comp_unit_head *cu_header = &cu->header;
18868   unsigned int bytes_read;
18869   struct dwarf_block *blk;
18870   *need_reprocess = false;
18871
18872   attr->form = (enum dwarf_form) form;
18873   switch (form)
18874     {
18875     case DW_FORM_ref_addr:
18876       if (cu->header.version == 2)
18877         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18878       else
18879         DW_UNSND (attr) = read_offset (abfd, info_ptr,
18880                                        &cu->header, &bytes_read);
18881       info_ptr += bytes_read;
18882       break;
18883     case DW_FORM_GNU_ref_alt:
18884       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18885       info_ptr += bytes_read;
18886       break;
18887     case DW_FORM_addr:
18888       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18889       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
18890       info_ptr += bytes_read;
18891       break;
18892     case DW_FORM_block2:
18893       blk = dwarf_alloc_block (cu);
18894       blk->size = read_2_bytes (abfd, info_ptr);
18895       info_ptr += 2;
18896       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18897       info_ptr += blk->size;
18898       DW_BLOCK (attr) = blk;
18899       break;
18900     case DW_FORM_block4:
18901       blk = dwarf_alloc_block (cu);
18902       blk->size = read_4_bytes (abfd, info_ptr);
18903       info_ptr += 4;
18904       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18905       info_ptr += blk->size;
18906       DW_BLOCK (attr) = blk;
18907       break;
18908     case DW_FORM_data2:
18909       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
18910       info_ptr += 2;
18911       break;
18912     case DW_FORM_data4:
18913       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
18914       info_ptr += 4;
18915       break;
18916     case DW_FORM_data8:
18917       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
18918       info_ptr += 8;
18919       break;
18920     case DW_FORM_data16:
18921       blk = dwarf_alloc_block (cu);
18922       blk->size = 16;
18923       blk->data = read_n_bytes (abfd, info_ptr, 16);
18924       info_ptr += 16;
18925       DW_BLOCK (attr) = blk;
18926       break;
18927     case DW_FORM_sec_offset:
18928       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18929       info_ptr += bytes_read;
18930       break;
18931     case DW_FORM_string:
18932       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
18933       DW_STRING_IS_CANONICAL (attr) = 0;
18934       info_ptr += bytes_read;
18935       break;
18936     case DW_FORM_strp:
18937       if (!cu->per_cu->is_dwz)
18938         {
18939           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
18940                                                    abfd, info_ptr, cu_header,
18941                                                    &bytes_read);
18942           DW_STRING_IS_CANONICAL (attr) = 0;
18943           info_ptr += bytes_read;
18944           break;
18945         }
18946       /* FALLTHROUGH */
18947     case DW_FORM_line_strp:
18948       if (!cu->per_cu->is_dwz)
18949         {
18950           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
18951                                                         abfd, info_ptr,
18952                                                         cu_header, &bytes_read);
18953           DW_STRING_IS_CANONICAL (attr) = 0;
18954           info_ptr += bytes_read;
18955           break;
18956         }
18957       /* FALLTHROUGH */
18958     case DW_FORM_GNU_strp_alt:
18959       {
18960         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
18961         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
18962                                           &bytes_read);
18963
18964         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
18965                                                           dwz, str_offset);
18966         DW_STRING_IS_CANONICAL (attr) = 0;
18967         info_ptr += bytes_read;
18968       }
18969       break;
18970     case DW_FORM_exprloc:
18971     case DW_FORM_block:
18972       blk = dwarf_alloc_block (cu);
18973       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18974       info_ptr += bytes_read;
18975       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18976       info_ptr += blk->size;
18977       DW_BLOCK (attr) = blk;
18978       break;
18979     case DW_FORM_block1:
18980       blk = dwarf_alloc_block (cu);
18981       blk->size = read_1_byte (abfd, info_ptr);
18982       info_ptr += 1;
18983       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18984       info_ptr += blk->size;
18985       DW_BLOCK (attr) = blk;
18986       break;
18987     case DW_FORM_data1:
18988       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
18989       info_ptr += 1;
18990       break;
18991     case DW_FORM_flag:
18992       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
18993       info_ptr += 1;
18994       break;
18995     case DW_FORM_flag_present:
18996       DW_UNSND (attr) = 1;
18997       break;
18998     case DW_FORM_sdata:
18999       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19000       info_ptr += bytes_read;
19001       break;
19002     case DW_FORM_udata:
19003     case DW_FORM_rnglistx:
19004       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19005       info_ptr += bytes_read;
19006       break;
19007     case DW_FORM_ref1:
19008       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19009                          + read_1_byte (abfd, info_ptr));
19010       info_ptr += 1;
19011       break;
19012     case DW_FORM_ref2:
19013       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19014                          + read_2_bytes (abfd, info_ptr));
19015       info_ptr += 2;
19016       break;
19017     case DW_FORM_ref4:
19018       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19019                          + read_4_bytes (abfd, info_ptr));
19020       info_ptr += 4;
19021       break;
19022     case DW_FORM_ref8:
19023       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19024                          + read_8_bytes (abfd, info_ptr));
19025       info_ptr += 8;
19026       break;
19027     case DW_FORM_ref_sig8:
19028       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19029       info_ptr += 8;
19030       break;
19031     case DW_FORM_ref_udata:
19032       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19033                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19034       info_ptr += bytes_read;
19035       break;
19036     case DW_FORM_indirect:
19037       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19038       info_ptr += bytes_read;
19039       if (form == DW_FORM_implicit_const)
19040         {
19041           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19042           info_ptr += bytes_read;
19043         }
19044       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19045                                        info_ptr, need_reprocess);
19046       break;
19047     case DW_FORM_implicit_const:
19048       DW_SND (attr) = implicit_const;
19049       break;
19050     case DW_FORM_addrx:
19051     case DW_FORM_GNU_addr_index:
19052       *need_reprocess = true;
19053       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19054       info_ptr += bytes_read;
19055       break;
19056     case DW_FORM_strx:
19057     case DW_FORM_strx1:
19058     case DW_FORM_strx2:
19059     case DW_FORM_strx3:
19060     case DW_FORM_strx4:
19061     case DW_FORM_GNU_str_index:
19062       {
19063         ULONGEST str_index;
19064         if (form == DW_FORM_strx1)
19065           {
19066             str_index = read_1_byte (abfd, info_ptr);
19067             info_ptr += 1;
19068           }
19069         else if (form == DW_FORM_strx2)
19070           {
19071             str_index = read_2_bytes (abfd, info_ptr);
19072             info_ptr += 2;
19073           }
19074         else if (form == DW_FORM_strx3)
19075           {
19076             str_index = read_3_bytes (abfd, info_ptr);
19077             info_ptr += 3;
19078           }
19079         else if (form == DW_FORM_strx4)
19080           {
19081             str_index = read_4_bytes (abfd, info_ptr);
19082             info_ptr += 4;
19083           }
19084         else
19085           {
19086             str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19087             info_ptr += bytes_read;
19088           }
19089         *need_reprocess = true;
19090          DW_UNSND (attr) = str_index;
19091         }
19092       break;
19093     default:
19094       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19095              dwarf_form_name (form),
19096              bfd_get_filename (abfd));
19097     }
19098
19099   /* Super hack.  */
19100   if (cu->per_cu->is_dwz && attr->form_is_ref ())
19101     attr->form = DW_FORM_GNU_ref_alt;
19102
19103   /* We have seen instances where the compiler tried to emit a byte
19104      size attribute of -1 which ended up being encoded as an unsigned
19105      0xffffffff.  Although 0xffffffff is technically a valid size value,
19106      an object of this size seems pretty unlikely so we can relatively
19107      safely treat these cases as if the size attribute was invalid and
19108      treat them as zero by default.  */
19109   if (attr->name == DW_AT_byte_size
19110       && form == DW_FORM_data4
19111       && DW_UNSND (attr) >= 0xffffffff)
19112     {
19113       complaint
19114         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19115          hex_string (DW_UNSND (attr)));
19116       DW_UNSND (attr) = 0;
19117     }
19118
19119   return info_ptr;
19120 }
19121
19122 /* Read an attribute described by an abbreviated attribute.  */
19123
19124 static const gdb_byte *
19125 read_attribute (const struct die_reader_specs *reader,
19126                 struct attribute *attr, struct attr_abbrev *abbrev,
19127                 const gdb_byte *info_ptr, bool *need_reprocess)
19128 {
19129   attr->name = abbrev->name;
19130   return read_attribute_value (reader, attr, abbrev->form,
19131                                abbrev->implicit_const, info_ptr,
19132                                need_reprocess);
19133 }
19134
19135 static CORE_ADDR
19136 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19137               unsigned int *bytes_read)
19138 {
19139   struct comp_unit_head *cu_header = &cu->header;
19140   CORE_ADDR retval = 0;
19141
19142   if (cu_header->signed_addr_p)
19143     {
19144       switch (cu_header->addr_size)
19145         {
19146         case 2:
19147           retval = bfd_get_signed_16 (abfd, buf);
19148           break;
19149         case 4:
19150           retval = bfd_get_signed_32 (abfd, buf);
19151           break;
19152         case 8:
19153           retval = bfd_get_signed_64 (abfd, buf);
19154           break;
19155         default:
19156           internal_error (__FILE__, __LINE__,
19157                           _("read_address: bad switch, signed [in module %s]"),
19158                           bfd_get_filename (abfd));
19159         }
19160     }
19161   else
19162     {
19163       switch (cu_header->addr_size)
19164         {
19165         case 2:
19166           retval = bfd_get_16 (abfd, buf);
19167           break;
19168         case 4:
19169           retval = bfd_get_32 (abfd, buf);
19170           break;
19171         case 8:
19172           retval = bfd_get_64 (abfd, buf);
19173           break;
19174         default:
19175           internal_error (__FILE__, __LINE__,
19176                           _("read_address: bad switch, "
19177                             "unsigned [in module %s]"),
19178                           bfd_get_filename (abfd));
19179         }
19180     }
19181
19182   *bytes_read = cu_header->addr_size;
19183   return retval;
19184 }
19185
19186 /* Read the initial length from a section.  The (draft) DWARF 3
19187    specification allows the initial length to take up either 4 bytes
19188    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19189    bytes describe the length and all offsets will be 8 bytes in length
19190    instead of 4.
19191
19192    An older, non-standard 64-bit format is also handled by this
19193    function.  The older format in question stores the initial length
19194    as an 8-byte quantity without an escape value.  Lengths greater
19195    than 2^32 aren't very common which means that the initial 4 bytes
19196    is almost always zero.  Since a length value of zero doesn't make
19197    sense for the 32-bit format, this initial zero can be considered to
19198    be an escape value which indicates the presence of the older 64-bit
19199    format.  As written, the code can't detect (old format) lengths
19200    greater than 4GB.  If it becomes necessary to handle lengths
19201    somewhat larger than 4GB, we could allow other small values (such
19202    as the non-sensical values of 1, 2, and 3) to also be used as
19203    escape values indicating the presence of the old format.
19204
19205    The value returned via bytes_read should be used to increment the
19206    relevant pointer after calling read_initial_length().
19207
19208    [ Note:  read_initial_length() and read_offset() are based on the
19209      document entitled "DWARF Debugging Information Format", revision
19210      3, draft 8, dated November 19, 2001.  This document was obtained
19211      from:
19212
19213         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19214
19215      This document is only a draft and is subject to change.  (So beware.)
19216
19217      Details regarding the older, non-standard 64-bit format were
19218      determined empirically by examining 64-bit ELF files produced by
19219      the SGI toolchain on an IRIX 6.5 machine.
19220
19221      - Kevin, July 16, 2002
19222    ] */
19223
19224 static LONGEST
19225 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19226 {
19227   LONGEST length = bfd_get_32 (abfd, buf);
19228
19229   if (length == 0xffffffff)
19230     {
19231       length = bfd_get_64 (abfd, buf + 4);
19232       *bytes_read = 12;
19233     }
19234   else if (length == 0)
19235     {
19236       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19237       length = bfd_get_64 (abfd, buf);
19238       *bytes_read = 8;
19239     }
19240   else
19241     {
19242       *bytes_read = 4;
19243     }
19244
19245   return length;
19246 }
19247
19248 /* Cover function for read_initial_length.
19249    Returns the length of the object at BUF, and stores the size of the
19250    initial length in *BYTES_READ and stores the size that offsets will be in
19251    *OFFSET_SIZE.
19252    If the initial length size is not equivalent to that specified in
19253    CU_HEADER then issue a complaint.
19254    This is useful when reading non-comp-unit headers.  */
19255
19256 static LONGEST
19257 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19258                                         const struct comp_unit_head *cu_header,
19259                                         unsigned int *bytes_read,
19260                                         unsigned int *offset_size)
19261 {
19262   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19263
19264   gdb_assert (cu_header->initial_length_size == 4
19265               || cu_header->initial_length_size == 8
19266               || cu_header->initial_length_size == 12);
19267
19268   if (cu_header->initial_length_size != *bytes_read)
19269     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19270
19271   *offset_size = (*bytes_read == 4) ? 4 : 8;
19272   return length;
19273 }
19274
19275 /* Read an offset from the data stream.  The size of the offset is
19276    given by cu_header->offset_size.  */
19277
19278 static LONGEST
19279 read_offset (bfd *abfd, const gdb_byte *buf,
19280              const struct comp_unit_head *cu_header,
19281              unsigned int *bytes_read)
19282 {
19283   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19284
19285   *bytes_read = cu_header->offset_size;
19286   return offset;
19287 }
19288
19289 /* Read an offset from the data stream.  */
19290
19291 static LONGEST
19292 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19293 {
19294   LONGEST retval = 0;
19295
19296   switch (offset_size)
19297     {
19298     case 4:
19299       retval = bfd_get_32 (abfd, buf);
19300       break;
19301     case 8:
19302       retval = bfd_get_64 (abfd, buf);
19303       break;
19304     default:
19305       internal_error (__FILE__, __LINE__,
19306                       _("read_offset_1: bad switch [in module %s]"),
19307                       bfd_get_filename (abfd));
19308     }
19309
19310   return retval;
19311 }
19312
19313 static const gdb_byte *
19314 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19315 {
19316   /* If the size of a host char is 8 bits, we can return a pointer
19317      to the buffer, otherwise we have to copy the data to a buffer
19318      allocated on the temporary obstack.  */
19319   gdb_assert (HOST_CHAR_BIT == 8);
19320   return buf;
19321 }
19322
19323 static const char *
19324 read_direct_string (bfd *abfd, const gdb_byte *buf,
19325                     unsigned int *bytes_read_ptr)
19326 {
19327   /* If the size of a host char is 8 bits, we can return a pointer
19328      to the string, otherwise we have to copy the string to a buffer
19329      allocated on the temporary obstack.  */
19330   gdb_assert (HOST_CHAR_BIT == 8);
19331   if (*buf == '\0')
19332     {
19333       *bytes_read_ptr = 1;
19334       return NULL;
19335     }
19336   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19337   return (const char *) buf;
19338 }
19339
19340 /* Return pointer to string at section SECT offset STR_OFFSET with error
19341    reporting strings FORM_NAME and SECT_NAME.  */
19342
19343 static const char *
19344 read_indirect_string_at_offset_from (struct objfile *objfile,
19345                                      bfd *abfd, LONGEST str_offset,
19346                                      struct dwarf2_section_info *sect,
19347                                      const char *form_name,
19348                                      const char *sect_name)
19349 {
19350   sect->read (objfile);
19351   if (sect->buffer == NULL)
19352     error (_("%s used without %s section [in module %s]"),
19353            form_name, sect_name, bfd_get_filename (abfd));
19354   if (str_offset >= sect->size)
19355     error (_("%s pointing outside of %s section [in module %s]"),
19356            form_name, sect_name, bfd_get_filename (abfd));
19357   gdb_assert (HOST_CHAR_BIT == 8);
19358   if (sect->buffer[str_offset] == '\0')
19359     return NULL;
19360   return (const char *) (sect->buffer + str_offset);
19361 }
19362
19363 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19364
19365 static const char *
19366 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19367                                 bfd *abfd, LONGEST str_offset)
19368 {
19369   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19370                                               abfd, str_offset,
19371                                               &dwarf2_per_objfile->str,
19372                                               "DW_FORM_strp", ".debug_str");
19373 }
19374
19375 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19376
19377 static const char *
19378 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19379                                      bfd *abfd, LONGEST str_offset)
19380 {
19381   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19382                                               abfd, str_offset,
19383                                               &dwarf2_per_objfile->line_str,
19384                                               "DW_FORM_line_strp",
19385                                               ".debug_line_str");
19386 }
19387
19388 /* Read a string at offset STR_OFFSET in the .debug_str section from
19389    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19390    the string consists of a single NUL byte, return NULL; otherwise
19391    return a pointer to the string.  */
19392
19393 static const char *
19394 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19395                                LONGEST str_offset)
19396 {
19397   dwz->str.read (objfile);
19398
19399   if (dwz->str.buffer == NULL)
19400     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19401              "section [in module %s]"),
19402            bfd_get_filename (dwz->dwz_bfd.get ()));
19403   if (str_offset >= dwz->str.size)
19404     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19405              ".debug_str section [in module %s]"),
19406            bfd_get_filename (dwz->dwz_bfd.get ()));
19407   gdb_assert (HOST_CHAR_BIT == 8);
19408   if (dwz->str.buffer[str_offset] == '\0')
19409     return NULL;
19410   return (const char *) (dwz->str.buffer + str_offset);
19411 }
19412
19413 /* Return pointer to string at .debug_str offset as read from BUF.
19414    BUF is assumed to be in a compilation unit described by CU_HEADER.
19415    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19416
19417 static const char *
19418 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19419                       const gdb_byte *buf,
19420                       const struct comp_unit_head *cu_header,
19421                       unsigned int *bytes_read_ptr)
19422 {
19423   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19424
19425   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19426 }
19427
19428 /* Return pointer to string at .debug_line_str offset as read from BUF.
19429    BUF is assumed to be in a compilation unit described by CU_HEADER.
19430    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19431
19432 static const char *
19433 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19434                            bfd *abfd, const gdb_byte *buf,
19435                            const struct comp_unit_head *cu_header,
19436                            unsigned int *bytes_read_ptr)
19437 {
19438   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19439
19440   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19441                                               str_offset);
19442 }
19443
19444 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19445    ADDR_BASE is the DW_AT_addr_base (DW_AT_GNU_addr_base) attribute or zero.
19446    ADDR_SIZE is the size of addresses from the CU header.  */
19447
19448 static CORE_ADDR
19449 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19450                    unsigned int addr_index, gdb::optional<ULONGEST> addr_base,
19451                    int addr_size)
19452 {
19453   struct objfile *objfile = dwarf2_per_objfile->objfile;
19454   bfd *abfd = objfile->obfd;
19455   const gdb_byte *info_ptr;
19456   ULONGEST addr_base_or_zero = addr_base.has_value () ? *addr_base : 0;
19457
19458   dwarf2_per_objfile->addr.read (objfile);
19459   if (dwarf2_per_objfile->addr.buffer == NULL)
19460     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19461            objfile_name (objfile));
19462   if (addr_base_or_zero + addr_index * addr_size
19463       >= dwarf2_per_objfile->addr.size)
19464     error (_("DW_FORM_addr_index pointing outside of "
19465              ".debug_addr section [in module %s]"),
19466            objfile_name (objfile));
19467   info_ptr = (dwarf2_per_objfile->addr.buffer
19468               + addr_base_or_zero + addr_index * addr_size);
19469   if (addr_size == 4)
19470     return bfd_get_32 (abfd, info_ptr);
19471   else
19472     return bfd_get_64 (abfd, info_ptr);
19473 }
19474
19475 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19476
19477 static CORE_ADDR
19478 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19479 {
19480   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19481                             cu->addr_base, cu->header.addr_size);
19482 }
19483
19484 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19485
19486 static CORE_ADDR
19487 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19488                              unsigned int *bytes_read)
19489 {
19490   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19491   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19492
19493   return read_addr_index (cu, addr_index);
19494 }
19495
19496 /* Given an index in .debug_addr, fetch the value.
19497    NOTE: This can be called during dwarf expression evaluation,
19498    long after the debug information has been read, and thus per_cu->cu
19499    may no longer exist.  */
19500
19501 CORE_ADDR
19502 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19503                         unsigned int addr_index)
19504 {
19505   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19506   struct dwarf2_cu *cu = per_cu->cu;
19507   gdb::optional<ULONGEST> addr_base;
19508   int addr_size;
19509
19510   /* We need addr_base and addr_size.
19511      If we don't have PER_CU->cu, we have to get it.
19512      Nasty, but the alternative is storing the needed info in PER_CU,
19513      which at this point doesn't seem justified: it's not clear how frequently
19514      it would get used and it would increase the size of every PER_CU.
19515      Entry points like dwarf2_per_cu_addr_size do a similar thing
19516      so we're not in uncharted territory here.
19517      Alas we need to be a bit more complicated as addr_base is contained
19518      in the DIE.
19519
19520      We don't need to read the entire CU(/TU).
19521      We just need the header and top level die.
19522
19523      IWBN to use the aging mechanism to let us lazily later discard the CU.
19524      For now we skip this optimization.  */
19525
19526   if (cu != NULL)
19527     {
19528       addr_base = cu->addr_base;
19529       addr_size = cu->header.addr_size;
19530     }
19531   else
19532     {
19533       cutu_reader reader (per_cu, NULL, 0, 0, false);
19534       addr_base = reader.cu->addr_base;
19535       addr_size = reader.cu->header.addr_size;
19536     }
19537
19538   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19539                             addr_size);
19540 }
19541
19542 /* Given a DW_FORM_GNU_str_index value STR_INDEX, fetch the string.
19543    STR_SECTION, STR_OFFSETS_SECTION can be from a Fission stub or a
19544    DWO file.  */
19545
19546 static const char *
19547 read_str_index (struct dwarf2_cu *cu,
19548                 struct dwarf2_section_info *str_section,
19549                 struct dwarf2_section_info *str_offsets_section,
19550                 ULONGEST str_offsets_base, ULONGEST str_index)
19551 {
19552   struct dwarf2_per_objfile *dwarf2_per_objfile
19553     = cu->per_cu->dwarf2_per_objfile;
19554   struct objfile *objfile = dwarf2_per_objfile->objfile;
19555   const char *objf_name = objfile_name (objfile);
19556   bfd *abfd = objfile->obfd;
19557   const gdb_byte *info_ptr;
19558   ULONGEST str_offset;
19559   static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
19560
19561   str_section->read (objfile);
19562   str_offsets_section->read (objfile);
19563   if (str_section->buffer == NULL)
19564     error (_("%s used without %s section"
19565              " in CU at offset %s [in module %s]"),
19566            form_name, str_section->get_name (),
19567            sect_offset_str (cu->header.sect_off), objf_name);
19568   if (str_offsets_section->buffer == NULL)
19569     error (_("%s used without %s section"
19570              " in CU at offset %s [in module %s]"),
19571            form_name, str_section->get_name (),
19572            sect_offset_str (cu->header.sect_off), objf_name);
19573   info_ptr = (str_offsets_section->buffer
19574               + str_offsets_base
19575               + str_index * cu->header.offset_size);
19576   if (cu->header.offset_size == 4)
19577     str_offset = bfd_get_32 (abfd, info_ptr);
19578   else
19579     str_offset = bfd_get_64 (abfd, info_ptr);
19580   if (str_offset >= str_section->size)
19581     error (_("Offset from %s pointing outside of"
19582              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19583            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19584   return (const char *) (str_section->buffer + str_offset);
19585 }
19586
19587 /* Given a DW_FORM_GNU_str_index from a DWO file, fetch the string.  */
19588
19589 static const char *
19590 read_dwo_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19591 {
19592   ULONGEST str_offsets_base = reader->cu->header.version >= 5
19593                               ? reader->cu->header.addr_size : 0;
19594   return read_str_index (reader->cu,
19595                          &reader->dwo_file->sections.str,
19596                          &reader->dwo_file->sections.str_offsets,
19597                          str_offsets_base, str_index);
19598 }
19599
19600 /* Given a DW_FORM_GNU_str_index from a Fission stub, fetch the string.  */
19601
19602 static const char *
19603 read_stub_str_index (struct dwarf2_cu *cu, ULONGEST str_index)
19604 {
19605   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19606   const char *objf_name = objfile_name (objfile);
19607   static const char form_name[] = "DW_FORM_GNU_str_index";
19608   static const char str_offsets_attr_name[] = "DW_AT_str_offsets";
19609
19610   if (!cu->str_offsets_base.has_value ())
19611     error (_("%s used in Fission stub without %s"
19612              " in CU at offset 0x%lx [in module %s]"),
19613            form_name, str_offsets_attr_name,
19614            (long) cu->header.offset_size, objf_name);
19615
19616   return read_str_index (cu,
19617                          &cu->per_cu->dwarf2_per_objfile->str,
19618                          &cu->per_cu->dwarf2_per_objfile->str_offsets,
19619                          *cu->str_offsets_base, str_index);
19620 }
19621
19622 /* Return the length of an LEB128 number in BUF.  */
19623
19624 static int
19625 leb128_size (const gdb_byte *buf)
19626 {
19627   const gdb_byte *begin = buf;
19628   gdb_byte byte;
19629
19630   while (1)
19631     {
19632       byte = *buf++;
19633       if ((byte & 128) == 0)
19634         return buf - begin;
19635     }
19636 }
19637
19638 static void
19639 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19640 {
19641   switch (lang)
19642     {
19643     case DW_LANG_C89:
19644     case DW_LANG_C99:
19645     case DW_LANG_C11:
19646     case DW_LANG_C:
19647     case DW_LANG_UPC:
19648       cu->language = language_c;
19649       break;
19650     case DW_LANG_Java:
19651     case DW_LANG_C_plus_plus:
19652     case DW_LANG_C_plus_plus_11:
19653     case DW_LANG_C_plus_plus_14:
19654       cu->language = language_cplus;
19655       break;
19656     case DW_LANG_D:
19657       cu->language = language_d;
19658       break;
19659     case DW_LANG_Fortran77:
19660     case DW_LANG_Fortran90:
19661     case DW_LANG_Fortran95:
19662     case DW_LANG_Fortran03:
19663     case DW_LANG_Fortran08:
19664       cu->language = language_fortran;
19665       break;
19666     case DW_LANG_Go:
19667       cu->language = language_go;
19668       break;
19669     case DW_LANG_Mips_Assembler:
19670       cu->language = language_asm;
19671       break;
19672     case DW_LANG_Ada83:
19673     case DW_LANG_Ada95:
19674       cu->language = language_ada;
19675       break;
19676     case DW_LANG_Modula2:
19677       cu->language = language_m2;
19678       break;
19679     case DW_LANG_Pascal83:
19680       cu->language = language_pascal;
19681       break;
19682     case DW_LANG_ObjC:
19683       cu->language = language_objc;
19684       break;
19685     case DW_LANG_Rust:
19686     case DW_LANG_Rust_old:
19687       cu->language = language_rust;
19688       break;
19689     case DW_LANG_Cobol74:
19690     case DW_LANG_Cobol85:
19691     default:
19692       cu->language = language_minimal;
19693       break;
19694     }
19695   cu->language_defn = language_def (cu->language);
19696 }
19697
19698 /* Return the named attribute or NULL if not there.  */
19699
19700 static struct attribute *
19701 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19702 {
19703   for (;;)
19704     {
19705       unsigned int i;
19706       struct attribute *spec = NULL;
19707
19708       for (i = 0; i < die->num_attrs; ++i)
19709         {
19710           if (die->attrs[i].name == name)
19711             return &die->attrs[i];
19712           if (die->attrs[i].name == DW_AT_specification
19713               || die->attrs[i].name == DW_AT_abstract_origin)
19714             spec = &die->attrs[i];
19715         }
19716
19717       if (!spec)
19718         break;
19719
19720       die = follow_die_ref (die, spec, &cu);
19721     }
19722
19723   return NULL;
19724 }
19725
19726 /* Return the named attribute or NULL if not there,
19727    but do not follow DW_AT_specification, etc.
19728    This is for use in contexts where we're reading .debug_types dies.
19729    Following DW_AT_specification, DW_AT_abstract_origin will take us
19730    back up the chain, and we want to go down.  */
19731
19732 static struct attribute *
19733 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19734 {
19735   unsigned int i;
19736
19737   for (i = 0; i < die->num_attrs; ++i)
19738     if (die->attrs[i].name == name)
19739       return &die->attrs[i];
19740
19741   return NULL;
19742 }
19743
19744 /* Return the string associated with a string-typed attribute, or NULL if it
19745    is either not found or is of an incorrect type.  */
19746
19747 static const char *
19748 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19749 {
19750   struct attribute *attr;
19751   const char *str = NULL;
19752
19753   attr = dwarf2_attr (die, name, cu);
19754
19755   if (attr != NULL)
19756     {
19757       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19758           || attr->form == DW_FORM_string
19759           || attr->form == DW_FORM_strx
19760           || attr->form == DW_FORM_strx1
19761           || attr->form == DW_FORM_strx2
19762           || attr->form == DW_FORM_strx3
19763           || attr->form == DW_FORM_strx4
19764           || attr->form == DW_FORM_GNU_str_index
19765           || attr->form == DW_FORM_GNU_strp_alt)
19766         str = DW_STRING (attr);
19767       else
19768         complaint (_("string type expected for attribute %s for "
19769                      "DIE at %s in module %s"),
19770                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19771                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19772     }
19773
19774   return str;
19775 }
19776
19777 /* Return the dwo name or NULL if not present. If present, it is in either
19778    DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.  */
19779 static const char *
19780 dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu)
19781 {
19782   const char *dwo_name = dwarf2_string_attr (die, DW_AT_GNU_dwo_name, cu);
19783   if (dwo_name == nullptr)
19784     dwo_name = dwarf2_string_attr (die, DW_AT_dwo_name, cu);
19785   return dwo_name;
19786 }
19787
19788 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19789    and holds a non-zero value.  This function should only be used for
19790    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19791
19792 static int
19793 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19794 {
19795   struct attribute *attr = dwarf2_attr (die, name, cu);
19796
19797   return (attr && DW_UNSND (attr));
19798 }
19799
19800 static int
19801 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19802 {
19803   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19804      which value is non-zero.  However, we have to be careful with
19805      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19806      (via dwarf2_flag_true_p) follows this attribute.  So we may
19807      end up accidently finding a declaration attribute that belongs
19808      to a different DIE referenced by the specification attribute,
19809      even though the given DIE does not have a declaration attribute.  */
19810   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
19811           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
19812 }
19813
19814 /* Return the die giving the specification for DIE, if there is
19815    one.  *SPEC_CU is the CU containing DIE on input, and the CU
19816    containing the return value on output.  If there is no
19817    specification, but there is an abstract origin, that is
19818    returned.  */
19819
19820 static struct die_info *
19821 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
19822 {
19823   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
19824                                              *spec_cu);
19825
19826   if (spec_attr == NULL)
19827     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
19828
19829   if (spec_attr == NULL)
19830     return NULL;
19831   else
19832     return follow_die_ref (die, spec_attr, spec_cu);
19833 }
19834
19835 /* Stub for free_line_header to match void * callback types.  */
19836
19837 static void
19838 free_line_header_voidp (void *arg)
19839 {
19840   struct line_header *lh = (struct line_header *) arg;
19841
19842   delete lh;
19843 }
19844
19845 void
19846 line_header::add_include_dir (const char *include_dir)
19847 {
19848   if (dwarf_line_debug >= 2)
19849     {
19850       size_t new_size;
19851       if (version >= 5)
19852         new_size = m_include_dirs.size ();
19853       else
19854         new_size = m_include_dirs.size () + 1;
19855       fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
19856                           new_size, include_dir);
19857     }
19858   m_include_dirs.push_back (include_dir);
19859 }
19860
19861 void
19862 line_header::add_file_name (const char *name,
19863                             dir_index d_index,
19864                             unsigned int mod_time,
19865                             unsigned int length)
19866 {
19867   if (dwarf_line_debug >= 2)
19868     {
19869       size_t new_size;
19870       if (version >= 5)
19871         new_size = file_names_size ();
19872       else
19873         new_size = file_names_size () + 1;
19874       fprintf_unfiltered (gdb_stdlog, "Adding file %zu: %s\n",
19875                           new_size, name);
19876     }
19877   m_file_names.emplace_back (name, d_index, mod_time, length);
19878 }
19879
19880 /* A convenience function to find the proper .debug_line section for a CU.  */
19881
19882 static struct dwarf2_section_info *
19883 get_debug_line_section (struct dwarf2_cu *cu)
19884 {
19885   struct dwarf2_section_info *section;
19886   struct dwarf2_per_objfile *dwarf2_per_objfile
19887     = cu->per_cu->dwarf2_per_objfile;
19888
19889   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
19890      DWO file.  */
19891   if (cu->dwo_unit && cu->per_cu->is_debug_types)
19892     section = &cu->dwo_unit->dwo_file->sections.line;
19893   else if (cu->per_cu->is_dwz)
19894     {
19895       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19896
19897       section = &dwz->line;
19898     }
19899   else
19900     section = &dwarf2_per_objfile->line;
19901
19902   return section;
19903 }
19904
19905 /* Read directory or file name entry format, starting with byte of
19906    format count entries, ULEB128 pairs of entry formats, ULEB128 of
19907    entries count and the entries themselves in the described entry
19908    format.  */
19909
19910 static void
19911 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
19912                         bfd *abfd, const gdb_byte **bufp,
19913                         struct line_header *lh,
19914                         const struct comp_unit_head *cu_header,
19915                         void (*callback) (struct line_header *lh,
19916                                           const char *name,
19917                                           dir_index d_index,
19918                                           unsigned int mod_time,
19919                                           unsigned int length))
19920 {
19921   gdb_byte format_count, formati;
19922   ULONGEST data_count, datai;
19923   const gdb_byte *buf = *bufp;
19924   const gdb_byte *format_header_data;
19925   unsigned int bytes_read;
19926
19927   format_count = read_1_byte (abfd, buf);
19928   buf += 1;
19929   format_header_data = buf;
19930   for (formati = 0; formati < format_count; formati++)
19931     {
19932       read_unsigned_leb128 (abfd, buf, &bytes_read);
19933       buf += bytes_read;
19934       read_unsigned_leb128 (abfd, buf, &bytes_read);
19935       buf += bytes_read;
19936     }
19937
19938   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
19939   buf += bytes_read;
19940   for (datai = 0; datai < data_count; datai++)
19941     {
19942       const gdb_byte *format = format_header_data;
19943       struct file_entry fe;
19944
19945       for (formati = 0; formati < format_count; formati++)
19946         {
19947           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
19948           format += bytes_read;
19949
19950           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
19951           format += bytes_read;
19952
19953           gdb::optional<const char *> string;
19954           gdb::optional<unsigned int> uint;
19955
19956           switch (form)
19957             {
19958             case DW_FORM_string:
19959               string.emplace (read_direct_string (abfd, buf, &bytes_read));
19960               buf += bytes_read;
19961               break;
19962
19963             case DW_FORM_line_strp:
19964               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
19965                                                          abfd, buf,
19966                                                          cu_header,
19967                                                          &bytes_read));
19968               buf += bytes_read;
19969               break;
19970
19971             case DW_FORM_data1:
19972               uint.emplace (read_1_byte (abfd, buf));
19973               buf += 1;
19974               break;
19975
19976             case DW_FORM_data2:
19977               uint.emplace (read_2_bytes (abfd, buf));
19978               buf += 2;
19979               break;
19980
19981             case DW_FORM_data4:
19982               uint.emplace (read_4_bytes (abfd, buf));
19983               buf += 4;
19984               break;
19985
19986             case DW_FORM_data8:
19987               uint.emplace (read_8_bytes (abfd, buf));
19988               buf += 8;
19989               break;
19990
19991             case DW_FORM_data16:
19992               /*  This is used for MD5, but file_entry does not record MD5s. */
19993               buf += 16;
19994               break;
19995
19996             case DW_FORM_udata:
19997               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
19998               buf += bytes_read;
19999               break;
20000
20001             case DW_FORM_block:
20002               /* It is valid only for DW_LNCT_timestamp which is ignored by
20003                  current GDB.  */
20004               break;
20005             }
20006
20007           switch (content_type)
20008             {
20009             case DW_LNCT_path:
20010               if (string.has_value ())
20011                 fe.name = *string;
20012               break;
20013             case DW_LNCT_directory_index:
20014               if (uint.has_value ())
20015                 fe.d_index = (dir_index) *uint;
20016               break;
20017             case DW_LNCT_timestamp:
20018               if (uint.has_value ())
20019                 fe.mod_time = *uint;
20020               break;
20021             case DW_LNCT_size:
20022               if (uint.has_value ())
20023                 fe.length = *uint;
20024               break;
20025             case DW_LNCT_MD5:
20026               break;
20027             default:
20028               complaint (_("Unknown format content type %s"),
20029                          pulongest (content_type));
20030             }
20031         }
20032
20033       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20034     }
20035
20036   *bufp = buf;
20037 }
20038
20039 /* Read the statement program header starting at OFFSET in
20040    .debug_line, or .debug_line.dwo.  Return a pointer
20041    to a struct line_header, allocated using xmalloc.
20042    Returns NULL if there is a problem reading the header, e.g., if it
20043    has a version we don't understand.
20044
20045    NOTE: the strings in the include directory and file name tables of
20046    the returned object point into the dwarf line section buffer,
20047    and must not be freed.  */
20048
20049 static line_header_up
20050 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20051 {
20052   const gdb_byte *line_ptr;
20053   unsigned int bytes_read, offset_size;
20054   int i;
20055   const char *cur_dir, *cur_file;
20056   struct dwarf2_section_info *section;
20057   bfd *abfd;
20058   struct dwarf2_per_objfile *dwarf2_per_objfile
20059     = cu->per_cu->dwarf2_per_objfile;
20060
20061   section = get_debug_line_section (cu);
20062   section->read (dwarf2_per_objfile->objfile);
20063   if (section->buffer == NULL)
20064     {
20065       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20066         complaint (_("missing .debug_line.dwo section"));
20067       else
20068         complaint (_("missing .debug_line section"));
20069       return 0;
20070     }
20071
20072   /* We can't do this until we know the section is non-empty.
20073      Only then do we know we have such a section.  */
20074   abfd = section->get_bfd_owner ();
20075
20076   /* Make sure that at least there's room for the total_length field.
20077      That could be 12 bytes long, but we're just going to fudge that.  */
20078   if (to_underlying (sect_off) + 4 >= section->size)
20079     {
20080       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20081       return 0;
20082     }
20083
20084   line_header_up lh (new line_header ());
20085
20086   lh->sect_off = sect_off;
20087   lh->offset_in_dwz = cu->per_cu->is_dwz;
20088
20089   line_ptr = section->buffer + to_underlying (sect_off);
20090
20091   /* Read in the header.  */
20092   lh->total_length =
20093     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20094                                             &bytes_read, &offset_size);
20095   line_ptr += bytes_read;
20096
20097   const gdb_byte *start_here = line_ptr;
20098
20099   if (line_ptr + lh->total_length > (section->buffer + section->size))
20100     {
20101       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20102       return 0;
20103     }
20104   lh->statement_program_end = start_here + lh->total_length;
20105   lh->version = read_2_bytes (abfd, line_ptr);
20106   line_ptr += 2;
20107   if (lh->version > 5)
20108     {
20109       /* This is a version we don't understand.  The format could have
20110          changed in ways we don't handle properly so just punt.  */
20111       complaint (_("unsupported version in .debug_line section"));
20112       return NULL;
20113     }
20114   if (lh->version >= 5)
20115     {
20116       gdb_byte segment_selector_size;
20117
20118       /* Skip address size.  */
20119       read_1_byte (abfd, line_ptr);
20120       line_ptr += 1;
20121
20122       segment_selector_size = read_1_byte (abfd, line_ptr);
20123       line_ptr += 1;
20124       if (segment_selector_size != 0)
20125         {
20126           complaint (_("unsupported segment selector size %u "
20127                        "in .debug_line section"),
20128                      segment_selector_size);
20129           return NULL;
20130         }
20131     }
20132   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20133   line_ptr += offset_size;
20134   lh->statement_program_start = line_ptr + lh->header_length;
20135   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20136   line_ptr += 1;
20137   if (lh->version >= 4)
20138     {
20139       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20140       line_ptr += 1;
20141     }
20142   else
20143     lh->maximum_ops_per_instruction = 1;
20144
20145   if (lh->maximum_ops_per_instruction == 0)
20146     {
20147       lh->maximum_ops_per_instruction = 1;
20148       complaint (_("invalid maximum_ops_per_instruction "
20149                    "in `.debug_line' section"));
20150     }
20151
20152   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20153   line_ptr += 1;
20154   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20155   line_ptr += 1;
20156   lh->line_range = read_1_byte (abfd, line_ptr);
20157   line_ptr += 1;
20158   lh->opcode_base = read_1_byte (abfd, line_ptr);
20159   line_ptr += 1;
20160   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20161
20162   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20163   for (i = 1; i < lh->opcode_base; ++i)
20164     {
20165       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20166       line_ptr += 1;
20167     }
20168
20169   if (lh->version >= 5)
20170     {
20171       /* Read directory table.  */
20172       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20173                               &cu->header,
20174                               [] (struct line_header *header, const char *name,
20175                                   dir_index d_index, unsigned int mod_time,
20176                                   unsigned int length)
20177         {
20178           header->add_include_dir (name);
20179         });
20180
20181       /* Read file name table.  */
20182       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20183                               &cu->header,
20184                               [] (struct line_header *header, const char *name,
20185                                   dir_index d_index, unsigned int mod_time,
20186                                   unsigned int length)
20187         {
20188           header->add_file_name (name, d_index, mod_time, length);
20189         });
20190     }
20191   else
20192     {
20193       /* Read directory table.  */
20194       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20195         {
20196           line_ptr += bytes_read;
20197           lh->add_include_dir (cur_dir);
20198         }
20199       line_ptr += bytes_read;
20200
20201       /* Read file name table.  */
20202       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20203         {
20204           unsigned int mod_time, length;
20205           dir_index d_index;
20206
20207           line_ptr += bytes_read;
20208           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20209           line_ptr += bytes_read;
20210           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20211           line_ptr += bytes_read;
20212           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20213           line_ptr += bytes_read;
20214
20215           lh->add_file_name (cur_file, d_index, mod_time, length);
20216         }
20217       line_ptr += bytes_read;
20218     }
20219
20220   if (line_ptr > (section->buffer + section->size))
20221     complaint (_("line number info header doesn't "
20222                  "fit in `.debug_line' section"));
20223
20224   return lh;
20225 }
20226
20227 /* Subroutine of dwarf_decode_lines to simplify it.
20228    Return the file name of the psymtab for the given file_entry.
20229    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20230    If space for the result is malloc'd, *NAME_HOLDER will be set.
20231    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20232
20233 static const char *
20234 psymtab_include_file_name (const struct line_header *lh, const file_entry &fe,
20235                            const dwarf2_psymtab *pst,
20236                            const char *comp_dir,
20237                            gdb::unique_xmalloc_ptr<char> *name_holder)
20238 {
20239   const char *include_name = fe.name;
20240   const char *include_name_to_compare = include_name;
20241   const char *pst_filename;
20242   int file_is_pst;
20243
20244   const char *dir_name = fe.include_dir (lh);
20245
20246   gdb::unique_xmalloc_ptr<char> hold_compare;
20247   if (!IS_ABSOLUTE_PATH (include_name)
20248       && (dir_name != NULL || comp_dir != NULL))
20249     {
20250       /* Avoid creating a duplicate psymtab for PST.
20251          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20252          Before we do the comparison, however, we need to account
20253          for DIR_NAME and COMP_DIR.
20254          First prepend dir_name (if non-NULL).  If we still don't
20255          have an absolute path prepend comp_dir (if non-NULL).
20256          However, the directory we record in the include-file's
20257          psymtab does not contain COMP_DIR (to match the
20258          corresponding symtab(s)).
20259
20260          Example:
20261
20262          bash$ cd /tmp
20263          bash$ gcc -g ./hello.c
20264          include_name = "hello.c"
20265          dir_name = "."
20266          DW_AT_comp_dir = comp_dir = "/tmp"
20267          DW_AT_name = "./hello.c"
20268
20269       */
20270
20271       if (dir_name != NULL)
20272         {
20273           name_holder->reset (concat (dir_name, SLASH_STRING,
20274                                       include_name, (char *) NULL));
20275           include_name = name_holder->get ();
20276           include_name_to_compare = include_name;
20277         }
20278       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20279         {
20280           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20281                                       include_name, (char *) NULL));
20282           include_name_to_compare = hold_compare.get ();
20283         }
20284     }
20285
20286   pst_filename = pst->filename;
20287   gdb::unique_xmalloc_ptr<char> copied_name;
20288   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20289     {
20290       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20291                                  pst_filename, (char *) NULL));
20292       pst_filename = copied_name.get ();
20293     }
20294
20295   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20296
20297   if (file_is_pst)
20298     return NULL;
20299   return include_name;
20300 }
20301
20302 /* State machine to track the state of the line number program.  */
20303
20304 class lnp_state_machine
20305 {
20306 public:
20307   /* Initialize a machine state for the start of a line number
20308      program.  */
20309   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20310                      bool record_lines_p);
20311
20312   file_entry *current_file ()
20313   {
20314     /* lh->file_names is 0-based, but the file name numbers in the
20315        statement program are 1-based.  */
20316     return m_line_header->file_name_at (m_file);
20317   }
20318
20319   /* Record the line in the state machine.  END_SEQUENCE is true if
20320      we're processing the end of a sequence.  */
20321   void record_line (bool end_sequence);
20322
20323   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20324      nop-out rest of the lines in this sequence.  */
20325   void check_line_address (struct dwarf2_cu *cu,
20326                            const gdb_byte *line_ptr,
20327                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20328
20329   void handle_set_discriminator (unsigned int discriminator)
20330   {
20331     m_discriminator = discriminator;
20332     m_line_has_non_zero_discriminator |= discriminator != 0;
20333   }
20334
20335   /* Handle DW_LNE_set_address.  */
20336   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20337   {
20338     m_op_index = 0;
20339     address += baseaddr;
20340     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20341   }
20342
20343   /* Handle DW_LNS_advance_pc.  */
20344   void handle_advance_pc (CORE_ADDR adjust);
20345
20346   /* Handle a special opcode.  */
20347   void handle_special_opcode (unsigned char op_code);
20348
20349   /* Handle DW_LNS_advance_line.  */
20350   void handle_advance_line (int line_delta)
20351   {
20352     advance_line (line_delta);
20353   }
20354
20355   /* Handle DW_LNS_set_file.  */
20356   void handle_set_file (file_name_index file);
20357
20358   /* Handle DW_LNS_negate_stmt.  */
20359   void handle_negate_stmt ()
20360   {
20361     m_is_stmt = !m_is_stmt;
20362   }
20363
20364   /* Handle DW_LNS_const_add_pc.  */
20365   void handle_const_add_pc ();
20366
20367   /* Handle DW_LNS_fixed_advance_pc.  */
20368   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20369   {
20370     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20371     m_op_index = 0;
20372   }
20373
20374   /* Handle DW_LNS_copy.  */
20375   void handle_copy ()
20376   {
20377     record_line (false);
20378     m_discriminator = 0;
20379   }
20380
20381   /* Handle DW_LNE_end_sequence.  */
20382   void handle_end_sequence ()
20383   {
20384     m_currently_recording_lines = true;
20385   }
20386
20387 private:
20388   /* Advance the line by LINE_DELTA.  */
20389   void advance_line (int line_delta)
20390   {
20391     m_line += line_delta;
20392
20393     if (line_delta != 0)
20394       m_line_has_non_zero_discriminator = m_discriminator != 0;
20395   }
20396
20397   struct dwarf2_cu *m_cu;
20398
20399   gdbarch *m_gdbarch;
20400
20401   /* True if we're recording lines.
20402      Otherwise we're building partial symtabs and are just interested in
20403      finding include files mentioned by the line number program.  */
20404   bool m_record_lines_p;
20405
20406   /* The line number header.  */
20407   line_header *m_line_header;
20408
20409   /* These are part of the standard DWARF line number state machine,
20410      and initialized according to the DWARF spec.  */
20411
20412   unsigned char m_op_index = 0;
20413   /* The line table index of the current file.  */
20414   file_name_index m_file = 1;
20415   unsigned int m_line = 1;
20416
20417   /* These are initialized in the constructor.  */
20418
20419   CORE_ADDR m_address;
20420   bool m_is_stmt;
20421   unsigned int m_discriminator;
20422
20423   /* Additional bits of state we need to track.  */
20424
20425   /* The last file that we called dwarf2_start_subfile for.
20426      This is only used for TLLs.  */
20427   unsigned int m_last_file = 0;
20428   /* The last file a line number was recorded for.  */
20429   struct subfile *m_last_subfile = NULL;
20430
20431   /* When true, record the lines we decode.  */
20432   bool m_currently_recording_lines = false;
20433
20434   /* The last line number that was recorded, used to coalesce
20435      consecutive entries for the same line.  This can happen, for
20436      example, when discriminators are present.  PR 17276.  */
20437   unsigned int m_last_line = 0;
20438   bool m_line_has_non_zero_discriminator = false;
20439 };
20440
20441 void
20442 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20443 {
20444   CORE_ADDR addr_adj = (((m_op_index + adjust)
20445                          / m_line_header->maximum_ops_per_instruction)
20446                         * m_line_header->minimum_instruction_length);
20447   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20448   m_op_index = ((m_op_index + adjust)
20449                 % m_line_header->maximum_ops_per_instruction);
20450 }
20451
20452 void
20453 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20454 {
20455   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20456   CORE_ADDR addr_adj = (((m_op_index
20457                           + (adj_opcode / m_line_header->line_range))
20458                          / m_line_header->maximum_ops_per_instruction)
20459                         * m_line_header->minimum_instruction_length);
20460   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20461   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20462                 % m_line_header->maximum_ops_per_instruction);
20463
20464   int line_delta = (m_line_header->line_base
20465                     + (adj_opcode % m_line_header->line_range));
20466   advance_line (line_delta);
20467   record_line (false);
20468   m_discriminator = 0;
20469 }
20470
20471 void
20472 lnp_state_machine::handle_set_file (file_name_index file)
20473 {
20474   m_file = file;
20475
20476   const file_entry *fe = current_file ();
20477   if (fe == NULL)
20478     dwarf2_debug_line_missing_file_complaint ();
20479   else if (m_record_lines_p)
20480     {
20481       const char *dir = fe->include_dir (m_line_header);
20482
20483       m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20484       m_line_has_non_zero_discriminator = m_discriminator != 0;
20485       dwarf2_start_subfile (m_cu, fe->name, dir);
20486     }
20487 }
20488
20489 void
20490 lnp_state_machine::handle_const_add_pc ()
20491 {
20492   CORE_ADDR adjust
20493     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20494
20495   CORE_ADDR addr_adj
20496     = (((m_op_index + adjust)
20497         / m_line_header->maximum_ops_per_instruction)
20498        * m_line_header->minimum_instruction_length);
20499
20500   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20501   m_op_index = ((m_op_index + adjust)
20502                 % m_line_header->maximum_ops_per_instruction);
20503 }
20504
20505 /* Return non-zero if we should add LINE to the line number table.
20506    LINE is the line to add, LAST_LINE is the last line that was added,
20507    LAST_SUBFILE is the subfile for LAST_LINE.
20508    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20509    had a non-zero discriminator.
20510
20511    We have to be careful in the presence of discriminators.
20512    E.g., for this line:
20513
20514      for (i = 0; i < 100000; i++);
20515
20516    clang can emit four line number entries for that one line,
20517    each with a different discriminator.
20518    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20519
20520    However, we want gdb to coalesce all four entries into one.
20521    Otherwise the user could stepi into the middle of the line and
20522    gdb would get confused about whether the pc really was in the
20523    middle of the line.
20524
20525    Things are further complicated by the fact that two consecutive
20526    line number entries for the same line is a heuristic used by gcc
20527    to denote the end of the prologue.  So we can't just discard duplicate
20528    entries, we have to be selective about it.  The heuristic we use is
20529    that we only collapse consecutive entries for the same line if at least
20530    one of those entries has a non-zero discriminator.  PR 17276.
20531
20532    Note: Addresses in the line number state machine can never go backwards
20533    within one sequence, thus this coalescing is ok.  */
20534
20535 static int
20536 dwarf_record_line_p (struct dwarf2_cu *cu,
20537                      unsigned int line, unsigned int last_line,
20538                      int line_has_non_zero_discriminator,
20539                      struct subfile *last_subfile)
20540 {
20541   if (cu->get_builder ()->get_current_subfile () != last_subfile)
20542     return 1;
20543   if (line != last_line)
20544     return 1;
20545   /* Same line for the same file that we've seen already.
20546      As a last check, for pr 17276, only record the line if the line
20547      has never had a non-zero discriminator.  */
20548   if (!line_has_non_zero_discriminator)
20549     return 1;
20550   return 0;
20551 }
20552
20553 /* Use the CU's builder to record line number LINE beginning at
20554    address ADDRESS in the line table of subfile SUBFILE.  */
20555
20556 static void
20557 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20558                      unsigned int line, CORE_ADDR address,
20559                      struct dwarf2_cu *cu)
20560 {
20561   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20562
20563   if (dwarf_line_debug)
20564     {
20565       fprintf_unfiltered (gdb_stdlog,
20566                           "Recording line %u, file %s, address %s\n",
20567                           line, lbasename (subfile->name),
20568                           paddress (gdbarch, address));
20569     }
20570
20571   if (cu != nullptr)
20572     cu->get_builder ()->record_line (subfile, line, addr);
20573 }
20574
20575 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20576    Mark the end of a set of line number records.
20577    The arguments are the same as for dwarf_record_line_1.
20578    If SUBFILE is NULL the request is ignored.  */
20579
20580 static void
20581 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20582                    CORE_ADDR address, struct dwarf2_cu *cu)
20583 {
20584   if (subfile == NULL)
20585     return;
20586
20587   if (dwarf_line_debug)
20588     {
20589       fprintf_unfiltered (gdb_stdlog,
20590                           "Finishing current line, file %s, address %s\n",
20591                           lbasename (subfile->name),
20592                           paddress (gdbarch, address));
20593     }
20594
20595   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20596 }
20597
20598 void
20599 lnp_state_machine::record_line (bool end_sequence)
20600 {
20601   if (dwarf_line_debug)
20602     {
20603       fprintf_unfiltered (gdb_stdlog,
20604                           "Processing actual line %u: file %u,"
20605                           " address %s, is_stmt %u, discrim %u%s\n",
20606                           m_line, m_file,
20607                           paddress (m_gdbarch, m_address),
20608                           m_is_stmt, m_discriminator,
20609                           (end_sequence ? "\t(end sequence)" : ""));
20610     }
20611
20612   file_entry *fe = current_file ();
20613
20614   if (fe == NULL)
20615     dwarf2_debug_line_missing_file_complaint ();
20616   /* For now we ignore lines not starting on an instruction boundary.
20617      But not when processing end_sequence for compatibility with the
20618      previous version of the code.  */
20619   else if (m_op_index == 0 || end_sequence)
20620     {
20621       fe->included_p = 1;
20622       if (m_record_lines_p
20623           && (producer_is_codewarrior (m_cu) || m_is_stmt || end_sequence))
20624         {
20625           if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
20626               || end_sequence)
20627             {
20628               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20629                                  m_currently_recording_lines ? m_cu : nullptr);
20630             }
20631
20632           if (!end_sequence)
20633             {
20634               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20635                                        m_line_has_non_zero_discriminator,
20636                                        m_last_subfile))
20637                 {
20638                   buildsym_compunit *builder = m_cu->get_builder ();
20639                   dwarf_record_line_1 (m_gdbarch,
20640                                        builder->get_current_subfile (),
20641                                        m_line, m_address,
20642                                        m_currently_recording_lines ? m_cu : nullptr);
20643                 }
20644               m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20645               m_last_line = m_line;
20646             }
20647         }
20648     }
20649 }
20650
20651 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20652                                       line_header *lh, bool record_lines_p)
20653 {
20654   m_cu = cu;
20655   m_gdbarch = arch;
20656   m_record_lines_p = record_lines_p;
20657   m_line_header = lh;
20658
20659   m_currently_recording_lines = true;
20660
20661   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20662      was a line entry for it so that the backend has a chance to adjust it
20663      and also record it in case it needs it.  This is currently used by MIPS
20664      code, cf. `mips_adjust_dwarf2_line'.  */
20665   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20666   m_is_stmt = lh->default_is_stmt;
20667   m_discriminator = 0;
20668 }
20669
20670 void
20671 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20672                                        const gdb_byte *line_ptr,
20673                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20674 {
20675   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20676      the pc range of the CU.  However, we restrict the test to only ADDRESS
20677      values of zero to preserve GDB's previous behaviour which is to handle
20678      the specific case of a function being GC'd by the linker.  */
20679
20680   if (address == 0 && address < unrelocated_lowpc)
20681     {
20682       /* This line table is for a function which has been
20683          GCd by the linker.  Ignore it.  PR gdb/12528 */
20684
20685       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20686       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20687
20688       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20689                  line_offset, objfile_name (objfile));
20690       m_currently_recording_lines = false;
20691       /* Note: m_currently_recording_lines is left as false until we see
20692          DW_LNE_end_sequence.  */
20693     }
20694 }
20695
20696 /* Subroutine of dwarf_decode_lines to simplify it.
20697    Process the line number information in LH.
20698    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20699    program in order to set included_p for every referenced header.  */
20700
20701 static void
20702 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20703                       const int decode_for_pst_p, CORE_ADDR lowpc)
20704 {
20705   const gdb_byte *line_ptr, *extended_end;
20706   const gdb_byte *line_end;
20707   unsigned int bytes_read, extended_len;
20708   unsigned char op_code, extended_op;
20709   CORE_ADDR baseaddr;
20710   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20711   bfd *abfd = objfile->obfd;
20712   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20713   /* True if we're recording line info (as opposed to building partial
20714      symtabs and just interested in finding include files mentioned by
20715      the line number program).  */
20716   bool record_lines_p = !decode_for_pst_p;
20717
20718   baseaddr = objfile->text_section_offset ();
20719
20720   line_ptr = lh->statement_program_start;
20721   line_end = lh->statement_program_end;
20722
20723   /* Read the statement sequences until there's nothing left.  */
20724   while (line_ptr < line_end)
20725     {
20726       /* The DWARF line number program state machine.  Reset the state
20727          machine at the start of each sequence.  */
20728       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20729       bool end_sequence = false;
20730
20731       if (record_lines_p)
20732         {
20733           /* Start a subfile for the current file of the state
20734              machine.  */
20735           const file_entry *fe = state_machine.current_file ();
20736
20737           if (fe != NULL)
20738             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20739         }
20740
20741       /* Decode the table.  */
20742       while (line_ptr < line_end && !end_sequence)
20743         {
20744           op_code = read_1_byte (abfd, line_ptr);
20745           line_ptr += 1;
20746
20747           if (op_code >= lh->opcode_base)
20748             {
20749               /* Special opcode.  */
20750               state_machine.handle_special_opcode (op_code);
20751             }
20752           else switch (op_code)
20753             {
20754             case DW_LNS_extended_op:
20755               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20756                                                    &bytes_read);
20757               line_ptr += bytes_read;
20758               extended_end = line_ptr + extended_len;
20759               extended_op = read_1_byte (abfd, line_ptr);
20760               line_ptr += 1;
20761               switch (extended_op)
20762                 {
20763                 case DW_LNE_end_sequence:
20764                   state_machine.handle_end_sequence ();
20765                   end_sequence = true;
20766                   break;
20767                 case DW_LNE_set_address:
20768                   {
20769                     CORE_ADDR address
20770                       = read_address (abfd, line_ptr, cu, &bytes_read);
20771                     line_ptr += bytes_read;
20772
20773                     state_machine.check_line_address (cu, line_ptr,
20774                                                       lowpc - baseaddr, address);
20775                     state_machine.handle_set_address (baseaddr, address);
20776                   }
20777                   break;
20778                 case DW_LNE_define_file:
20779                   {
20780                     const char *cur_file;
20781                     unsigned int mod_time, length;
20782                     dir_index dindex;
20783
20784                     cur_file = read_direct_string (abfd, line_ptr,
20785                                                    &bytes_read);
20786                     line_ptr += bytes_read;
20787                     dindex = (dir_index)
20788                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20789                     line_ptr += bytes_read;
20790                     mod_time =
20791                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20792                     line_ptr += bytes_read;
20793                     length =
20794                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20795                     line_ptr += bytes_read;
20796                     lh->add_file_name (cur_file, dindex, mod_time, length);
20797                   }
20798                   break;
20799                 case DW_LNE_set_discriminator:
20800                   {
20801                     /* The discriminator is not interesting to the
20802                        debugger; just ignore it.  We still need to
20803                        check its value though:
20804                        if there are consecutive entries for the same
20805                        (non-prologue) line we want to coalesce them.
20806                        PR 17276.  */
20807                     unsigned int discr
20808                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20809                     line_ptr += bytes_read;
20810
20811                     state_machine.handle_set_discriminator (discr);
20812                   }
20813                   break;
20814                 default:
20815                   complaint (_("mangled .debug_line section"));
20816                   return;
20817                 }
20818               /* Make sure that we parsed the extended op correctly.  If e.g.
20819                  we expected a different address size than the producer used,
20820                  we may have read the wrong number of bytes.  */
20821               if (line_ptr != extended_end)
20822                 {
20823                   complaint (_("mangled .debug_line section"));
20824                   return;
20825                 }
20826               break;
20827             case DW_LNS_copy:
20828               state_machine.handle_copy ();
20829               break;
20830             case DW_LNS_advance_pc:
20831               {
20832                 CORE_ADDR adjust
20833                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20834                 line_ptr += bytes_read;
20835
20836                 state_machine.handle_advance_pc (adjust);
20837               }
20838               break;
20839             case DW_LNS_advance_line:
20840               {
20841                 int line_delta
20842                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
20843                 line_ptr += bytes_read;
20844
20845                 state_machine.handle_advance_line (line_delta);
20846               }
20847               break;
20848             case DW_LNS_set_file:
20849               {
20850                 file_name_index file
20851                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
20852                                                             &bytes_read);
20853                 line_ptr += bytes_read;
20854
20855                 state_machine.handle_set_file (file);
20856               }
20857               break;
20858             case DW_LNS_set_column:
20859               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20860               line_ptr += bytes_read;
20861               break;
20862             case DW_LNS_negate_stmt:
20863               state_machine.handle_negate_stmt ();
20864               break;
20865             case DW_LNS_set_basic_block:
20866               break;
20867             /* Add to the address register of the state machine the
20868                address increment value corresponding to special opcode
20869                255.  I.e., this value is scaled by the minimum
20870                instruction length since special opcode 255 would have
20871                scaled the increment.  */
20872             case DW_LNS_const_add_pc:
20873               state_machine.handle_const_add_pc ();
20874               break;
20875             case DW_LNS_fixed_advance_pc:
20876               {
20877                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
20878                 line_ptr += 2;
20879
20880                 state_machine.handle_fixed_advance_pc (addr_adj);
20881               }
20882               break;
20883             default:
20884               {
20885                 /* Unknown standard opcode, ignore it.  */
20886                 int i;
20887
20888                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
20889                   {
20890                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20891                     line_ptr += bytes_read;
20892                   }
20893               }
20894             }
20895         }
20896
20897       if (!end_sequence)
20898         dwarf2_debug_line_missing_end_sequence_complaint ();
20899
20900       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
20901          in which case we still finish recording the last line).  */
20902       state_machine.record_line (true);
20903     }
20904 }
20905
20906 /* Decode the Line Number Program (LNP) for the given line_header
20907    structure and CU.  The actual information extracted and the type
20908    of structures created from the LNP depends on the value of PST.
20909
20910    1. If PST is NULL, then this procedure uses the data from the program
20911       to create all necessary symbol tables, and their linetables.
20912
20913    2. If PST is not NULL, this procedure reads the program to determine
20914       the list of files included by the unit represented by PST, and
20915       builds all the associated partial symbol tables.
20916
20917    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20918    It is used for relative paths in the line table.
20919    NOTE: When processing partial symtabs (pst != NULL),
20920    comp_dir == pst->dirname.
20921
20922    NOTE: It is important that psymtabs have the same file name (via strcmp)
20923    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
20924    symtab we don't use it in the name of the psymtabs we create.
20925    E.g. expand_line_sal requires this when finding psymtabs to expand.
20926    A good testcase for this is mb-inline.exp.
20927
20928    LOWPC is the lowest address in CU (or 0 if not known).
20929
20930    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
20931    for its PC<->lines mapping information.  Otherwise only the filename
20932    table is read in.  */
20933
20934 static void
20935 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
20936                     struct dwarf2_cu *cu, dwarf2_psymtab *pst,
20937                     CORE_ADDR lowpc, int decode_mapping)
20938 {
20939   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20940   const int decode_for_pst_p = (pst != NULL);
20941
20942   if (decode_mapping)
20943     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
20944
20945   if (decode_for_pst_p)
20946     {
20947       /* Now that we're done scanning the Line Header Program, we can
20948          create the psymtab of each included file.  */
20949       for (auto &file_entry : lh->file_names ())
20950         if (file_entry.included_p == 1)
20951           {
20952             gdb::unique_xmalloc_ptr<char> name_holder;
20953             const char *include_name =
20954               psymtab_include_file_name (lh, file_entry, pst,
20955                                          comp_dir, &name_holder);
20956             if (include_name != NULL)
20957               dwarf2_create_include_psymtab (include_name, pst, objfile);
20958           }
20959     }
20960   else
20961     {
20962       /* Make sure a symtab is created for every file, even files
20963          which contain only variables (i.e. no code with associated
20964          line numbers).  */
20965       buildsym_compunit *builder = cu->get_builder ();
20966       struct compunit_symtab *cust = builder->get_compunit_symtab ();
20967
20968       for (auto &fe : lh->file_names ())
20969         {
20970           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
20971           if (builder->get_current_subfile ()->symtab == NULL)
20972             {
20973               builder->get_current_subfile ()->symtab
20974                 = allocate_symtab (cust,
20975                                    builder->get_current_subfile ()->name);
20976             }
20977           fe.symtab = builder->get_current_subfile ()->symtab;
20978         }
20979     }
20980 }
20981
20982 /* Start a subfile for DWARF.  FILENAME is the name of the file and
20983    DIRNAME the name of the source directory which contains FILENAME
20984    or NULL if not known.
20985    This routine tries to keep line numbers from identical absolute and
20986    relative file names in a common subfile.
20987
20988    Using the `list' example from the GDB testsuite, which resides in
20989    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
20990    of /srcdir/list0.c yields the following debugging information for list0.c:
20991
20992    DW_AT_name:          /srcdir/list0.c
20993    DW_AT_comp_dir:      /compdir
20994    files.files[0].name: list0.h
20995    files.files[0].dir:  /srcdir
20996    files.files[1].name: list0.c
20997    files.files[1].dir:  /srcdir
20998
20999    The line number information for list0.c has to end up in a single
21000    subfile, so that `break /srcdir/list0.c:1' works as expected.
21001    start_subfile will ensure that this happens provided that we pass the
21002    concatenation of files.files[1].dir and files.files[1].name as the
21003    subfile's name.  */
21004
21005 static void
21006 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21007                       const char *dirname)
21008 {
21009   gdb::unique_xmalloc_ptr<char> copy;
21010
21011   /* In order not to lose the line information directory,
21012      we concatenate it to the filename when it makes sense.
21013      Note that the Dwarf3 standard says (speaking of filenames in line
21014      information): ``The directory index is ignored for file names
21015      that represent full path names''.  Thus ignoring dirname in the
21016      `else' branch below isn't an issue.  */
21017
21018   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21019     {
21020       copy.reset (concat (dirname, SLASH_STRING, filename, (char *) NULL));
21021       filename = copy.get ();
21022     }
21023
21024   cu->get_builder ()->start_subfile (filename);
21025 }
21026
21027 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21028    buildsym_compunit constructor.  */
21029
21030 struct compunit_symtab *
21031 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21032                          CORE_ADDR low_pc)
21033 {
21034   gdb_assert (m_builder == nullptr);
21035
21036   m_builder.reset (new struct buildsym_compunit
21037                    (per_cu->dwarf2_per_objfile->objfile,
21038                     name, comp_dir, language, low_pc));
21039
21040   list_in_scope = get_builder ()->get_file_symbols ();
21041
21042   get_builder ()->record_debugformat ("DWARF 2");
21043   get_builder ()->record_producer (producer);
21044
21045   processing_has_namespace_info = false;
21046
21047   return get_builder ()->get_compunit_symtab ();
21048 }
21049
21050 static void
21051 var_decode_location (struct attribute *attr, struct symbol *sym,
21052                      struct dwarf2_cu *cu)
21053 {
21054   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21055   struct comp_unit_head *cu_header = &cu->header;
21056
21057   /* NOTE drow/2003-01-30: There used to be a comment and some special
21058      code here to turn a symbol with DW_AT_external and a
21059      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21060      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21061      with some versions of binutils) where shared libraries could have
21062      relocations against symbols in their debug information - the
21063      minimal symbol would have the right address, but the debug info
21064      would not.  It's no longer necessary, because we will explicitly
21065      apply relocations when we read in the debug information now.  */
21066
21067   /* A DW_AT_location attribute with no contents indicates that a
21068      variable has been optimized away.  */
21069   if (attr->form_is_block () && DW_BLOCK (attr)->size == 0)
21070     {
21071       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21072       return;
21073     }
21074
21075   /* Handle one degenerate form of location expression specially, to
21076      preserve GDB's previous behavior when section offsets are
21077      specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
21078      DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
21079
21080   if (attr->form_is_block ()
21081       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21082            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21083           || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21084                || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
21085               && (DW_BLOCK (attr)->size
21086                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21087     {
21088       unsigned int dummy;
21089
21090       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21091         SET_SYMBOL_VALUE_ADDRESS (sym,
21092                                   read_address (objfile->obfd,
21093                                                 DW_BLOCK (attr)->data + 1,
21094                                                 cu, &dummy));
21095       else
21096         SET_SYMBOL_VALUE_ADDRESS
21097           (sym, read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1,
21098                                              &dummy));
21099       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21100       fixup_symbol_section (sym, objfile);
21101       SET_SYMBOL_VALUE_ADDRESS
21102         (sym,
21103          SYMBOL_VALUE_ADDRESS (sym)
21104          + objfile->section_offsets[SYMBOL_SECTION (sym)]);
21105       return;
21106     }
21107
21108   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21109      expression evaluator, and use LOC_COMPUTED only when necessary
21110      (i.e. when the value of a register or memory location is
21111      referenced, or a thread-local block, etc.).  Then again, it might
21112      not be worthwhile.  I'm assuming that it isn't unless performance
21113      or memory numbers show me otherwise.  */
21114
21115   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21116
21117   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21118     cu->has_loclist = true;
21119 }
21120
21121 /* Given a pointer to a DWARF information entry, figure out if we need
21122    to make a symbol table entry for it, and if so, create a new entry
21123    and return a pointer to it.
21124    If TYPE is NULL, determine symbol type from the die, otherwise
21125    used the passed type.
21126    If SPACE is not NULL, use it to hold the new symbol.  If it is
21127    NULL, allocate a new symbol on the objfile's obstack.  */
21128
21129 static struct symbol *
21130 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21131             struct symbol *space)
21132 {
21133   struct dwarf2_per_objfile *dwarf2_per_objfile
21134     = cu->per_cu->dwarf2_per_objfile;
21135   struct objfile *objfile = dwarf2_per_objfile->objfile;
21136   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21137   struct symbol *sym = NULL;
21138   const char *name;
21139   struct attribute *attr = NULL;
21140   struct attribute *attr2 = NULL;
21141   CORE_ADDR baseaddr;
21142   struct pending **list_to_add = NULL;
21143
21144   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21145
21146   baseaddr = objfile->text_section_offset ();
21147
21148   name = dwarf2_name (die, cu);
21149   if (name)
21150     {
21151       const char *linkagename;
21152       int suppress_add = 0;
21153
21154       if (space)
21155         sym = space;
21156       else
21157         sym = allocate_symbol (objfile);
21158       OBJSTAT (objfile, n_syms++);
21159
21160       /* Cache this symbol's name and the name's demangled form (if any).  */
21161       sym->set_language (cu->language, &objfile->objfile_obstack);
21162       linkagename = dwarf2_physname (name, die, cu);
21163       sym->compute_and_set_names (linkagename, false, objfile->per_bfd);
21164
21165       /* Fortran does not have mangling standard and the mangling does differ
21166          between gfortran, iFort etc.  */
21167       if (cu->language == language_fortran
21168           && symbol_get_demangled_name (sym) == NULL)
21169         symbol_set_demangled_name (sym,
21170                                    dwarf2_full_name (name, die, cu),
21171                                    NULL);
21172
21173       /* Default assumptions.
21174          Use the passed type or decode it from the die.  */
21175       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21176       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21177       if (type != NULL)
21178         SYMBOL_TYPE (sym) = type;
21179       else
21180         SYMBOL_TYPE (sym) = die_type (die, cu);
21181       attr = dwarf2_attr (die,
21182                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21183                           cu);
21184       if (attr != nullptr)
21185         {
21186           SYMBOL_LINE (sym) = DW_UNSND (attr);
21187         }
21188
21189       attr = dwarf2_attr (die,
21190                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21191                           cu);
21192       if (attr != nullptr)
21193         {
21194           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21195           struct file_entry *fe;
21196
21197           if (cu->line_header != NULL)
21198             fe = cu->line_header->file_name_at (file_index);
21199           else
21200             fe = NULL;
21201
21202           if (fe == NULL)
21203             complaint (_("file index out of range"));
21204           else
21205             symbol_set_symtab (sym, fe->symtab);
21206         }
21207
21208       switch (die->tag)
21209         {
21210         case DW_TAG_label:
21211           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21212           if (attr != nullptr)
21213             {
21214               CORE_ADDR addr;
21215
21216               addr = attr->value_as_address ();
21217               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21218               SET_SYMBOL_VALUE_ADDRESS (sym, addr);
21219             }
21220           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21221           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21222           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21223           add_symbol_to_list (sym, cu->list_in_scope);
21224           break;
21225         case DW_TAG_subprogram:
21226           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21227              finish_block.  */
21228           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21229           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21230           if ((attr2 && (DW_UNSND (attr2) != 0))
21231               || cu->language == language_ada
21232               || cu->language == language_fortran)
21233             {
21234               /* Subprograms marked external are stored as a global symbol.
21235                  Ada and Fortran subprograms, whether marked external or
21236                  not, are always stored as a global symbol, because we want
21237                  to be able to access them globally.  For instance, we want
21238                  to be able to break on a nested subprogram without having
21239                  to specify the context.  */
21240               list_to_add = cu->get_builder ()->get_global_symbols ();
21241             }
21242           else
21243             {
21244               list_to_add = cu->list_in_scope;
21245             }
21246           break;
21247         case DW_TAG_inlined_subroutine:
21248           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21249              finish_block.  */
21250           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21251           SYMBOL_INLINED (sym) = 1;
21252           list_to_add = cu->list_in_scope;
21253           break;
21254         case DW_TAG_template_value_param:
21255           suppress_add = 1;
21256           /* Fall through.  */
21257         case DW_TAG_constant:
21258         case DW_TAG_variable:
21259         case DW_TAG_member:
21260           /* Compilation with minimal debug info may result in
21261              variables with missing type entries.  Change the
21262              misleading `void' type to something sensible.  */
21263           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21264             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21265
21266           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21267           /* In the case of DW_TAG_member, we should only be called for
21268              static const members.  */
21269           if (die->tag == DW_TAG_member)
21270             {
21271               /* dwarf2_add_field uses die_is_declaration,
21272                  so we do the same.  */
21273               gdb_assert (die_is_declaration (die, cu));
21274               gdb_assert (attr);
21275             }
21276           if (attr != nullptr)
21277             {
21278               dwarf2_const_value (attr, sym, cu);
21279               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21280               if (!suppress_add)
21281                 {
21282                   if (attr2 && (DW_UNSND (attr2) != 0))
21283                     list_to_add = cu->get_builder ()->get_global_symbols ();
21284                   else
21285                     list_to_add = cu->list_in_scope;
21286                 }
21287               break;
21288             }
21289           attr = dwarf2_attr (die, DW_AT_location, cu);
21290           if (attr != nullptr)
21291             {
21292               var_decode_location (attr, sym, cu);
21293               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21294
21295               /* Fortran explicitly imports any global symbols to the local
21296                  scope by DW_TAG_common_block.  */
21297               if (cu->language == language_fortran && die->parent
21298                   && die->parent->tag == DW_TAG_common_block)
21299                 attr2 = NULL;
21300
21301               if (SYMBOL_CLASS (sym) == LOC_STATIC
21302                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21303                   && !dwarf2_per_objfile->has_section_at_zero)
21304                 {
21305                   /* When a static variable is eliminated by the linker,
21306                      the corresponding debug information is not stripped
21307                      out, but the variable address is set to null;
21308                      do not add such variables into symbol table.  */
21309                 }
21310               else if (attr2 && (DW_UNSND (attr2) != 0))
21311                 {
21312                   if (SYMBOL_CLASS (sym) == LOC_STATIC
21313                       && (objfile->flags & OBJF_MAINLINE) == 0
21314                       && dwarf2_per_objfile->can_copy)
21315                     {
21316                       /* A global static variable might be subject to
21317                          copy relocation.  We first check for a local
21318                          minsym, though, because maybe the symbol was
21319                          marked hidden, in which case this would not
21320                          apply.  */
21321                       bound_minimal_symbol found
21322                         = (lookup_minimal_symbol_linkage
21323                            (sym->linkage_name (), objfile));
21324                       if (found.minsym != nullptr)
21325                         sym->maybe_copied = 1;
21326                     }
21327
21328                   /* A variable with DW_AT_external is never static,
21329                      but it may be block-scoped.  */
21330                   list_to_add
21331                     = ((cu->list_in_scope
21332                         == cu->get_builder ()->get_file_symbols ())
21333                        ? cu->get_builder ()->get_global_symbols ()
21334                        : cu->list_in_scope);
21335                 }
21336               else
21337                 list_to_add = cu->list_in_scope;
21338             }
21339           else
21340             {
21341               /* We do not know the address of this symbol.
21342                  If it is an external symbol and we have type information
21343                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21344                  The address of the variable will then be determined from
21345                  the minimal symbol table whenever the variable is
21346                  referenced.  */
21347               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21348
21349               /* Fortran explicitly imports any global symbols to the local
21350                  scope by DW_TAG_common_block.  */
21351               if (cu->language == language_fortran && die->parent
21352                   && die->parent->tag == DW_TAG_common_block)
21353                 {
21354                   /* SYMBOL_CLASS doesn't matter here because
21355                      read_common_block is going to reset it.  */
21356                   if (!suppress_add)
21357                     list_to_add = cu->list_in_scope;
21358                 }
21359               else if (attr2 && (DW_UNSND (attr2) != 0)
21360                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21361                 {
21362                   /* A variable with DW_AT_external is never static, but it
21363                      may be block-scoped.  */
21364                   list_to_add
21365                     = ((cu->list_in_scope
21366                         == cu->get_builder ()->get_file_symbols ())
21367                        ? cu->get_builder ()->get_global_symbols ()
21368                        : cu->list_in_scope);
21369
21370                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21371                 }
21372               else if (!die_is_declaration (die, cu))
21373                 {
21374                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21375                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21376                   if (!suppress_add)
21377                     list_to_add = cu->list_in_scope;
21378                 }
21379             }
21380           break;
21381         case DW_TAG_formal_parameter:
21382           {
21383             /* If we are inside a function, mark this as an argument.  If
21384                not, we might be looking at an argument to an inlined function
21385                when we do not have enough information to show inlined frames;
21386                pretend it's a local variable in that case so that the user can
21387                still see it.  */
21388             struct context_stack *curr
21389               = cu->get_builder ()->get_current_context_stack ();
21390             if (curr != nullptr && curr->name != nullptr)
21391               SYMBOL_IS_ARGUMENT (sym) = 1;
21392             attr = dwarf2_attr (die, DW_AT_location, cu);
21393             if (attr != nullptr)
21394               {
21395                 var_decode_location (attr, sym, cu);
21396               }
21397             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21398             if (attr != nullptr)
21399               {
21400                 dwarf2_const_value (attr, sym, cu);
21401               }
21402
21403             list_to_add = cu->list_in_scope;
21404           }
21405           break;
21406         case DW_TAG_unspecified_parameters:
21407           /* From varargs functions; gdb doesn't seem to have any
21408              interest in this information, so just ignore it for now.
21409              (FIXME?) */
21410           break;
21411         case DW_TAG_template_type_param:
21412           suppress_add = 1;
21413           /* Fall through.  */
21414         case DW_TAG_class_type:
21415         case DW_TAG_interface_type:
21416         case DW_TAG_structure_type:
21417         case DW_TAG_union_type:
21418         case DW_TAG_set_type:
21419         case DW_TAG_enumeration_type:
21420           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21421           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21422
21423           {
21424             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21425                really ever be static objects: otherwise, if you try
21426                to, say, break of a class's method and you're in a file
21427                which doesn't mention that class, it won't work unless
21428                the check for all static symbols in lookup_symbol_aux
21429                saves you.  See the OtherFileClass tests in
21430                gdb.c++/namespace.exp.  */
21431
21432             if (!suppress_add)
21433               {
21434                 buildsym_compunit *builder = cu->get_builder ();
21435                 list_to_add
21436                   = (cu->list_in_scope == builder->get_file_symbols ()
21437                      && cu->language == language_cplus
21438                      ? builder->get_global_symbols ()
21439                      : cu->list_in_scope);
21440
21441                 /* The semantics of C++ state that "struct foo {
21442                    ... }" also defines a typedef for "foo".  */
21443                 if (cu->language == language_cplus
21444                     || cu->language == language_ada
21445                     || cu->language == language_d
21446                     || cu->language == language_rust)
21447                   {
21448                     /* The symbol's name is already allocated along
21449                        with this objfile, so we don't need to
21450                        duplicate it for the type.  */
21451                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21452                       TYPE_NAME (SYMBOL_TYPE (sym)) = sym->search_name ();
21453                   }
21454               }
21455           }
21456           break;
21457         case DW_TAG_typedef:
21458           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21459           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21460           list_to_add = cu->list_in_scope;
21461           break;
21462         case DW_TAG_base_type:
21463         case DW_TAG_subrange_type:
21464           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21465           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21466           list_to_add = cu->list_in_scope;
21467           break;
21468         case DW_TAG_enumerator:
21469           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21470           if (attr != nullptr)
21471             {
21472               dwarf2_const_value (attr, sym, cu);
21473             }
21474           {
21475             /* NOTE: carlton/2003-11-10: See comment above in the
21476                DW_TAG_class_type, etc. block.  */
21477
21478             list_to_add
21479               = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21480                  && cu->language == language_cplus
21481                  ? cu->get_builder ()->get_global_symbols ()
21482                  : cu->list_in_scope);
21483           }
21484           break;
21485         case DW_TAG_imported_declaration:
21486         case DW_TAG_namespace:
21487           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21488           list_to_add = cu->get_builder ()->get_global_symbols ();
21489           break;
21490         case DW_TAG_module:
21491           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21492           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21493           list_to_add = cu->get_builder ()->get_global_symbols ();
21494           break;
21495         case DW_TAG_common_block:
21496           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21497           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21498           add_symbol_to_list (sym, cu->list_in_scope);
21499           break;
21500         default:
21501           /* Not a tag we recognize.  Hopefully we aren't processing
21502              trash data, but since we must specifically ignore things
21503              we don't recognize, there is nothing else we should do at
21504              this point.  */
21505           complaint (_("unsupported tag: '%s'"),
21506                      dwarf_tag_name (die->tag));
21507           break;
21508         }
21509
21510       if (suppress_add)
21511         {
21512           sym->hash_next = objfile->template_symbols;
21513           objfile->template_symbols = sym;
21514           list_to_add = NULL;
21515         }
21516
21517       if (list_to_add != NULL)
21518         add_symbol_to_list (sym, list_to_add);
21519
21520       /* For the benefit of old versions of GCC, check for anonymous
21521          namespaces based on the demangled name.  */
21522       if (!cu->processing_has_namespace_info
21523           && cu->language == language_cplus)
21524         cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21525     }
21526   return (sym);
21527 }
21528
21529 /* Given an attr with a DW_FORM_dataN value in host byte order,
21530    zero-extend it as appropriate for the symbol's type.  The DWARF
21531    standard (v4) is not entirely clear about the meaning of using
21532    DW_FORM_dataN for a constant with a signed type, where the type is
21533    wider than the data.  The conclusion of a discussion on the DWARF
21534    list was that this is unspecified.  We choose to always zero-extend
21535    because that is the interpretation long in use by GCC.  */
21536
21537 static gdb_byte *
21538 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21539                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21540 {
21541   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21542   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21543                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21544   LONGEST l = DW_UNSND (attr);
21545
21546   if (bits < sizeof (*value) * 8)
21547     {
21548       l &= ((LONGEST) 1 << bits) - 1;
21549       *value = l;
21550     }
21551   else if (bits == sizeof (*value) * 8)
21552     *value = l;
21553   else
21554     {
21555       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21556       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21557       return bytes;
21558     }
21559
21560   return NULL;
21561 }
21562
21563 /* Read a constant value from an attribute.  Either set *VALUE, or if
21564    the value does not fit in *VALUE, set *BYTES - either already
21565    allocated on the objfile obstack, or newly allocated on OBSTACK,
21566    or, set *BATON, if we translated the constant to a location
21567    expression.  */
21568
21569 static void
21570 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21571                          const char *name, struct obstack *obstack,
21572                          struct dwarf2_cu *cu,
21573                          LONGEST *value, const gdb_byte **bytes,
21574                          struct dwarf2_locexpr_baton **baton)
21575 {
21576   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21577   struct comp_unit_head *cu_header = &cu->header;
21578   struct dwarf_block *blk;
21579   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21580                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21581
21582   *value = 0;
21583   *bytes = NULL;
21584   *baton = NULL;
21585
21586   switch (attr->form)
21587     {
21588     case DW_FORM_addr:
21589     case DW_FORM_addrx:
21590     case DW_FORM_GNU_addr_index:
21591       {
21592         gdb_byte *data;
21593
21594         if (TYPE_LENGTH (type) != cu_header->addr_size)
21595           dwarf2_const_value_length_mismatch_complaint (name,
21596                                                         cu_header->addr_size,
21597                                                         TYPE_LENGTH (type));
21598         /* Symbols of this form are reasonably rare, so we just
21599            piggyback on the existing location code rather than writing
21600            a new implementation of symbol_computed_ops.  */
21601         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21602         (*baton)->per_cu = cu->per_cu;
21603         gdb_assert ((*baton)->per_cu);
21604
21605         (*baton)->size = 2 + cu_header->addr_size;
21606         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21607         (*baton)->data = data;
21608
21609         data[0] = DW_OP_addr;
21610         store_unsigned_integer (&data[1], cu_header->addr_size,
21611                                 byte_order, DW_ADDR (attr));
21612         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21613       }
21614       break;
21615     case DW_FORM_string:
21616     case DW_FORM_strp:
21617     case DW_FORM_strx:
21618     case DW_FORM_GNU_str_index:
21619     case DW_FORM_GNU_strp_alt:
21620       /* DW_STRING is already allocated on the objfile obstack, point
21621          directly to it.  */
21622       *bytes = (const gdb_byte *) DW_STRING (attr);
21623       break;
21624     case DW_FORM_block1:
21625     case DW_FORM_block2:
21626     case DW_FORM_block4:
21627     case DW_FORM_block:
21628     case DW_FORM_exprloc:
21629     case DW_FORM_data16:
21630       blk = DW_BLOCK (attr);
21631       if (TYPE_LENGTH (type) != blk->size)
21632         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21633                                                       TYPE_LENGTH (type));
21634       *bytes = blk->data;
21635       break;
21636
21637       /* The DW_AT_const_value attributes are supposed to carry the
21638          symbol's value "represented as it would be on the target
21639          architecture."  By the time we get here, it's already been
21640          converted to host endianness, so we just need to sign- or
21641          zero-extend it as appropriate.  */
21642     case DW_FORM_data1:
21643       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21644       break;
21645     case DW_FORM_data2:
21646       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21647       break;
21648     case DW_FORM_data4:
21649       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21650       break;
21651     case DW_FORM_data8:
21652       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21653       break;
21654
21655     case DW_FORM_sdata:
21656     case DW_FORM_implicit_const:
21657       *value = DW_SND (attr);
21658       break;
21659
21660     case DW_FORM_udata:
21661       *value = DW_UNSND (attr);
21662       break;
21663
21664     default:
21665       complaint (_("unsupported const value attribute form: '%s'"),
21666                  dwarf_form_name (attr->form));
21667       *value = 0;
21668       break;
21669     }
21670 }
21671
21672
21673 /* Copy constant value from an attribute to a symbol.  */
21674
21675 static void
21676 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21677                     struct dwarf2_cu *cu)
21678 {
21679   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21680   LONGEST value;
21681   const gdb_byte *bytes;
21682   struct dwarf2_locexpr_baton *baton;
21683
21684   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21685                            sym->print_name (),
21686                            &objfile->objfile_obstack, cu,
21687                            &value, &bytes, &baton);
21688
21689   if (baton != NULL)
21690     {
21691       SYMBOL_LOCATION_BATON (sym) = baton;
21692       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21693     }
21694   else if (bytes != NULL)
21695      {
21696       SYMBOL_VALUE_BYTES (sym) = bytes;
21697       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21698     }
21699   else
21700     {
21701       SYMBOL_VALUE (sym) = value;
21702       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21703     }
21704 }
21705
21706 /* Return the type of the die in question using its DW_AT_type attribute.  */
21707
21708 static struct type *
21709 die_type (struct die_info *die, struct dwarf2_cu *cu)
21710 {
21711   struct attribute *type_attr;
21712
21713   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21714   if (!type_attr)
21715     {
21716       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21717       /* A missing DW_AT_type represents a void type.  */
21718       return objfile_type (objfile)->builtin_void;
21719     }
21720
21721   return lookup_die_type (die, type_attr, cu);
21722 }
21723
21724 /* True iff CU's producer generates GNAT Ada auxiliary information
21725    that allows to find parallel types through that information instead
21726    of having to do expensive parallel lookups by type name.  */
21727
21728 static int
21729 need_gnat_info (struct dwarf2_cu *cu)
21730 {
21731   /* Assume that the Ada compiler was GNAT, which always produces
21732      the auxiliary information.  */
21733   return (cu->language == language_ada);
21734 }
21735
21736 /* Return the auxiliary type of the die in question using its
21737    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21738    attribute is not present.  */
21739
21740 static struct type *
21741 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21742 {
21743   struct attribute *type_attr;
21744
21745   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21746   if (!type_attr)
21747     return NULL;
21748
21749   return lookup_die_type (die, type_attr, cu);
21750 }
21751
21752 /* If DIE has a descriptive_type attribute, then set the TYPE's
21753    descriptive type accordingly.  */
21754
21755 static void
21756 set_descriptive_type (struct type *type, struct die_info *die,
21757                       struct dwarf2_cu *cu)
21758 {
21759   struct type *descriptive_type = die_descriptive_type (die, cu);
21760
21761   if (descriptive_type)
21762     {
21763       ALLOCATE_GNAT_AUX_TYPE (type);
21764       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21765     }
21766 }
21767
21768 /* Return the containing type of the die in question using its
21769    DW_AT_containing_type attribute.  */
21770
21771 static struct type *
21772 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21773 {
21774   struct attribute *type_attr;
21775   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21776
21777   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21778   if (!type_attr)
21779     error (_("Dwarf Error: Problem turning containing type into gdb type "
21780              "[in module %s]"), objfile_name (objfile));
21781
21782   return lookup_die_type (die, type_attr, cu);
21783 }
21784
21785 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21786
21787 static struct type *
21788 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21789 {
21790   struct dwarf2_per_objfile *dwarf2_per_objfile
21791     = cu->per_cu->dwarf2_per_objfile;
21792   struct objfile *objfile = dwarf2_per_objfile->objfile;
21793   char *saved;
21794
21795   std::string message
21796     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21797                      objfile_name (objfile),
21798                      sect_offset_str (cu->header.sect_off),
21799                      sect_offset_str (die->sect_off));
21800   saved = obstack_strdup (&objfile->objfile_obstack, message);
21801
21802   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21803 }
21804
21805 /* Look up the type of DIE in CU using its type attribute ATTR.
21806    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21807    DW_AT_containing_type.
21808    If there is no type substitute an error marker.  */
21809
21810 static struct type *
21811 lookup_die_type (struct die_info *die, const struct attribute *attr,
21812                  struct dwarf2_cu *cu)
21813 {
21814   struct dwarf2_per_objfile *dwarf2_per_objfile
21815     = cu->per_cu->dwarf2_per_objfile;
21816   struct objfile *objfile = dwarf2_per_objfile->objfile;
21817   struct type *this_type;
21818
21819   gdb_assert (attr->name == DW_AT_type
21820               || attr->name == DW_AT_GNAT_descriptive_type
21821               || attr->name == DW_AT_containing_type);
21822
21823   /* First see if we have it cached.  */
21824
21825   if (attr->form == DW_FORM_GNU_ref_alt)
21826     {
21827       struct dwarf2_per_cu_data *per_cu;
21828       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21829
21830       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
21831                                                  dwarf2_per_objfile);
21832       this_type = get_die_type_at_offset (sect_off, per_cu);
21833     }
21834   else if (attr->form_is_ref ())
21835     {
21836       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21837
21838       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
21839     }
21840   else if (attr->form == DW_FORM_ref_sig8)
21841     {
21842       ULONGEST signature = DW_SIGNATURE (attr);
21843
21844       return get_signatured_type (die, signature, cu);
21845     }
21846   else
21847     {
21848       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
21849                    " at %s [in module %s]"),
21850                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
21851                  objfile_name (objfile));
21852       return build_error_marker_type (cu, die);
21853     }
21854
21855   /* If not cached we need to read it in.  */
21856
21857   if (this_type == NULL)
21858     {
21859       struct die_info *type_die = NULL;
21860       struct dwarf2_cu *type_cu = cu;
21861
21862       if (attr->form_is_ref ())
21863         type_die = follow_die_ref (die, attr, &type_cu);
21864       if (type_die == NULL)
21865         return build_error_marker_type (cu, die);
21866       /* If we find the type now, it's probably because the type came
21867          from an inter-CU reference and the type's CU got expanded before
21868          ours.  */
21869       this_type = read_type_die (type_die, type_cu);
21870     }
21871
21872   /* If we still don't have a type use an error marker.  */
21873
21874   if (this_type == NULL)
21875     return build_error_marker_type (cu, die);
21876
21877   return this_type;
21878 }
21879
21880 /* Return the type in DIE, CU.
21881    Returns NULL for invalid types.
21882
21883    This first does a lookup in die_type_hash,
21884    and only reads the die in if necessary.
21885
21886    NOTE: This can be called when reading in partial or full symbols.  */
21887
21888 static struct type *
21889 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
21890 {
21891   struct type *this_type;
21892
21893   this_type = get_die_type (die, cu);
21894   if (this_type)
21895     return this_type;
21896
21897   return read_type_die_1 (die, cu);
21898 }
21899
21900 /* Read the type in DIE, CU.
21901    Returns NULL for invalid types.  */
21902
21903 static struct type *
21904 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
21905 {
21906   struct type *this_type = NULL;
21907
21908   switch (die->tag)
21909     {
21910     case DW_TAG_class_type:
21911     case DW_TAG_interface_type:
21912     case DW_TAG_structure_type:
21913     case DW_TAG_union_type:
21914       this_type = read_structure_type (die, cu);
21915       break;
21916     case DW_TAG_enumeration_type:
21917       this_type = read_enumeration_type (die, cu);
21918       break;
21919     case DW_TAG_subprogram:
21920     case DW_TAG_subroutine_type:
21921     case DW_TAG_inlined_subroutine:
21922       this_type = read_subroutine_type (die, cu);
21923       break;
21924     case DW_TAG_array_type:
21925       this_type = read_array_type (die, cu);
21926       break;
21927     case DW_TAG_set_type:
21928       this_type = read_set_type (die, cu);
21929       break;
21930     case DW_TAG_pointer_type:
21931       this_type = read_tag_pointer_type (die, cu);
21932       break;
21933     case DW_TAG_ptr_to_member_type:
21934       this_type = read_tag_ptr_to_member_type (die, cu);
21935       break;
21936     case DW_TAG_reference_type:
21937       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
21938       break;
21939     case DW_TAG_rvalue_reference_type:
21940       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
21941       break;
21942     case DW_TAG_const_type:
21943       this_type = read_tag_const_type (die, cu);
21944       break;
21945     case DW_TAG_volatile_type:
21946       this_type = read_tag_volatile_type (die, cu);
21947       break;
21948     case DW_TAG_restrict_type:
21949       this_type = read_tag_restrict_type (die, cu);
21950       break;
21951     case DW_TAG_string_type:
21952       this_type = read_tag_string_type (die, cu);
21953       break;
21954     case DW_TAG_typedef:
21955       this_type = read_typedef (die, cu);
21956       break;
21957     case DW_TAG_subrange_type:
21958       this_type = read_subrange_type (die, cu);
21959       break;
21960     case DW_TAG_base_type:
21961       this_type = read_base_type (die, cu);
21962       break;
21963     case DW_TAG_unspecified_type:
21964       this_type = read_unspecified_type (die, cu);
21965       break;
21966     case DW_TAG_namespace:
21967       this_type = read_namespace_type (die, cu);
21968       break;
21969     case DW_TAG_module:
21970       this_type = read_module_type (die, cu);
21971       break;
21972     case DW_TAG_atomic_type:
21973       this_type = read_tag_atomic_type (die, cu);
21974       break;
21975     default:
21976       complaint (_("unexpected tag in read_type_die: '%s'"),
21977                  dwarf_tag_name (die->tag));
21978       break;
21979     }
21980
21981   return this_type;
21982 }
21983
21984 /* See if we can figure out if the class lives in a namespace.  We do
21985    this by looking for a member function; its demangled name will
21986    contain namespace info, if there is any.
21987    Return the computed name or NULL.
21988    Space for the result is allocated on the objfile's obstack.
21989    This is the full-die version of guess_partial_die_structure_name.
21990    In this case we know DIE has no useful parent.  */
21991
21992 static const char *
21993 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
21994 {
21995   struct die_info *spec_die;
21996   struct dwarf2_cu *spec_cu;
21997   struct die_info *child;
21998   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21999
22000   spec_cu = cu;
22001   spec_die = die_specification (die, &spec_cu);
22002   if (spec_die != NULL)
22003     {
22004       die = spec_die;
22005       cu = spec_cu;
22006     }
22007
22008   for (child = die->child;
22009        child != NULL;
22010        child = child->sibling)
22011     {
22012       if (child->tag == DW_TAG_subprogram)
22013         {
22014           const char *linkage_name = dw2_linkage_name (child, cu);
22015
22016           if (linkage_name != NULL)
22017             {
22018               gdb::unique_xmalloc_ptr<char> actual_name
22019                 (language_class_name_from_physname (cu->language_defn,
22020                                                     linkage_name));
22021               const char *name = NULL;
22022
22023               if (actual_name != NULL)
22024                 {
22025                   const char *die_name = dwarf2_name (die, cu);
22026
22027                   if (die_name != NULL
22028                       && strcmp (die_name, actual_name.get ()) != 0)
22029                     {
22030                       /* Strip off the class name from the full name.
22031                          We want the prefix.  */
22032                       int die_name_len = strlen (die_name);
22033                       int actual_name_len = strlen (actual_name.get ());
22034                       const char *ptr = actual_name.get ();
22035
22036                       /* Test for '::' as a sanity check.  */
22037                       if (actual_name_len > die_name_len + 2
22038                           && ptr[actual_name_len - die_name_len - 1] == ':')
22039                         name = obstack_strndup (
22040                           &objfile->per_bfd->storage_obstack,
22041                           ptr, actual_name_len - die_name_len - 2);
22042                     }
22043                 }
22044               return name;
22045             }
22046         }
22047     }
22048
22049   return NULL;
22050 }
22051
22052 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22053    prefix part in such case.  See
22054    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22055
22056 static const char *
22057 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22058 {
22059   struct attribute *attr;
22060   const char *base;
22061
22062   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22063       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22064     return NULL;
22065
22066   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22067     return NULL;
22068
22069   attr = dw2_linkage_name_attr (die, cu);
22070   if (attr == NULL || DW_STRING (attr) == NULL)
22071     return NULL;
22072
22073   /* dwarf2_name had to be already called.  */
22074   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22075
22076   /* Strip the base name, keep any leading namespaces/classes.  */
22077   base = strrchr (DW_STRING (attr), ':');
22078   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22079     return "";
22080
22081   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22082   return obstack_strndup (&objfile->per_bfd->storage_obstack,
22083                           DW_STRING (attr),
22084                           &base[-1] - DW_STRING (attr));
22085 }
22086
22087 /* Return the name of the namespace/class that DIE is defined within,
22088    or "" if we can't tell.  The caller should not xfree the result.
22089
22090    For example, if we're within the method foo() in the following
22091    code:
22092
22093    namespace N {
22094      class C {
22095        void foo () {
22096        }
22097      };
22098    }
22099
22100    then determine_prefix on foo's die will return "N::C".  */
22101
22102 static const char *
22103 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22104 {
22105   struct dwarf2_per_objfile *dwarf2_per_objfile
22106     = cu->per_cu->dwarf2_per_objfile;
22107   struct die_info *parent, *spec_die;
22108   struct dwarf2_cu *spec_cu;
22109   struct type *parent_type;
22110   const char *retval;
22111
22112   if (cu->language != language_cplus
22113       && cu->language != language_fortran && cu->language != language_d
22114       && cu->language != language_rust)
22115     return "";
22116
22117   retval = anonymous_struct_prefix (die, cu);
22118   if (retval)
22119     return retval;
22120
22121   /* We have to be careful in the presence of DW_AT_specification.
22122      For example, with GCC 3.4, given the code
22123
22124      namespace N {
22125        void foo() {
22126          // Definition of N::foo.
22127        }
22128      }
22129
22130      then we'll have a tree of DIEs like this:
22131
22132      1: DW_TAG_compile_unit
22133        2: DW_TAG_namespace        // N
22134          3: DW_TAG_subprogram     // declaration of N::foo
22135        4: DW_TAG_subprogram       // definition of N::foo
22136             DW_AT_specification   // refers to die #3
22137
22138      Thus, when processing die #4, we have to pretend that we're in
22139      the context of its DW_AT_specification, namely the contex of die
22140      #3.  */
22141   spec_cu = cu;
22142   spec_die = die_specification (die, &spec_cu);
22143   if (spec_die == NULL)
22144     parent = die->parent;
22145   else
22146     {
22147       parent = spec_die->parent;
22148       cu = spec_cu;
22149     }
22150
22151   if (parent == NULL)
22152     return "";
22153   else if (parent->building_fullname)
22154     {
22155       const char *name;
22156       const char *parent_name;
22157
22158       /* It has been seen on RealView 2.2 built binaries,
22159          DW_TAG_template_type_param types actually _defined_ as
22160          children of the parent class:
22161
22162          enum E {};
22163          template class <class Enum> Class{};
22164          Class<enum E> class_e;
22165
22166          1: DW_TAG_class_type (Class)
22167            2: DW_TAG_enumeration_type (E)
22168              3: DW_TAG_enumerator (enum1:0)
22169              3: DW_TAG_enumerator (enum2:1)
22170              ...
22171            2: DW_TAG_template_type_param
22172               DW_AT_type  DW_FORM_ref_udata (E)
22173
22174          Besides being broken debug info, it can put GDB into an
22175          infinite loop.  Consider:
22176
22177          When we're building the full name for Class<E>, we'll start
22178          at Class, and go look over its template type parameters,
22179          finding E.  We'll then try to build the full name of E, and
22180          reach here.  We're now trying to build the full name of E,
22181          and look over the parent DIE for containing scope.  In the
22182          broken case, if we followed the parent DIE of E, we'd again
22183          find Class, and once again go look at its template type
22184          arguments, etc., etc.  Simply don't consider such parent die
22185          as source-level parent of this die (it can't be, the language
22186          doesn't allow it), and break the loop here.  */
22187       name = dwarf2_name (die, cu);
22188       parent_name = dwarf2_name (parent, cu);
22189       complaint (_("template param type '%s' defined within parent '%s'"),
22190                  name ? name : "<unknown>",
22191                  parent_name ? parent_name : "<unknown>");
22192       return "";
22193     }
22194   else
22195     switch (parent->tag)
22196       {
22197       case DW_TAG_namespace:
22198         parent_type = read_type_die (parent, cu);
22199         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22200            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22201            Work around this problem here.  */
22202         if (cu->language == language_cplus
22203             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22204           return "";
22205         /* We give a name to even anonymous namespaces.  */
22206         return TYPE_NAME (parent_type);
22207       case DW_TAG_class_type:
22208       case DW_TAG_interface_type:
22209       case DW_TAG_structure_type:
22210       case DW_TAG_union_type:
22211       case DW_TAG_module:
22212         parent_type = read_type_die (parent, cu);
22213         if (TYPE_NAME (parent_type) != NULL)
22214           return TYPE_NAME (parent_type);
22215         else
22216           /* An anonymous structure is only allowed non-static data
22217              members; no typedefs, no member functions, et cetera.
22218              So it does not need a prefix.  */
22219           return "";
22220       case DW_TAG_compile_unit:
22221       case DW_TAG_partial_unit:
22222         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22223         if (cu->language == language_cplus
22224             && !dwarf2_per_objfile->types.empty ()
22225             && die->child != NULL
22226             && (die->tag == DW_TAG_class_type
22227                 || die->tag == DW_TAG_structure_type
22228                 || die->tag == DW_TAG_union_type))
22229           {
22230             const char *name = guess_full_die_structure_name (die, cu);
22231             if (name != NULL)
22232               return name;
22233           }
22234         return "";
22235       case DW_TAG_subprogram:
22236         /* Nested subroutines in Fortran get a prefix with the name
22237            of the parent's subroutine.  */
22238         if (cu->language == language_fortran)
22239           {
22240             if ((die->tag ==  DW_TAG_subprogram)
22241                 && (dwarf2_name (parent, cu) != NULL))
22242               return dwarf2_name (parent, cu);
22243           }
22244         return determine_prefix (parent, cu);
22245       case DW_TAG_enumeration_type:
22246         parent_type = read_type_die (parent, cu);
22247         if (TYPE_DECLARED_CLASS (parent_type))
22248           {
22249             if (TYPE_NAME (parent_type) != NULL)
22250               return TYPE_NAME (parent_type);
22251             return "";
22252           }
22253         /* Fall through.  */
22254       default:
22255         return determine_prefix (parent, cu);
22256       }
22257 }
22258
22259 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22260    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22261    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22262    an obconcat, otherwise allocate storage for the result.  The CU argument is
22263    used to determine the language and hence, the appropriate separator.  */
22264
22265 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22266
22267 static char *
22268 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22269                  int physname, struct dwarf2_cu *cu)
22270 {
22271   const char *lead = "";
22272   const char *sep;
22273
22274   if (suffix == NULL || suffix[0] == '\0'
22275       || prefix == NULL || prefix[0] == '\0')
22276     sep = "";
22277   else if (cu->language == language_d)
22278     {
22279       /* For D, the 'main' function could be defined in any module, but it
22280          should never be prefixed.  */
22281       if (strcmp (suffix, "D main") == 0)
22282         {
22283           prefix = "";
22284           sep = "";
22285         }
22286       else
22287         sep = ".";
22288     }
22289   else if (cu->language == language_fortran && physname)
22290     {
22291       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22292          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22293
22294       lead = "__";
22295       sep = "_MOD_";
22296     }
22297   else
22298     sep = "::";
22299
22300   if (prefix == NULL)
22301     prefix = "";
22302   if (suffix == NULL)
22303     suffix = "";
22304
22305   if (obs == NULL)
22306     {
22307       char *retval
22308         = ((char *)
22309            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22310
22311       strcpy (retval, lead);
22312       strcat (retval, prefix);
22313       strcat (retval, sep);
22314       strcat (retval, suffix);
22315       return retval;
22316     }
22317   else
22318     {
22319       /* We have an obstack.  */
22320       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22321     }
22322 }
22323
22324 /* Return sibling of die, NULL if no sibling.  */
22325
22326 static struct die_info *
22327 sibling_die (struct die_info *die)
22328 {
22329   return die->sibling;
22330 }
22331
22332 /* Get name of a die, return NULL if not found.  */
22333
22334 static const char *
22335 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22336                           struct obstack *obstack)
22337 {
22338   if (name && cu->language == language_cplus)
22339     {
22340       std::string canon_name = cp_canonicalize_string (name);
22341
22342       if (!canon_name.empty ())
22343         {
22344           if (canon_name != name)
22345             name = obstack_strdup (obstack, canon_name);
22346         }
22347     }
22348
22349   return name;
22350 }
22351
22352 /* Get name of a die, return NULL if not found.
22353    Anonymous namespaces are converted to their magic string.  */
22354
22355 static const char *
22356 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22357 {
22358   struct attribute *attr;
22359   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22360
22361   attr = dwarf2_attr (die, DW_AT_name, cu);
22362   if ((!attr || !DW_STRING (attr))
22363       && die->tag != DW_TAG_namespace
22364       && die->tag != DW_TAG_class_type
22365       && die->tag != DW_TAG_interface_type
22366       && die->tag != DW_TAG_structure_type
22367       && die->tag != DW_TAG_union_type)
22368     return NULL;
22369
22370   switch (die->tag)
22371     {
22372     case DW_TAG_compile_unit:
22373     case DW_TAG_partial_unit:
22374       /* Compilation units have a DW_AT_name that is a filename, not
22375          a source language identifier.  */
22376     case DW_TAG_enumeration_type:
22377     case DW_TAG_enumerator:
22378       /* These tags always have simple identifiers already; no need
22379          to canonicalize them.  */
22380       return DW_STRING (attr);
22381
22382     case DW_TAG_namespace:
22383       if (attr != NULL && DW_STRING (attr) != NULL)
22384         return DW_STRING (attr);
22385       return CP_ANONYMOUS_NAMESPACE_STR;
22386
22387     case DW_TAG_class_type:
22388     case DW_TAG_interface_type:
22389     case DW_TAG_structure_type:
22390     case DW_TAG_union_type:
22391       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22392          structures or unions.  These were of the form "._%d" in GCC 4.1,
22393          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22394          and GCC 4.4.  We work around this problem by ignoring these.  */
22395       if (attr && DW_STRING (attr)
22396           && (startswith (DW_STRING (attr), "._")
22397               || startswith (DW_STRING (attr), "<anonymous")))
22398         return NULL;
22399
22400       /* GCC might emit a nameless typedef that has a linkage name.  See
22401          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22402       if (!attr || DW_STRING (attr) == NULL)
22403         {
22404           attr = dw2_linkage_name_attr (die, cu);
22405           if (attr == NULL || DW_STRING (attr) == NULL)
22406             return NULL;
22407
22408           /* Avoid demangling DW_STRING (attr) the second time on a second
22409              call for the same DIE.  */
22410           if (!DW_STRING_IS_CANONICAL (attr))
22411             {
22412               gdb::unique_xmalloc_ptr<char> demangled
22413                 (gdb_demangle (DW_STRING (attr), DMGL_TYPES));
22414
22415               const char *base;
22416
22417               /* FIXME: we already did this for the partial symbol... */
22418               DW_STRING (attr)
22419                 = obstack_strdup (&objfile->per_bfd->storage_obstack,
22420                                   demangled.get ());
22421               DW_STRING_IS_CANONICAL (attr) = 1;
22422
22423               /* Strip any leading namespaces/classes, keep only the base name.
22424                  DW_AT_name for named DIEs does not contain the prefixes.  */
22425               base = strrchr (DW_STRING (attr), ':');
22426               if (base && base > DW_STRING (attr) && base[-1] == ':')
22427                 return &base[1];
22428               else
22429                 return DW_STRING (attr);
22430             }
22431         }
22432       break;
22433
22434     default:
22435       break;
22436     }
22437
22438   if (!DW_STRING_IS_CANONICAL (attr))
22439     {
22440       DW_STRING (attr)
22441         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22442                                     &objfile->per_bfd->storage_obstack);
22443       DW_STRING_IS_CANONICAL (attr) = 1;
22444     }
22445   return DW_STRING (attr);
22446 }
22447
22448 /* Return the die that this die in an extension of, or NULL if there
22449    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22450    containing the return value on output.  */
22451
22452 static struct die_info *
22453 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22454 {
22455   struct attribute *attr;
22456
22457   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22458   if (attr == NULL)
22459     return NULL;
22460
22461   return follow_die_ref (die, attr, ext_cu);
22462 }
22463
22464 /* A convenience function that returns an "unknown" DWARF name,
22465    including the value of V.  STR is the name of the entity being
22466    printed, e.g., "TAG".  */
22467
22468 static const char *
22469 dwarf_unknown (const char *str, unsigned v)
22470 {
22471   char *cell = get_print_cell ();
22472   xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
22473   return cell;
22474 }
22475
22476 /* Convert a DIE tag into its string name.  */
22477
22478 static const char *
22479 dwarf_tag_name (unsigned tag)
22480 {
22481   const char *name = get_DW_TAG_name (tag);
22482
22483   if (name == NULL)
22484     return dwarf_unknown ("TAG", tag);
22485
22486   return name;
22487 }
22488
22489 /* Convert a DWARF attribute code into its string name.  */
22490
22491 static const char *
22492 dwarf_attr_name (unsigned attr)
22493 {
22494   const char *name;
22495
22496 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22497   if (attr == DW_AT_MIPS_fde)
22498     return "DW_AT_MIPS_fde";
22499 #else
22500   if (attr == DW_AT_HP_block_index)
22501     return "DW_AT_HP_block_index";
22502 #endif
22503
22504   name = get_DW_AT_name (attr);
22505
22506   if (name == NULL)
22507     return dwarf_unknown ("AT", attr);
22508
22509   return name;
22510 }
22511
22512 /* Convert a unit type to corresponding DW_UT name.  */
22513
22514 static const char *
22515 dwarf_unit_type_name (int unit_type) {
22516   switch (unit_type)
22517     {
22518       case 0x01:
22519         return "DW_UT_compile (0x01)";
22520       case 0x02:
22521         return "DW_UT_type (0x02)";
22522       case 0x03:
22523         return "DW_UT_partial (0x03)";
22524       case 0x04:
22525         return "DW_UT_skeleton (0x04)";
22526       case 0x05:
22527         return "DW_UT_split_compile (0x05)";
22528       case 0x06:
22529         return "DW_UT_split_type (0x06)";
22530       case 0x80:
22531         return "DW_UT_lo_user (0x80)";
22532       case 0xff:
22533         return "DW_UT_hi_user (0xff)";
22534       default:
22535         return nullptr;
22536     }
22537 }
22538
22539 /* Convert a DWARF value form code into its string name.  */
22540
22541 static const char *
22542 dwarf_form_name (unsigned form)
22543 {
22544   const char *name = get_DW_FORM_name (form);
22545
22546   if (name == NULL)
22547     return dwarf_unknown ("FORM", form);
22548
22549   return name;
22550 }
22551
22552 static const char *
22553 dwarf_bool_name (unsigned mybool)
22554 {
22555   if (mybool)
22556     return "TRUE";
22557   else
22558     return "FALSE";
22559 }
22560
22561 /* Convert a DWARF type code into its string name.  */
22562
22563 static const char *
22564 dwarf_type_encoding_name (unsigned enc)
22565 {
22566   const char *name = get_DW_ATE_name (enc);
22567
22568   if (name == NULL)
22569     return dwarf_unknown ("ATE", enc);
22570
22571   return name;
22572 }
22573
22574 static void
22575 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22576 {
22577   unsigned int i;
22578
22579   print_spaces (indent, f);
22580   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22581                       dwarf_tag_name (die->tag), die->abbrev,
22582                       sect_offset_str (die->sect_off));
22583
22584   if (die->parent != NULL)
22585     {
22586       print_spaces (indent, f);
22587       fprintf_unfiltered (f, "  parent at offset: %s\n",
22588                           sect_offset_str (die->parent->sect_off));
22589     }
22590
22591   print_spaces (indent, f);
22592   fprintf_unfiltered (f, "  has children: %s\n",
22593            dwarf_bool_name (die->child != NULL));
22594
22595   print_spaces (indent, f);
22596   fprintf_unfiltered (f, "  attributes:\n");
22597
22598   for (i = 0; i < die->num_attrs; ++i)
22599     {
22600       print_spaces (indent, f);
22601       fprintf_unfiltered (f, "    %s (%s) ",
22602                dwarf_attr_name (die->attrs[i].name),
22603                dwarf_form_name (die->attrs[i].form));
22604
22605       switch (die->attrs[i].form)
22606         {
22607         case DW_FORM_addr:
22608         case DW_FORM_addrx:
22609         case DW_FORM_GNU_addr_index:
22610           fprintf_unfiltered (f, "address: ");
22611           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22612           break;
22613         case DW_FORM_block2:
22614         case DW_FORM_block4:
22615         case DW_FORM_block:
22616         case DW_FORM_block1:
22617           fprintf_unfiltered (f, "block: size %s",
22618                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22619           break;
22620         case DW_FORM_exprloc:
22621           fprintf_unfiltered (f, "expression: size %s",
22622                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22623           break;
22624         case DW_FORM_data16:
22625           fprintf_unfiltered (f, "constant of 16 bytes");
22626           break;
22627         case DW_FORM_ref_addr:
22628           fprintf_unfiltered (f, "ref address: ");
22629           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22630           break;
22631         case DW_FORM_GNU_ref_alt:
22632           fprintf_unfiltered (f, "alt ref address: ");
22633           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22634           break;
22635         case DW_FORM_ref1:
22636         case DW_FORM_ref2:
22637         case DW_FORM_ref4:
22638         case DW_FORM_ref8:
22639         case DW_FORM_ref_udata:
22640           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22641                               (long) (DW_UNSND (&die->attrs[i])));
22642           break;
22643         case DW_FORM_data1:
22644         case DW_FORM_data2:
22645         case DW_FORM_data4:
22646         case DW_FORM_data8:
22647         case DW_FORM_udata:
22648         case DW_FORM_sdata:
22649           fprintf_unfiltered (f, "constant: %s",
22650                               pulongest (DW_UNSND (&die->attrs[i])));
22651           break;
22652         case DW_FORM_sec_offset:
22653           fprintf_unfiltered (f, "section offset: %s",
22654                               pulongest (DW_UNSND (&die->attrs[i])));
22655           break;
22656         case DW_FORM_ref_sig8:
22657           fprintf_unfiltered (f, "signature: %s",
22658                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22659           break;
22660         case DW_FORM_string:
22661         case DW_FORM_strp:
22662         case DW_FORM_line_strp:
22663         case DW_FORM_strx:
22664         case DW_FORM_GNU_str_index:
22665         case DW_FORM_GNU_strp_alt:
22666           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22667                    DW_STRING (&die->attrs[i])
22668                    ? DW_STRING (&die->attrs[i]) : "",
22669                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22670           break;
22671         case DW_FORM_flag:
22672           if (DW_UNSND (&die->attrs[i]))
22673             fprintf_unfiltered (f, "flag: TRUE");
22674           else
22675             fprintf_unfiltered (f, "flag: FALSE");
22676           break;
22677         case DW_FORM_flag_present:
22678           fprintf_unfiltered (f, "flag: TRUE");
22679           break;
22680         case DW_FORM_indirect:
22681           /* The reader will have reduced the indirect form to
22682              the "base form" so this form should not occur.  */
22683           fprintf_unfiltered (f,
22684                               "unexpected attribute form: DW_FORM_indirect");
22685           break;
22686         case DW_FORM_implicit_const:
22687           fprintf_unfiltered (f, "constant: %s",
22688                               plongest (DW_SND (&die->attrs[i])));
22689           break;
22690         default:
22691           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22692                    die->attrs[i].form);
22693           break;
22694         }
22695       fprintf_unfiltered (f, "\n");
22696     }
22697 }
22698
22699 static void
22700 dump_die_for_error (struct die_info *die)
22701 {
22702   dump_die_shallow (gdb_stderr, 0, die);
22703 }
22704
22705 static void
22706 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22707 {
22708   int indent = level * 4;
22709
22710   gdb_assert (die != NULL);
22711
22712   if (level >= max_level)
22713     return;
22714
22715   dump_die_shallow (f, indent, die);
22716
22717   if (die->child != NULL)
22718     {
22719       print_spaces (indent, f);
22720       fprintf_unfiltered (f, "  Children:");
22721       if (level + 1 < max_level)
22722         {
22723           fprintf_unfiltered (f, "\n");
22724           dump_die_1 (f, level + 1, max_level, die->child);
22725         }
22726       else
22727         {
22728           fprintf_unfiltered (f,
22729                               " [not printed, max nesting level reached]\n");
22730         }
22731     }
22732
22733   if (die->sibling != NULL && level > 0)
22734     {
22735       dump_die_1 (f, level, max_level, die->sibling);
22736     }
22737 }
22738
22739 /* This is called from the pdie macro in gdbinit.in.
22740    It's not static so gcc will keep a copy callable from gdb.  */
22741
22742 void
22743 dump_die (struct die_info *die, int max_level)
22744 {
22745   dump_die_1 (gdb_stdlog, 0, max_level, die);
22746 }
22747
22748 static void
22749 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22750 {
22751   void **slot;
22752
22753   slot = htab_find_slot_with_hash (cu->die_hash, die,
22754                                    to_underlying (die->sect_off),
22755                                    INSERT);
22756
22757   *slot = die;
22758 }
22759
22760 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22761    required kind.  */
22762
22763 static sect_offset
22764 dwarf2_get_ref_die_offset (const struct attribute *attr)
22765 {
22766   if (attr->form_is_ref ())
22767     return (sect_offset) DW_UNSND (attr);
22768
22769   complaint (_("unsupported die ref attribute form: '%s'"),
22770              dwarf_form_name (attr->form));
22771   return {};
22772 }
22773
22774 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22775  * the value held by the attribute is not constant.  */
22776
22777 static LONGEST
22778 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22779 {
22780   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22781     return DW_SND (attr);
22782   else if (attr->form == DW_FORM_udata
22783            || attr->form == DW_FORM_data1
22784            || attr->form == DW_FORM_data2
22785            || attr->form == DW_FORM_data4
22786            || attr->form == DW_FORM_data8)
22787     return DW_UNSND (attr);
22788   else
22789     {
22790       /* For DW_FORM_data16 see attribute::form_is_constant.  */
22791       complaint (_("Attribute value is not a constant (%s)"),
22792                  dwarf_form_name (attr->form));
22793       return default_value;
22794     }
22795 }
22796
22797 /* Follow reference or signature attribute ATTR of SRC_DIE.
22798    On entry *REF_CU is the CU of SRC_DIE.
22799    On exit *REF_CU is the CU of the result.  */
22800
22801 static struct die_info *
22802 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22803                        struct dwarf2_cu **ref_cu)
22804 {
22805   struct die_info *die;
22806
22807   if (attr->form_is_ref ())
22808     die = follow_die_ref (src_die, attr, ref_cu);
22809   else if (attr->form == DW_FORM_ref_sig8)
22810     die = follow_die_sig (src_die, attr, ref_cu);
22811   else
22812     {
22813       dump_die_for_error (src_die);
22814       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22815              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22816     }
22817
22818   return die;
22819 }
22820
22821 /* Follow reference OFFSET.
22822    On entry *REF_CU is the CU of the source die referencing OFFSET.
22823    On exit *REF_CU is the CU of the result.
22824    Returns NULL if OFFSET is invalid.  */
22825
22826 static struct die_info *
22827 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22828                    struct dwarf2_cu **ref_cu)
22829 {
22830   struct die_info temp_die;
22831   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22832   struct dwarf2_per_objfile *dwarf2_per_objfile
22833     = cu->per_cu->dwarf2_per_objfile;
22834
22835   gdb_assert (cu->per_cu != NULL);
22836
22837   target_cu = cu;
22838
22839   if (cu->per_cu->is_debug_types)
22840     {
22841       /* .debug_types CUs cannot reference anything outside their CU.
22842          If they need to, they have to reference a signatured type via
22843          DW_FORM_ref_sig8.  */
22844       if (!offset_in_cu_p (&cu->header, sect_off))
22845         return NULL;
22846     }
22847   else if (offset_in_dwz != cu->per_cu->is_dwz
22848            || !offset_in_cu_p (&cu->header, sect_off))
22849     {
22850       struct dwarf2_per_cu_data *per_cu;
22851
22852       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22853                                                  dwarf2_per_objfile);
22854
22855       /* If necessary, add it to the queue and load its DIEs.  */
22856       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22857         load_full_comp_unit (per_cu, false, cu->language);
22858
22859       target_cu = per_cu->cu;
22860     }
22861   else if (cu->dies == NULL)
22862     {
22863       /* We're loading full DIEs during partial symbol reading.  */
22864       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22865       load_full_comp_unit (cu->per_cu, false, language_minimal);
22866     }
22867
22868   *ref_cu = target_cu;
22869   temp_die.sect_off = sect_off;
22870
22871   if (target_cu != cu)
22872     target_cu->ancestor = cu;
22873
22874   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22875                                                   &temp_die,
22876                                                   to_underlying (sect_off));
22877 }
22878
22879 /* Follow reference attribute ATTR of SRC_DIE.
22880    On entry *REF_CU is the CU of SRC_DIE.
22881    On exit *REF_CU is the CU of the result.  */
22882
22883 static struct die_info *
22884 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
22885                 struct dwarf2_cu **ref_cu)
22886 {
22887   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22888   struct dwarf2_cu *cu = *ref_cu;
22889   struct die_info *die;
22890
22891   die = follow_die_offset (sect_off,
22892                            (attr->form == DW_FORM_GNU_ref_alt
22893                             || cu->per_cu->is_dwz),
22894                            ref_cu);
22895   if (!die)
22896     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
22897            "at %s [in module %s]"),
22898            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
22899            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
22900
22901   return die;
22902 }
22903
22904 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
22905    Returned value is intended for DW_OP_call*.  Returned
22906    dwarf2_locexpr_baton->data has lifetime of
22907    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
22908
22909 struct dwarf2_locexpr_baton
22910 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
22911                                struct dwarf2_per_cu_data *per_cu,
22912                                CORE_ADDR (*get_frame_pc) (void *baton),
22913                                void *baton, bool resolve_abstract_p)
22914 {
22915   struct dwarf2_cu *cu;
22916   struct die_info *die;
22917   struct attribute *attr;
22918   struct dwarf2_locexpr_baton retval;
22919   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
22920   struct objfile *objfile = dwarf2_per_objfile->objfile;
22921
22922   if (per_cu->cu == NULL)
22923     load_cu (per_cu, false);
22924   cu = per_cu->cu;
22925   if (cu == NULL)
22926     {
22927       /* We shouldn't get here for a dummy CU, but don't crash on the user.
22928          Instead just throw an error, not much else we can do.  */
22929       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
22930              sect_offset_str (sect_off), objfile_name (objfile));
22931     }
22932
22933   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
22934   if (!die)
22935     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
22936            sect_offset_str (sect_off), objfile_name (objfile));
22937
22938   attr = dwarf2_attr (die, DW_AT_location, cu);
22939   if (!attr && resolve_abstract_p
22940       && (dwarf2_per_objfile->abstract_to_concrete.find (die->sect_off)
22941           != dwarf2_per_objfile->abstract_to_concrete.end ()))
22942     {
22943       CORE_ADDR pc = (*get_frame_pc) (baton);
22944       CORE_ADDR baseaddr = objfile->text_section_offset ();
22945       struct gdbarch *gdbarch = get_objfile_arch (objfile);
22946
22947       for (const auto &cand_off
22948              : dwarf2_per_objfile->abstract_to_concrete[die->sect_off])
22949         {
22950           struct dwarf2_cu *cand_cu = cu;
22951           struct die_info *cand
22952             = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
22953           if (!cand
22954               || !cand->parent
22955               || cand->parent->tag != DW_TAG_subprogram)
22956             continue;
22957
22958           CORE_ADDR pc_low, pc_high;
22959           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
22960           if (pc_low == ((CORE_ADDR) -1))
22961             continue;
22962           pc_low = gdbarch_adjust_dwarf2_addr (gdbarch, pc_low + baseaddr);
22963           pc_high = gdbarch_adjust_dwarf2_addr (gdbarch, pc_high + baseaddr);
22964           if (!(pc_low <= pc && pc < pc_high))
22965             continue;
22966
22967           die = cand;
22968           attr = dwarf2_attr (die, DW_AT_location, cu);
22969           break;
22970         }
22971     }
22972
22973   if (!attr)
22974     {
22975       /* DWARF: "If there is no such attribute, then there is no effect.".
22976          DATA is ignored if SIZE is 0.  */
22977
22978       retval.data = NULL;
22979       retval.size = 0;
22980     }
22981   else if (attr->form_is_section_offset ())
22982     {
22983       struct dwarf2_loclist_baton loclist_baton;
22984       CORE_ADDR pc = (*get_frame_pc) (baton);
22985       size_t size;
22986
22987       fill_in_loclist_baton (cu, &loclist_baton, attr);
22988
22989       retval.data = dwarf2_find_location_expression (&loclist_baton,
22990                                                      &size, pc);
22991       retval.size = size;
22992     }
22993   else
22994     {
22995       if (!attr->form_is_block ())
22996         error (_("Dwarf Error: DIE at %s referenced in module %s "
22997                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
22998                sect_offset_str (sect_off), objfile_name (objfile));
22999
23000       retval.data = DW_BLOCK (attr)->data;
23001       retval.size = DW_BLOCK (attr)->size;
23002     }
23003   retval.per_cu = cu->per_cu;
23004
23005   age_cached_comp_units (dwarf2_per_objfile);
23006
23007   return retval;
23008 }
23009
23010 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23011    offset.  */
23012
23013 struct dwarf2_locexpr_baton
23014 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23015                              struct dwarf2_per_cu_data *per_cu,
23016                              CORE_ADDR (*get_frame_pc) (void *baton),
23017                              void *baton)
23018 {
23019   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23020
23021   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23022 }
23023
23024 /* Write a constant of a given type as target-ordered bytes into
23025    OBSTACK.  */
23026
23027 static const gdb_byte *
23028 write_constant_as_bytes (struct obstack *obstack,
23029                          enum bfd_endian byte_order,
23030                          struct type *type,
23031                          ULONGEST value,
23032                          LONGEST *len)
23033 {
23034   gdb_byte *result;
23035
23036   *len = TYPE_LENGTH (type);
23037   result = (gdb_byte *) obstack_alloc (obstack, *len);
23038   store_unsigned_integer (result, *len, byte_order, value);
23039
23040   return result;
23041 }
23042
23043 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23044    pointer to the constant bytes and set LEN to the length of the
23045    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23046    does not have a DW_AT_const_value, return NULL.  */
23047
23048 const gdb_byte *
23049 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23050                              struct dwarf2_per_cu_data *per_cu,
23051                              struct obstack *obstack,
23052                              LONGEST *len)
23053 {
23054   struct dwarf2_cu *cu;
23055   struct die_info *die;
23056   struct attribute *attr;
23057   const gdb_byte *result = NULL;
23058   struct type *type;
23059   LONGEST value;
23060   enum bfd_endian byte_order;
23061   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23062
23063   if (per_cu->cu == NULL)
23064     load_cu (per_cu, false);
23065   cu = per_cu->cu;
23066   if (cu == NULL)
23067     {
23068       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23069          Instead just throw an error, not much else we can do.  */
23070       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23071              sect_offset_str (sect_off), objfile_name (objfile));
23072     }
23073
23074   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23075   if (!die)
23076     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23077            sect_offset_str (sect_off), objfile_name (objfile));
23078
23079   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23080   if (attr == NULL)
23081     return NULL;
23082
23083   byte_order = (bfd_big_endian (objfile->obfd)
23084                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23085
23086   switch (attr->form)
23087     {
23088     case DW_FORM_addr:
23089     case DW_FORM_addrx:
23090     case DW_FORM_GNU_addr_index:
23091       {
23092         gdb_byte *tem;
23093
23094         *len = cu->header.addr_size;
23095         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23096         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23097         result = tem;
23098       }
23099       break;
23100     case DW_FORM_string:
23101     case DW_FORM_strp:
23102     case DW_FORM_strx:
23103     case DW_FORM_GNU_str_index:
23104     case DW_FORM_GNU_strp_alt:
23105       /* DW_STRING is already allocated on the objfile obstack, point
23106          directly to it.  */
23107       result = (const gdb_byte *) DW_STRING (attr);
23108       *len = strlen (DW_STRING (attr));
23109       break;
23110     case DW_FORM_block1:
23111     case DW_FORM_block2:
23112     case DW_FORM_block4:
23113     case DW_FORM_block:
23114     case DW_FORM_exprloc:
23115     case DW_FORM_data16:
23116       result = DW_BLOCK (attr)->data;
23117       *len = DW_BLOCK (attr)->size;
23118       break;
23119
23120       /* The DW_AT_const_value attributes are supposed to carry the
23121          symbol's value "represented as it would be on the target
23122          architecture."  By the time we get here, it's already been
23123          converted to host endianness, so we just need to sign- or
23124          zero-extend it as appropriate.  */
23125     case DW_FORM_data1:
23126       type = die_type (die, cu);
23127       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23128       if (result == NULL)
23129         result = write_constant_as_bytes (obstack, byte_order,
23130                                           type, value, len);
23131       break;
23132     case DW_FORM_data2:
23133       type = die_type (die, cu);
23134       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23135       if (result == NULL)
23136         result = write_constant_as_bytes (obstack, byte_order,
23137                                           type, value, len);
23138       break;
23139     case DW_FORM_data4:
23140       type = die_type (die, cu);
23141       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23142       if (result == NULL)
23143         result = write_constant_as_bytes (obstack, byte_order,
23144                                           type, value, len);
23145       break;
23146     case DW_FORM_data8:
23147       type = die_type (die, cu);
23148       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23149       if (result == NULL)
23150         result = write_constant_as_bytes (obstack, byte_order,
23151                                           type, value, len);
23152       break;
23153
23154     case DW_FORM_sdata:
23155     case DW_FORM_implicit_const:
23156       type = die_type (die, cu);
23157       result = write_constant_as_bytes (obstack, byte_order,
23158                                         type, DW_SND (attr), len);
23159       break;
23160
23161     case DW_FORM_udata:
23162       type = die_type (die, cu);
23163       result = write_constant_as_bytes (obstack, byte_order,
23164                                         type, DW_UNSND (attr), len);
23165       break;
23166
23167     default:
23168       complaint (_("unsupported const value attribute form: '%s'"),
23169                  dwarf_form_name (attr->form));
23170       break;
23171     }
23172
23173   return result;
23174 }
23175
23176 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23177    valid type for this die is found.  */
23178
23179 struct type *
23180 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23181                                 struct dwarf2_per_cu_data *per_cu)
23182 {
23183   struct dwarf2_cu *cu;
23184   struct die_info *die;
23185
23186   if (per_cu->cu == NULL)
23187     load_cu (per_cu, false);
23188   cu = per_cu->cu;
23189   if (!cu)
23190     return NULL;
23191
23192   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23193   if (!die)
23194     return NULL;
23195
23196   return die_type (die, cu);
23197 }
23198
23199 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23200    PER_CU.  */
23201
23202 struct type *
23203 dwarf2_get_die_type (cu_offset die_offset,
23204                      struct dwarf2_per_cu_data *per_cu)
23205 {
23206   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23207   return get_die_type_at_offset (die_offset_sect, per_cu);
23208 }
23209
23210 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23211    On entry *REF_CU is the CU of SRC_DIE.
23212    On exit *REF_CU is the CU of the result.
23213    Returns NULL if the referenced DIE isn't found.  */
23214
23215 static struct die_info *
23216 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23217                   struct dwarf2_cu **ref_cu)
23218 {
23219   struct die_info temp_die;
23220   struct dwarf2_cu *sig_cu, *cu = *ref_cu;
23221   struct die_info *die;
23222
23223   /* While it might be nice to assert sig_type->type == NULL here,
23224      we can get here for DW_AT_imported_declaration where we need
23225      the DIE not the type.  */
23226
23227   /* If necessary, add it to the queue and load its DIEs.  */
23228
23229   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23230     read_signatured_type (sig_type);
23231
23232   sig_cu = sig_type->per_cu.cu;
23233   gdb_assert (sig_cu != NULL);
23234   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23235   temp_die.sect_off = sig_type->type_offset_in_section;
23236   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23237                                                  to_underlying (temp_die.sect_off));
23238   if (die)
23239     {
23240       struct dwarf2_per_objfile *dwarf2_per_objfile
23241         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23242
23243       /* For .gdb_index version 7 keep track of included TUs.
23244          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23245       if (dwarf2_per_objfile->index_table != NULL
23246           && dwarf2_per_objfile->index_table->version <= 7)
23247         {
23248           (*ref_cu)->per_cu->imported_symtabs_push (sig_cu->per_cu);
23249         }
23250
23251       *ref_cu = sig_cu;
23252       if (sig_cu != cu)
23253         sig_cu->ancestor = cu;
23254
23255       return die;
23256     }
23257
23258   return NULL;
23259 }
23260
23261 /* Follow signatured type referenced by ATTR in SRC_DIE.
23262    On entry *REF_CU is the CU of SRC_DIE.
23263    On exit *REF_CU is the CU of the result.
23264    The result is the DIE of the type.
23265    If the referenced type cannot be found an error is thrown.  */
23266
23267 static struct die_info *
23268 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23269                 struct dwarf2_cu **ref_cu)
23270 {
23271   ULONGEST signature = DW_SIGNATURE (attr);
23272   struct signatured_type *sig_type;
23273   struct die_info *die;
23274
23275   gdb_assert (attr->form == DW_FORM_ref_sig8);
23276
23277   sig_type = lookup_signatured_type (*ref_cu, signature);
23278   /* sig_type will be NULL if the signatured type is missing from
23279      the debug info.  */
23280   if (sig_type == NULL)
23281     {
23282       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23283                " from DIE at %s [in module %s]"),
23284              hex_string (signature), sect_offset_str (src_die->sect_off),
23285              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23286     }
23287
23288   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23289   if (die == NULL)
23290     {
23291       dump_die_for_error (src_die);
23292       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23293                " from DIE at %s [in module %s]"),
23294              hex_string (signature), sect_offset_str (src_die->sect_off),
23295              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23296     }
23297
23298   return die;
23299 }
23300
23301 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23302    reading in and processing the type unit if necessary.  */
23303
23304 static struct type *
23305 get_signatured_type (struct die_info *die, ULONGEST signature,
23306                      struct dwarf2_cu *cu)
23307 {
23308   struct dwarf2_per_objfile *dwarf2_per_objfile
23309     = cu->per_cu->dwarf2_per_objfile;
23310   struct signatured_type *sig_type;
23311   struct dwarf2_cu *type_cu;
23312   struct die_info *type_die;
23313   struct type *type;
23314
23315   sig_type = lookup_signatured_type (cu, signature);
23316   /* sig_type will be NULL if the signatured type is missing from
23317      the debug info.  */
23318   if (sig_type == NULL)
23319     {
23320       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23321                    " from DIE at %s [in module %s]"),
23322                  hex_string (signature), sect_offset_str (die->sect_off),
23323                  objfile_name (dwarf2_per_objfile->objfile));
23324       return build_error_marker_type (cu, die);
23325     }
23326
23327   /* If we already know the type we're done.  */
23328   if (sig_type->type != NULL)
23329     return sig_type->type;
23330
23331   type_cu = cu;
23332   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23333   if (type_die != NULL)
23334     {
23335       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23336          is created.  This is important, for example, because for c++ classes
23337          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23338       type = read_type_die (type_die, type_cu);
23339       if (type == NULL)
23340         {
23341           complaint (_("Dwarf Error: Cannot build signatured type %s"
23342                        " referenced from DIE at %s [in module %s]"),
23343                      hex_string (signature), sect_offset_str (die->sect_off),
23344                      objfile_name (dwarf2_per_objfile->objfile));
23345           type = build_error_marker_type (cu, die);
23346         }
23347     }
23348   else
23349     {
23350       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23351                    " from DIE at %s [in module %s]"),
23352                  hex_string (signature), sect_offset_str (die->sect_off),
23353                  objfile_name (dwarf2_per_objfile->objfile));
23354       type = build_error_marker_type (cu, die);
23355     }
23356   sig_type->type = type;
23357
23358   return type;
23359 }
23360
23361 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23362    reading in and processing the type unit if necessary.  */
23363
23364 static struct type *
23365 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23366                           struct dwarf2_cu *cu) /* ARI: editCase function */
23367 {
23368   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23369   if (attr->form_is_ref ())
23370     {
23371       struct dwarf2_cu *type_cu = cu;
23372       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23373
23374       return read_type_die (type_die, type_cu);
23375     }
23376   else if (attr->form == DW_FORM_ref_sig8)
23377     {
23378       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23379     }
23380   else
23381     {
23382       struct dwarf2_per_objfile *dwarf2_per_objfile
23383         = cu->per_cu->dwarf2_per_objfile;
23384
23385       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23386                    " at %s [in module %s]"),
23387                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23388                  objfile_name (dwarf2_per_objfile->objfile));
23389       return build_error_marker_type (cu, die);
23390     }
23391 }
23392
23393 /* Load the DIEs associated with type unit PER_CU into memory.  */
23394
23395 static void
23396 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23397 {
23398   struct signatured_type *sig_type;
23399
23400   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23401   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23402
23403   /* We have the per_cu, but we need the signatured_type.
23404      Fortunately this is an easy translation.  */
23405   gdb_assert (per_cu->is_debug_types);
23406   sig_type = (struct signatured_type *) per_cu;
23407
23408   gdb_assert (per_cu->cu == NULL);
23409
23410   read_signatured_type (sig_type);
23411
23412   gdb_assert (per_cu->cu != NULL);
23413 }
23414
23415 /* Read in a signatured type and build its CU and DIEs.
23416    If the type is a stub for the real type in a DWO file,
23417    read in the real type from the DWO file as well.  */
23418
23419 static void
23420 read_signatured_type (struct signatured_type *sig_type)
23421 {
23422   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23423
23424   gdb_assert (per_cu->is_debug_types);
23425   gdb_assert (per_cu->cu == NULL);
23426
23427   cutu_reader reader (per_cu, NULL, 0, 1, false);
23428
23429   if (!reader.dummy_p)
23430     {
23431       struct dwarf2_cu *cu = reader.cu;
23432       const gdb_byte *info_ptr = reader.info_ptr;
23433
23434       gdb_assert (cu->die_hash == NULL);
23435       cu->die_hash =
23436         htab_create_alloc_ex (cu->header.length / 12,
23437                               die_hash,
23438                               die_eq,
23439                               NULL,
23440                               &cu->comp_unit_obstack,
23441                               hashtab_obstack_allocate,
23442                               dummy_obstack_deallocate);
23443
23444       if (reader.comp_unit_die->has_children)
23445         reader.comp_unit_die->child
23446           = read_die_and_siblings (&reader, info_ptr, &info_ptr,
23447                                    reader.comp_unit_die);
23448       cu->dies = reader.comp_unit_die;
23449       /* comp_unit_die is not stored in die_hash, no need.  */
23450
23451       /* We try not to read any attributes in this function, because
23452          not all CUs needed for references have been loaded yet, and
23453          symbol table processing isn't initialized.  But we have to
23454          set the CU language, or we won't be able to build types
23455          correctly.  Similarly, if we do not read the producer, we can
23456          not apply producer-specific interpretation.  */
23457       prepare_one_comp_unit (cu, cu->dies, language_minimal);
23458     }
23459
23460   sig_type->per_cu.tu_read = 1;
23461 }
23462
23463 /* Decode simple location descriptions.
23464    Given a pointer to a dwarf block that defines a location, compute
23465    the location and return the value.
23466
23467    NOTE drow/2003-11-18: This function is called in two situations
23468    now: for the address of static or global variables (partial symbols
23469    only) and for offsets into structures which are expected to be
23470    (more or less) constant.  The partial symbol case should go away,
23471    and only the constant case should remain.  That will let this
23472    function complain more accurately.  A few special modes are allowed
23473    without complaint for global variables (for instance, global
23474    register values and thread-local values).
23475
23476    A location description containing no operations indicates that the
23477    object is optimized out.  The return value is 0 for that case.
23478    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23479    callers will only want a very basic result and this can become a
23480    complaint.
23481
23482    Note that stack[0] is unused except as a default error return.  */
23483
23484 static CORE_ADDR
23485 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23486 {
23487   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23488   size_t i;
23489   size_t size = blk->size;
23490   const gdb_byte *data = blk->data;
23491   CORE_ADDR stack[64];
23492   int stacki;
23493   unsigned int bytes_read, unsnd;
23494   gdb_byte op;
23495
23496   i = 0;
23497   stacki = 0;
23498   stack[stacki] = 0;
23499   stack[++stacki] = 0;
23500
23501   while (i < size)
23502     {
23503       op = data[i++];
23504       switch (op)
23505         {
23506         case DW_OP_lit0:
23507         case DW_OP_lit1:
23508         case DW_OP_lit2:
23509         case DW_OP_lit3:
23510         case DW_OP_lit4:
23511         case DW_OP_lit5:
23512         case DW_OP_lit6:
23513         case DW_OP_lit7:
23514         case DW_OP_lit8:
23515         case DW_OP_lit9:
23516         case DW_OP_lit10:
23517         case DW_OP_lit11:
23518         case DW_OP_lit12:
23519         case DW_OP_lit13:
23520         case DW_OP_lit14:
23521         case DW_OP_lit15:
23522         case DW_OP_lit16:
23523         case DW_OP_lit17:
23524         case DW_OP_lit18:
23525         case DW_OP_lit19:
23526         case DW_OP_lit20:
23527         case DW_OP_lit21:
23528         case DW_OP_lit22:
23529         case DW_OP_lit23:
23530         case DW_OP_lit24:
23531         case DW_OP_lit25:
23532         case DW_OP_lit26:
23533         case DW_OP_lit27:
23534         case DW_OP_lit28:
23535         case DW_OP_lit29:
23536         case DW_OP_lit30:
23537         case DW_OP_lit31:
23538           stack[++stacki] = op - DW_OP_lit0;
23539           break;
23540
23541         case DW_OP_reg0:
23542         case DW_OP_reg1:
23543         case DW_OP_reg2:
23544         case DW_OP_reg3:
23545         case DW_OP_reg4:
23546         case DW_OP_reg5:
23547         case DW_OP_reg6:
23548         case DW_OP_reg7:
23549         case DW_OP_reg8:
23550         case DW_OP_reg9:
23551         case DW_OP_reg10:
23552         case DW_OP_reg11:
23553         case DW_OP_reg12:
23554         case DW_OP_reg13:
23555         case DW_OP_reg14:
23556         case DW_OP_reg15:
23557         case DW_OP_reg16:
23558         case DW_OP_reg17:
23559         case DW_OP_reg18:
23560         case DW_OP_reg19:
23561         case DW_OP_reg20:
23562         case DW_OP_reg21:
23563         case DW_OP_reg22:
23564         case DW_OP_reg23:
23565         case DW_OP_reg24:
23566         case DW_OP_reg25:
23567         case DW_OP_reg26:
23568         case DW_OP_reg27:
23569         case DW_OP_reg28:
23570         case DW_OP_reg29:
23571         case DW_OP_reg30:
23572         case DW_OP_reg31:
23573           stack[++stacki] = op - DW_OP_reg0;
23574           if (i < size)
23575             dwarf2_complex_location_expr_complaint ();
23576           break;
23577
23578         case DW_OP_regx:
23579           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23580           i += bytes_read;
23581           stack[++stacki] = unsnd;
23582           if (i < size)
23583             dwarf2_complex_location_expr_complaint ();
23584           break;
23585
23586         case DW_OP_addr:
23587           stack[++stacki] = read_address (objfile->obfd, &data[i],
23588                                           cu, &bytes_read);
23589           i += bytes_read;
23590           break;
23591
23592         case DW_OP_const1u:
23593           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23594           i += 1;
23595           break;
23596
23597         case DW_OP_const1s:
23598           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23599           i += 1;
23600           break;
23601
23602         case DW_OP_const2u:
23603           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23604           i += 2;
23605           break;
23606
23607         case DW_OP_const2s:
23608           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23609           i += 2;
23610           break;
23611
23612         case DW_OP_const4u:
23613           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23614           i += 4;
23615           break;
23616
23617         case DW_OP_const4s:
23618           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23619           i += 4;
23620           break;
23621
23622         case DW_OP_const8u:
23623           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23624           i += 8;
23625           break;
23626
23627         case DW_OP_constu:
23628           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23629                                                   &bytes_read);
23630           i += bytes_read;
23631           break;
23632
23633         case DW_OP_consts:
23634           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23635           i += bytes_read;
23636           break;
23637
23638         case DW_OP_dup:
23639           stack[stacki + 1] = stack[stacki];
23640           stacki++;
23641           break;
23642
23643         case DW_OP_plus:
23644           stack[stacki - 1] += stack[stacki];
23645           stacki--;
23646           break;
23647
23648         case DW_OP_plus_uconst:
23649           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23650                                                  &bytes_read);
23651           i += bytes_read;
23652           break;
23653
23654         case DW_OP_minus:
23655           stack[stacki - 1] -= stack[stacki];
23656           stacki--;
23657           break;
23658
23659         case DW_OP_deref:
23660           /* If we're not the last op, then we definitely can't encode
23661              this using GDB's address_class enum.  This is valid for partial
23662              global symbols, although the variable's address will be bogus
23663              in the psymtab.  */
23664           if (i < size)
23665             dwarf2_complex_location_expr_complaint ();
23666           break;
23667
23668         case DW_OP_GNU_push_tls_address:
23669         case DW_OP_form_tls_address:
23670           /* The top of the stack has the offset from the beginning
23671              of the thread control block at which the variable is located.  */
23672           /* Nothing should follow this operator, so the top of stack would
23673              be returned.  */
23674           /* This is valid for partial global symbols, but the variable's
23675              address will be bogus in the psymtab.  Make it always at least
23676              non-zero to not look as a variable garbage collected by linker
23677              which have DW_OP_addr 0.  */
23678           if (i < size)
23679             dwarf2_complex_location_expr_complaint ();
23680           stack[stacki]++;
23681           break;
23682
23683         case DW_OP_GNU_uninit:
23684           break;
23685
23686         case DW_OP_addrx:
23687         case DW_OP_GNU_addr_index:
23688         case DW_OP_GNU_const_index:
23689           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23690                                                          &bytes_read);
23691           i += bytes_read;
23692           break;
23693
23694         default:
23695           {
23696             const char *name = get_DW_OP_name (op);
23697
23698             if (name)
23699               complaint (_("unsupported stack op: '%s'"),
23700                          name);
23701             else
23702               complaint (_("unsupported stack op: '%02x'"),
23703                          op);
23704           }
23705
23706           return (stack[stacki]);
23707         }
23708
23709       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23710          outside of the allocated space.  Also enforce minimum>0.  */
23711       if (stacki >= ARRAY_SIZE (stack) - 1)
23712         {
23713           complaint (_("location description stack overflow"));
23714           return 0;
23715         }
23716
23717       if (stacki <= 0)
23718         {
23719           complaint (_("location description stack underflow"));
23720           return 0;
23721         }
23722     }
23723   return (stack[stacki]);
23724 }
23725
23726 /* memory allocation interface */
23727
23728 static struct dwarf_block *
23729 dwarf_alloc_block (struct dwarf2_cu *cu)
23730 {
23731   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23732 }
23733
23734 static struct die_info *
23735 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23736 {
23737   struct die_info *die;
23738   size_t size = sizeof (struct die_info);
23739
23740   if (num_attrs > 1)
23741     size += (num_attrs - 1) * sizeof (struct attribute);
23742
23743   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23744   memset (die, 0, sizeof (struct die_info));
23745   return (die);
23746 }
23747
23748 \f
23749 /* Macro support.  */
23750
23751 /* Return file name relative to the compilation directory of file number I in
23752    *LH's file name table.  The result is allocated using xmalloc; the caller is
23753    responsible for freeing it.  */
23754
23755 static char *
23756 file_file_name (int file, struct line_header *lh)
23757 {
23758   /* Is the file number a valid index into the line header's file name
23759      table?  Remember that file numbers start with one, not zero.  */
23760   if (lh->is_valid_file_index (file))
23761     {
23762       const file_entry *fe = lh->file_name_at (file);
23763
23764       if (!IS_ABSOLUTE_PATH (fe->name))
23765         {
23766           const char *dir = fe->include_dir (lh);
23767           if (dir != NULL)
23768             return concat (dir, SLASH_STRING, fe->name, (char *) NULL);
23769         }
23770       return xstrdup (fe->name);
23771     }
23772   else
23773     {
23774       /* The compiler produced a bogus file number.  We can at least
23775          record the macro definitions made in the file, even if we
23776          won't be able to find the file by name.  */
23777       char fake_name[80];
23778
23779       xsnprintf (fake_name, sizeof (fake_name),
23780                  "<bad macro file number %d>", file);
23781
23782       complaint (_("bad file number in macro information (%d)"),
23783                  file);
23784
23785       return xstrdup (fake_name);
23786     }
23787 }
23788
23789 /* Return the full name of file number I in *LH's file name table.
23790    Use COMP_DIR as the name of the current directory of the
23791    compilation.  The result is allocated using xmalloc; the caller is
23792    responsible for freeing it.  */
23793 static char *
23794 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23795 {
23796   /* Is the file number a valid index into the line header's file name
23797      table?  Remember that file numbers start with one, not zero.  */
23798   if (lh->is_valid_file_index (file))
23799     {
23800       char *relative = file_file_name (file, lh);
23801
23802       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23803         return relative;
23804       return reconcat (relative, comp_dir, SLASH_STRING,
23805                        relative, (char *) NULL);
23806     }
23807   else
23808     return file_file_name (file, lh);
23809 }
23810
23811
23812 static struct macro_source_file *
23813 macro_start_file (struct dwarf2_cu *cu,
23814                   int file, int line,
23815                   struct macro_source_file *current_file,
23816                   struct line_header *lh)
23817 {
23818   /* File name relative to the compilation directory of this source file.  */
23819   char *file_name = file_file_name (file, lh);
23820
23821   if (! current_file)
23822     {
23823       /* Note: We don't create a macro table for this compilation unit
23824          at all until we actually get a filename.  */
23825       struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
23826
23827       /* If we have no current file, then this must be the start_file
23828          directive for the compilation unit's main source file.  */
23829       current_file = macro_set_main (macro_table, file_name);
23830       macro_define_special (macro_table);
23831     }
23832   else
23833     current_file = macro_include (current_file, line, file_name);
23834
23835   xfree (file_name);
23836
23837   return current_file;
23838 }
23839
23840 static const char *
23841 consume_improper_spaces (const char *p, const char *body)
23842 {
23843   if (*p == ' ')
23844     {
23845       complaint (_("macro definition contains spaces "
23846                    "in formal argument list:\n`%s'"),
23847                  body);
23848
23849       while (*p == ' ')
23850         p++;
23851     }
23852
23853   return p;
23854 }
23855
23856
23857 static void
23858 parse_macro_definition (struct macro_source_file *file, int line,
23859                         const char *body)
23860 {
23861   const char *p;
23862
23863   /* The body string takes one of two forms.  For object-like macro
23864      definitions, it should be:
23865
23866         <macro name> " " <definition>
23867
23868      For function-like macro definitions, it should be:
23869
23870         <macro name> "() " <definition>
23871      or
23872         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23873
23874      Spaces may appear only where explicitly indicated, and in the
23875      <definition>.
23876
23877      The Dwarf 2 spec says that an object-like macro's name is always
23878      followed by a space, but versions of GCC around March 2002 omit
23879      the space when the macro's definition is the empty string.
23880
23881      The Dwarf 2 spec says that there should be no spaces between the
23882      formal arguments in a function-like macro's formal argument list,
23883      but versions of GCC around March 2002 include spaces after the
23884      commas.  */
23885
23886
23887   /* Find the extent of the macro name.  The macro name is terminated
23888      by either a space or null character (for an object-like macro) or
23889      an opening paren (for a function-like macro).  */
23890   for (p = body; *p; p++)
23891     if (*p == ' ' || *p == '(')
23892       break;
23893
23894   if (*p == ' ' || *p == '\0')
23895     {
23896       /* It's an object-like macro.  */
23897       int name_len = p - body;
23898       std::string name (body, name_len);
23899       const char *replacement;
23900
23901       if (*p == ' ')
23902         replacement = body + name_len + 1;
23903       else
23904         {
23905           dwarf2_macro_malformed_definition_complaint (body);
23906           replacement = body + name_len;
23907         }
23908
23909       macro_define_object (file, line, name.c_str (), replacement);
23910     }
23911   else if (*p == '(')
23912     {
23913       /* It's a function-like macro.  */
23914       std::string name (body, p - body);
23915       int argc = 0;
23916       int argv_size = 1;
23917       char **argv = XNEWVEC (char *, argv_size);
23918
23919       p++;
23920
23921       p = consume_improper_spaces (p, body);
23922
23923       /* Parse the formal argument list.  */
23924       while (*p && *p != ')')
23925         {
23926           /* Find the extent of the current argument name.  */
23927           const char *arg_start = p;
23928
23929           while (*p && *p != ',' && *p != ')' && *p != ' ')
23930             p++;
23931
23932           if (! *p || p == arg_start)
23933             dwarf2_macro_malformed_definition_complaint (body);
23934           else
23935             {
23936               /* Make sure argv has room for the new argument.  */
23937               if (argc >= argv_size)
23938                 {
23939                   argv_size *= 2;
23940                   argv = XRESIZEVEC (char *, argv, argv_size);
23941                 }
23942
23943               argv[argc++] = savestring (arg_start, p - arg_start);
23944             }
23945
23946           p = consume_improper_spaces (p, body);
23947
23948           /* Consume the comma, if present.  */
23949           if (*p == ',')
23950             {
23951               p++;
23952
23953               p = consume_improper_spaces (p, body);
23954             }
23955         }
23956
23957       if (*p == ')')
23958         {
23959           p++;
23960
23961           if (*p == ' ')
23962             /* Perfectly formed definition, no complaints.  */
23963             macro_define_function (file, line, name.c_str (),
23964                                    argc, (const char **) argv,
23965                                    p + 1);
23966           else if (*p == '\0')
23967             {
23968               /* Complain, but do define it.  */
23969               dwarf2_macro_malformed_definition_complaint (body);
23970               macro_define_function (file, line, name.c_str (),
23971                                      argc, (const char **) argv,
23972                                      p);
23973             }
23974           else
23975             /* Just complain.  */
23976             dwarf2_macro_malformed_definition_complaint (body);
23977         }
23978       else
23979         /* Just complain.  */
23980         dwarf2_macro_malformed_definition_complaint (body);
23981
23982       {
23983         int i;
23984
23985         for (i = 0; i < argc; i++)
23986           xfree (argv[i]);
23987       }
23988       xfree (argv);
23989     }
23990   else
23991     dwarf2_macro_malformed_definition_complaint (body);
23992 }
23993
23994 /* Skip some bytes from BYTES according to the form given in FORM.
23995    Returns the new pointer.  */
23996
23997 static const gdb_byte *
23998 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
23999                  enum dwarf_form form,
24000                  unsigned int offset_size,
24001                  struct dwarf2_section_info *section)
24002 {
24003   unsigned int bytes_read;
24004
24005   switch (form)
24006     {
24007     case DW_FORM_data1:
24008     case DW_FORM_flag:
24009       ++bytes;
24010       break;
24011
24012     case DW_FORM_data2:
24013       bytes += 2;
24014       break;
24015
24016     case DW_FORM_data4:
24017       bytes += 4;
24018       break;
24019
24020     case DW_FORM_data8:
24021       bytes += 8;
24022       break;
24023
24024     case DW_FORM_data16:
24025       bytes += 16;
24026       break;
24027
24028     case DW_FORM_string:
24029       read_direct_string (abfd, bytes, &bytes_read);
24030       bytes += bytes_read;
24031       break;
24032
24033     case DW_FORM_sec_offset:
24034     case DW_FORM_strp:
24035     case DW_FORM_GNU_strp_alt:
24036       bytes += offset_size;
24037       break;
24038
24039     case DW_FORM_block:
24040       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24041       bytes += bytes_read;
24042       break;
24043
24044     case DW_FORM_block1:
24045       bytes += 1 + read_1_byte (abfd, bytes);
24046       break;
24047     case DW_FORM_block2:
24048       bytes += 2 + read_2_bytes (abfd, bytes);
24049       break;
24050     case DW_FORM_block4:
24051       bytes += 4 + read_4_bytes (abfd, bytes);
24052       break;
24053
24054     case DW_FORM_addrx:
24055     case DW_FORM_sdata:
24056     case DW_FORM_strx:
24057     case DW_FORM_udata:
24058     case DW_FORM_GNU_addr_index:
24059     case DW_FORM_GNU_str_index:
24060       bytes = gdb_skip_leb128 (bytes, buffer_end);
24061       if (bytes == NULL)
24062         {
24063           dwarf2_section_buffer_overflow_complaint (section);
24064           return NULL;
24065         }
24066       break;
24067
24068     case DW_FORM_implicit_const:
24069       break;
24070
24071     default:
24072       {
24073         complaint (_("invalid form 0x%x in `%s'"),
24074                    form, section->get_name ());
24075         return NULL;
24076       }
24077     }
24078
24079   return bytes;
24080 }
24081
24082 /* A helper for dwarf_decode_macros that handles skipping an unknown
24083    opcode.  Returns an updated pointer to the macro data buffer; or,
24084    on error, issues a complaint and returns NULL.  */
24085
24086 static const gdb_byte *
24087 skip_unknown_opcode (unsigned int opcode,
24088                      const gdb_byte **opcode_definitions,
24089                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24090                      bfd *abfd,
24091                      unsigned int offset_size,
24092                      struct dwarf2_section_info *section)
24093 {
24094   unsigned int bytes_read, i;
24095   unsigned long arg;
24096   const gdb_byte *defn;
24097
24098   if (opcode_definitions[opcode] == NULL)
24099     {
24100       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24101                  opcode);
24102       return NULL;
24103     }
24104
24105   defn = opcode_definitions[opcode];
24106   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24107   defn += bytes_read;
24108
24109   for (i = 0; i < arg; ++i)
24110     {
24111       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24112                                  (enum dwarf_form) defn[i], offset_size,
24113                                  section);
24114       if (mac_ptr == NULL)
24115         {
24116           /* skip_form_bytes already issued the complaint.  */
24117           return NULL;
24118         }
24119     }
24120
24121   return mac_ptr;
24122 }
24123
24124 /* A helper function which parses the header of a macro section.
24125    If the macro section is the extended (for now called "GNU") type,
24126    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24127    the header, or issues a complaint and returns NULL on error.  */
24128
24129 static const gdb_byte *
24130 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24131                           bfd *abfd,
24132                           const gdb_byte *mac_ptr,
24133                           unsigned int *offset_size,
24134                           int section_is_gnu)
24135 {
24136   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24137
24138   if (section_is_gnu)
24139     {
24140       unsigned int version, flags;
24141
24142       version = read_2_bytes (abfd, mac_ptr);
24143       if (version != 4 && version != 5)
24144         {
24145           complaint (_("unrecognized version `%d' in .debug_macro section"),
24146                      version);
24147           return NULL;
24148         }
24149       mac_ptr += 2;
24150
24151       flags = read_1_byte (abfd, mac_ptr);
24152       ++mac_ptr;
24153       *offset_size = (flags & 1) ? 8 : 4;
24154
24155       if ((flags & 2) != 0)
24156         /* We don't need the line table offset.  */
24157         mac_ptr += *offset_size;
24158
24159       /* Vendor opcode descriptions.  */
24160       if ((flags & 4) != 0)
24161         {
24162           unsigned int i, count;
24163
24164           count = read_1_byte (abfd, mac_ptr);
24165           ++mac_ptr;
24166           for (i = 0; i < count; ++i)
24167             {
24168               unsigned int opcode, bytes_read;
24169               unsigned long arg;
24170
24171               opcode = read_1_byte (abfd, mac_ptr);
24172               ++mac_ptr;
24173               opcode_definitions[opcode] = mac_ptr;
24174               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24175               mac_ptr += bytes_read;
24176               mac_ptr += arg;
24177             }
24178         }
24179     }
24180
24181   return mac_ptr;
24182 }
24183
24184 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24185    including DW_MACRO_import.  */
24186
24187 static void
24188 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24189                           bfd *abfd,
24190                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24191                           struct macro_source_file *current_file,
24192                           struct line_header *lh,
24193                           struct dwarf2_section_info *section,
24194                           int section_is_gnu, int section_is_dwz,
24195                           unsigned int offset_size,
24196                           htab_t include_hash)
24197 {
24198   struct dwarf2_per_objfile *dwarf2_per_objfile
24199     = cu->per_cu->dwarf2_per_objfile;
24200   struct objfile *objfile = dwarf2_per_objfile->objfile;
24201   enum dwarf_macro_record_type macinfo_type;
24202   int at_commandline;
24203   const gdb_byte *opcode_definitions[256];
24204
24205   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24206                                       &offset_size, section_is_gnu);
24207   if (mac_ptr == NULL)
24208     {
24209       /* We already issued a complaint.  */
24210       return;
24211     }
24212
24213   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24214      GDB is still reading the definitions from command line.  First
24215      DW_MACINFO_start_file will need to be ignored as it was already executed
24216      to create CURRENT_FILE for the main source holding also the command line
24217      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24218      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24219
24220   at_commandline = 1;
24221
24222   do
24223     {
24224       /* Do we at least have room for a macinfo type byte?  */
24225       if (mac_ptr >= mac_end)
24226         {
24227           dwarf2_section_buffer_overflow_complaint (section);
24228           break;
24229         }
24230
24231       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24232       mac_ptr++;
24233
24234       /* Note that we rely on the fact that the corresponding GNU and
24235          DWARF constants are the same.  */
24236       DIAGNOSTIC_PUSH
24237       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24238       switch (macinfo_type)
24239         {
24240           /* A zero macinfo type indicates the end of the macro
24241              information.  */
24242         case 0:
24243           break;
24244
24245         case DW_MACRO_define:
24246         case DW_MACRO_undef:
24247         case DW_MACRO_define_strp:
24248         case DW_MACRO_undef_strp:
24249         case DW_MACRO_define_sup:
24250         case DW_MACRO_undef_sup:
24251           {
24252             unsigned int bytes_read;
24253             int line;
24254             const char *body;
24255             int is_define;
24256
24257             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24258             mac_ptr += bytes_read;
24259
24260             if (macinfo_type == DW_MACRO_define
24261                 || macinfo_type == DW_MACRO_undef)
24262               {
24263                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24264                 mac_ptr += bytes_read;
24265               }
24266             else
24267               {
24268                 LONGEST str_offset;
24269
24270                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24271                 mac_ptr += offset_size;
24272
24273                 if (macinfo_type == DW_MACRO_define_sup
24274                     || macinfo_type == DW_MACRO_undef_sup
24275                     || section_is_dwz)
24276                   {
24277                     struct dwz_file *dwz
24278                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24279
24280                     body = read_indirect_string_from_dwz (objfile,
24281                                                           dwz, str_offset);
24282                   }
24283                 else
24284                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24285                                                          abfd, str_offset);
24286               }
24287
24288             is_define = (macinfo_type == DW_MACRO_define
24289                          || macinfo_type == DW_MACRO_define_strp
24290                          || macinfo_type == DW_MACRO_define_sup);
24291             if (! current_file)
24292               {
24293                 /* DWARF violation as no main source is present.  */
24294                 complaint (_("debug info with no main source gives macro %s "
24295                              "on line %d: %s"),
24296                            is_define ? _("definition") : _("undefinition"),
24297                            line, body);
24298                 break;
24299               }
24300             if ((line == 0 && !at_commandline)
24301                 || (line != 0 && at_commandline))
24302               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24303                          at_commandline ? _("command-line") : _("in-file"),
24304                          is_define ? _("definition") : _("undefinition"),
24305                          line == 0 ? _("zero") : _("non-zero"), line, body);
24306
24307             if (body == NULL)
24308               {
24309                 /* Fedora's rpm-build's "debugedit" binary
24310                    corrupted .debug_macro sections.
24311
24312                    For more info, see
24313                    https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
24314                 complaint (_("debug info gives %s invalid macro %s "
24315                              "without body (corrupted?) at line %d "
24316                              "on file %s"),
24317                            at_commandline ? _("command-line") : _("in-file"),
24318                            is_define ? _("definition") : _("undefinition"),
24319                            line, current_file->filename);
24320               }
24321             else if (is_define)
24322               parse_macro_definition (current_file, line, body);
24323             else
24324               {
24325                 gdb_assert (macinfo_type == DW_MACRO_undef
24326                             || macinfo_type == DW_MACRO_undef_strp
24327                             || macinfo_type == DW_MACRO_undef_sup);
24328                 macro_undef (current_file, line, body);
24329               }
24330           }
24331           break;
24332
24333         case DW_MACRO_start_file:
24334           {
24335             unsigned int bytes_read;
24336             int line, file;
24337
24338             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24339             mac_ptr += bytes_read;
24340             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24341             mac_ptr += bytes_read;
24342
24343             if ((line == 0 && !at_commandline)
24344                 || (line != 0 && at_commandline))
24345               complaint (_("debug info gives source %d included "
24346                            "from %s at %s line %d"),
24347                          file, at_commandline ? _("command-line") : _("file"),
24348                          line == 0 ? _("zero") : _("non-zero"), line);
24349
24350             if (at_commandline)
24351               {
24352                 /* This DW_MACRO_start_file was executed in the
24353                    pass one.  */
24354                 at_commandline = 0;
24355               }
24356             else
24357               current_file = macro_start_file (cu, file, line, current_file,
24358                                                lh);
24359           }
24360           break;
24361
24362         case DW_MACRO_end_file:
24363           if (! current_file)
24364             complaint (_("macro debug info has an unmatched "
24365                          "`close_file' directive"));
24366           else
24367             {
24368               current_file = current_file->included_by;
24369               if (! current_file)
24370                 {
24371                   enum dwarf_macro_record_type next_type;
24372
24373                   /* GCC circa March 2002 doesn't produce the zero
24374                      type byte marking the end of the compilation
24375                      unit.  Complain if it's not there, but exit no
24376                      matter what.  */
24377
24378                   /* Do we at least have room for a macinfo type byte?  */
24379                   if (mac_ptr >= mac_end)
24380                     {
24381                       dwarf2_section_buffer_overflow_complaint (section);
24382                       return;
24383                     }
24384
24385                   /* We don't increment mac_ptr here, so this is just
24386                      a look-ahead.  */
24387                   next_type
24388                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24389                                                                   mac_ptr);
24390                   if (next_type != 0)
24391                     complaint (_("no terminating 0-type entry for "
24392                                  "macros in `.debug_macinfo' section"));
24393
24394                   return;
24395                 }
24396             }
24397           break;
24398
24399         case DW_MACRO_import:
24400         case DW_MACRO_import_sup:
24401           {
24402             LONGEST offset;
24403             void **slot;
24404             bfd *include_bfd = abfd;
24405             struct dwarf2_section_info *include_section = section;
24406             const gdb_byte *include_mac_end = mac_end;
24407             int is_dwz = section_is_dwz;
24408             const gdb_byte *new_mac_ptr;
24409
24410             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24411             mac_ptr += offset_size;
24412
24413             if (macinfo_type == DW_MACRO_import_sup)
24414               {
24415                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24416
24417                 dwz->macro.read (objfile);
24418
24419                 include_section = &dwz->macro;
24420                 include_bfd = include_section->get_bfd_owner ();
24421                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24422                 is_dwz = 1;
24423               }
24424
24425             new_mac_ptr = include_section->buffer + offset;
24426             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24427
24428             if (*slot != NULL)
24429               {
24430                 /* This has actually happened; see
24431                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24432                 complaint (_("recursive DW_MACRO_import in "
24433                              ".debug_macro section"));
24434               }
24435             else
24436               {
24437                 *slot = (void *) new_mac_ptr;
24438
24439                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24440                                           include_mac_end, current_file, lh,
24441                                           section, section_is_gnu, is_dwz,
24442                                           offset_size, include_hash);
24443
24444                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24445               }
24446           }
24447           break;
24448
24449         case DW_MACINFO_vendor_ext:
24450           if (!section_is_gnu)
24451             {
24452               unsigned int bytes_read;
24453
24454               /* This reads the constant, but since we don't recognize
24455                  any vendor extensions, we ignore it.  */
24456               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24457               mac_ptr += bytes_read;
24458               read_direct_string (abfd, mac_ptr, &bytes_read);
24459               mac_ptr += bytes_read;
24460
24461               /* We don't recognize any vendor extensions.  */
24462               break;
24463             }
24464           /* FALLTHROUGH */
24465
24466         default:
24467           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24468                                          mac_ptr, mac_end, abfd, offset_size,
24469                                          section);
24470           if (mac_ptr == NULL)
24471             return;
24472           break;
24473         }
24474       DIAGNOSTIC_POP
24475     } while (macinfo_type != 0);
24476 }
24477
24478 static void
24479 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24480                      int section_is_gnu)
24481 {
24482   struct dwarf2_per_objfile *dwarf2_per_objfile
24483     = cu->per_cu->dwarf2_per_objfile;
24484   struct objfile *objfile = dwarf2_per_objfile->objfile;
24485   struct line_header *lh = cu->line_header;
24486   bfd *abfd;
24487   const gdb_byte *mac_ptr, *mac_end;
24488   struct macro_source_file *current_file = 0;
24489   enum dwarf_macro_record_type macinfo_type;
24490   unsigned int offset_size = cu->header.offset_size;
24491   const gdb_byte *opcode_definitions[256];
24492   void **slot;
24493   struct dwarf2_section_info *section;
24494   const char *section_name;
24495
24496   if (cu->dwo_unit != NULL)
24497     {
24498       if (section_is_gnu)
24499         {
24500           section = &cu->dwo_unit->dwo_file->sections.macro;
24501           section_name = ".debug_macro.dwo";
24502         }
24503       else
24504         {
24505           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24506           section_name = ".debug_macinfo.dwo";
24507         }
24508     }
24509   else
24510     {
24511       if (section_is_gnu)
24512         {
24513           section = &dwarf2_per_objfile->macro;
24514           section_name = ".debug_macro";
24515         }
24516       else
24517         {
24518           section = &dwarf2_per_objfile->macinfo;
24519           section_name = ".debug_macinfo";
24520         }
24521     }
24522
24523   section->read (objfile);
24524   if (section->buffer == NULL)
24525     {
24526       complaint (_("missing %s section"), section_name);
24527       return;
24528     }
24529   abfd = section->get_bfd_owner ();
24530
24531   /* First pass: Find the name of the base filename.
24532      This filename is needed in order to process all macros whose definition
24533      (or undefinition) comes from the command line.  These macros are defined
24534      before the first DW_MACINFO_start_file entry, and yet still need to be
24535      associated to the base file.
24536
24537      To determine the base file name, we scan the macro definitions until we
24538      reach the first DW_MACINFO_start_file entry.  We then initialize
24539      CURRENT_FILE accordingly so that any macro definition found before the
24540      first DW_MACINFO_start_file can still be associated to the base file.  */
24541
24542   mac_ptr = section->buffer + offset;
24543   mac_end = section->buffer + section->size;
24544
24545   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24546                                       &offset_size, section_is_gnu);
24547   if (mac_ptr == NULL)
24548     {
24549       /* We already issued a complaint.  */
24550       return;
24551     }
24552
24553   do
24554     {
24555       /* Do we at least have room for a macinfo type byte?  */
24556       if (mac_ptr >= mac_end)
24557         {
24558           /* Complaint is printed during the second pass as GDB will probably
24559              stop the first pass earlier upon finding
24560              DW_MACINFO_start_file.  */
24561           break;
24562         }
24563
24564       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24565       mac_ptr++;
24566
24567       /* Note that we rely on the fact that the corresponding GNU and
24568          DWARF constants are the same.  */
24569       DIAGNOSTIC_PUSH
24570       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24571       switch (macinfo_type)
24572         {
24573           /* A zero macinfo type indicates the end of the macro
24574              information.  */
24575         case 0:
24576           break;
24577
24578         case DW_MACRO_define:
24579         case DW_MACRO_undef:
24580           /* Only skip the data by MAC_PTR.  */
24581           {
24582             unsigned int bytes_read;
24583
24584             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24585             mac_ptr += bytes_read;
24586             read_direct_string (abfd, mac_ptr, &bytes_read);
24587             mac_ptr += bytes_read;
24588           }
24589           break;
24590
24591         case DW_MACRO_start_file:
24592           {
24593             unsigned int bytes_read;
24594             int line, file;
24595
24596             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24597             mac_ptr += bytes_read;
24598             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24599             mac_ptr += bytes_read;
24600
24601             current_file = macro_start_file (cu, file, line, current_file, lh);
24602           }
24603           break;
24604
24605         case DW_MACRO_end_file:
24606           /* No data to skip by MAC_PTR.  */
24607           break;
24608
24609         case DW_MACRO_define_strp:
24610         case DW_MACRO_undef_strp:
24611         case DW_MACRO_define_sup:
24612         case DW_MACRO_undef_sup:
24613           {
24614             unsigned int bytes_read;
24615
24616             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24617             mac_ptr += bytes_read;
24618             mac_ptr += offset_size;
24619           }
24620           break;
24621
24622         case DW_MACRO_import:
24623         case DW_MACRO_import_sup:
24624           /* Note that, according to the spec, a transparent include
24625              chain cannot call DW_MACRO_start_file.  So, we can just
24626              skip this opcode.  */
24627           mac_ptr += offset_size;
24628           break;
24629
24630         case DW_MACINFO_vendor_ext:
24631           /* Only skip the data by MAC_PTR.  */
24632           if (!section_is_gnu)
24633             {
24634               unsigned int bytes_read;
24635
24636               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24637               mac_ptr += bytes_read;
24638               read_direct_string (abfd, mac_ptr, &bytes_read);
24639               mac_ptr += bytes_read;
24640             }
24641           /* FALLTHROUGH */
24642
24643         default:
24644           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24645                                          mac_ptr, mac_end, abfd, offset_size,
24646                                          section);
24647           if (mac_ptr == NULL)
24648             return;
24649           break;
24650         }
24651       DIAGNOSTIC_POP
24652     } while (macinfo_type != 0 && current_file == NULL);
24653
24654   /* Second pass: Process all entries.
24655
24656      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24657      command-line macro definitions/undefinitions.  This flag is unset when we
24658      reach the first DW_MACINFO_start_file entry.  */
24659
24660   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24661                                            htab_eq_pointer,
24662                                            NULL, xcalloc, xfree));
24663   mac_ptr = section->buffer + offset;
24664   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24665   *slot = (void *) mac_ptr;
24666   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24667                             current_file, lh, section,
24668                             section_is_gnu, 0, offset_size,
24669                             include_hash.get ());
24670 }
24671
24672 /* Return the .debug_loc section to use for CU.
24673    For DWO files use .debug_loc.dwo.  */
24674
24675 static struct dwarf2_section_info *
24676 cu_debug_loc_section (struct dwarf2_cu *cu)
24677 {
24678   struct dwarf2_per_objfile *dwarf2_per_objfile
24679     = cu->per_cu->dwarf2_per_objfile;
24680
24681   if (cu->dwo_unit)
24682     {
24683       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24684
24685       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24686     }
24687   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24688                                   : &dwarf2_per_objfile->loc);
24689 }
24690
24691 /* A helper function that fills in a dwarf2_loclist_baton.  */
24692
24693 static void
24694 fill_in_loclist_baton (struct dwarf2_cu *cu,
24695                        struct dwarf2_loclist_baton *baton,
24696                        const struct attribute *attr)
24697 {
24698   struct dwarf2_per_objfile *dwarf2_per_objfile
24699     = cu->per_cu->dwarf2_per_objfile;
24700   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24701
24702   section->read (dwarf2_per_objfile->objfile);
24703
24704   baton->per_cu = cu->per_cu;
24705   gdb_assert (baton->per_cu);
24706   /* We don't know how long the location list is, but make sure we
24707      don't run off the edge of the section.  */
24708   baton->size = section->size - DW_UNSND (attr);
24709   baton->data = section->buffer + DW_UNSND (attr);
24710   baton->base_address = cu->base_address;
24711   baton->from_dwo = cu->dwo_unit != NULL;
24712 }
24713
24714 static void
24715 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24716                              struct dwarf2_cu *cu, int is_block)
24717 {
24718   struct dwarf2_per_objfile *dwarf2_per_objfile
24719     = cu->per_cu->dwarf2_per_objfile;
24720   struct objfile *objfile = dwarf2_per_objfile->objfile;
24721   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24722
24723   if (attr->form_is_section_offset ()
24724       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24725          the section.  If so, fall through to the complaint in the
24726          other branch.  */
24727       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24728     {
24729       struct dwarf2_loclist_baton *baton;
24730
24731       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24732
24733       fill_in_loclist_baton (cu, baton, attr);
24734
24735       if (cu->base_known == 0)
24736         complaint (_("Location list used without "
24737                      "specifying the CU base address."));
24738
24739       SYMBOL_ACLASS_INDEX (sym) = (is_block
24740                                    ? dwarf2_loclist_block_index
24741                                    : dwarf2_loclist_index);
24742       SYMBOL_LOCATION_BATON (sym) = baton;
24743     }
24744   else
24745     {
24746       struct dwarf2_locexpr_baton *baton;
24747
24748       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24749       baton->per_cu = cu->per_cu;
24750       gdb_assert (baton->per_cu);
24751
24752       if (attr->form_is_block ())
24753         {
24754           /* Note that we're just copying the block's data pointer
24755              here, not the actual data.  We're still pointing into the
24756              info_buffer for SYM's objfile; right now we never release
24757              that buffer, but when we do clean up properly this may
24758              need to change.  */
24759           baton->size = DW_BLOCK (attr)->size;
24760           baton->data = DW_BLOCK (attr)->data;
24761         }
24762       else
24763         {
24764           dwarf2_invalid_attrib_class_complaint ("location description",
24765                                                  sym->natural_name ());
24766           baton->size = 0;
24767         }
24768
24769       SYMBOL_ACLASS_INDEX (sym) = (is_block
24770                                    ? dwarf2_locexpr_block_index
24771                                    : dwarf2_locexpr_index);
24772       SYMBOL_LOCATION_BATON (sym) = baton;
24773     }
24774 }
24775
24776 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24777    came from a separate debuginfo file, then the master objfile is
24778    returned.  */
24779
24780 struct objfile *
24781 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24782 {
24783   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24784
24785   /* Return the master objfile, so that we can report and look up the
24786      correct file containing this variable.  */
24787   if (objfile->separate_debug_objfile_backlink)
24788     objfile = objfile->separate_debug_objfile_backlink;
24789
24790   return objfile;
24791 }
24792
24793 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24794    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24795    CU_HEADERP first.  */
24796
24797 static const struct comp_unit_head *
24798 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24799                        struct dwarf2_per_cu_data *per_cu)
24800 {
24801   const gdb_byte *info_ptr;
24802
24803   if (per_cu->cu)
24804     return &per_cu->cu->header;
24805
24806   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24807
24808   memset (cu_headerp, 0, sizeof (*cu_headerp));
24809   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24810                        rcuh_kind::COMPILE);
24811
24812   return cu_headerp;
24813 }
24814
24815 /* Return the address size given in the compilation unit header for CU.  */
24816
24817 int
24818 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
24819 {
24820   struct comp_unit_head cu_header_local;
24821   const struct comp_unit_head *cu_headerp;
24822
24823   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24824
24825   return cu_headerp->addr_size;
24826 }
24827
24828 /* Return the offset size given in the compilation unit header for CU.  */
24829
24830 int
24831 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
24832 {
24833   struct comp_unit_head cu_header_local;
24834   const struct comp_unit_head *cu_headerp;
24835
24836   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24837
24838   return cu_headerp->offset_size;
24839 }
24840
24841 /* See its dwarf2loc.h declaration.  */
24842
24843 int
24844 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
24845 {
24846   struct comp_unit_head cu_header_local;
24847   const struct comp_unit_head *cu_headerp;
24848
24849   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24850
24851   if (cu_headerp->version == 2)
24852     return cu_headerp->addr_size;
24853   else
24854     return cu_headerp->offset_size;
24855 }
24856
24857 /* Return the text offset of the CU.  The returned offset comes from
24858    this CU's objfile.  If this objfile came from a separate debuginfo
24859    file, then the offset may be different from the corresponding
24860    offset in the parent objfile.  */
24861
24862 CORE_ADDR
24863 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
24864 {
24865   return per_cu->dwarf2_per_objfile->objfile->text_section_offset ();
24866 }
24867
24868 /* Return a type that is a generic pointer type, the size of which matches
24869    the address size given in the compilation unit header for PER_CU.  */
24870 static struct type *
24871 dwarf2_per_cu_addr_type (struct dwarf2_per_cu_data *per_cu)
24872 {
24873   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24874   struct type *void_type = objfile_type (objfile)->builtin_void;
24875   struct type *addr_type = lookup_pointer_type (void_type);
24876   int addr_size = dwarf2_per_cu_addr_size (per_cu);
24877
24878   if (TYPE_LENGTH (addr_type) == addr_size)
24879     return addr_type;
24880
24881   addr_type
24882     = dwarf2_per_cu_addr_sized_int_type (per_cu, TYPE_UNSIGNED (addr_type));
24883   return addr_type;
24884 }
24885
24886 /* Return DWARF version number of PER_CU.  */
24887
24888 short
24889 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
24890 {
24891   return per_cu->dwarf_version;
24892 }
24893
24894 /* Locate the .debug_info compilation unit from CU's objfile which contains
24895    the DIE at OFFSET.  Raises an error on failure.  */
24896
24897 static struct dwarf2_per_cu_data *
24898 dwarf2_find_containing_comp_unit (sect_offset sect_off,
24899                                   unsigned int offset_in_dwz,
24900                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
24901 {
24902   struct dwarf2_per_cu_data *this_cu;
24903   int low, high;
24904
24905   low = 0;
24906   high = dwarf2_per_objfile->all_comp_units.size () - 1;
24907   while (high > low)
24908     {
24909       struct dwarf2_per_cu_data *mid_cu;
24910       int mid = low + (high - low) / 2;
24911
24912       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
24913       if (mid_cu->is_dwz > offset_in_dwz
24914           || (mid_cu->is_dwz == offset_in_dwz
24915               && mid_cu->sect_off + mid_cu->length >= sect_off))
24916         high = mid;
24917       else
24918         low = mid + 1;
24919     }
24920   gdb_assert (low == high);
24921   this_cu = dwarf2_per_objfile->all_comp_units[low];
24922   if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
24923     {
24924       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
24925         error (_("Dwarf Error: could not find partial DIE containing "
24926                "offset %s [in module %s]"),
24927                sect_offset_str (sect_off),
24928                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
24929
24930       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
24931                   <= sect_off);
24932       return dwarf2_per_objfile->all_comp_units[low-1];
24933     }
24934   else
24935     {
24936       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
24937           && sect_off >= this_cu->sect_off + this_cu->length)
24938         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
24939       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
24940       return this_cu;
24941     }
24942 }
24943
24944 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
24945
24946 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
24947   : per_cu (per_cu_),
24948     mark (false),
24949     has_loclist (false),
24950     checked_producer (false),
24951     producer_is_gxx_lt_4_6 (false),
24952     producer_is_gcc_lt_4_3 (false),
24953     producer_is_icc (false),
24954     producer_is_icc_lt_14 (false),
24955     producer_is_codewarrior (false),
24956     processing_has_namespace_info (false)
24957 {
24958   per_cu->cu = this;
24959 }
24960
24961 /* Destroy a dwarf2_cu.  */
24962
24963 dwarf2_cu::~dwarf2_cu ()
24964 {
24965   per_cu->cu = NULL;
24966 }
24967
24968 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
24969
24970 static void
24971 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
24972                        enum language pretend_language)
24973 {
24974   struct attribute *attr;
24975
24976   /* Set the language we're debugging.  */
24977   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
24978   if (attr != nullptr)
24979     set_cu_language (DW_UNSND (attr), cu);
24980   else
24981     {
24982       cu->language = pretend_language;
24983       cu->language_defn = language_def (cu->language);
24984     }
24985
24986   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
24987 }
24988
24989 /* Increase the age counter on each cached compilation unit, and free
24990    any that are too old.  */
24991
24992 static void
24993 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
24994 {
24995   struct dwarf2_per_cu_data *per_cu, **last_chain;
24996
24997   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
24998   per_cu = dwarf2_per_objfile->read_in_chain;
24999   while (per_cu != NULL)
25000     {
25001       per_cu->cu->last_used ++;
25002       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25003         dwarf2_mark (per_cu->cu);
25004       per_cu = per_cu->cu->read_in_chain;
25005     }
25006
25007   per_cu = dwarf2_per_objfile->read_in_chain;
25008   last_chain = &dwarf2_per_objfile->read_in_chain;
25009   while (per_cu != NULL)
25010     {
25011       struct dwarf2_per_cu_data *next_cu;
25012
25013       next_cu = per_cu->cu->read_in_chain;
25014
25015       if (!per_cu->cu->mark)
25016         {
25017           delete per_cu->cu;
25018           *last_chain = next_cu;
25019         }
25020       else
25021         last_chain = &per_cu->cu->read_in_chain;
25022
25023       per_cu = next_cu;
25024     }
25025 }
25026
25027 /* Remove a single compilation unit from the cache.  */
25028
25029 static void
25030 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25031 {
25032   struct dwarf2_per_cu_data *per_cu, **last_chain;
25033   struct dwarf2_per_objfile *dwarf2_per_objfile
25034     = target_per_cu->dwarf2_per_objfile;
25035
25036   per_cu = dwarf2_per_objfile->read_in_chain;
25037   last_chain = &dwarf2_per_objfile->read_in_chain;
25038   while (per_cu != NULL)
25039     {
25040       struct dwarf2_per_cu_data *next_cu;
25041
25042       next_cu = per_cu->cu->read_in_chain;
25043
25044       if (per_cu == target_per_cu)
25045         {
25046           delete per_cu->cu;
25047           per_cu->cu = NULL;
25048           *last_chain = next_cu;
25049           break;
25050         }
25051       else
25052         last_chain = &per_cu->cu->read_in_chain;
25053
25054       per_cu = next_cu;
25055     }
25056 }
25057
25058 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25059    We store these in a hash table separate from the DIEs, and preserve them
25060    when the DIEs are flushed out of cache.
25061
25062    The CU "per_cu" pointer is needed because offset alone is not enough to
25063    uniquely identify the type.  A file may have multiple .debug_types sections,
25064    or the type may come from a DWO file.  Furthermore, while it's more logical
25065    to use per_cu->section+offset, with Fission the section with the data is in
25066    the DWO file but we don't know that section at the point we need it.
25067    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25068    because we can enter the lookup routine, get_die_type_at_offset, from
25069    outside this file, and thus won't necessarily have PER_CU->cu.
25070    Fortunately, PER_CU is stable for the life of the objfile.  */
25071
25072 struct dwarf2_per_cu_offset_and_type
25073 {
25074   const struct dwarf2_per_cu_data *per_cu;
25075   sect_offset sect_off;
25076   struct type *type;
25077 };
25078
25079 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25080
25081 static hashval_t
25082 per_cu_offset_and_type_hash (const void *item)
25083 {
25084   const struct dwarf2_per_cu_offset_and_type *ofs
25085     = (const struct dwarf2_per_cu_offset_and_type *) item;
25086
25087   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25088 }
25089
25090 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25091
25092 static int
25093 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25094 {
25095   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25096     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25097   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25098     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25099
25100   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25101           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25102 }
25103
25104 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25105    table if necessary.  For convenience, return TYPE.
25106
25107    The DIEs reading must have careful ordering to:
25108     * Not cause infinite loops trying to read in DIEs as a prerequisite for
25109       reading current DIE.
25110     * Not trying to dereference contents of still incompletely read in types
25111       while reading in other DIEs.
25112     * Enable referencing still incompletely read in types just by a pointer to
25113       the type without accessing its fields.
25114
25115    Therefore caller should follow these rules:
25116      * Try to fetch any prerequisite types we may need to build this DIE type
25117        before building the type and calling set_die_type.
25118      * After building type call set_die_type for current DIE as soon as
25119        possible before fetching more types to complete the current type.
25120      * Make the type as complete as possible before fetching more types.  */
25121
25122 static struct type *
25123 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25124 {
25125   struct dwarf2_per_objfile *dwarf2_per_objfile
25126     = cu->per_cu->dwarf2_per_objfile;
25127   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25128   struct objfile *objfile = dwarf2_per_objfile->objfile;
25129   struct attribute *attr;
25130   struct dynamic_prop prop;
25131
25132   /* For Ada types, make sure that the gnat-specific data is always
25133      initialized (if not already set).  There are a few types where
25134      we should not be doing so, because the type-specific area is
25135      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25136      where the type-specific area is used to store the floatformat).
25137      But this is not a problem, because the gnat-specific information
25138      is actually not needed for these types.  */
25139   if (need_gnat_info (cu)
25140       && TYPE_CODE (type) != TYPE_CODE_FUNC
25141       && TYPE_CODE (type) != TYPE_CODE_FLT
25142       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25143       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25144       && TYPE_CODE (type) != TYPE_CODE_METHOD
25145       && !HAVE_GNAT_AUX_INFO (type))
25146     INIT_GNAT_SPECIFIC (type);
25147
25148   /* Read DW_AT_allocated and set in type.  */
25149   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25150   if (attr != NULL && attr->form_is_block ())
25151     {
25152       struct type *prop_type
25153         = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
25154       if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
25155         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25156     }
25157   else if (attr != NULL)
25158     {
25159       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25160                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25161                  sect_offset_str (die->sect_off));
25162     }
25163
25164   /* Read DW_AT_associated and set in type.  */
25165   attr = dwarf2_attr (die, DW_AT_associated, cu);
25166   if (attr != NULL && attr->form_is_block ())
25167     {
25168       struct type *prop_type
25169         = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
25170       if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
25171         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25172     }
25173   else if (attr != NULL)
25174     {
25175       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25176                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25177                  sect_offset_str (die->sect_off));
25178     }
25179
25180   /* Read DW_AT_data_location and set in type.  */
25181   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25182   if (attr_to_dynamic_prop (attr, die, cu, &prop,
25183                             dwarf2_per_cu_addr_type (cu->per_cu)))
25184     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25185
25186   if (dwarf2_per_objfile->die_type_hash == NULL)
25187     dwarf2_per_objfile->die_type_hash
25188       = htab_up (htab_create_alloc (127,
25189                                     per_cu_offset_and_type_hash,
25190                                     per_cu_offset_and_type_eq,
25191                                     NULL, xcalloc, xfree));
25192
25193   ofs.per_cu = cu->per_cu;
25194   ofs.sect_off = die->sect_off;
25195   ofs.type = type;
25196   slot = (struct dwarf2_per_cu_offset_and_type **)
25197     htab_find_slot (dwarf2_per_objfile->die_type_hash.get (), &ofs, INSERT);
25198   if (*slot)
25199     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25200                sect_offset_str (die->sect_off));
25201   *slot = XOBNEW (&objfile->objfile_obstack,
25202                   struct dwarf2_per_cu_offset_and_type);
25203   **slot = ofs;
25204   return type;
25205 }
25206
25207 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25208    or return NULL if the die does not have a saved type.  */
25209
25210 static struct type *
25211 get_die_type_at_offset (sect_offset sect_off,
25212                         struct dwarf2_per_cu_data *per_cu)
25213 {
25214   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25215   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25216
25217   if (dwarf2_per_objfile->die_type_hash == NULL)
25218     return NULL;
25219
25220   ofs.per_cu = per_cu;
25221   ofs.sect_off = sect_off;
25222   slot = ((struct dwarf2_per_cu_offset_and_type *)
25223           htab_find (dwarf2_per_objfile->die_type_hash.get (), &ofs));
25224   if (slot)
25225     return slot->type;
25226   else
25227     return NULL;
25228 }
25229
25230 /* Look up the type for DIE in CU in die_type_hash,
25231    or return NULL if DIE does not have a saved type.  */
25232
25233 static struct type *
25234 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25235 {
25236   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25237 }
25238
25239 /* Add a dependence relationship from CU to REF_PER_CU.  */
25240
25241 static void
25242 dwarf2_add_dependence (struct dwarf2_cu *cu,
25243                        struct dwarf2_per_cu_data *ref_per_cu)
25244 {
25245   void **slot;
25246
25247   if (cu->dependencies == NULL)
25248     cu->dependencies
25249       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25250                               NULL, &cu->comp_unit_obstack,
25251                               hashtab_obstack_allocate,
25252                               dummy_obstack_deallocate);
25253
25254   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25255   if (*slot == NULL)
25256     *slot = ref_per_cu;
25257 }
25258
25259 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25260    Set the mark field in every compilation unit in the
25261    cache that we must keep because we are keeping CU.  */
25262
25263 static int
25264 dwarf2_mark_helper (void **slot, void *data)
25265 {
25266   struct dwarf2_per_cu_data *per_cu;
25267
25268   per_cu = (struct dwarf2_per_cu_data *) *slot;
25269
25270   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25271      reading of the chain.  As such dependencies remain valid it is not much
25272      useful to track and undo them during QUIT cleanups.  */
25273   if (per_cu->cu == NULL)
25274     return 1;
25275
25276   if (per_cu->cu->mark)
25277     return 1;
25278   per_cu->cu->mark = true;
25279
25280   if (per_cu->cu->dependencies != NULL)
25281     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25282
25283   return 1;
25284 }
25285
25286 /* Set the mark field in CU and in every other compilation unit in the
25287    cache that we must keep because we are keeping CU.  */
25288
25289 static void
25290 dwarf2_mark (struct dwarf2_cu *cu)
25291 {
25292   if (cu->mark)
25293     return;
25294   cu->mark = true;
25295   if (cu->dependencies != NULL)
25296     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25297 }
25298
25299 static void
25300 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25301 {
25302   while (per_cu)
25303     {
25304       per_cu->cu->mark = false;
25305       per_cu = per_cu->cu->read_in_chain;
25306     }
25307 }
25308
25309 /* Trivial hash function for partial_die_info: the hash value of a DIE
25310    is its offset in .debug_info for this objfile.  */
25311
25312 static hashval_t
25313 partial_die_hash (const void *item)
25314 {
25315   const struct partial_die_info *part_die
25316     = (const struct partial_die_info *) item;
25317
25318   return to_underlying (part_die->sect_off);
25319 }
25320
25321 /* Trivial comparison function for partial_die_info structures: two DIEs
25322    are equal if they have the same offset.  */
25323
25324 static int
25325 partial_die_eq (const void *item_lhs, const void *item_rhs)
25326 {
25327   const struct partial_die_info *part_die_lhs
25328     = (const struct partial_die_info *) item_lhs;
25329   const struct partial_die_info *part_die_rhs
25330     = (const struct partial_die_info *) item_rhs;
25331
25332   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25333 }
25334
25335 struct cmd_list_element *set_dwarf_cmdlist;
25336 struct cmd_list_element *show_dwarf_cmdlist;
25337
25338 static void
25339 set_dwarf_cmd (const char *args, int from_tty)
25340 {
25341   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25342              gdb_stdout);
25343 }
25344
25345 static void
25346 show_dwarf_cmd (const char *args, int from_tty)
25347 {
25348   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25349 }
25350
25351 bool dwarf_always_disassemble;
25352
25353 static void
25354 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25355                                struct cmd_list_element *c, const char *value)
25356 {
25357   fprintf_filtered (file,
25358                     _("Whether to always disassemble "
25359                       "DWARF expressions is %s.\n"),
25360                     value);
25361 }
25362
25363 static void
25364 show_check_physname (struct ui_file *file, int from_tty,
25365                      struct cmd_list_element *c, const char *value)
25366 {
25367   fprintf_filtered (file,
25368                     _("Whether to check \"physname\" is %s.\n"),
25369                     value);
25370 }
25371
25372 void _initialize_dwarf2_read ();
25373 void
25374 _initialize_dwarf2_read ()
25375 {
25376   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25377 Set DWARF specific variables.\n\
25378 Configure DWARF variables such as the cache size."),
25379                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25380                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25381
25382   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25383 Show DWARF specific variables.\n\
25384 Show DWARF variables such as the cache size."),
25385                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25386                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25387
25388   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25389                             &dwarf_max_cache_age, _("\
25390 Set the upper bound on the age of cached DWARF compilation units."), _("\
25391 Show the upper bound on the age of cached DWARF compilation units."), _("\
25392 A higher limit means that cached compilation units will be stored\n\
25393 in memory longer, and more total memory will be used.  Zero disables\n\
25394 caching, which can slow down startup."),
25395                             NULL,
25396                             show_dwarf_max_cache_age,
25397                             &set_dwarf_cmdlist,
25398                             &show_dwarf_cmdlist);
25399
25400   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25401                            &dwarf_always_disassemble, _("\
25402 Set whether `info address' always disassembles DWARF expressions."), _("\
25403 Show whether `info address' always disassembles DWARF expressions."), _("\
25404 When enabled, DWARF expressions are always printed in an assembly-like\n\
25405 syntax.  When disabled, expressions will be printed in a more\n\
25406 conversational style, when possible."),
25407                            NULL,
25408                            show_dwarf_always_disassemble,
25409                            &set_dwarf_cmdlist,
25410                            &show_dwarf_cmdlist);
25411
25412   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25413 Set debugging of the DWARF reader."), _("\
25414 Show debugging of the DWARF reader."), _("\
25415 When enabled (non-zero), debugging messages are printed during DWARF\n\
25416 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25417 information.  A value greater than 1 provides more verbose information."),
25418                             NULL,
25419                             NULL,
25420                             &setdebuglist, &showdebuglist);
25421
25422   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25423 Set debugging of the DWARF DIE reader."), _("\
25424 Show debugging of the DWARF DIE reader."), _("\
25425 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25426 The value is the maximum depth to print."),
25427                              NULL,
25428                              NULL,
25429                              &setdebuglist, &showdebuglist);
25430
25431   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25432 Set debugging of the dwarf line reader."), _("\
25433 Show debugging of the dwarf line reader."), _("\
25434 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25435 A value of 1 (one) provides basic information.\n\
25436 A value greater than 1 provides more verbose information."),
25437                              NULL,
25438                              NULL,
25439                              &setdebuglist, &showdebuglist);
25440
25441   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25442 Set cross-checking of \"physname\" code against demangler."), _("\
25443 Show cross-checking of \"physname\" code against demangler."), _("\
25444 When enabled, GDB's internal \"physname\" code is checked against\n\
25445 the demangler."),
25446                            NULL, show_check_physname,
25447                            &setdebuglist, &showdebuglist);
25448
25449   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25450                            no_class, &use_deprecated_index_sections, _("\
25451 Set whether to use deprecated gdb_index sections."), _("\
25452 Show whether to use deprecated gdb_index sections."), _("\
25453 When enabled, deprecated .gdb_index sections are used anyway.\n\
25454 Normally they are ignored either because of a missing feature or\n\
25455 performance issue.\n\
25456 Warning: This option must be enabled before gdb reads the file."),
25457                            NULL,
25458                            NULL,
25459                            &setlist, &showlist);
25460
25461   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25462                                                         &dwarf2_locexpr_funcs);
25463   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25464                                                         &dwarf2_loclist_funcs);
25465
25466   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25467                                         &dwarf2_block_frame_base_locexpr_funcs);
25468   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25469                                         &dwarf2_block_frame_base_loclist_funcs);
25470
25471 #if GDB_SELF_TEST
25472   selftests::register_test ("dw2_expand_symtabs_matching",
25473                             selftests::dw2_expand_symtabs_matching::run_test);
25474 #endif
25475 }
This page took 1.464366 seconds and 4 git commands to generate.