dwarf2read: C++ify dwo_file
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2019 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "dwarf2read.h"
33 #include "dwarf-index-cache.h"
34 #include "dwarf-index-common.h"
35 #include "bfd.h"
36 #include "elf-bfd.h"
37 #include "symtab.h"
38 #include "gdbtypes.h"
39 #include "objfiles.h"
40 #include "dwarf2.h"
41 #include "buildsym.h"
42 #include "demangle.h"
43 #include "gdb-demangle.h"
44 #include "expression.h"
45 #include "filenames.h"  /* for DOSish file names */
46 #include "macrotab.h"
47 #include "language.h"
48 #include "complaints.h"
49 #include "dwarf2expr.h"
50 #include "dwarf2loc.h"
51 #include "cp-support.h"
52 #include "hashtab.h"
53 #include "command.h"
54 #include "gdbcmd.h"
55 #include "block.h"
56 #include "addrmap.h"
57 #include "typeprint.h"
58 #include "psympriv.h"
59 #include <sys/stat.h>
60 #include "completer.h"
61 #include "common/vec.h"
62 #include "c-lang.h"
63 #include "go-lang.h"
64 #include "valprint.h"
65 #include "gdbcore.h" /* for gnutarget */
66 #include "gdb/gdb-index.h"
67 #include <ctype.h>
68 #include "gdb_bfd.h"
69 #include "f-lang.h"
70 #include "source.h"
71 #include "common/filestuff.h"
72 #include "build-id.h"
73 #include "namespace.h"
74 #include "common/gdb_unlinker.h"
75 #include "common/function-view.h"
76 #include "common/gdb_optional.h"
77 #include "common/underlying.h"
78 #include "common/byte-vector.h"
79 #include "common/hash_enum.h"
80 #include "filename-seen-cache.h"
81 #include "producer.h"
82 #include <fcntl.h>
83 #include <sys/types.h>
84 #include <algorithm>
85 #include <unordered_set>
86 #include <unordered_map>
87 #include "common/selftest.h"
88 #include <cmath>
89 #include <set>
90 #include <forward_list>
91 #include "rust-lang.h"
92 #include "common/pathstuff.h"
93
94 /* When == 1, print basic high level tracing messages.
95    When > 1, be more verbose.
96    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
97 static unsigned int dwarf_read_debug = 0;
98
99 /* When non-zero, dump DIEs after they are read in.  */
100 static unsigned int dwarf_die_debug = 0;
101
102 /* When non-zero, dump line number entries as they are read in.  */
103 static unsigned int dwarf_line_debug = 0;
104
105 /* When non-zero, cross-check physname against demangler.  */
106 static int check_physname = 0;
107
108 /* When non-zero, do not reject deprecated .gdb_index sections.  */
109 static int use_deprecated_index_sections = 0;
110
111 static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
112
113 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
114
115 static int dwarf2_locexpr_index;
116 static int dwarf2_loclist_index;
117 static int dwarf2_locexpr_block_index;
118 static int dwarf2_loclist_block_index;
119
120 /* An index into a (C++) symbol name component in a symbol name as
121    recorded in the mapped_index's symbol table.  For each C++ symbol
122    in the symbol table, we record one entry for the start of each
123    component in the symbol in a table of name components, and then
124    sort the table, in order to be able to binary search symbol names,
125    ignoring leading namespaces, both completion and regular look up.
126    For example, for symbol "A::B::C", we'll have an entry that points
127    to "A::B::C", another that points to "B::C", and another for "C".
128    Note that function symbols in GDB index have no parameter
129    information, just the function/method names.  You can convert a
130    name_component to a "const char *" using the
131    'mapped_index::symbol_name_at(offset_type)' method.  */
132
133 struct name_component
134 {
135   /* Offset in the symbol name where the component starts.  Stored as
136      a (32-bit) offset instead of a pointer to save memory and improve
137      locality on 64-bit architectures.  */
138   offset_type name_offset;
139
140   /* The symbol's index in the symbol and constant pool tables of a
141      mapped_index.  */
142   offset_type idx;
143 };
144
145 /* Base class containing bits shared by both .gdb_index and
146    .debug_name indexes.  */
147
148 struct mapped_index_base
149 {
150   mapped_index_base () = default;
151   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
152
153   /* The name_component table (a sorted vector).  See name_component's
154      description above.  */
155   std::vector<name_component> name_components;
156
157   /* How NAME_COMPONENTS is sorted.  */
158   enum case_sensitivity name_components_casing;
159
160   /* Return the number of names in the symbol table.  */
161   virtual size_t symbol_name_count () const = 0;
162
163   /* Get the name of the symbol at IDX in the symbol table.  */
164   virtual const char *symbol_name_at (offset_type idx) const = 0;
165
166   /* Return whether the name at IDX in the symbol table should be
167      ignored.  */
168   virtual bool symbol_name_slot_invalid (offset_type idx) const
169   {
170     return false;
171   }
172
173   /* Build the symbol name component sorted vector, if we haven't
174      yet.  */
175   void build_name_components ();
176
177   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
178      possible matches for LN_NO_PARAMS in the name component
179      vector.  */
180   std::pair<std::vector<name_component>::const_iterator,
181             std::vector<name_component>::const_iterator>
182     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
183
184   /* Prevent deleting/destroying via a base class pointer.  */
185 protected:
186   ~mapped_index_base() = default;
187 };
188
189 /* A description of the mapped index.  The file format is described in
190    a comment by the code that writes the index.  */
191 struct mapped_index final : public mapped_index_base
192 {
193   /* A slot/bucket in the symbol table hash.  */
194   struct symbol_table_slot
195   {
196     const offset_type name;
197     const offset_type vec;
198   };
199
200   /* Index data format version.  */
201   int version = 0;
202
203   /* The address table data.  */
204   gdb::array_view<const gdb_byte> address_table;
205
206   /* The symbol table, implemented as a hash table.  */
207   gdb::array_view<symbol_table_slot> symbol_table;
208
209   /* A pointer to the constant pool.  */
210   const char *constant_pool = nullptr;
211
212   bool symbol_name_slot_invalid (offset_type idx) const override
213   {
214     const auto &bucket = this->symbol_table[idx];
215     return bucket.name == 0 && bucket.vec == 0;
216   }
217
218   /* Convenience method to get at the name of the symbol at IDX in the
219      symbol table.  */
220   const char *symbol_name_at (offset_type idx) const override
221   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
222
223   size_t symbol_name_count () const override
224   { return this->symbol_table.size (); }
225 };
226
227 /* A description of the mapped .debug_names.
228    Uninitialized map has CU_COUNT 0.  */
229 struct mapped_debug_names final : public mapped_index_base
230 {
231   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
232   : dwarf2_per_objfile (dwarf2_per_objfile_)
233   {}
234
235   struct dwarf2_per_objfile *dwarf2_per_objfile;
236   bfd_endian dwarf5_byte_order;
237   bool dwarf5_is_dwarf64;
238   bool augmentation_is_gdb;
239   uint8_t offset_size;
240   uint32_t cu_count = 0;
241   uint32_t tu_count, bucket_count, name_count;
242   const gdb_byte *cu_table_reordered, *tu_table_reordered;
243   const uint32_t *bucket_table_reordered, *hash_table_reordered;
244   const gdb_byte *name_table_string_offs_reordered;
245   const gdb_byte *name_table_entry_offs_reordered;
246   const gdb_byte *entry_pool;
247
248   struct index_val
249   {
250     ULONGEST dwarf_tag;
251     struct attr
252     {
253       /* Attribute name DW_IDX_*.  */
254       ULONGEST dw_idx;
255
256       /* Attribute form DW_FORM_*.  */
257       ULONGEST form;
258
259       /* Value if FORM is DW_FORM_implicit_const.  */
260       LONGEST implicit_const;
261     };
262     std::vector<attr> attr_vec;
263   };
264
265   std::unordered_map<ULONGEST, index_val> abbrev_map;
266
267   const char *namei_to_name (uint32_t namei) const;
268
269   /* Implementation of the mapped_index_base virtual interface, for
270      the name_components cache.  */
271
272   const char *symbol_name_at (offset_type idx) const override
273   { return namei_to_name (idx); }
274
275   size_t symbol_name_count () const override
276   { return this->name_count; }
277 };
278
279 /* See dwarf2read.h.  */
280
281 dwarf2_per_objfile *
282 get_dwarf2_per_objfile (struct objfile *objfile)
283 {
284   return dwarf2_objfile_data_key.get (objfile);
285 }
286
287 /* Default names of the debugging sections.  */
288
289 /* Note that if the debugging section has been compressed, it might
290    have a name like .zdebug_info.  */
291
292 static const struct dwarf2_debug_sections dwarf2_elf_names =
293 {
294   { ".debug_info", ".zdebug_info" },
295   { ".debug_abbrev", ".zdebug_abbrev" },
296   { ".debug_line", ".zdebug_line" },
297   { ".debug_loc", ".zdebug_loc" },
298   { ".debug_loclists", ".zdebug_loclists" },
299   { ".debug_macinfo", ".zdebug_macinfo" },
300   { ".debug_macro", ".zdebug_macro" },
301   { ".debug_str", ".zdebug_str" },
302   { ".debug_line_str", ".zdebug_line_str" },
303   { ".debug_ranges", ".zdebug_ranges" },
304   { ".debug_rnglists", ".zdebug_rnglists" },
305   { ".debug_types", ".zdebug_types" },
306   { ".debug_addr", ".zdebug_addr" },
307   { ".debug_frame", ".zdebug_frame" },
308   { ".eh_frame", NULL },
309   { ".gdb_index", ".zgdb_index" },
310   { ".debug_names", ".zdebug_names" },
311   { ".debug_aranges", ".zdebug_aranges" },
312   23
313 };
314
315 /* List of DWO/DWP sections.  */
316
317 static const struct dwop_section_names
318 {
319   struct dwarf2_section_names abbrev_dwo;
320   struct dwarf2_section_names info_dwo;
321   struct dwarf2_section_names line_dwo;
322   struct dwarf2_section_names loc_dwo;
323   struct dwarf2_section_names loclists_dwo;
324   struct dwarf2_section_names macinfo_dwo;
325   struct dwarf2_section_names macro_dwo;
326   struct dwarf2_section_names str_dwo;
327   struct dwarf2_section_names str_offsets_dwo;
328   struct dwarf2_section_names types_dwo;
329   struct dwarf2_section_names cu_index;
330   struct dwarf2_section_names tu_index;
331 }
332 dwop_section_names =
333 {
334   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
335   { ".debug_info.dwo", ".zdebug_info.dwo" },
336   { ".debug_line.dwo", ".zdebug_line.dwo" },
337   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
338   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
339   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
340   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
341   { ".debug_str.dwo", ".zdebug_str.dwo" },
342   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
343   { ".debug_types.dwo", ".zdebug_types.dwo" },
344   { ".debug_cu_index", ".zdebug_cu_index" },
345   { ".debug_tu_index", ".zdebug_tu_index" },
346 };
347
348 /* local data types */
349
350 /* The data in a compilation unit header, after target2host
351    translation, looks like this.  */
352 struct comp_unit_head
353 {
354   unsigned int length;
355   short version;
356   unsigned char addr_size;
357   unsigned char signed_addr_p;
358   sect_offset abbrev_sect_off;
359
360   /* Size of file offsets; either 4 or 8.  */
361   unsigned int offset_size;
362
363   /* Size of the length field; either 4 or 12.  */
364   unsigned int initial_length_size;
365
366   enum dwarf_unit_type unit_type;
367
368   /* Offset to the first byte of this compilation unit header in the
369      .debug_info section, for resolving relative reference dies.  */
370   sect_offset sect_off;
371
372   /* Offset to first die in this cu from the start of the cu.
373      This will be the first byte following the compilation unit header.  */
374   cu_offset first_die_cu_offset;
375
376   /* 64-bit signature of this type unit - it is valid only for
377      UNIT_TYPE DW_UT_type.  */
378   ULONGEST signature;
379
380   /* For types, offset in the type's DIE of the type defined by this TU.  */
381   cu_offset type_cu_offset_in_tu;
382 };
383
384 /* Type used for delaying computation of method physnames.
385    See comments for compute_delayed_physnames.  */
386 struct delayed_method_info
387 {
388   /* The type to which the method is attached, i.e., its parent class.  */
389   struct type *type;
390
391   /* The index of the method in the type's function fieldlists.  */
392   int fnfield_index;
393
394   /* The index of the method in the fieldlist.  */
395   int index;
396
397   /* The name of the DIE.  */
398   const char *name;
399
400   /*  The DIE associated with this method.  */
401   struct die_info *die;
402 };
403
404 /* Internal state when decoding a particular compilation unit.  */
405 struct dwarf2_cu
406 {
407   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
408   ~dwarf2_cu ();
409
410   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
411
412   /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
413      Create the set of symtabs used by this TU, or if this TU is sharing
414      symtabs with another TU and the symtabs have already been created
415      then restore those symtabs in the line header.
416      We don't need the pc/line-number mapping for type units.  */
417   void setup_type_unit_groups (struct die_info *die);
418
419   /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
420      buildsym_compunit constructor.  */
421   struct compunit_symtab *start_symtab (const char *name,
422                                         const char *comp_dir,
423                                         CORE_ADDR low_pc);
424
425   /* Reset the builder.  */
426   void reset_builder () { m_builder.reset (); }
427
428   /* The header of the compilation unit.  */
429   struct comp_unit_head header {};
430
431   /* Base address of this compilation unit.  */
432   CORE_ADDR base_address = 0;
433
434   /* Non-zero if base_address has been set.  */
435   int base_known = 0;
436
437   /* The language we are debugging.  */
438   enum language language = language_unknown;
439   const struct language_defn *language_defn = nullptr;
440
441   const char *producer = nullptr;
442
443 private:
444   /* The symtab builder for this CU.  This is only non-NULL when full
445      symbols are being read.  */
446   std::unique_ptr<buildsym_compunit> m_builder;
447
448 public:
449   /* The generic symbol table building routines have separate lists for
450      file scope symbols and all all other scopes (local scopes).  So
451      we need to select the right one to pass to add_symbol_to_list().
452      We do it by keeping a pointer to the correct list in list_in_scope.
453
454      FIXME: The original dwarf code just treated the file scope as the
455      first local scope, and all other local scopes as nested local
456      scopes, and worked fine.  Check to see if we really need to
457      distinguish these in buildsym.c.  */
458   struct pending **list_in_scope = nullptr;
459
460   /* Hash table holding all the loaded partial DIEs
461      with partial_die->offset.SECT_OFF as hash.  */
462   htab_t partial_dies = nullptr;
463
464   /* Storage for things with the same lifetime as this read-in compilation
465      unit, including partial DIEs.  */
466   auto_obstack comp_unit_obstack;
467
468   /* When multiple dwarf2_cu structures are living in memory, this field
469      chains them all together, so that they can be released efficiently.
470      We will probably also want a generation counter so that most-recently-used
471      compilation units are cached...  */
472   struct dwarf2_per_cu_data *read_in_chain = nullptr;
473
474   /* Backlink to our per_cu entry.  */
475   struct dwarf2_per_cu_data *per_cu;
476
477   /* How many compilation units ago was this CU last referenced?  */
478   int last_used = 0;
479
480   /* A hash table of DIE cu_offset for following references with
481      die_info->offset.sect_off as hash.  */
482   htab_t die_hash = nullptr;
483
484   /* Full DIEs if read in.  */
485   struct die_info *dies = nullptr;
486
487   /* A set of pointers to dwarf2_per_cu_data objects for compilation
488      units referenced by this one.  Only set during full symbol processing;
489      partial symbol tables do not have dependencies.  */
490   htab_t dependencies = nullptr;
491
492   /* Header data from the line table, during full symbol processing.  */
493   struct line_header *line_header = nullptr;
494   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
495      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
496      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
497      to the line header as long as this DIE is being processed.  See
498      process_die_scope.  */
499   die_info *line_header_die_owner = nullptr;
500
501   /* A list of methods which need to have physnames computed
502      after all type information has been read.  */
503   std::vector<delayed_method_info> method_list;
504
505   /* To be copied to symtab->call_site_htab.  */
506   htab_t call_site_htab = nullptr;
507
508   /* Non-NULL if this CU came from a DWO file.
509      There is an invariant here that is important to remember:
510      Except for attributes copied from the top level DIE in the "main"
511      (or "stub") file in preparation for reading the DWO file
512      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
513      Either there isn't a DWO file (in which case this is NULL and the point
514      is moot), or there is and either we're not going to read it (in which
515      case this is NULL) or there is and we are reading it (in which case this
516      is non-NULL).  */
517   struct dwo_unit *dwo_unit = nullptr;
518
519   /* The DW_AT_addr_base attribute if present, zero otherwise
520      (zero is a valid value though).
521      Note this value comes from the Fission stub CU/TU's DIE.  */
522   ULONGEST addr_base = 0;
523
524   /* The DW_AT_ranges_base attribute if present, zero otherwise
525      (zero is a valid value though).
526      Note this value comes from the Fission stub CU/TU's DIE.
527      Also note that the value is zero in the non-DWO case so this value can
528      be used without needing to know whether DWO files are in use or not.
529      N.B. This does not apply to DW_AT_ranges appearing in
530      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
531      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
532      DW_AT_ranges_base *would* have to be applied, and we'd have to care
533      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
534   ULONGEST ranges_base = 0;
535
536   /* When reading debug info generated by older versions of rustc, we
537      have to rewrite some union types to be struct types with a
538      variant part.  This rewriting must be done after the CU is fully
539      read in, because otherwise at the point of rewriting some struct
540      type might not have been fully processed.  So, we keep a list of
541      all such types here and process them after expansion.  */
542   std::vector<struct type *> rust_unions;
543
544   /* Mark used when releasing cached dies.  */
545   bool mark : 1;
546
547   /* This CU references .debug_loc.  See the symtab->locations_valid field.
548      This test is imperfect as there may exist optimized debug code not using
549      any location list and still facing inlining issues if handled as
550      unoptimized code.  For a future better test see GCC PR other/32998.  */
551   bool has_loclist : 1;
552
553   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is true
554      if all the producer_is_* fields are valid.  This information is cached
555      because profiling CU expansion showed excessive time spent in
556      producer_is_gxx_lt_4_6.  */
557   bool checked_producer : 1;
558   bool producer_is_gxx_lt_4_6 : 1;
559   bool producer_is_gcc_lt_4_3 : 1;
560   bool producer_is_icc : 1;
561   bool producer_is_icc_lt_14 : 1;
562   bool producer_is_codewarrior : 1;
563
564   /* When true, the file that we're processing is known to have
565      debugging info for C++ namespaces.  GCC 3.3.x did not produce
566      this information, but later versions do.  */
567
568   bool processing_has_namespace_info : 1;
569
570   struct partial_die_info *find_partial_die (sect_offset sect_off);
571
572   /* If this CU was inherited by another CU (via specification,
573      abstract_origin, etc), this is the ancestor CU.  */
574   dwarf2_cu *ancestor;
575
576   /* Get the buildsym_compunit for this CU.  */
577   buildsym_compunit *get_builder ()
578   {
579     /* If this CU has a builder associated with it, use that.  */
580     if (m_builder != nullptr)
581       return m_builder.get ();
582
583     /* Otherwise, search ancestors for a valid builder.  */
584     if (ancestor != nullptr)
585       return ancestor->get_builder ();
586
587     return nullptr;
588   }
589 };
590
591 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
592    This includes type_unit_group and quick_file_names.  */
593
594 struct stmt_list_hash
595 {
596   /* The DWO unit this table is from or NULL if there is none.  */
597   struct dwo_unit *dwo_unit;
598
599   /* Offset in .debug_line or .debug_line.dwo.  */
600   sect_offset line_sect_off;
601 };
602
603 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
604    an object of this type.  */
605
606 struct type_unit_group
607 {
608   /* dwarf2read.c's main "handle" on a TU symtab.
609      To simplify things we create an artificial CU that "includes" all the
610      type units using this stmt_list so that the rest of the code still has
611      a "per_cu" handle on the symtab.
612      This PER_CU is recognized by having no section.  */
613 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
614   struct dwarf2_per_cu_data per_cu;
615
616   /* The TUs that share this DW_AT_stmt_list entry.
617      This is added to while parsing type units to build partial symtabs,
618      and is deleted afterwards and not used again.  */
619   VEC (sig_type_ptr) *tus;
620
621   /* The compunit symtab.
622      Type units in a group needn't all be defined in the same source file,
623      so we create an essentially anonymous symtab as the compunit symtab.  */
624   struct compunit_symtab *compunit_symtab;
625
626   /* The data used to construct the hash key.  */
627   struct stmt_list_hash hash;
628
629   /* The number of symtabs from the line header.
630      The value here must match line_header.num_file_names.  */
631   unsigned int num_symtabs;
632
633   /* The symbol tables for this TU (obtained from the files listed in
634      DW_AT_stmt_list).
635      WARNING: The order of entries here must match the order of entries
636      in the line header.  After the first TU using this type_unit_group, the
637      line header for the subsequent TUs is recreated from this.  This is done
638      because we need to use the same symtabs for each TU using the same
639      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
640      there's no guarantee the line header doesn't have duplicate entries.  */
641   struct symtab **symtabs;
642 };
643
644 /* These sections are what may appear in a (real or virtual) DWO file.  */
645
646 struct dwo_sections
647 {
648   struct dwarf2_section_info abbrev;
649   struct dwarf2_section_info line;
650   struct dwarf2_section_info loc;
651   struct dwarf2_section_info loclists;
652   struct dwarf2_section_info macinfo;
653   struct dwarf2_section_info macro;
654   struct dwarf2_section_info str;
655   struct dwarf2_section_info str_offsets;
656   /* In the case of a virtual DWO file, these two are unused.  */
657   struct dwarf2_section_info info;
658   VEC (dwarf2_section_info_def) *types;
659 };
660
661 /* CUs/TUs in DWP/DWO files.  */
662
663 struct dwo_unit
664 {
665   /* Backlink to the containing struct dwo_file.  */
666   struct dwo_file *dwo_file;
667
668   /* The "id" that distinguishes this CU/TU.
669      .debug_info calls this "dwo_id", .debug_types calls this "signature".
670      Since signatures came first, we stick with it for consistency.  */
671   ULONGEST signature;
672
673   /* The section this CU/TU lives in, in the DWO file.  */
674   struct dwarf2_section_info *section;
675
676   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
677   sect_offset sect_off;
678   unsigned int length;
679
680   /* For types, offset in the type's DIE of the type defined by this TU.  */
681   cu_offset type_offset_in_tu;
682 };
683
684 /* include/dwarf2.h defines the DWP section codes.
685    It defines a max value but it doesn't define a min value, which we
686    use for error checking, so provide one.  */
687
688 enum dwp_v2_section_ids
689 {
690   DW_SECT_MIN = 1
691 };
692
693 /* Data for one DWO file.
694
695    This includes virtual DWO files (a virtual DWO file is a DWO file as it
696    appears in a DWP file).  DWP files don't really have DWO files per se -
697    comdat folding of types "loses" the DWO file they came from, and from
698    a high level view DWP files appear to contain a mass of random types.
699    However, to maintain consistency with the non-DWP case we pretend DWP
700    files contain virtual DWO files, and we assign each TU with one virtual
701    DWO file (generally based on the line and abbrev section offsets -
702    a heuristic that seems to work in practice).  */
703
704 struct dwo_file
705 {
706   dwo_file () = default;
707   DISABLE_COPY_AND_ASSIGN (dwo_file);
708
709   ~dwo_file ()
710   {
711     gdb_bfd_unref (dbfd);
712
713     VEC_free (dwarf2_section_info_def, sections.types);
714   }
715
716   /* The DW_AT_GNU_dwo_name attribute.
717      For virtual DWO files the name is constructed from the section offsets
718      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
719      from related CU+TUs.  */
720   const char *dwo_name = nullptr;
721
722   /* The DW_AT_comp_dir attribute.  */
723   const char *comp_dir = nullptr;
724
725   /* The bfd, when the file is open.  Otherwise this is NULL.
726      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
727   bfd *dbfd = nullptr;
728
729   /* The sections that make up this DWO file.
730      Remember that for virtual DWO files in DWP V2, these are virtual
731      sections (for lack of a better name).  */
732   struct dwo_sections sections {};
733
734   /* The CUs in the file.
735      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
736      an extension to handle LLVM's Link Time Optimization output (where
737      multiple source files may be compiled into a single object/dwo pair). */
738   htab_t cus {};
739
740   /* Table of TUs in the file.
741      Each element is a struct dwo_unit.  */
742   htab_t tus {};
743 };
744
745 /* These sections are what may appear in a DWP file.  */
746
747 struct dwp_sections
748 {
749   /* These are used by both DWP version 1 and 2.  */
750   struct dwarf2_section_info str;
751   struct dwarf2_section_info cu_index;
752   struct dwarf2_section_info tu_index;
753
754   /* These are only used by DWP version 2 files.
755      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
756      sections are referenced by section number, and are not recorded here.
757      In DWP version 2 there is at most one copy of all these sections, each
758      section being (effectively) comprised of the concatenation of all of the
759      individual sections that exist in the version 1 format.
760      To keep the code simple we treat each of these concatenated pieces as a
761      section itself (a virtual section?).  */
762   struct dwarf2_section_info abbrev;
763   struct dwarf2_section_info info;
764   struct dwarf2_section_info line;
765   struct dwarf2_section_info loc;
766   struct dwarf2_section_info macinfo;
767   struct dwarf2_section_info macro;
768   struct dwarf2_section_info str_offsets;
769   struct dwarf2_section_info types;
770 };
771
772 /* These sections are what may appear in a virtual DWO file in DWP version 1.
773    A virtual DWO file is a DWO file as it appears in a DWP file.  */
774
775 struct virtual_v1_dwo_sections
776 {
777   struct dwarf2_section_info abbrev;
778   struct dwarf2_section_info line;
779   struct dwarf2_section_info loc;
780   struct dwarf2_section_info macinfo;
781   struct dwarf2_section_info macro;
782   struct dwarf2_section_info str_offsets;
783   /* Each DWP hash table entry records one CU or one TU.
784      That is recorded here, and copied to dwo_unit.section.  */
785   struct dwarf2_section_info info_or_types;
786 };
787
788 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
789    In version 2, the sections of the DWO files are concatenated together
790    and stored in one section of that name.  Thus each ELF section contains
791    several "virtual" sections.  */
792
793 struct virtual_v2_dwo_sections
794 {
795   bfd_size_type abbrev_offset;
796   bfd_size_type abbrev_size;
797
798   bfd_size_type line_offset;
799   bfd_size_type line_size;
800
801   bfd_size_type loc_offset;
802   bfd_size_type loc_size;
803
804   bfd_size_type macinfo_offset;
805   bfd_size_type macinfo_size;
806
807   bfd_size_type macro_offset;
808   bfd_size_type macro_size;
809
810   bfd_size_type str_offsets_offset;
811   bfd_size_type str_offsets_size;
812
813   /* Each DWP hash table entry records one CU or one TU.
814      That is recorded here, and copied to dwo_unit.section.  */
815   bfd_size_type info_or_types_offset;
816   bfd_size_type info_or_types_size;
817 };
818
819 /* Contents of DWP hash tables.  */
820
821 struct dwp_hash_table
822 {
823   uint32_t version, nr_columns;
824   uint32_t nr_units, nr_slots;
825   const gdb_byte *hash_table, *unit_table;
826   union
827   {
828     struct
829     {
830       const gdb_byte *indices;
831     } v1;
832     struct
833     {
834       /* This is indexed by column number and gives the id of the section
835          in that column.  */
836 #define MAX_NR_V2_DWO_SECTIONS \
837   (1 /* .debug_info or .debug_types */ \
838    + 1 /* .debug_abbrev */ \
839    + 1 /* .debug_line */ \
840    + 1 /* .debug_loc */ \
841    + 1 /* .debug_str_offsets */ \
842    + 1 /* .debug_macro or .debug_macinfo */)
843       int section_ids[MAX_NR_V2_DWO_SECTIONS];
844       const gdb_byte *offsets;
845       const gdb_byte *sizes;
846     } v2;
847   } section_pool;
848 };
849
850 /* Data for one DWP file.  */
851
852 struct dwp_file
853 {
854   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
855     : name (name_),
856       dbfd (std::move (abfd))
857   {
858   }
859
860   /* Name of the file.  */
861   const char *name;
862
863   /* File format version.  */
864   int version = 0;
865
866   /* The bfd.  */
867   gdb_bfd_ref_ptr dbfd;
868
869   /* Section info for this file.  */
870   struct dwp_sections sections {};
871
872   /* Table of CUs in the file.  */
873   const struct dwp_hash_table *cus = nullptr;
874
875   /* Table of TUs in the file.  */
876   const struct dwp_hash_table *tus = nullptr;
877
878   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
879   htab_t loaded_cus {};
880   htab_t loaded_tus {};
881
882   /* Table to map ELF section numbers to their sections.
883      This is only needed for the DWP V1 file format.  */
884   unsigned int num_sections = 0;
885   asection **elf_sections = nullptr;
886 };
887
888 /* Struct used to pass misc. parameters to read_die_and_children, et
889    al.  which are used for both .debug_info and .debug_types dies.
890    All parameters here are unchanging for the life of the call.  This
891    struct exists to abstract away the constant parameters of die reading.  */
892
893 struct die_reader_specs
894 {
895   /* The bfd of die_section.  */
896   bfd* abfd;
897
898   /* The CU of the DIE we are parsing.  */
899   struct dwarf2_cu *cu;
900
901   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
902   struct dwo_file *dwo_file;
903
904   /* The section the die comes from.
905      This is either .debug_info or .debug_types, or the .dwo variants.  */
906   struct dwarf2_section_info *die_section;
907
908   /* die_section->buffer.  */
909   const gdb_byte *buffer;
910
911   /* The end of the buffer.  */
912   const gdb_byte *buffer_end;
913
914   /* The value of the DW_AT_comp_dir attribute.  */
915   const char *comp_dir;
916
917   /* The abbreviation table to use when reading the DIEs.  */
918   struct abbrev_table *abbrev_table;
919 };
920
921 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
922 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
923                                       const gdb_byte *info_ptr,
924                                       struct die_info *comp_unit_die,
925                                       int has_children,
926                                       void *data);
927
928 /* A 1-based directory index.  This is a strong typedef to prevent
929    accidentally using a directory index as a 0-based index into an
930    array/vector.  */
931 enum class dir_index : unsigned int {};
932
933 /* Likewise, a 1-based file name index.  */
934 enum class file_name_index : unsigned int {};
935
936 struct file_entry
937 {
938   file_entry () = default;
939
940   file_entry (const char *name_, dir_index d_index_,
941               unsigned int mod_time_, unsigned int length_)
942     : name (name_),
943       d_index (d_index_),
944       mod_time (mod_time_),
945       length (length_)
946   {}
947
948   /* Return the include directory at D_INDEX stored in LH.  Returns
949      NULL if D_INDEX is out of bounds.  */
950   const char *include_dir (const line_header *lh) const;
951
952   /* The file name.  Note this is an observing pointer.  The memory is
953      owned by debug_line_buffer.  */
954   const char *name {};
955
956   /* The directory index (1-based).  */
957   dir_index d_index {};
958
959   unsigned int mod_time {};
960
961   unsigned int length {};
962
963   /* True if referenced by the Line Number Program.  */
964   bool included_p {};
965
966   /* The associated symbol table, if any.  */
967   struct symtab *symtab {};
968 };
969
970 /* The line number information for a compilation unit (found in the
971    .debug_line section) begins with a "statement program header",
972    which contains the following information.  */
973 struct line_header
974 {
975   line_header ()
976     : offset_in_dwz {}
977   {}
978
979   /* Add an entry to the include directory table.  */
980   void add_include_dir (const char *include_dir);
981
982   /* Add an entry to the file name table.  */
983   void add_file_name (const char *name, dir_index d_index,
984                       unsigned int mod_time, unsigned int length);
985
986   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
987      is out of bounds.  */
988   const char *include_dir_at (dir_index index) const
989   {
990     /* Convert directory index number (1-based) to vector index
991        (0-based).  */
992     size_t vec_index = to_underlying (index) - 1;
993
994     if (vec_index >= include_dirs.size ())
995       return NULL;
996     return include_dirs[vec_index];
997   }
998
999   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
1000      is out of bounds.  */
1001   file_entry *file_name_at (file_name_index index)
1002   {
1003     /* Convert file name index number (1-based) to vector index
1004        (0-based).  */
1005     size_t vec_index = to_underlying (index) - 1;
1006
1007     if (vec_index >= file_names.size ())
1008       return NULL;
1009     return &file_names[vec_index];
1010   }
1011
1012   /* Offset of line number information in .debug_line section.  */
1013   sect_offset sect_off {};
1014
1015   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1016   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1017
1018   unsigned int total_length {};
1019   unsigned short version {};
1020   unsigned int header_length {};
1021   unsigned char minimum_instruction_length {};
1022   unsigned char maximum_ops_per_instruction {};
1023   unsigned char default_is_stmt {};
1024   int line_base {};
1025   unsigned char line_range {};
1026   unsigned char opcode_base {};
1027
1028   /* standard_opcode_lengths[i] is the number of operands for the
1029      standard opcode whose value is i.  This means that
1030      standard_opcode_lengths[0] is unused, and the last meaningful
1031      element is standard_opcode_lengths[opcode_base - 1].  */
1032   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1033
1034   /* The include_directories table.  Note these are observing
1035      pointers.  The memory is owned by debug_line_buffer.  */
1036   std::vector<const char *> include_dirs;
1037
1038   /* The file_names table.  */
1039   std::vector<file_entry> file_names;
1040
1041   /* The start and end of the statement program following this
1042      header.  These point into dwarf2_per_objfile->line_buffer.  */
1043   const gdb_byte *statement_program_start {}, *statement_program_end {};
1044 };
1045
1046 typedef std::unique_ptr<line_header> line_header_up;
1047
1048 const char *
1049 file_entry::include_dir (const line_header *lh) const
1050 {
1051   return lh->include_dir_at (d_index);
1052 }
1053
1054 /* When we construct a partial symbol table entry we only
1055    need this much information.  */
1056 struct partial_die_info : public allocate_on_obstack
1057   {
1058     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1059
1060     /* Disable assign but still keep copy ctor, which is needed
1061        load_partial_dies.   */
1062     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1063
1064     /* Adjust the partial die before generating a symbol for it.  This
1065        function may set the is_external flag or change the DIE's
1066        name.  */
1067     void fixup (struct dwarf2_cu *cu);
1068
1069     /* Read a minimal amount of information into the minimal die
1070        structure.  */
1071     const gdb_byte *read (const struct die_reader_specs *reader,
1072                           const struct abbrev_info &abbrev,
1073                           const gdb_byte *info_ptr);
1074
1075     /* Offset of this DIE.  */
1076     const sect_offset sect_off;
1077
1078     /* DWARF-2 tag for this DIE.  */
1079     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1080
1081     /* Assorted flags describing the data found in this DIE.  */
1082     const unsigned int has_children : 1;
1083
1084     unsigned int is_external : 1;
1085     unsigned int is_declaration : 1;
1086     unsigned int has_type : 1;
1087     unsigned int has_specification : 1;
1088     unsigned int has_pc_info : 1;
1089     unsigned int may_be_inlined : 1;
1090
1091     /* This DIE has been marked DW_AT_main_subprogram.  */
1092     unsigned int main_subprogram : 1;
1093
1094     /* Flag set if the SCOPE field of this structure has been
1095        computed.  */
1096     unsigned int scope_set : 1;
1097
1098     /* Flag set if the DIE has a byte_size attribute.  */
1099     unsigned int has_byte_size : 1;
1100
1101     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1102     unsigned int has_const_value : 1;
1103
1104     /* Flag set if any of the DIE's children are template arguments.  */
1105     unsigned int has_template_arguments : 1;
1106
1107     /* Flag set if fixup has been called on this die.  */
1108     unsigned int fixup_called : 1;
1109
1110     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1111     unsigned int is_dwz : 1;
1112
1113     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1114     unsigned int spec_is_dwz : 1;
1115
1116     /* The name of this DIE.  Normally the value of DW_AT_name, but
1117        sometimes a default name for unnamed DIEs.  */
1118     const char *name = nullptr;
1119
1120     /* The linkage name, if present.  */
1121     const char *linkage_name = nullptr;
1122
1123     /* The scope to prepend to our children.  This is generally
1124        allocated on the comp_unit_obstack, so will disappear
1125        when this compilation unit leaves the cache.  */
1126     const char *scope = nullptr;
1127
1128     /* Some data associated with the partial DIE.  The tag determines
1129        which field is live.  */
1130     union
1131     {
1132       /* The location description associated with this DIE, if any.  */
1133       struct dwarf_block *locdesc;
1134       /* The offset of an import, for DW_TAG_imported_unit.  */
1135       sect_offset sect_off;
1136     } d {};
1137
1138     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1139     CORE_ADDR lowpc = 0;
1140     CORE_ADDR highpc = 0;
1141
1142     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1143        DW_AT_sibling, if any.  */
1144     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1145        could return DW_AT_sibling values to its caller load_partial_dies.  */
1146     const gdb_byte *sibling = nullptr;
1147
1148     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1149        DW_AT_specification (or DW_AT_abstract_origin or
1150        DW_AT_extension).  */
1151     sect_offset spec_offset {};
1152
1153     /* Pointers to this DIE's parent, first child, and next sibling,
1154        if any.  */
1155     struct partial_die_info *die_parent = nullptr;
1156     struct partial_die_info *die_child = nullptr;
1157     struct partial_die_info *die_sibling = nullptr;
1158
1159     friend struct partial_die_info *
1160     dwarf2_cu::find_partial_die (sect_offset sect_off);
1161
1162   private:
1163     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1164     partial_die_info (sect_offset sect_off)
1165       : partial_die_info (sect_off, DW_TAG_padding, 0)
1166     {
1167     }
1168
1169     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1170                       int has_children_)
1171       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1172     {
1173       is_external = 0;
1174       is_declaration = 0;
1175       has_type = 0;
1176       has_specification = 0;
1177       has_pc_info = 0;
1178       may_be_inlined = 0;
1179       main_subprogram = 0;
1180       scope_set = 0;
1181       has_byte_size = 0;
1182       has_const_value = 0;
1183       has_template_arguments = 0;
1184       fixup_called = 0;
1185       is_dwz = 0;
1186       spec_is_dwz = 0;
1187     }
1188   };
1189
1190 /* This data structure holds the information of an abbrev.  */
1191 struct abbrev_info
1192   {
1193     unsigned int number;        /* number identifying abbrev */
1194     enum dwarf_tag tag;         /* dwarf tag */
1195     unsigned short has_children;                /* boolean */
1196     unsigned short num_attrs;   /* number of attributes */
1197     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1198     struct abbrev_info *next;   /* next in chain */
1199   };
1200
1201 struct attr_abbrev
1202   {
1203     ENUM_BITFIELD(dwarf_attribute) name : 16;
1204     ENUM_BITFIELD(dwarf_form) form : 16;
1205
1206     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1207     LONGEST implicit_const;
1208   };
1209
1210 /* Size of abbrev_table.abbrev_hash_table.  */
1211 #define ABBREV_HASH_SIZE 121
1212
1213 /* Top level data structure to contain an abbreviation table.  */
1214
1215 struct abbrev_table
1216 {
1217   explicit abbrev_table (sect_offset off)
1218     : sect_off (off)
1219   {
1220     m_abbrevs =
1221       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1222     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1223   }
1224
1225   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1226
1227   /* Allocate space for a struct abbrev_info object in
1228      ABBREV_TABLE.  */
1229   struct abbrev_info *alloc_abbrev ();
1230
1231   /* Add an abbreviation to the table.  */
1232   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1233
1234   /* Look up an abbrev in the table.
1235      Returns NULL if the abbrev is not found.  */
1236
1237   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1238
1239
1240   /* Where the abbrev table came from.
1241      This is used as a sanity check when the table is used.  */
1242   const sect_offset sect_off;
1243
1244   /* Storage for the abbrev table.  */
1245   auto_obstack abbrev_obstack;
1246
1247 private:
1248
1249   /* Hash table of abbrevs.
1250      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1251      It could be statically allocated, but the previous code didn't so we
1252      don't either.  */
1253   struct abbrev_info **m_abbrevs;
1254 };
1255
1256 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1257
1258 /* Attributes have a name and a value.  */
1259 struct attribute
1260   {
1261     ENUM_BITFIELD(dwarf_attribute) name : 16;
1262     ENUM_BITFIELD(dwarf_form) form : 15;
1263
1264     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1265        field should be in u.str (existing only for DW_STRING) but it is kept
1266        here for better struct attribute alignment.  */
1267     unsigned int string_is_canonical : 1;
1268
1269     union
1270       {
1271         const char *str;
1272         struct dwarf_block *blk;
1273         ULONGEST unsnd;
1274         LONGEST snd;
1275         CORE_ADDR addr;
1276         ULONGEST signature;
1277       }
1278     u;
1279   };
1280
1281 /* This data structure holds a complete die structure.  */
1282 struct die_info
1283   {
1284     /* DWARF-2 tag for this DIE.  */
1285     ENUM_BITFIELD(dwarf_tag) tag : 16;
1286
1287     /* Number of attributes */
1288     unsigned char num_attrs;
1289
1290     /* True if we're presently building the full type name for the
1291        type derived from this DIE.  */
1292     unsigned char building_fullname : 1;
1293
1294     /* True if this die is in process.  PR 16581.  */
1295     unsigned char in_process : 1;
1296
1297     /* Abbrev number */
1298     unsigned int abbrev;
1299
1300     /* Offset in .debug_info or .debug_types section.  */
1301     sect_offset sect_off;
1302
1303     /* The dies in a compilation unit form an n-ary tree.  PARENT
1304        points to this die's parent; CHILD points to the first child of
1305        this node; and all the children of a given node are chained
1306        together via their SIBLING fields.  */
1307     struct die_info *child;     /* Its first child, if any.  */
1308     struct die_info *sibling;   /* Its next sibling, if any.  */
1309     struct die_info *parent;    /* Its parent, if any.  */
1310
1311     /* An array of attributes, with NUM_ATTRS elements.  There may be
1312        zero, but it's not common and zero-sized arrays are not
1313        sufficiently portable C.  */
1314     struct attribute attrs[1];
1315   };
1316
1317 /* Get at parts of an attribute structure.  */
1318
1319 #define DW_STRING(attr)    ((attr)->u.str)
1320 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1321 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1322 #define DW_BLOCK(attr)     ((attr)->u.blk)
1323 #define DW_SND(attr)       ((attr)->u.snd)
1324 #define DW_ADDR(attr)      ((attr)->u.addr)
1325 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1326
1327 /* Blocks are a bunch of untyped bytes.  */
1328 struct dwarf_block
1329   {
1330     size_t size;
1331
1332     /* Valid only if SIZE is not zero.  */
1333     const gdb_byte *data;
1334   };
1335
1336 #ifndef ATTR_ALLOC_CHUNK
1337 #define ATTR_ALLOC_CHUNK 4
1338 #endif
1339
1340 /* Allocate fields for structs, unions and enums in this size.  */
1341 #ifndef DW_FIELD_ALLOC_CHUNK
1342 #define DW_FIELD_ALLOC_CHUNK 4
1343 #endif
1344
1345 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1346    but this would require a corresponding change in unpack_field_as_long
1347    and friends.  */
1348 static int bits_per_byte = 8;
1349
1350 /* When reading a variant or variant part, we track a bit more
1351    information about the field, and store it in an object of this
1352    type.  */
1353
1354 struct variant_field
1355 {
1356   /* If we see a DW_TAG_variant, then this will be the discriminant
1357      value.  */
1358   ULONGEST discriminant_value;
1359   /* If we see a DW_TAG_variant, then this will be set if this is the
1360      default branch.  */
1361   bool default_branch;
1362   /* While reading a DW_TAG_variant_part, this will be set if this
1363      field is the discriminant.  */
1364   bool is_discriminant;
1365 };
1366
1367 struct nextfield
1368 {
1369   int accessibility = 0;
1370   int virtuality = 0;
1371   /* Extra information to describe a variant or variant part.  */
1372   struct variant_field variant {};
1373   struct field field {};
1374 };
1375
1376 struct fnfieldlist
1377 {
1378   const char *name = nullptr;
1379   std::vector<struct fn_field> fnfields;
1380 };
1381
1382 /* The routines that read and process dies for a C struct or C++ class
1383    pass lists of data member fields and lists of member function fields
1384    in an instance of a field_info structure, as defined below.  */
1385 struct field_info
1386   {
1387     /* List of data member and baseclasses fields.  */
1388     std::vector<struct nextfield> fields;
1389     std::vector<struct nextfield> baseclasses;
1390
1391     /* Number of fields (including baseclasses).  */
1392     int nfields = 0;
1393
1394     /* Set if the accesibility of one of the fields is not public.  */
1395     int non_public_fields = 0;
1396
1397     /* Member function fieldlist array, contains name of possibly overloaded
1398        member function, number of overloaded member functions and a pointer
1399        to the head of the member function field chain.  */
1400     std::vector<struct fnfieldlist> fnfieldlists;
1401
1402     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1403        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1404     std::vector<struct decl_field> typedef_field_list;
1405
1406     /* Nested types defined by this class and the number of elements in this
1407        list.  */
1408     std::vector<struct decl_field> nested_types_list;
1409   };
1410
1411 /* One item on the queue of compilation units to read in full symbols
1412    for.  */
1413 struct dwarf2_queue_item
1414 {
1415   struct dwarf2_per_cu_data *per_cu;
1416   enum language pretend_language;
1417   struct dwarf2_queue_item *next;
1418 };
1419
1420 /* The current queue.  */
1421 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1422
1423 /* Loaded secondary compilation units are kept in memory until they
1424    have not been referenced for the processing of this many
1425    compilation units.  Set this to zero to disable caching.  Cache
1426    sizes of up to at least twenty will improve startup time for
1427    typical inter-CU-reference binaries, at an obvious memory cost.  */
1428 static int dwarf_max_cache_age = 5;
1429 static void
1430 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1431                           struct cmd_list_element *c, const char *value)
1432 {
1433   fprintf_filtered (file, _("The upper bound on the age of cached "
1434                             "DWARF compilation units is %s.\n"),
1435                     value);
1436 }
1437 \f
1438 /* local function prototypes */
1439
1440 static const char *get_section_name (const struct dwarf2_section_info *);
1441
1442 static const char *get_section_file_name (const struct dwarf2_section_info *);
1443
1444 static void dwarf2_find_base_address (struct die_info *die,
1445                                       struct dwarf2_cu *cu);
1446
1447 static struct partial_symtab *create_partial_symtab
1448   (struct dwarf2_per_cu_data *per_cu, const char *name);
1449
1450 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1451                                         const gdb_byte *info_ptr,
1452                                         struct die_info *type_unit_die,
1453                                         int has_children, void *data);
1454
1455 static void dwarf2_build_psymtabs_hard
1456   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1457
1458 static void scan_partial_symbols (struct partial_die_info *,
1459                                   CORE_ADDR *, CORE_ADDR *,
1460                                   int, struct dwarf2_cu *);
1461
1462 static void add_partial_symbol (struct partial_die_info *,
1463                                 struct dwarf2_cu *);
1464
1465 static void add_partial_namespace (struct partial_die_info *pdi,
1466                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1467                                    int set_addrmap, struct dwarf2_cu *cu);
1468
1469 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1470                                 CORE_ADDR *highpc, int set_addrmap,
1471                                 struct dwarf2_cu *cu);
1472
1473 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1474                                      struct dwarf2_cu *cu);
1475
1476 static void add_partial_subprogram (struct partial_die_info *pdi,
1477                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1478                                     int need_pc, struct dwarf2_cu *cu);
1479
1480 static void dwarf2_read_symtab (struct partial_symtab *,
1481                                 struct objfile *);
1482
1483 static void psymtab_to_symtab_1 (struct partial_symtab *);
1484
1485 static abbrev_table_up abbrev_table_read_table
1486   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1487    sect_offset);
1488
1489 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1490
1491 static struct partial_die_info *load_partial_dies
1492   (const struct die_reader_specs *, const gdb_byte *, int);
1493
1494 /* A pair of partial_die_info and compilation unit.  */
1495 struct cu_partial_die_info
1496 {
1497   /* The compilation unit of the partial_die_info.  */
1498   struct dwarf2_cu *cu;
1499   /* A partial_die_info.  */
1500   struct partial_die_info *pdi;
1501
1502   cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
1503     : cu (cu),
1504       pdi (pdi)
1505   { /* Nothhing.  */ }
1506
1507 private:
1508   cu_partial_die_info () = delete;
1509 };
1510
1511 static const struct cu_partial_die_info find_partial_die (sect_offset, int,
1512                                                           struct dwarf2_cu *);
1513
1514 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1515                                        struct attribute *, struct attr_abbrev *,
1516                                        const gdb_byte *);
1517
1518 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1519
1520 static int read_1_signed_byte (bfd *, const gdb_byte *);
1521
1522 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1523
1524 /* Read the next three bytes (little-endian order) as an unsigned integer.  */
1525 static unsigned int read_3_bytes (bfd *, const gdb_byte *);
1526
1527 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1528
1529 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1530
1531 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1532                                unsigned int *);
1533
1534 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1535
1536 static LONGEST read_checked_initial_length_and_offset
1537   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1538    unsigned int *, unsigned int *);
1539
1540 static LONGEST read_offset (bfd *, const gdb_byte *,
1541                             const struct comp_unit_head *,
1542                             unsigned int *);
1543
1544 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1545
1546 static sect_offset read_abbrev_offset
1547   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1548    struct dwarf2_section_info *, sect_offset);
1549
1550 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1551
1552 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1553
1554 static const char *read_indirect_string
1555   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1556    const struct comp_unit_head *, unsigned int *);
1557
1558 static const char *read_indirect_line_string
1559   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1560    const struct comp_unit_head *, unsigned int *);
1561
1562 static const char *read_indirect_string_at_offset
1563   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1564    LONGEST str_offset);
1565
1566 static const char *read_indirect_string_from_dwz
1567   (struct objfile *objfile, struct dwz_file *, LONGEST);
1568
1569 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1570
1571 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1572                                               const gdb_byte *,
1573                                               unsigned int *);
1574
1575 static const char *read_str_index (const struct die_reader_specs *reader,
1576                                    ULONGEST str_index);
1577
1578 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1579
1580 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1581                                       struct dwarf2_cu *);
1582
1583 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1584                                                 unsigned int);
1585
1586 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1587                                        struct dwarf2_cu *cu);
1588
1589 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1590                                struct dwarf2_cu *cu);
1591
1592 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1593
1594 static struct die_info *die_specification (struct die_info *die,
1595                                            struct dwarf2_cu **);
1596
1597 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1598                                                 struct dwarf2_cu *cu);
1599
1600 static void dwarf_decode_lines (struct line_header *, const char *,
1601                                 struct dwarf2_cu *, struct partial_symtab *,
1602                                 CORE_ADDR, int decode_mapping);
1603
1604 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1605                                   const char *);
1606
1607 static struct symbol *new_symbol (struct die_info *, struct type *,
1608                                   struct dwarf2_cu *, struct symbol * = NULL);
1609
1610 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1611                                 struct dwarf2_cu *);
1612
1613 static void dwarf2_const_value_attr (const struct attribute *attr,
1614                                      struct type *type,
1615                                      const char *name,
1616                                      struct obstack *obstack,
1617                                      struct dwarf2_cu *cu, LONGEST *value,
1618                                      const gdb_byte **bytes,
1619                                      struct dwarf2_locexpr_baton **baton);
1620
1621 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1622
1623 static int need_gnat_info (struct dwarf2_cu *);
1624
1625 static struct type *die_descriptive_type (struct die_info *,
1626                                           struct dwarf2_cu *);
1627
1628 static void set_descriptive_type (struct type *, struct die_info *,
1629                                   struct dwarf2_cu *);
1630
1631 static struct type *die_containing_type (struct die_info *,
1632                                          struct dwarf2_cu *);
1633
1634 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1635                                      struct dwarf2_cu *);
1636
1637 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1638
1639 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1640
1641 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1642
1643 static char *typename_concat (struct obstack *obs, const char *prefix,
1644                               const char *suffix, int physname,
1645                               struct dwarf2_cu *cu);
1646
1647 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1648
1649 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1650
1651 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1652
1653 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1654
1655 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1656
1657 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1658
1659 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1660                                struct dwarf2_cu *, struct partial_symtab *);
1661
1662 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1663    values.  Keep the items ordered with increasing constraints compliance.  */
1664 enum pc_bounds_kind
1665 {
1666   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1667   PC_BOUNDS_NOT_PRESENT,
1668
1669   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1670      were present but they do not form a valid range of PC addresses.  */
1671   PC_BOUNDS_INVALID,
1672
1673   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1674   PC_BOUNDS_RANGES,
1675
1676   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1677   PC_BOUNDS_HIGH_LOW,
1678 };
1679
1680 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1681                                                  CORE_ADDR *, CORE_ADDR *,
1682                                                  struct dwarf2_cu *,
1683                                                  struct partial_symtab *);
1684
1685 static void get_scope_pc_bounds (struct die_info *,
1686                                  CORE_ADDR *, CORE_ADDR *,
1687                                  struct dwarf2_cu *);
1688
1689 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1690                                         CORE_ADDR, struct dwarf2_cu *);
1691
1692 static void dwarf2_add_field (struct field_info *, struct die_info *,
1693                               struct dwarf2_cu *);
1694
1695 static void dwarf2_attach_fields_to_type (struct field_info *,
1696                                           struct type *, struct dwarf2_cu *);
1697
1698 static void dwarf2_add_member_fn (struct field_info *,
1699                                   struct die_info *, struct type *,
1700                                   struct dwarf2_cu *);
1701
1702 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1703                                              struct type *,
1704                                              struct dwarf2_cu *);
1705
1706 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1707
1708 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1709
1710 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1711
1712 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1713
1714 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1715
1716 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1717
1718 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1719
1720 static struct type *read_module_type (struct die_info *die,
1721                                       struct dwarf2_cu *cu);
1722
1723 static const char *namespace_name (struct die_info *die,
1724                                    int *is_anonymous, struct dwarf2_cu *);
1725
1726 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1727
1728 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1729
1730 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1731                                                        struct dwarf2_cu *);
1732
1733 static struct die_info *read_die_and_siblings_1
1734   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1735    struct die_info *);
1736
1737 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1738                                                const gdb_byte *info_ptr,
1739                                                const gdb_byte **new_info_ptr,
1740                                                struct die_info *parent);
1741
1742 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1743                                         struct die_info **, const gdb_byte *,
1744                                         int *, int);
1745
1746 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1747                                       struct die_info **, const gdb_byte *,
1748                                       int *);
1749
1750 static void process_die (struct die_info *, struct dwarf2_cu *);
1751
1752 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1753                                              struct obstack *);
1754
1755 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1756
1757 static const char *dwarf2_full_name (const char *name,
1758                                      struct die_info *die,
1759                                      struct dwarf2_cu *cu);
1760
1761 static const char *dwarf2_physname (const char *name, struct die_info *die,
1762                                     struct dwarf2_cu *cu);
1763
1764 static struct die_info *dwarf2_extension (struct die_info *die,
1765                                           struct dwarf2_cu **);
1766
1767 static const char *dwarf_tag_name (unsigned int);
1768
1769 static const char *dwarf_attr_name (unsigned int);
1770
1771 static const char *dwarf_form_name (unsigned int);
1772
1773 static const char *dwarf_bool_name (unsigned int);
1774
1775 static const char *dwarf_type_encoding_name (unsigned int);
1776
1777 static struct die_info *sibling_die (struct die_info *);
1778
1779 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1780
1781 static void dump_die_for_error (struct die_info *);
1782
1783 static void dump_die_1 (struct ui_file *, int level, int max_level,
1784                         struct die_info *);
1785
1786 /*static*/ void dump_die (struct die_info *, int max_level);
1787
1788 static void store_in_ref_table (struct die_info *,
1789                                 struct dwarf2_cu *);
1790
1791 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1792
1793 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1794
1795 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1796                                                const struct attribute *,
1797                                                struct dwarf2_cu **);
1798
1799 static struct die_info *follow_die_ref (struct die_info *,
1800                                         const struct attribute *,
1801                                         struct dwarf2_cu **);
1802
1803 static struct die_info *follow_die_sig (struct die_info *,
1804                                         const struct attribute *,
1805                                         struct dwarf2_cu **);
1806
1807 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1808                                          struct dwarf2_cu *);
1809
1810 static struct type *get_DW_AT_signature_type (struct die_info *,
1811                                               const struct attribute *,
1812                                               struct dwarf2_cu *);
1813
1814 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1815
1816 static void read_signatured_type (struct signatured_type *);
1817
1818 static int attr_to_dynamic_prop (const struct attribute *attr,
1819                                  struct die_info *die, struct dwarf2_cu *cu,
1820                                  struct dynamic_prop *prop);
1821
1822 /* memory allocation interface */
1823
1824 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1825
1826 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1827
1828 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1829
1830 static int attr_form_is_block (const struct attribute *);
1831
1832 static int attr_form_is_section_offset (const struct attribute *);
1833
1834 static int attr_form_is_constant (const struct attribute *);
1835
1836 static int attr_form_is_ref (const struct attribute *);
1837
1838 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1839                                    struct dwarf2_loclist_baton *baton,
1840                                    const struct attribute *attr);
1841
1842 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1843                                          struct symbol *sym,
1844                                          struct dwarf2_cu *cu,
1845                                          int is_block);
1846
1847 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1848                                      const gdb_byte *info_ptr,
1849                                      struct abbrev_info *abbrev);
1850
1851 static hashval_t partial_die_hash (const void *item);
1852
1853 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1854
1855 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1856   (sect_offset sect_off, unsigned int offset_in_dwz,
1857    struct dwarf2_per_objfile *dwarf2_per_objfile);
1858
1859 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1860                                    struct die_info *comp_unit_die,
1861                                    enum language pretend_language);
1862
1863 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1864
1865 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1866
1867 static struct type *set_die_type (struct die_info *, struct type *,
1868                                   struct dwarf2_cu *);
1869
1870 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1871
1872 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1873
1874 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1875                                  enum language);
1876
1877 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1878                                     enum language);
1879
1880 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1881                                     enum language);
1882
1883 static void dwarf2_add_dependence (struct dwarf2_cu *,
1884                                    struct dwarf2_per_cu_data *);
1885
1886 static void dwarf2_mark (struct dwarf2_cu *);
1887
1888 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1889
1890 static struct type *get_die_type_at_offset (sect_offset,
1891                                             struct dwarf2_per_cu_data *);
1892
1893 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1894
1895 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1896                              enum language pretend_language);
1897
1898 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1899
1900 /* Class, the destructor of which frees all allocated queue entries.  This
1901    will only have work to do if an error was thrown while processing the
1902    dwarf.  If no error was thrown then the queue entries should have all
1903    been processed, and freed, as we went along.  */
1904
1905 class dwarf2_queue_guard
1906 {
1907 public:
1908   dwarf2_queue_guard () = default;
1909
1910   /* Free any entries remaining on the queue.  There should only be
1911      entries left if we hit an error while processing the dwarf.  */
1912   ~dwarf2_queue_guard ()
1913   {
1914     struct dwarf2_queue_item *item, *last;
1915
1916     item = dwarf2_queue;
1917     while (item)
1918       {
1919         /* Anything still marked queued is likely to be in an
1920            inconsistent state, so discard it.  */
1921         if (item->per_cu->queued)
1922           {
1923             if (item->per_cu->cu != NULL)
1924               free_one_cached_comp_unit (item->per_cu);
1925             item->per_cu->queued = 0;
1926           }
1927
1928         last = item;
1929         item = item->next;
1930         xfree (last);
1931       }
1932
1933     dwarf2_queue = dwarf2_queue_tail = NULL;
1934   }
1935 };
1936
1937 /* The return type of find_file_and_directory.  Note, the enclosed
1938    string pointers are only valid while this object is valid.  */
1939
1940 struct file_and_directory
1941 {
1942   /* The filename.  This is never NULL.  */
1943   const char *name;
1944
1945   /* The compilation directory.  NULL if not known.  If we needed to
1946      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1947      points directly to the DW_AT_comp_dir string attribute owned by
1948      the obstack that owns the DIE.  */
1949   const char *comp_dir;
1950
1951   /* If we needed to build a new string for comp_dir, this is what
1952      owns the storage.  */
1953   std::string comp_dir_storage;
1954 };
1955
1956 static file_and_directory find_file_and_directory (struct die_info *die,
1957                                                    struct dwarf2_cu *cu);
1958
1959 static char *file_full_name (int file, struct line_header *lh,
1960                              const char *comp_dir);
1961
1962 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1963 enum class rcuh_kind { COMPILE, TYPE };
1964
1965 static const gdb_byte *read_and_check_comp_unit_head
1966   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1967    struct comp_unit_head *header,
1968    struct dwarf2_section_info *section,
1969    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1970    rcuh_kind section_kind);
1971
1972 static void init_cutu_and_read_dies
1973   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1974    int use_existing_cu, int keep, bool skip_partial,
1975    die_reader_func_ftype *die_reader_func, void *data);
1976
1977 static void init_cutu_and_read_dies_simple
1978   (struct dwarf2_per_cu_data *this_cu,
1979    die_reader_func_ftype *die_reader_func, void *data);
1980
1981 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1982
1983 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1984
1985 static struct dwo_unit *lookup_dwo_unit_in_dwp
1986   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1987    struct dwp_file *dwp_file, const char *comp_dir,
1988    ULONGEST signature, int is_debug_types);
1989
1990 static struct dwp_file *get_dwp_file
1991   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1992
1993 static struct dwo_unit *lookup_dwo_comp_unit
1994   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1995
1996 static struct dwo_unit *lookup_dwo_type_unit
1997   (struct signatured_type *, const char *, const char *);
1998
1999 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
2000
2001 /* A unique pointer to a dwo_file.  */
2002
2003 typedef std::unique_ptr<struct dwo_file> dwo_file_up;
2004
2005 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2006
2007 static void check_producer (struct dwarf2_cu *cu);
2008
2009 static void free_line_header_voidp (void *arg);
2010 \f
2011 /* Various complaints about symbol reading that don't abort the process.  */
2012
2013 static void
2014 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2015 {
2016   complaint (_("statement list doesn't fit in .debug_line section"));
2017 }
2018
2019 static void
2020 dwarf2_debug_line_missing_file_complaint (void)
2021 {
2022   complaint (_(".debug_line section has line data without a file"));
2023 }
2024
2025 static void
2026 dwarf2_debug_line_missing_end_sequence_complaint (void)
2027 {
2028   complaint (_(".debug_line section has line "
2029                "program sequence without an end"));
2030 }
2031
2032 static void
2033 dwarf2_complex_location_expr_complaint (void)
2034 {
2035   complaint (_("location expression too complex"));
2036 }
2037
2038 static void
2039 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2040                                               int arg3)
2041 {
2042   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2043              arg1, arg2, arg3);
2044 }
2045
2046 static void
2047 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2048 {
2049   complaint (_("debug info runs off end of %s section"
2050                " [in module %s]"),
2051              get_section_name (section),
2052              get_section_file_name (section));
2053 }
2054
2055 static void
2056 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2057 {
2058   complaint (_("macro debug info contains a "
2059                "malformed macro definition:\n`%s'"),
2060              arg1);
2061 }
2062
2063 static void
2064 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2065 {
2066   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2067              arg1, arg2);
2068 }
2069
2070 /* Hash function for line_header_hash.  */
2071
2072 static hashval_t
2073 line_header_hash (const struct line_header *ofs)
2074 {
2075   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2076 }
2077
2078 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2079
2080 static hashval_t
2081 line_header_hash_voidp (const void *item)
2082 {
2083   const struct line_header *ofs = (const struct line_header *) item;
2084
2085   return line_header_hash (ofs);
2086 }
2087
2088 /* Equality function for line_header_hash.  */
2089
2090 static int
2091 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2092 {
2093   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2094   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2095
2096   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2097           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2098 }
2099
2100 \f
2101
2102 /* Read the given attribute value as an address, taking the attribute's
2103    form into account.  */
2104
2105 static CORE_ADDR
2106 attr_value_as_address (struct attribute *attr)
2107 {
2108   CORE_ADDR addr;
2109
2110   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_addrx
2111       && attr->form != DW_FORM_GNU_addr_index)
2112     {
2113       /* Aside from a few clearly defined exceptions, attributes that
2114          contain an address must always be in DW_FORM_addr form.
2115          Unfortunately, some compilers happen to be violating this
2116          requirement by encoding addresses using other forms, such
2117          as DW_FORM_data4 for example.  For those broken compilers,
2118          we try to do our best, without any guarantee of success,
2119          to interpret the address correctly.  It would also be nice
2120          to generate a complaint, but that would require us to maintain
2121          a list of legitimate cases where a non-address form is allowed,
2122          as well as update callers to pass in at least the CU's DWARF
2123          version.  This is more overhead than what we're willing to
2124          expand for a pretty rare case.  */
2125       addr = DW_UNSND (attr);
2126     }
2127   else
2128     addr = DW_ADDR (attr);
2129
2130   return addr;
2131 }
2132
2133 /* See declaration.  */
2134
2135 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2136                                         const dwarf2_debug_sections *names)
2137   : objfile (objfile_)
2138 {
2139   if (names == NULL)
2140     names = &dwarf2_elf_names;
2141
2142   bfd *obfd = objfile->obfd;
2143
2144   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2145     locate_sections (obfd, sec, *names);
2146 }
2147
2148 dwarf2_per_objfile::~dwarf2_per_objfile ()
2149 {
2150   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2151   free_cached_comp_units ();
2152
2153   if (quick_file_names_table)
2154     htab_delete (quick_file_names_table);
2155
2156   if (line_header_hash)
2157     htab_delete (line_header_hash);
2158
2159   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2160     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2161
2162   for (signatured_type *sig_type : all_type_units)
2163     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2164
2165   VEC_free (dwarf2_section_info_def, types);
2166
2167   /* Everything else should be on the objfile obstack.  */
2168 }
2169
2170 /* See declaration.  */
2171
2172 void
2173 dwarf2_per_objfile::free_cached_comp_units ()
2174 {
2175   dwarf2_per_cu_data *per_cu = read_in_chain;
2176   dwarf2_per_cu_data **last_chain = &read_in_chain;
2177   while (per_cu != NULL)
2178     {
2179       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2180
2181       delete per_cu->cu;
2182       *last_chain = next_cu;
2183       per_cu = next_cu;
2184     }
2185 }
2186
2187 /* A helper class that calls free_cached_comp_units on
2188    destruction.  */
2189
2190 class free_cached_comp_units
2191 {
2192 public:
2193
2194   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2195     : m_per_objfile (per_objfile)
2196   {
2197   }
2198
2199   ~free_cached_comp_units ()
2200   {
2201     m_per_objfile->free_cached_comp_units ();
2202   }
2203
2204   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2205
2206 private:
2207
2208   dwarf2_per_objfile *m_per_objfile;
2209 };
2210
2211 /* Try to locate the sections we need for DWARF 2 debugging
2212    information and return true if we have enough to do something.
2213    NAMES points to the dwarf2 section names, or is NULL if the standard
2214    ELF names are used.  */
2215
2216 int
2217 dwarf2_has_info (struct objfile *objfile,
2218                  const struct dwarf2_debug_sections *names)
2219 {
2220   if (objfile->flags & OBJF_READNEVER)
2221     return 0;
2222
2223   struct dwarf2_per_objfile *dwarf2_per_objfile
2224     = get_dwarf2_per_objfile (objfile);
2225
2226   if (dwarf2_per_objfile == NULL)
2227     dwarf2_per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile,
2228                                                           names);
2229
2230   return (!dwarf2_per_objfile->info.is_virtual
2231           && dwarf2_per_objfile->info.s.section != NULL
2232           && !dwarf2_per_objfile->abbrev.is_virtual
2233           && dwarf2_per_objfile->abbrev.s.section != NULL);
2234 }
2235
2236 /* Return the containing section of virtual section SECTION.  */
2237
2238 static struct dwarf2_section_info *
2239 get_containing_section (const struct dwarf2_section_info *section)
2240 {
2241   gdb_assert (section->is_virtual);
2242   return section->s.containing_section;
2243 }
2244
2245 /* Return the bfd owner of SECTION.  */
2246
2247 static struct bfd *
2248 get_section_bfd_owner (const struct dwarf2_section_info *section)
2249 {
2250   if (section->is_virtual)
2251     {
2252       section = get_containing_section (section);
2253       gdb_assert (!section->is_virtual);
2254     }
2255   return section->s.section->owner;
2256 }
2257
2258 /* Return the bfd section of SECTION.
2259    Returns NULL if the section is not present.  */
2260
2261 static asection *
2262 get_section_bfd_section (const struct dwarf2_section_info *section)
2263 {
2264   if (section->is_virtual)
2265     {
2266       section = get_containing_section (section);
2267       gdb_assert (!section->is_virtual);
2268     }
2269   return section->s.section;
2270 }
2271
2272 /* Return the name of SECTION.  */
2273
2274 static const char *
2275 get_section_name (const struct dwarf2_section_info *section)
2276 {
2277   asection *sectp = get_section_bfd_section (section);
2278
2279   gdb_assert (sectp != NULL);
2280   return bfd_section_name (get_section_bfd_owner (section), sectp);
2281 }
2282
2283 /* Return the name of the file SECTION is in.  */
2284
2285 static const char *
2286 get_section_file_name (const struct dwarf2_section_info *section)
2287 {
2288   bfd *abfd = get_section_bfd_owner (section);
2289
2290   return bfd_get_filename (abfd);
2291 }
2292
2293 /* Return the id of SECTION.
2294    Returns 0 if SECTION doesn't exist.  */
2295
2296 static int
2297 get_section_id (const struct dwarf2_section_info *section)
2298 {
2299   asection *sectp = get_section_bfd_section (section);
2300
2301   if (sectp == NULL)
2302     return 0;
2303   return sectp->id;
2304 }
2305
2306 /* Return the flags of SECTION.
2307    SECTION (or containing section if this is a virtual section) must exist.  */
2308
2309 static int
2310 get_section_flags (const struct dwarf2_section_info *section)
2311 {
2312   asection *sectp = get_section_bfd_section (section);
2313
2314   gdb_assert (sectp != NULL);
2315   return bfd_get_section_flags (sectp->owner, sectp);
2316 }
2317
2318 /* When loading sections, we look either for uncompressed section or for
2319    compressed section names.  */
2320
2321 static int
2322 section_is_p (const char *section_name,
2323               const struct dwarf2_section_names *names)
2324 {
2325   if (names->normal != NULL
2326       && strcmp (section_name, names->normal) == 0)
2327     return 1;
2328   if (names->compressed != NULL
2329       && strcmp (section_name, names->compressed) == 0)
2330     return 1;
2331   return 0;
2332 }
2333
2334 /* See declaration.  */
2335
2336 void
2337 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2338                                      const dwarf2_debug_sections &names)
2339 {
2340   flagword aflag = bfd_get_section_flags (abfd, sectp);
2341
2342   if ((aflag & SEC_HAS_CONTENTS) == 0)
2343     {
2344     }
2345   else if (section_is_p (sectp->name, &names.info))
2346     {
2347       this->info.s.section = sectp;
2348       this->info.size = bfd_get_section_size (sectp);
2349     }
2350   else if (section_is_p (sectp->name, &names.abbrev))
2351     {
2352       this->abbrev.s.section = sectp;
2353       this->abbrev.size = bfd_get_section_size (sectp);
2354     }
2355   else if (section_is_p (sectp->name, &names.line))
2356     {
2357       this->line.s.section = sectp;
2358       this->line.size = bfd_get_section_size (sectp);
2359     }
2360   else if (section_is_p (sectp->name, &names.loc))
2361     {
2362       this->loc.s.section = sectp;
2363       this->loc.size = bfd_get_section_size (sectp);
2364     }
2365   else if (section_is_p (sectp->name, &names.loclists))
2366     {
2367       this->loclists.s.section = sectp;
2368       this->loclists.size = bfd_get_section_size (sectp);
2369     }
2370   else if (section_is_p (sectp->name, &names.macinfo))
2371     {
2372       this->macinfo.s.section = sectp;
2373       this->macinfo.size = bfd_get_section_size (sectp);
2374     }
2375   else if (section_is_p (sectp->name, &names.macro))
2376     {
2377       this->macro.s.section = sectp;
2378       this->macro.size = bfd_get_section_size (sectp);
2379     }
2380   else if (section_is_p (sectp->name, &names.str))
2381     {
2382       this->str.s.section = sectp;
2383       this->str.size = bfd_get_section_size (sectp);
2384     }
2385   else if (section_is_p (sectp->name, &names.line_str))
2386     {
2387       this->line_str.s.section = sectp;
2388       this->line_str.size = bfd_get_section_size (sectp);
2389     }
2390   else if (section_is_p (sectp->name, &names.addr))
2391     {
2392       this->addr.s.section = sectp;
2393       this->addr.size = bfd_get_section_size (sectp);
2394     }
2395   else if (section_is_p (sectp->name, &names.frame))
2396     {
2397       this->frame.s.section = sectp;
2398       this->frame.size = bfd_get_section_size (sectp);
2399     }
2400   else if (section_is_p (sectp->name, &names.eh_frame))
2401     {
2402       this->eh_frame.s.section = sectp;
2403       this->eh_frame.size = bfd_get_section_size (sectp);
2404     }
2405   else if (section_is_p (sectp->name, &names.ranges))
2406     {
2407       this->ranges.s.section = sectp;
2408       this->ranges.size = bfd_get_section_size (sectp);
2409     }
2410   else if (section_is_p (sectp->name, &names.rnglists))
2411     {
2412       this->rnglists.s.section = sectp;
2413       this->rnglists.size = bfd_get_section_size (sectp);
2414     }
2415   else if (section_is_p (sectp->name, &names.types))
2416     {
2417       struct dwarf2_section_info type_section;
2418
2419       memset (&type_section, 0, sizeof (type_section));
2420       type_section.s.section = sectp;
2421       type_section.size = bfd_get_section_size (sectp);
2422
2423       VEC_safe_push (dwarf2_section_info_def, this->types,
2424                      &type_section);
2425     }
2426   else if (section_is_p (sectp->name, &names.gdb_index))
2427     {
2428       this->gdb_index.s.section = sectp;
2429       this->gdb_index.size = bfd_get_section_size (sectp);
2430     }
2431   else if (section_is_p (sectp->name, &names.debug_names))
2432     {
2433       this->debug_names.s.section = sectp;
2434       this->debug_names.size = bfd_get_section_size (sectp);
2435     }
2436   else if (section_is_p (sectp->name, &names.debug_aranges))
2437     {
2438       this->debug_aranges.s.section = sectp;
2439       this->debug_aranges.size = bfd_get_section_size (sectp);
2440     }
2441
2442   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2443       && bfd_section_vma (abfd, sectp) == 0)
2444     this->has_section_at_zero = true;
2445 }
2446
2447 /* A helper function that decides whether a section is empty,
2448    or not present.  */
2449
2450 static int
2451 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2452 {
2453   if (section->is_virtual)
2454     return section->size == 0;
2455   return section->s.section == NULL || section->size == 0;
2456 }
2457
2458 /* See dwarf2read.h.  */
2459
2460 void
2461 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2462 {
2463   asection *sectp;
2464   bfd *abfd;
2465   gdb_byte *buf, *retbuf;
2466
2467   if (info->readin)
2468     return;
2469   info->buffer = NULL;
2470   info->readin = true;
2471
2472   if (dwarf2_section_empty_p (info))
2473     return;
2474
2475   sectp = get_section_bfd_section (info);
2476
2477   /* If this is a virtual section we need to read in the real one first.  */
2478   if (info->is_virtual)
2479     {
2480       struct dwarf2_section_info *containing_section =
2481         get_containing_section (info);
2482
2483       gdb_assert (sectp != NULL);
2484       if ((sectp->flags & SEC_RELOC) != 0)
2485         {
2486           error (_("Dwarf Error: DWP format V2 with relocations is not"
2487                    " supported in section %s [in module %s]"),
2488                  get_section_name (info), get_section_file_name (info));
2489         }
2490       dwarf2_read_section (objfile, containing_section);
2491       /* Other code should have already caught virtual sections that don't
2492          fit.  */
2493       gdb_assert (info->virtual_offset + info->size
2494                   <= containing_section->size);
2495       /* If the real section is empty or there was a problem reading the
2496          section we shouldn't get here.  */
2497       gdb_assert (containing_section->buffer != NULL);
2498       info->buffer = containing_section->buffer + info->virtual_offset;
2499       return;
2500     }
2501
2502   /* If the section has relocations, we must read it ourselves.
2503      Otherwise we attach it to the BFD.  */
2504   if ((sectp->flags & SEC_RELOC) == 0)
2505     {
2506       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2507       return;
2508     }
2509
2510   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2511   info->buffer = buf;
2512
2513   /* When debugging .o files, we may need to apply relocations; see
2514      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2515      We never compress sections in .o files, so we only need to
2516      try this when the section is not compressed.  */
2517   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2518   if (retbuf != NULL)
2519     {
2520       info->buffer = retbuf;
2521       return;
2522     }
2523
2524   abfd = get_section_bfd_owner (info);
2525   gdb_assert (abfd != NULL);
2526
2527   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2528       || bfd_bread (buf, info->size, abfd) != info->size)
2529     {
2530       error (_("Dwarf Error: Can't read DWARF data"
2531                " in section %s [in module %s]"),
2532              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2533     }
2534 }
2535
2536 /* A helper function that returns the size of a section in a safe way.
2537    If you are positive that the section has been read before using the
2538    size, then it is safe to refer to the dwarf2_section_info object's
2539    "size" field directly.  In other cases, you must call this
2540    function, because for compressed sections the size field is not set
2541    correctly until the section has been read.  */
2542
2543 static bfd_size_type
2544 dwarf2_section_size (struct objfile *objfile,
2545                      struct dwarf2_section_info *info)
2546 {
2547   if (!info->readin)
2548     dwarf2_read_section (objfile, info);
2549   return info->size;
2550 }
2551
2552 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2553    SECTION_NAME.  */
2554
2555 void
2556 dwarf2_get_section_info (struct objfile *objfile,
2557                          enum dwarf2_section_enum sect,
2558                          asection **sectp, const gdb_byte **bufp,
2559                          bfd_size_type *sizep)
2560 {
2561   struct dwarf2_per_objfile *data = dwarf2_objfile_data_key.get (objfile);
2562   struct dwarf2_section_info *info;
2563
2564   /* We may see an objfile without any DWARF, in which case we just
2565      return nothing.  */
2566   if (data == NULL)
2567     {
2568       *sectp = NULL;
2569       *bufp = NULL;
2570       *sizep = 0;
2571       return;
2572     }
2573   switch (sect)
2574     {
2575     case DWARF2_DEBUG_FRAME:
2576       info = &data->frame;
2577       break;
2578     case DWARF2_EH_FRAME:
2579       info = &data->eh_frame;
2580       break;
2581     default:
2582       gdb_assert_not_reached ("unexpected section");
2583     }
2584
2585   dwarf2_read_section (objfile, info);
2586
2587   *sectp = get_section_bfd_section (info);
2588   *bufp = info->buffer;
2589   *sizep = info->size;
2590 }
2591
2592 /* A helper function to find the sections for a .dwz file.  */
2593
2594 static void
2595 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2596 {
2597   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2598
2599   /* Note that we only support the standard ELF names, because .dwz
2600      is ELF-only (at the time of writing).  */
2601   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2602     {
2603       dwz_file->abbrev.s.section = sectp;
2604       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2605     }
2606   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2607     {
2608       dwz_file->info.s.section = sectp;
2609       dwz_file->info.size = bfd_get_section_size (sectp);
2610     }
2611   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2612     {
2613       dwz_file->str.s.section = sectp;
2614       dwz_file->str.size = bfd_get_section_size (sectp);
2615     }
2616   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2617     {
2618       dwz_file->line.s.section = sectp;
2619       dwz_file->line.size = bfd_get_section_size (sectp);
2620     }
2621   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2622     {
2623       dwz_file->macro.s.section = sectp;
2624       dwz_file->macro.size = bfd_get_section_size (sectp);
2625     }
2626   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2627     {
2628       dwz_file->gdb_index.s.section = sectp;
2629       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2630     }
2631   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2632     {
2633       dwz_file->debug_names.s.section = sectp;
2634       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2635     }
2636 }
2637
2638 /* See dwarf2read.h.  */
2639
2640 struct dwz_file *
2641 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2642 {
2643   const char *filename;
2644   bfd_size_type buildid_len_arg;
2645   size_t buildid_len;
2646   bfd_byte *buildid;
2647
2648   if (dwarf2_per_objfile->dwz_file != NULL)
2649     return dwarf2_per_objfile->dwz_file.get ();
2650
2651   bfd_set_error (bfd_error_no_error);
2652   gdb::unique_xmalloc_ptr<char> data
2653     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2654                                   &buildid_len_arg, &buildid));
2655   if (data == NULL)
2656     {
2657       if (bfd_get_error () == bfd_error_no_error)
2658         return NULL;
2659       error (_("could not read '.gnu_debugaltlink' section: %s"),
2660              bfd_errmsg (bfd_get_error ()));
2661     }
2662
2663   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2664
2665   buildid_len = (size_t) buildid_len_arg;
2666
2667   filename = data.get ();
2668
2669   std::string abs_storage;
2670   if (!IS_ABSOLUTE_PATH (filename))
2671     {
2672       gdb::unique_xmalloc_ptr<char> abs
2673         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2674
2675       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2676       filename = abs_storage.c_str ();
2677     }
2678
2679   /* First try the file name given in the section.  If that doesn't
2680      work, try to use the build-id instead.  */
2681   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2682   if (dwz_bfd != NULL)
2683     {
2684       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2685         dwz_bfd.reset (nullptr);
2686     }
2687
2688   if (dwz_bfd == NULL)
2689     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2690
2691   if (dwz_bfd == NULL)
2692     error (_("could not find '.gnu_debugaltlink' file for %s"),
2693            objfile_name (dwarf2_per_objfile->objfile));
2694
2695   std::unique_ptr<struct dwz_file> result
2696     (new struct dwz_file (std::move (dwz_bfd)));
2697
2698   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2699                          result.get ());
2700
2701   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2702                             result->dwz_bfd.get ());
2703   dwarf2_per_objfile->dwz_file = std::move (result);
2704   return dwarf2_per_objfile->dwz_file.get ();
2705 }
2706 \f
2707 /* DWARF quick_symbols_functions support.  */
2708
2709 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2710    unique line tables, so we maintain a separate table of all .debug_line
2711    derived entries to support the sharing.
2712    All the quick functions need is the list of file names.  We discard the
2713    line_header when we're done and don't need to record it here.  */
2714 struct quick_file_names
2715 {
2716   /* The data used to construct the hash key.  */
2717   struct stmt_list_hash hash;
2718
2719   /* The number of entries in file_names, real_names.  */
2720   unsigned int num_file_names;
2721
2722   /* The file names from the line table, after being run through
2723      file_full_name.  */
2724   const char **file_names;
2725
2726   /* The file names from the line table after being run through
2727      gdb_realpath.  These are computed lazily.  */
2728   const char **real_names;
2729 };
2730
2731 /* When using the index (and thus not using psymtabs), each CU has an
2732    object of this type.  This is used to hold information needed by
2733    the various "quick" methods.  */
2734 struct dwarf2_per_cu_quick_data
2735 {
2736   /* The file table.  This can be NULL if there was no file table
2737      or it's currently not read in.
2738      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2739   struct quick_file_names *file_names;
2740
2741   /* The corresponding symbol table.  This is NULL if symbols for this
2742      CU have not yet been read.  */
2743   struct compunit_symtab *compunit_symtab;
2744
2745   /* A temporary mark bit used when iterating over all CUs in
2746      expand_symtabs_matching.  */
2747   unsigned int mark : 1;
2748
2749   /* True if we've tried to read the file table and found there isn't one.
2750      There will be no point in trying to read it again next time.  */
2751   unsigned int no_file_data : 1;
2752 };
2753
2754 /* Utility hash function for a stmt_list_hash.  */
2755
2756 static hashval_t
2757 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2758 {
2759   hashval_t v = 0;
2760
2761   if (stmt_list_hash->dwo_unit != NULL)
2762     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2763   v += to_underlying (stmt_list_hash->line_sect_off);
2764   return v;
2765 }
2766
2767 /* Utility equality function for a stmt_list_hash.  */
2768
2769 static int
2770 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2771                     const struct stmt_list_hash *rhs)
2772 {
2773   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2774     return 0;
2775   if (lhs->dwo_unit != NULL
2776       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2777     return 0;
2778
2779   return lhs->line_sect_off == rhs->line_sect_off;
2780 }
2781
2782 /* Hash function for a quick_file_names.  */
2783
2784 static hashval_t
2785 hash_file_name_entry (const void *e)
2786 {
2787   const struct quick_file_names *file_data
2788     = (const struct quick_file_names *) e;
2789
2790   return hash_stmt_list_entry (&file_data->hash);
2791 }
2792
2793 /* Equality function for a quick_file_names.  */
2794
2795 static int
2796 eq_file_name_entry (const void *a, const void *b)
2797 {
2798   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2799   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2800
2801   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2802 }
2803
2804 /* Delete function for a quick_file_names.  */
2805
2806 static void
2807 delete_file_name_entry (void *e)
2808 {
2809   struct quick_file_names *file_data = (struct quick_file_names *) e;
2810   int i;
2811
2812   for (i = 0; i < file_data->num_file_names; ++i)
2813     {
2814       xfree ((void*) file_data->file_names[i]);
2815       if (file_data->real_names)
2816         xfree ((void*) file_data->real_names[i]);
2817     }
2818
2819   /* The space for the struct itself lives on objfile_obstack,
2820      so we don't free it here.  */
2821 }
2822
2823 /* Create a quick_file_names hash table.  */
2824
2825 static htab_t
2826 create_quick_file_names_table (unsigned int nr_initial_entries)
2827 {
2828   return htab_create_alloc (nr_initial_entries,
2829                             hash_file_name_entry, eq_file_name_entry,
2830                             delete_file_name_entry, xcalloc, xfree);
2831 }
2832
2833 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2834    have to be created afterwards.  You should call age_cached_comp_units after
2835    processing PER_CU->CU.  dw2_setup must have been already called.  */
2836
2837 static void
2838 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2839 {
2840   if (per_cu->is_debug_types)
2841     load_full_type_unit (per_cu);
2842   else
2843     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2844
2845   if (per_cu->cu == NULL)
2846     return;  /* Dummy CU.  */
2847
2848   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2849 }
2850
2851 /* Read in the symbols for PER_CU.  */
2852
2853 static void
2854 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2855 {
2856   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2857
2858   /* Skip type_unit_groups, reading the type units they contain
2859      is handled elsewhere.  */
2860   if (IS_TYPE_UNIT_GROUP (per_cu))
2861     return;
2862
2863   /* The destructor of dwarf2_queue_guard frees any entries left on
2864      the queue.  After this point we're guaranteed to leave this function
2865      with the dwarf queue empty.  */
2866   dwarf2_queue_guard q_guard;
2867
2868   if (dwarf2_per_objfile->using_index
2869       ? per_cu->v.quick->compunit_symtab == NULL
2870       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2871     {
2872       queue_comp_unit (per_cu, language_minimal);
2873       load_cu (per_cu, skip_partial);
2874
2875       /* If we just loaded a CU from a DWO, and we're working with an index
2876          that may badly handle TUs, load all the TUs in that DWO as well.
2877          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2878       if (!per_cu->is_debug_types
2879           && per_cu->cu != NULL
2880           && per_cu->cu->dwo_unit != NULL
2881           && dwarf2_per_objfile->index_table != NULL
2882           && dwarf2_per_objfile->index_table->version <= 7
2883           /* DWP files aren't supported yet.  */
2884           && get_dwp_file (dwarf2_per_objfile) == NULL)
2885         queue_and_load_all_dwo_tus (per_cu);
2886     }
2887
2888   process_queue (dwarf2_per_objfile);
2889
2890   /* Age the cache, releasing compilation units that have not
2891      been used recently.  */
2892   age_cached_comp_units (dwarf2_per_objfile);
2893 }
2894
2895 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2896    the objfile from which this CU came.  Returns the resulting symbol
2897    table.  */
2898
2899 static struct compunit_symtab *
2900 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2901 {
2902   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2903
2904   gdb_assert (dwarf2_per_objfile->using_index);
2905   if (!per_cu->v.quick->compunit_symtab)
2906     {
2907       free_cached_comp_units freer (dwarf2_per_objfile);
2908       scoped_restore decrementer = increment_reading_symtab ();
2909       dw2_do_instantiate_symtab (per_cu, skip_partial);
2910       process_cu_includes (dwarf2_per_objfile);
2911     }
2912
2913   return per_cu->v.quick->compunit_symtab;
2914 }
2915
2916 /* See declaration.  */
2917
2918 dwarf2_per_cu_data *
2919 dwarf2_per_objfile::get_cutu (int index)
2920 {
2921   if (index >= this->all_comp_units.size ())
2922     {
2923       index -= this->all_comp_units.size ();
2924       gdb_assert (index < this->all_type_units.size ());
2925       return &this->all_type_units[index]->per_cu;
2926     }
2927
2928   return this->all_comp_units[index];
2929 }
2930
2931 /* See declaration.  */
2932
2933 dwarf2_per_cu_data *
2934 dwarf2_per_objfile::get_cu (int index)
2935 {
2936   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2937
2938   return this->all_comp_units[index];
2939 }
2940
2941 /* See declaration.  */
2942
2943 signatured_type *
2944 dwarf2_per_objfile::get_tu (int index)
2945 {
2946   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2947
2948   return this->all_type_units[index];
2949 }
2950
2951 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2952    objfile_obstack, and constructed with the specified field
2953    values.  */
2954
2955 static dwarf2_per_cu_data *
2956 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2957                           struct dwarf2_section_info *section,
2958                           int is_dwz,
2959                           sect_offset sect_off, ULONGEST length)
2960 {
2961   struct objfile *objfile = dwarf2_per_objfile->objfile;
2962   dwarf2_per_cu_data *the_cu
2963     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2964                      struct dwarf2_per_cu_data);
2965   the_cu->sect_off = sect_off;
2966   the_cu->length = length;
2967   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2968   the_cu->section = section;
2969   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970                                    struct dwarf2_per_cu_quick_data);
2971   the_cu->is_dwz = is_dwz;
2972   return the_cu;
2973 }
2974
2975 /* A helper for create_cus_from_index that handles a given list of
2976    CUs.  */
2977
2978 static void
2979 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2980                             const gdb_byte *cu_list, offset_type n_elements,
2981                             struct dwarf2_section_info *section,
2982                             int is_dwz)
2983 {
2984   for (offset_type i = 0; i < n_elements; i += 2)
2985     {
2986       gdb_static_assert (sizeof (ULONGEST) >= 8);
2987
2988       sect_offset sect_off
2989         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2990       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2991       cu_list += 2 * 8;
2992
2993       dwarf2_per_cu_data *per_cu
2994         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
2995                                      sect_off, length);
2996       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
2997     }
2998 }
2999
3000 /* Read the CU list from the mapped index, and use it to create all
3001    the CU objects for this objfile.  */
3002
3003 static void
3004 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3005                        const gdb_byte *cu_list, offset_type cu_list_elements,
3006                        const gdb_byte *dwz_list, offset_type dwz_elements)
3007 {
3008   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3009   dwarf2_per_objfile->all_comp_units.reserve
3010     ((cu_list_elements + dwz_elements) / 2);
3011
3012   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3013                               &dwarf2_per_objfile->info, 0);
3014
3015   if (dwz_elements == 0)
3016     return;
3017
3018   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3019   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3020                               &dwz->info, 1);
3021 }
3022
3023 /* Create the signatured type hash table from the index.  */
3024
3025 static void
3026 create_signatured_type_table_from_index
3027   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3028    struct dwarf2_section_info *section,
3029    const gdb_byte *bytes,
3030    offset_type elements)
3031 {
3032   struct objfile *objfile = dwarf2_per_objfile->objfile;
3033
3034   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3035   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3036
3037   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3038
3039   for (offset_type i = 0; i < elements; i += 3)
3040     {
3041       struct signatured_type *sig_type;
3042       ULONGEST signature;
3043       void **slot;
3044       cu_offset type_offset_in_tu;
3045
3046       gdb_static_assert (sizeof (ULONGEST) >= 8);
3047       sect_offset sect_off
3048         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3049       type_offset_in_tu
3050         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3051                                                 BFD_ENDIAN_LITTLE);
3052       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3053       bytes += 3 * 8;
3054
3055       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3056                                  struct signatured_type);
3057       sig_type->signature = signature;
3058       sig_type->type_offset_in_tu = type_offset_in_tu;
3059       sig_type->per_cu.is_debug_types = 1;
3060       sig_type->per_cu.section = section;
3061       sig_type->per_cu.sect_off = sect_off;
3062       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3063       sig_type->per_cu.v.quick
3064         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3065                           struct dwarf2_per_cu_quick_data);
3066
3067       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3068       *slot = sig_type;
3069
3070       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3071     }
3072
3073   dwarf2_per_objfile->signatured_types = sig_types_hash;
3074 }
3075
3076 /* Create the signatured type hash table from .debug_names.  */
3077
3078 static void
3079 create_signatured_type_table_from_debug_names
3080   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3081    const mapped_debug_names &map,
3082    struct dwarf2_section_info *section,
3083    struct dwarf2_section_info *abbrev_section)
3084 {
3085   struct objfile *objfile = dwarf2_per_objfile->objfile;
3086
3087   dwarf2_read_section (objfile, section);
3088   dwarf2_read_section (objfile, abbrev_section);
3089
3090   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3091   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3092
3093   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3094
3095   for (uint32_t i = 0; i < map.tu_count; ++i)
3096     {
3097       struct signatured_type *sig_type;
3098       void **slot;
3099
3100       sect_offset sect_off
3101         = (sect_offset) (extract_unsigned_integer
3102                          (map.tu_table_reordered + i * map.offset_size,
3103                           map.offset_size,
3104                           map.dwarf5_byte_order));
3105
3106       comp_unit_head cu_header;
3107       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3108                                      abbrev_section,
3109                                      section->buffer + to_underlying (sect_off),
3110                                      rcuh_kind::TYPE);
3111
3112       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3113                                  struct signatured_type);
3114       sig_type->signature = cu_header.signature;
3115       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3116       sig_type->per_cu.is_debug_types = 1;
3117       sig_type->per_cu.section = section;
3118       sig_type->per_cu.sect_off = sect_off;
3119       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3120       sig_type->per_cu.v.quick
3121         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3122                           struct dwarf2_per_cu_quick_data);
3123
3124       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3125       *slot = sig_type;
3126
3127       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3128     }
3129
3130   dwarf2_per_objfile->signatured_types = sig_types_hash;
3131 }
3132
3133 /* Read the address map data from the mapped index, and use it to
3134    populate the objfile's psymtabs_addrmap.  */
3135
3136 static void
3137 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3138                            struct mapped_index *index)
3139 {
3140   struct objfile *objfile = dwarf2_per_objfile->objfile;
3141   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3142   const gdb_byte *iter, *end;
3143   struct addrmap *mutable_map;
3144   CORE_ADDR baseaddr;
3145
3146   auto_obstack temp_obstack;
3147
3148   mutable_map = addrmap_create_mutable (&temp_obstack);
3149
3150   iter = index->address_table.data ();
3151   end = iter + index->address_table.size ();
3152
3153   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3154
3155   while (iter < end)
3156     {
3157       ULONGEST hi, lo, cu_index;
3158       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3159       iter += 8;
3160       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3161       iter += 8;
3162       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3163       iter += 4;
3164
3165       if (lo > hi)
3166         {
3167           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3168                      hex_string (lo), hex_string (hi));
3169           continue;
3170         }
3171
3172       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3173         {
3174           complaint (_(".gdb_index address table has invalid CU number %u"),
3175                      (unsigned) cu_index);
3176           continue;
3177         }
3178
3179       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3180       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3181       addrmap_set_empty (mutable_map, lo, hi - 1,
3182                          dwarf2_per_objfile->get_cu (cu_index));
3183     }
3184
3185   objfile->partial_symtabs->psymtabs_addrmap
3186     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3187 }
3188
3189 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3190    populate the objfile's psymtabs_addrmap.  */
3191
3192 static void
3193 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3194                              struct dwarf2_section_info *section)
3195 {
3196   struct objfile *objfile = dwarf2_per_objfile->objfile;
3197   bfd *abfd = objfile->obfd;
3198   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3199   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3200                                        SECT_OFF_TEXT (objfile));
3201
3202   auto_obstack temp_obstack;
3203   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3204
3205   std::unordered_map<sect_offset,
3206                      dwarf2_per_cu_data *,
3207                      gdb::hash_enum<sect_offset>>
3208     debug_info_offset_to_per_cu;
3209   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3210     {
3211       const auto insertpair
3212         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3213       if (!insertpair.second)
3214         {
3215           warning (_("Section .debug_aranges in %s has duplicate "
3216                      "debug_info_offset %s, ignoring .debug_aranges."),
3217                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3218           return;
3219         }
3220     }
3221
3222   dwarf2_read_section (objfile, section);
3223
3224   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3225
3226   const gdb_byte *addr = section->buffer;
3227
3228   while (addr < section->buffer + section->size)
3229     {
3230       const gdb_byte *const entry_addr = addr;
3231       unsigned int bytes_read;
3232
3233       const LONGEST entry_length = read_initial_length (abfd, addr,
3234                                                         &bytes_read);
3235       addr += bytes_read;
3236
3237       const gdb_byte *const entry_end = addr + entry_length;
3238       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3239       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3240       if (addr + entry_length > section->buffer + section->size)
3241         {
3242           warning (_("Section .debug_aranges in %s entry at offset %zu "
3243                      "length %s exceeds section length %s, "
3244                      "ignoring .debug_aranges."),
3245                    objfile_name (objfile), entry_addr - section->buffer,
3246                    plongest (bytes_read + entry_length),
3247                    pulongest (section->size));
3248           return;
3249         }
3250
3251       /* The version number.  */
3252       const uint16_t version = read_2_bytes (abfd, addr);
3253       addr += 2;
3254       if (version != 2)
3255         {
3256           warning (_("Section .debug_aranges in %s entry at offset %zu "
3257                      "has unsupported version %d, ignoring .debug_aranges."),
3258                    objfile_name (objfile), entry_addr - section->buffer,
3259                    version);
3260           return;
3261         }
3262
3263       const uint64_t debug_info_offset
3264         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3265       addr += offset_size;
3266       const auto per_cu_it
3267         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3268       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3269         {
3270           warning (_("Section .debug_aranges in %s entry at offset %zu "
3271                      "debug_info_offset %s does not exists, "
3272                      "ignoring .debug_aranges."),
3273                    objfile_name (objfile), entry_addr - section->buffer,
3274                    pulongest (debug_info_offset));
3275           return;
3276         }
3277       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3278
3279       const uint8_t address_size = *addr++;
3280       if (address_size < 1 || address_size > 8)
3281         {
3282           warning (_("Section .debug_aranges in %s entry at offset %zu "
3283                      "address_size %u is invalid, ignoring .debug_aranges."),
3284                    objfile_name (objfile), entry_addr - section->buffer,
3285                    address_size);
3286           return;
3287         }
3288
3289       const uint8_t segment_selector_size = *addr++;
3290       if (segment_selector_size != 0)
3291         {
3292           warning (_("Section .debug_aranges in %s entry at offset %zu "
3293                      "segment_selector_size %u is not supported, "
3294                      "ignoring .debug_aranges."),
3295                    objfile_name (objfile), entry_addr - section->buffer,
3296                    segment_selector_size);
3297           return;
3298         }
3299
3300       /* Must pad to an alignment boundary that is twice the address
3301          size.  It is undocumented by the DWARF standard but GCC does
3302          use it.  */
3303       for (size_t padding = ((-(addr - section->buffer))
3304                              & (2 * address_size - 1));
3305            padding > 0; padding--)
3306         if (*addr++ != 0)
3307           {
3308             warning (_("Section .debug_aranges in %s entry at offset %zu "
3309                        "padding is not zero, ignoring .debug_aranges."),
3310                      objfile_name (objfile), entry_addr - section->buffer);
3311             return;
3312           }
3313
3314       for (;;)
3315         {
3316           if (addr + 2 * address_size > entry_end)
3317             {
3318               warning (_("Section .debug_aranges in %s entry at offset %zu "
3319                          "address list is not properly terminated, "
3320                          "ignoring .debug_aranges."),
3321                        objfile_name (objfile), entry_addr - section->buffer);
3322               return;
3323             }
3324           ULONGEST start = extract_unsigned_integer (addr, address_size,
3325                                                      dwarf5_byte_order);
3326           addr += address_size;
3327           ULONGEST length = extract_unsigned_integer (addr, address_size,
3328                                                       dwarf5_byte_order);
3329           addr += address_size;
3330           if (start == 0 && length == 0)
3331             break;
3332           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3333             {
3334               /* Symbol was eliminated due to a COMDAT group.  */
3335               continue;
3336             }
3337           ULONGEST end = start + length;
3338           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3339                    - baseaddr);
3340           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3341                  - baseaddr);
3342           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3343         }
3344     }
3345
3346   objfile->partial_symtabs->psymtabs_addrmap
3347     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3348 }
3349
3350 /* Find a slot in the mapped index INDEX for the object named NAME.
3351    If NAME is found, set *VEC_OUT to point to the CU vector in the
3352    constant pool and return true.  If NAME cannot be found, return
3353    false.  */
3354
3355 static bool
3356 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3357                           offset_type **vec_out)
3358 {
3359   offset_type hash;
3360   offset_type slot, step;
3361   int (*cmp) (const char *, const char *);
3362
3363   gdb::unique_xmalloc_ptr<char> without_params;
3364   if (current_language->la_language == language_cplus
3365       || current_language->la_language == language_fortran
3366       || current_language->la_language == language_d)
3367     {
3368       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3369          not contain any.  */
3370
3371       if (strchr (name, '(') != NULL)
3372         {
3373           without_params = cp_remove_params (name);
3374
3375           if (without_params != NULL)
3376             name = without_params.get ();
3377         }
3378     }
3379
3380   /* Index version 4 did not support case insensitive searches.  But the
3381      indices for case insensitive languages are built in lowercase, therefore
3382      simulate our NAME being searched is also lowercased.  */
3383   hash = mapped_index_string_hash ((index->version == 4
3384                                     && case_sensitivity == case_sensitive_off
3385                                     ? 5 : index->version),
3386                                    name);
3387
3388   slot = hash & (index->symbol_table.size () - 1);
3389   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3390   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3391
3392   for (;;)
3393     {
3394       const char *str;
3395
3396       const auto &bucket = index->symbol_table[slot];
3397       if (bucket.name == 0 && bucket.vec == 0)
3398         return false;
3399
3400       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3401       if (!cmp (name, str))
3402         {
3403           *vec_out = (offset_type *) (index->constant_pool
3404                                       + MAYBE_SWAP (bucket.vec));
3405           return true;
3406         }
3407
3408       slot = (slot + step) & (index->symbol_table.size () - 1);
3409     }
3410 }
3411
3412 /* A helper function that reads the .gdb_index from BUFFER and fills
3413    in MAP.  FILENAME is the name of the file containing the data;
3414    it is used for error reporting.  DEPRECATED_OK is true if it is
3415    ok to use deprecated sections.
3416
3417    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3418    out parameters that are filled in with information about the CU and
3419    TU lists in the section.
3420
3421    Returns true if all went well, false otherwise.  */
3422
3423 static bool
3424 read_gdb_index_from_buffer (struct objfile *objfile,
3425                             const char *filename,
3426                             bool deprecated_ok,
3427                             gdb::array_view<const gdb_byte> buffer,
3428                             struct mapped_index *map,
3429                             const gdb_byte **cu_list,
3430                             offset_type *cu_list_elements,
3431                             const gdb_byte **types_list,
3432                             offset_type *types_list_elements)
3433 {
3434   const gdb_byte *addr = &buffer[0];
3435
3436   /* Version check.  */
3437   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3438   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3439      causes the index to behave very poorly for certain requests.  Version 3
3440      contained incomplete addrmap.  So, it seems better to just ignore such
3441      indices.  */
3442   if (version < 4)
3443     {
3444       static int warning_printed = 0;
3445       if (!warning_printed)
3446         {
3447           warning (_("Skipping obsolete .gdb_index section in %s."),
3448                    filename);
3449           warning_printed = 1;
3450         }
3451       return 0;
3452     }
3453   /* Index version 4 uses a different hash function than index version
3454      5 and later.
3455
3456      Versions earlier than 6 did not emit psymbols for inlined
3457      functions.  Using these files will cause GDB not to be able to
3458      set breakpoints on inlined functions by name, so we ignore these
3459      indices unless the user has done
3460      "set use-deprecated-index-sections on".  */
3461   if (version < 6 && !deprecated_ok)
3462     {
3463       static int warning_printed = 0;
3464       if (!warning_printed)
3465         {
3466           warning (_("\
3467 Skipping deprecated .gdb_index section in %s.\n\
3468 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3469 to use the section anyway."),
3470                    filename);
3471           warning_printed = 1;
3472         }
3473       return 0;
3474     }
3475   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3476      of the TU (for symbols coming from TUs),
3477      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3478      Plus gold-generated indices can have duplicate entries for global symbols,
3479      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3480      These are just performance bugs, and we can't distinguish gdb-generated
3481      indices from gold-generated ones, so issue no warning here.  */
3482
3483   /* Indexes with higher version than the one supported by GDB may be no
3484      longer backward compatible.  */
3485   if (version > 8)
3486     return 0;
3487
3488   map->version = version;
3489
3490   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3491
3492   int i = 0;
3493   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3494   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3495                        / 8);
3496   ++i;
3497
3498   *types_list = addr + MAYBE_SWAP (metadata[i]);
3499   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3500                            - MAYBE_SWAP (metadata[i]))
3501                           / 8);
3502   ++i;
3503
3504   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3505   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3506   map->address_table
3507     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3508   ++i;
3509
3510   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3511   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3512   map->symbol_table
3513     = gdb::array_view<mapped_index::symbol_table_slot>
3514        ((mapped_index::symbol_table_slot *) symbol_table,
3515         (mapped_index::symbol_table_slot *) symbol_table_end);
3516
3517   ++i;
3518   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3519
3520   return 1;
3521 }
3522
3523 /* Callback types for dwarf2_read_gdb_index.  */
3524
3525 typedef gdb::function_view
3526     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3527     get_gdb_index_contents_ftype;
3528 typedef gdb::function_view
3529     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3530     get_gdb_index_contents_dwz_ftype;
3531
3532 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3533    elements of all the CUs and return 1.  Otherwise, return 0.  */
3534
3535 static int
3536 dwarf2_read_gdb_index
3537   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3538    get_gdb_index_contents_ftype get_gdb_index_contents,
3539    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3540 {
3541   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3542   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3543   struct dwz_file *dwz;
3544   struct objfile *objfile = dwarf2_per_objfile->objfile;
3545
3546   gdb::array_view<const gdb_byte> main_index_contents
3547     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3548
3549   if (main_index_contents.empty ())
3550     return 0;
3551
3552   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3553   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3554                                    use_deprecated_index_sections,
3555                                    main_index_contents, map.get (), &cu_list,
3556                                    &cu_list_elements, &types_list,
3557                                    &types_list_elements))
3558     return 0;
3559
3560   /* Don't use the index if it's empty.  */
3561   if (map->symbol_table.empty ())
3562     return 0;
3563
3564   /* If there is a .dwz file, read it so we can get its CU list as
3565      well.  */
3566   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3567   if (dwz != NULL)
3568     {
3569       struct mapped_index dwz_map;
3570       const gdb_byte *dwz_types_ignore;
3571       offset_type dwz_types_elements_ignore;
3572
3573       gdb::array_view<const gdb_byte> dwz_index_content
3574         = get_gdb_index_contents_dwz (objfile, dwz);
3575
3576       if (dwz_index_content.empty ())
3577         return 0;
3578
3579       if (!read_gdb_index_from_buffer (objfile,
3580                                        bfd_get_filename (dwz->dwz_bfd), 1,
3581                                        dwz_index_content, &dwz_map,
3582                                        &dwz_list, &dwz_list_elements,
3583                                        &dwz_types_ignore,
3584                                        &dwz_types_elements_ignore))
3585         {
3586           warning (_("could not read '.gdb_index' section from %s; skipping"),
3587                    bfd_get_filename (dwz->dwz_bfd));
3588           return 0;
3589         }
3590     }
3591
3592   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3593                          dwz_list, dwz_list_elements);
3594
3595   if (types_list_elements)
3596     {
3597       struct dwarf2_section_info *section;
3598
3599       /* We can only handle a single .debug_types when we have an
3600          index.  */
3601       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3602         return 0;
3603
3604       section = VEC_index (dwarf2_section_info_def,
3605                            dwarf2_per_objfile->types, 0);
3606
3607       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3608                                                types_list, types_list_elements);
3609     }
3610
3611   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3612
3613   dwarf2_per_objfile->index_table = std::move (map);
3614   dwarf2_per_objfile->using_index = 1;
3615   dwarf2_per_objfile->quick_file_names_table =
3616     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3617
3618   return 1;
3619 }
3620
3621 /* die_reader_func for dw2_get_file_names.  */
3622
3623 static void
3624 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3625                            const gdb_byte *info_ptr,
3626                            struct die_info *comp_unit_die,
3627                            int has_children,
3628                            void *data)
3629 {
3630   struct dwarf2_cu *cu = reader->cu;
3631   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3632   struct dwarf2_per_objfile *dwarf2_per_objfile
3633     = cu->per_cu->dwarf2_per_objfile;
3634   struct objfile *objfile = dwarf2_per_objfile->objfile;
3635   struct dwarf2_per_cu_data *lh_cu;
3636   struct attribute *attr;
3637   int i;
3638   void **slot;
3639   struct quick_file_names *qfn;
3640
3641   gdb_assert (! this_cu->is_debug_types);
3642
3643   /* Our callers never want to match partial units -- instead they
3644      will match the enclosing full CU.  */
3645   if (comp_unit_die->tag == DW_TAG_partial_unit)
3646     {
3647       this_cu->v.quick->no_file_data = 1;
3648       return;
3649     }
3650
3651   lh_cu = this_cu;
3652   slot = NULL;
3653
3654   line_header_up lh;
3655   sect_offset line_offset {};
3656
3657   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3658   if (attr)
3659     {
3660       struct quick_file_names find_entry;
3661
3662       line_offset = (sect_offset) DW_UNSND (attr);
3663
3664       /* We may have already read in this line header (TU line header sharing).
3665          If we have we're done.  */
3666       find_entry.hash.dwo_unit = cu->dwo_unit;
3667       find_entry.hash.line_sect_off = line_offset;
3668       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3669                              &find_entry, INSERT);
3670       if (*slot != NULL)
3671         {
3672           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3673           return;
3674         }
3675
3676       lh = dwarf_decode_line_header (line_offset, cu);
3677     }
3678   if (lh == NULL)
3679     {
3680       lh_cu->v.quick->no_file_data = 1;
3681       return;
3682     }
3683
3684   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3685   qfn->hash.dwo_unit = cu->dwo_unit;
3686   qfn->hash.line_sect_off = line_offset;
3687   gdb_assert (slot != NULL);
3688   *slot = qfn;
3689
3690   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3691
3692   qfn->num_file_names = lh->file_names.size ();
3693   qfn->file_names =
3694     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3695   for (i = 0; i < lh->file_names.size (); ++i)
3696     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3697   qfn->real_names = NULL;
3698
3699   lh_cu->v.quick->file_names = qfn;
3700 }
3701
3702 /* A helper for the "quick" functions which attempts to read the line
3703    table for THIS_CU.  */
3704
3705 static struct quick_file_names *
3706 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3707 {
3708   /* This should never be called for TUs.  */
3709   gdb_assert (! this_cu->is_debug_types);
3710   /* Nor type unit groups.  */
3711   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3712
3713   if (this_cu->v.quick->file_names != NULL)
3714     return this_cu->v.quick->file_names;
3715   /* If we know there is no line data, no point in looking again.  */
3716   if (this_cu->v.quick->no_file_data)
3717     return NULL;
3718
3719   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3720
3721   if (this_cu->v.quick->no_file_data)
3722     return NULL;
3723   return this_cu->v.quick->file_names;
3724 }
3725
3726 /* A helper for the "quick" functions which computes and caches the
3727    real path for a given file name from the line table.  */
3728
3729 static const char *
3730 dw2_get_real_path (struct objfile *objfile,
3731                    struct quick_file_names *qfn, int index)
3732 {
3733   if (qfn->real_names == NULL)
3734     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3735                                       qfn->num_file_names, const char *);
3736
3737   if (qfn->real_names[index] == NULL)
3738     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3739
3740   return qfn->real_names[index];
3741 }
3742
3743 static struct symtab *
3744 dw2_find_last_source_symtab (struct objfile *objfile)
3745 {
3746   struct dwarf2_per_objfile *dwarf2_per_objfile
3747     = get_dwarf2_per_objfile (objfile);
3748   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3749   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3750
3751   if (cust == NULL)
3752     return NULL;
3753
3754   return compunit_primary_filetab (cust);
3755 }
3756
3757 /* Traversal function for dw2_forget_cached_source_info.  */
3758
3759 static int
3760 dw2_free_cached_file_names (void **slot, void *info)
3761 {
3762   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3763
3764   if (file_data->real_names)
3765     {
3766       int i;
3767
3768       for (i = 0; i < file_data->num_file_names; ++i)
3769         {
3770           xfree ((void*) file_data->real_names[i]);
3771           file_data->real_names[i] = NULL;
3772         }
3773     }
3774
3775   return 1;
3776 }
3777
3778 static void
3779 dw2_forget_cached_source_info (struct objfile *objfile)
3780 {
3781   struct dwarf2_per_objfile *dwarf2_per_objfile
3782     = get_dwarf2_per_objfile (objfile);
3783
3784   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3785                           dw2_free_cached_file_names, NULL);
3786 }
3787
3788 /* Helper function for dw2_map_symtabs_matching_filename that expands
3789    the symtabs and calls the iterator.  */
3790
3791 static int
3792 dw2_map_expand_apply (struct objfile *objfile,
3793                       struct dwarf2_per_cu_data *per_cu,
3794                       const char *name, const char *real_path,
3795                       gdb::function_view<bool (symtab *)> callback)
3796 {
3797   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3798
3799   /* Don't visit already-expanded CUs.  */
3800   if (per_cu->v.quick->compunit_symtab)
3801     return 0;
3802
3803   /* This may expand more than one symtab, and we want to iterate over
3804      all of them.  */
3805   dw2_instantiate_symtab (per_cu, false);
3806
3807   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3808                                     last_made, callback);
3809 }
3810
3811 /* Implementation of the map_symtabs_matching_filename method.  */
3812
3813 static bool
3814 dw2_map_symtabs_matching_filename
3815   (struct objfile *objfile, const char *name, const char *real_path,
3816    gdb::function_view<bool (symtab *)> callback)
3817 {
3818   const char *name_basename = lbasename (name);
3819   struct dwarf2_per_objfile *dwarf2_per_objfile
3820     = get_dwarf2_per_objfile (objfile);
3821
3822   /* The rule is CUs specify all the files, including those used by
3823      any TU, so there's no need to scan TUs here.  */
3824
3825   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3826     {
3827       /* We only need to look at symtabs not already expanded.  */
3828       if (per_cu->v.quick->compunit_symtab)
3829         continue;
3830
3831       quick_file_names *file_data = dw2_get_file_names (per_cu);
3832       if (file_data == NULL)
3833         continue;
3834
3835       for (int j = 0; j < file_data->num_file_names; ++j)
3836         {
3837           const char *this_name = file_data->file_names[j];
3838           const char *this_real_name;
3839
3840           if (compare_filenames_for_search (this_name, name))
3841             {
3842               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3843                                         callback))
3844                 return true;
3845               continue;
3846             }
3847
3848           /* Before we invoke realpath, which can get expensive when many
3849              files are involved, do a quick comparison of the basenames.  */
3850           if (! basenames_may_differ
3851               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3852             continue;
3853
3854           this_real_name = dw2_get_real_path (objfile, file_data, j);
3855           if (compare_filenames_for_search (this_real_name, name))
3856             {
3857               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3858                                         callback))
3859                 return true;
3860               continue;
3861             }
3862
3863           if (real_path != NULL)
3864             {
3865               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3866               gdb_assert (IS_ABSOLUTE_PATH (name));
3867               if (this_real_name != NULL
3868                   && FILENAME_CMP (real_path, this_real_name) == 0)
3869                 {
3870                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3871                                             callback))
3872                     return true;
3873                   continue;
3874                 }
3875             }
3876         }
3877     }
3878
3879   return false;
3880 }
3881
3882 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3883
3884 struct dw2_symtab_iterator
3885 {
3886   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3887   struct dwarf2_per_objfile *dwarf2_per_objfile;
3888   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3889   int want_specific_block;
3890   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3891      Unused if !WANT_SPECIFIC_BLOCK.  */
3892   int block_index;
3893   /* The kind of symbol we're looking for.  */
3894   domain_enum domain;
3895   /* The list of CUs from the index entry of the symbol,
3896      or NULL if not found.  */
3897   offset_type *vec;
3898   /* The next element in VEC to look at.  */
3899   int next;
3900   /* The number of elements in VEC, or zero if there is no match.  */
3901   int length;
3902   /* Have we seen a global version of the symbol?
3903      If so we can ignore all further global instances.
3904      This is to work around gold/15646, inefficient gold-generated
3905      indices.  */
3906   int global_seen;
3907 };
3908
3909 /* Initialize the index symtab iterator ITER.
3910    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3911    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3912
3913 static void
3914 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3915                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3916                       int want_specific_block,
3917                       int block_index,
3918                       domain_enum domain,
3919                       const char *name)
3920 {
3921   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3922   iter->want_specific_block = want_specific_block;
3923   iter->block_index = block_index;
3924   iter->domain = domain;
3925   iter->next = 0;
3926   iter->global_seen = 0;
3927
3928   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3929
3930   /* index is NULL if OBJF_READNOW.  */
3931   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3932     iter->length = MAYBE_SWAP (*iter->vec);
3933   else
3934     {
3935       iter->vec = NULL;
3936       iter->length = 0;
3937     }
3938 }
3939
3940 /* Return the next matching CU or NULL if there are no more.  */
3941
3942 static struct dwarf2_per_cu_data *
3943 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3944 {
3945   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3946
3947   for ( ; iter->next < iter->length; ++iter->next)
3948     {
3949       offset_type cu_index_and_attrs =
3950         MAYBE_SWAP (iter->vec[iter->next + 1]);
3951       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3952       int want_static = iter->block_index != GLOBAL_BLOCK;
3953       /* This value is only valid for index versions >= 7.  */
3954       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3955       gdb_index_symbol_kind symbol_kind =
3956         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3957       /* Only check the symbol attributes if they're present.
3958          Indices prior to version 7 don't record them,
3959          and indices >= 7 may elide them for certain symbols
3960          (gold does this).  */
3961       int attrs_valid =
3962         (dwarf2_per_objfile->index_table->version >= 7
3963          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3964
3965       /* Don't crash on bad data.  */
3966       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3967                        + dwarf2_per_objfile->all_type_units.size ()))
3968         {
3969           complaint (_(".gdb_index entry has bad CU index"
3970                        " [in module %s]"),
3971                      objfile_name (dwarf2_per_objfile->objfile));
3972           continue;
3973         }
3974
3975       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3976
3977       /* Skip if already read in.  */
3978       if (per_cu->v.quick->compunit_symtab)
3979         continue;
3980
3981       /* Check static vs global.  */
3982       if (attrs_valid)
3983         {
3984           if (iter->want_specific_block
3985               && want_static != is_static)
3986             continue;
3987           /* Work around gold/15646.  */
3988           if (!is_static && iter->global_seen)
3989             continue;
3990           if (!is_static)
3991             iter->global_seen = 1;
3992         }
3993
3994       /* Only check the symbol's kind if it has one.  */
3995       if (attrs_valid)
3996         {
3997           switch (iter->domain)
3998             {
3999             case VAR_DOMAIN:
4000               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4001                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4002                   /* Some types are also in VAR_DOMAIN.  */
4003                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4004                 continue;
4005               break;
4006             case STRUCT_DOMAIN:
4007               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4008                 continue;
4009               break;
4010             case LABEL_DOMAIN:
4011               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4012                 continue;
4013               break;
4014             default:
4015               break;
4016             }
4017         }
4018
4019       ++iter->next;
4020       return per_cu;
4021     }
4022
4023   return NULL;
4024 }
4025
4026 static struct compunit_symtab *
4027 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4028                    const char *name, domain_enum domain)
4029 {
4030   struct compunit_symtab *stab_best = NULL;
4031   struct dwarf2_per_objfile *dwarf2_per_objfile
4032     = get_dwarf2_per_objfile (objfile);
4033
4034   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4035
4036   struct dw2_symtab_iterator iter;
4037   struct dwarf2_per_cu_data *per_cu;
4038
4039   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4040
4041   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4042     {
4043       struct symbol *sym, *with_opaque = NULL;
4044       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4045       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4046       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4047
4048       sym = block_find_symbol (block, name, domain,
4049                                block_find_non_opaque_type_preferred,
4050                                &with_opaque);
4051
4052       /* Some caution must be observed with overloaded functions
4053          and methods, since the index will not contain any overload
4054          information (but NAME might contain it).  */
4055
4056       if (sym != NULL
4057           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4058         return stab;
4059       if (with_opaque != NULL
4060           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4061         stab_best = stab;
4062
4063       /* Keep looking through other CUs.  */
4064     }
4065
4066   return stab_best;
4067 }
4068
4069 static void
4070 dw2_print_stats (struct objfile *objfile)
4071 {
4072   struct dwarf2_per_objfile *dwarf2_per_objfile
4073     = get_dwarf2_per_objfile (objfile);
4074   int total = (dwarf2_per_objfile->all_comp_units.size ()
4075                + dwarf2_per_objfile->all_type_units.size ());
4076   int count = 0;
4077
4078   for (int i = 0; i < total; ++i)
4079     {
4080       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4081
4082       if (!per_cu->v.quick->compunit_symtab)
4083         ++count;
4084     }
4085   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4086   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4087 }
4088
4089 /* This dumps minimal information about the index.
4090    It is called via "mt print objfiles".
4091    One use is to verify .gdb_index has been loaded by the
4092    gdb.dwarf2/gdb-index.exp testcase.  */
4093
4094 static void
4095 dw2_dump (struct objfile *objfile)
4096 {
4097   struct dwarf2_per_objfile *dwarf2_per_objfile
4098     = get_dwarf2_per_objfile (objfile);
4099
4100   gdb_assert (dwarf2_per_objfile->using_index);
4101   printf_filtered (".gdb_index:");
4102   if (dwarf2_per_objfile->index_table != NULL)
4103     {
4104       printf_filtered (" version %d\n",
4105                        dwarf2_per_objfile->index_table->version);
4106     }
4107   else
4108     printf_filtered (" faked for \"readnow\"\n");
4109   printf_filtered ("\n");
4110 }
4111
4112 static void
4113 dw2_expand_symtabs_for_function (struct objfile *objfile,
4114                                  const char *func_name)
4115 {
4116   struct dwarf2_per_objfile *dwarf2_per_objfile
4117     = get_dwarf2_per_objfile (objfile);
4118
4119   struct dw2_symtab_iterator iter;
4120   struct dwarf2_per_cu_data *per_cu;
4121
4122   /* Note: It doesn't matter what we pass for block_index here.  */
4123   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4124                         func_name);
4125
4126   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4127     dw2_instantiate_symtab (per_cu, false);
4128
4129 }
4130
4131 static void
4132 dw2_expand_all_symtabs (struct objfile *objfile)
4133 {
4134   struct dwarf2_per_objfile *dwarf2_per_objfile
4135     = get_dwarf2_per_objfile (objfile);
4136   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4137                      + dwarf2_per_objfile->all_type_units.size ());
4138
4139   for (int i = 0; i < total_units; ++i)
4140     {
4141       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4142
4143       /* We don't want to directly expand a partial CU, because if we
4144          read it with the wrong language, then assertion failures can
4145          be triggered later on.  See PR symtab/23010.  So, tell
4146          dw2_instantiate_symtab to skip partial CUs -- any important
4147          partial CU will be read via DW_TAG_imported_unit anyway.  */
4148       dw2_instantiate_symtab (per_cu, true);
4149     }
4150 }
4151
4152 static void
4153 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4154                                   const char *fullname)
4155 {
4156   struct dwarf2_per_objfile *dwarf2_per_objfile
4157     = get_dwarf2_per_objfile (objfile);
4158
4159   /* We don't need to consider type units here.
4160      This is only called for examining code, e.g. expand_line_sal.
4161      There can be an order of magnitude (or more) more type units
4162      than comp units, and we avoid them if we can.  */
4163
4164   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4165     {
4166       /* We only need to look at symtabs not already expanded.  */
4167       if (per_cu->v.quick->compunit_symtab)
4168         continue;
4169
4170       quick_file_names *file_data = dw2_get_file_names (per_cu);
4171       if (file_data == NULL)
4172         continue;
4173
4174       for (int j = 0; j < file_data->num_file_names; ++j)
4175         {
4176           const char *this_fullname = file_data->file_names[j];
4177
4178           if (filename_cmp (this_fullname, fullname) == 0)
4179             {
4180               dw2_instantiate_symtab (per_cu, false);
4181               break;
4182             }
4183         }
4184     }
4185 }
4186
4187 static void
4188 dw2_map_matching_symbols (struct objfile *objfile,
4189                           const char * name, domain_enum domain,
4190                           int global,
4191                           int (*callback) (const struct block *,
4192                                            struct symbol *, void *),
4193                           void *data, symbol_name_match_type match,
4194                           symbol_compare_ftype *ordered_compare)
4195 {
4196   /* Currently unimplemented; used for Ada.  The function can be called if the
4197      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4198      does not look for non-Ada symbols this function should just return.  */
4199 }
4200
4201 /* Symbol name matcher for .gdb_index names.
4202
4203    Symbol names in .gdb_index have a few particularities:
4204
4205    - There's no indication of which is the language of each symbol.
4206
4207      Since each language has its own symbol name matching algorithm,
4208      and we don't know which language is the right one, we must match
4209      each symbol against all languages.  This would be a potential
4210      performance problem if it were not mitigated by the
4211      mapped_index::name_components lookup table, which significantly
4212      reduces the number of times we need to call into this matcher,
4213      making it a non-issue.
4214
4215    - Symbol names in the index have no overload (parameter)
4216      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4217      appear as "foo" in the index, for example.
4218
4219      This means that the lookup names passed to the symbol name
4220      matcher functions must have no parameter information either
4221      because (e.g.) symbol search name "foo" does not match
4222      lookup-name "foo(int)" [while swapping search name for lookup
4223      name would match].
4224 */
4225 class gdb_index_symbol_name_matcher
4226 {
4227 public:
4228   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4229   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4230
4231   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4232      Returns true if any matcher matches.  */
4233   bool matches (const char *symbol_name);
4234
4235 private:
4236   /* A reference to the lookup name we're matching against.  */
4237   const lookup_name_info &m_lookup_name;
4238
4239   /* A vector holding all the different symbol name matchers, for all
4240      languages.  */
4241   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4242 };
4243
4244 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4245   (const lookup_name_info &lookup_name)
4246     : m_lookup_name (lookup_name)
4247 {
4248   /* Prepare the vector of comparison functions upfront, to avoid
4249      doing the same work for each symbol.  Care is taken to avoid
4250      matching with the same matcher more than once if/when multiple
4251      languages use the same matcher function.  */
4252   auto &matchers = m_symbol_name_matcher_funcs;
4253   matchers.reserve (nr_languages);
4254
4255   matchers.push_back (default_symbol_name_matcher);
4256
4257   for (int i = 0; i < nr_languages; i++)
4258     {
4259       const language_defn *lang = language_def ((enum language) i);
4260       symbol_name_matcher_ftype *name_matcher
4261         = get_symbol_name_matcher (lang, m_lookup_name);
4262
4263       /* Don't insert the same comparison routine more than once.
4264          Note that we do this linear walk instead of a seemingly
4265          cheaper sorted insert, or use a std::set or something like
4266          that, because relative order of function addresses is not
4267          stable.  This is not a problem in practice because the number
4268          of supported languages is low, and the cost here is tiny
4269          compared to the number of searches we'll do afterwards using
4270          this object.  */
4271       if (name_matcher != default_symbol_name_matcher
4272           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4273               == matchers.end ()))
4274         matchers.push_back (name_matcher);
4275     }
4276 }
4277
4278 bool
4279 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4280 {
4281   for (auto matches_name : m_symbol_name_matcher_funcs)
4282     if (matches_name (symbol_name, m_lookup_name, NULL))
4283       return true;
4284
4285   return false;
4286 }
4287
4288 /* Starting from a search name, return the string that finds the upper
4289    bound of all strings that start with SEARCH_NAME in a sorted name
4290    list.  Returns the empty string to indicate that the upper bound is
4291    the end of the list.  */
4292
4293 static std::string
4294 make_sort_after_prefix_name (const char *search_name)
4295 {
4296   /* When looking to complete "func", we find the upper bound of all
4297      symbols that start with "func" by looking for where we'd insert
4298      the closest string that would follow "func" in lexicographical
4299      order.  Usually, that's "func"-with-last-character-incremented,
4300      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4301      will be UTF-8 multi-byte sequences, but we can't be certain.
4302      Especially mind the 0xff character, which is a valid character in
4303      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4304      rule out compilers allowing it in identifiers.  Note that
4305      conveniently, strcmp/strcasecmp are specified to compare
4306      characters interpreted as unsigned char.  So what we do is treat
4307      the whole string as a base 256 number composed of a sequence of
4308      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4309      to 0, and carries 1 to the following more-significant position.
4310      If the very first character in SEARCH_NAME ends up incremented
4311      and carries/overflows, then the upper bound is the end of the
4312      list.  The string after the empty string is also the empty
4313      string.
4314
4315      Some examples of this operation:
4316
4317        SEARCH_NAME  => "+1" RESULT
4318
4319        "abc"              => "abd"
4320        "ab\xff"           => "ac"
4321        "\xff" "a" "\xff"  => "\xff" "b"
4322        "\xff"             => ""
4323        "\xff\xff"         => ""
4324        ""                 => ""
4325
4326      Then, with these symbols for example:
4327
4328       func
4329       func1
4330       fund
4331
4332      completing "func" looks for symbols between "func" and
4333      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4334      which finds "func" and "func1", but not "fund".
4335
4336      And with:
4337
4338       funcÿ     (Latin1 'ÿ' [0xff])
4339       funcÿ1
4340       fund
4341
4342      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4343      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4344
4345      And with:
4346
4347       ÿÿ        (Latin1 'ÿ' [0xff])
4348       ÿÿ1
4349
4350      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4351      the end of the list.
4352   */
4353   std::string after = search_name;
4354   while (!after.empty () && (unsigned char) after.back () == 0xff)
4355     after.pop_back ();
4356   if (!after.empty ())
4357     after.back () = (unsigned char) after.back () + 1;
4358   return after;
4359 }
4360
4361 /* See declaration.  */
4362
4363 std::pair<std::vector<name_component>::const_iterator,
4364           std::vector<name_component>::const_iterator>
4365 mapped_index_base::find_name_components_bounds
4366   (const lookup_name_info &lookup_name_without_params) const
4367 {
4368   auto *name_cmp
4369     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4370
4371   const char *cplus
4372     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4373
4374   /* Comparison function object for lower_bound that matches against a
4375      given symbol name.  */
4376   auto lookup_compare_lower = [&] (const name_component &elem,
4377                                    const char *name)
4378     {
4379       const char *elem_qualified = this->symbol_name_at (elem.idx);
4380       const char *elem_name = elem_qualified + elem.name_offset;
4381       return name_cmp (elem_name, name) < 0;
4382     };
4383
4384   /* Comparison function object for upper_bound that matches against a
4385      given symbol name.  */
4386   auto lookup_compare_upper = [&] (const char *name,
4387                                    const name_component &elem)
4388     {
4389       const char *elem_qualified = this->symbol_name_at (elem.idx);
4390       const char *elem_name = elem_qualified + elem.name_offset;
4391       return name_cmp (name, elem_name) < 0;
4392     };
4393
4394   auto begin = this->name_components.begin ();
4395   auto end = this->name_components.end ();
4396
4397   /* Find the lower bound.  */
4398   auto lower = [&] ()
4399     {
4400       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4401         return begin;
4402       else
4403         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4404     } ();
4405
4406   /* Find the upper bound.  */
4407   auto upper = [&] ()
4408     {
4409       if (lookup_name_without_params.completion_mode ())
4410         {
4411           /* In completion mode, we want UPPER to point past all
4412              symbols names that have the same prefix.  I.e., with
4413              these symbols, and completing "func":
4414
4415               function        << lower bound
4416               function1
4417               other_function  << upper bound
4418
4419              We find the upper bound by looking for the insertion
4420              point of "func"-with-last-character-incremented,
4421              i.e. "fund".  */
4422           std::string after = make_sort_after_prefix_name (cplus);
4423           if (after.empty ())
4424             return end;
4425           return std::lower_bound (lower, end, after.c_str (),
4426                                    lookup_compare_lower);
4427         }
4428       else
4429         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4430     } ();
4431
4432   return {lower, upper};
4433 }
4434
4435 /* See declaration.  */
4436
4437 void
4438 mapped_index_base::build_name_components ()
4439 {
4440   if (!this->name_components.empty ())
4441     return;
4442
4443   this->name_components_casing = case_sensitivity;
4444   auto *name_cmp
4445     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4446
4447   /* The code below only knows how to break apart components of C++
4448      symbol names (and other languages that use '::' as
4449      namespace/module separator).  If we add support for wild matching
4450      to some language that uses some other operator (E.g., Ada, Go and
4451      D use '.'), then we'll need to try splitting the symbol name
4452      according to that language too.  Note that Ada does support wild
4453      matching, but doesn't currently support .gdb_index.  */
4454   auto count = this->symbol_name_count ();
4455   for (offset_type idx = 0; idx < count; idx++)
4456     {
4457       if (this->symbol_name_slot_invalid (idx))
4458         continue;
4459
4460       const char *name = this->symbol_name_at (idx);
4461
4462       /* Add each name component to the name component table.  */
4463       unsigned int previous_len = 0;
4464       for (unsigned int current_len = cp_find_first_component (name);
4465            name[current_len] != '\0';
4466            current_len += cp_find_first_component (name + current_len))
4467         {
4468           gdb_assert (name[current_len] == ':');
4469           this->name_components.push_back ({previous_len, idx});
4470           /* Skip the '::'.  */
4471           current_len += 2;
4472           previous_len = current_len;
4473         }
4474       this->name_components.push_back ({previous_len, idx});
4475     }
4476
4477   /* Sort name_components elements by name.  */
4478   auto name_comp_compare = [&] (const name_component &left,
4479                                 const name_component &right)
4480     {
4481       const char *left_qualified = this->symbol_name_at (left.idx);
4482       const char *right_qualified = this->symbol_name_at (right.idx);
4483
4484       const char *left_name = left_qualified + left.name_offset;
4485       const char *right_name = right_qualified + right.name_offset;
4486
4487       return name_cmp (left_name, right_name) < 0;
4488     };
4489
4490   std::sort (this->name_components.begin (),
4491              this->name_components.end (),
4492              name_comp_compare);
4493 }
4494
4495 /* Helper for dw2_expand_symtabs_matching that works with a
4496    mapped_index_base instead of the containing objfile.  This is split
4497    to a separate function in order to be able to unit test the
4498    name_components matching using a mock mapped_index_base.  For each
4499    symbol name that matches, calls MATCH_CALLBACK, passing it the
4500    symbol's index in the mapped_index_base symbol table.  */
4501
4502 static void
4503 dw2_expand_symtabs_matching_symbol
4504   (mapped_index_base &index,
4505    const lookup_name_info &lookup_name_in,
4506    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4507    enum search_domain kind,
4508    gdb::function_view<void (offset_type)> match_callback)
4509 {
4510   lookup_name_info lookup_name_without_params
4511     = lookup_name_in.make_ignore_params ();
4512   gdb_index_symbol_name_matcher lookup_name_matcher
4513     (lookup_name_without_params);
4514
4515   /* Build the symbol name component sorted vector, if we haven't
4516      yet.  */
4517   index.build_name_components ();
4518
4519   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4520
4521   /* Now for each symbol name in range, check to see if we have a name
4522      match, and if so, call the MATCH_CALLBACK callback.  */
4523
4524   /* The same symbol may appear more than once in the range though.
4525      E.g., if we're looking for symbols that complete "w", and we have
4526      a symbol named "w1::w2", we'll find the two name components for
4527      that same symbol in the range.  To be sure we only call the
4528      callback once per symbol, we first collect the symbol name
4529      indexes that matched in a temporary vector and ignore
4530      duplicates.  */
4531   std::vector<offset_type> matches;
4532   matches.reserve (std::distance (bounds.first, bounds.second));
4533
4534   for (; bounds.first != bounds.second; ++bounds.first)
4535     {
4536       const char *qualified = index.symbol_name_at (bounds.first->idx);
4537
4538       if (!lookup_name_matcher.matches (qualified)
4539           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4540         continue;
4541
4542       matches.push_back (bounds.first->idx);
4543     }
4544
4545   std::sort (matches.begin (), matches.end ());
4546
4547   /* Finally call the callback, once per match.  */
4548   ULONGEST prev = -1;
4549   for (offset_type idx : matches)
4550     {
4551       if (prev != idx)
4552         {
4553           match_callback (idx);
4554           prev = idx;
4555         }
4556     }
4557
4558   /* Above we use a type wider than idx's for 'prev', since 0 and
4559      (offset_type)-1 are both possible values.  */
4560   static_assert (sizeof (prev) > sizeof (offset_type), "");
4561 }
4562
4563 #if GDB_SELF_TEST
4564
4565 namespace selftests { namespace dw2_expand_symtabs_matching {
4566
4567 /* A mock .gdb_index/.debug_names-like name index table, enough to
4568    exercise dw2_expand_symtabs_matching_symbol, which works with the
4569    mapped_index_base interface.  Builds an index from the symbol list
4570    passed as parameter to the constructor.  */
4571 class mock_mapped_index : public mapped_index_base
4572 {
4573 public:
4574   mock_mapped_index (gdb::array_view<const char *> symbols)
4575     : m_symbol_table (symbols)
4576   {}
4577
4578   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4579
4580   /* Return the number of names in the symbol table.  */
4581   size_t symbol_name_count () const override
4582   {
4583     return m_symbol_table.size ();
4584   }
4585
4586   /* Get the name of the symbol at IDX in the symbol table.  */
4587   const char *symbol_name_at (offset_type idx) const override
4588   {
4589     return m_symbol_table[idx];
4590   }
4591
4592 private:
4593   gdb::array_view<const char *> m_symbol_table;
4594 };
4595
4596 /* Convenience function that converts a NULL pointer to a "<null>"
4597    string, to pass to print routines.  */
4598
4599 static const char *
4600 string_or_null (const char *str)
4601 {
4602   return str != NULL ? str : "<null>";
4603 }
4604
4605 /* Check if a lookup_name_info built from
4606    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4607    index.  EXPECTED_LIST is the list of expected matches, in expected
4608    matching order.  If no match expected, then an empty list is
4609    specified.  Returns true on success.  On failure prints a warning
4610    indicating the file:line that failed, and returns false.  */
4611
4612 static bool
4613 check_match (const char *file, int line,
4614              mock_mapped_index &mock_index,
4615              const char *name, symbol_name_match_type match_type,
4616              bool completion_mode,
4617              std::initializer_list<const char *> expected_list)
4618 {
4619   lookup_name_info lookup_name (name, match_type, completion_mode);
4620
4621   bool matched = true;
4622
4623   auto mismatch = [&] (const char *expected_str,
4624                        const char *got)
4625   {
4626     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4627                "expected=\"%s\", got=\"%s\"\n"),
4628              file, line,
4629              (match_type == symbol_name_match_type::FULL
4630               ? "FULL" : "WILD"),
4631              name, string_or_null (expected_str), string_or_null (got));
4632     matched = false;
4633   };
4634
4635   auto expected_it = expected_list.begin ();
4636   auto expected_end = expected_list.end ();
4637
4638   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4639                                       NULL, ALL_DOMAIN,
4640                                       [&] (offset_type idx)
4641   {
4642     const char *matched_name = mock_index.symbol_name_at (idx);
4643     const char *expected_str
4644       = expected_it == expected_end ? NULL : *expected_it++;
4645
4646     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4647       mismatch (expected_str, matched_name);
4648   });
4649
4650   const char *expected_str
4651   = expected_it == expected_end ? NULL : *expected_it++;
4652   if (expected_str != NULL)
4653     mismatch (expected_str, NULL);
4654
4655   return matched;
4656 }
4657
4658 /* The symbols added to the mock mapped_index for testing (in
4659    canonical form).  */
4660 static const char *test_symbols[] = {
4661   "function",
4662   "std::bar",
4663   "std::zfunction",
4664   "std::zfunction2",
4665   "w1::w2",
4666   "ns::foo<char*>",
4667   "ns::foo<int>",
4668   "ns::foo<long>",
4669   "ns2::tmpl<int>::foo2",
4670   "(anonymous namespace)::A::B::C",
4671
4672   /* These are used to check that the increment-last-char in the
4673      matching algorithm for completion doesn't match "t1_fund" when
4674      completing "t1_func".  */
4675   "t1_func",
4676   "t1_func1",
4677   "t1_fund",
4678   "t1_fund1",
4679
4680   /* A UTF-8 name with multi-byte sequences to make sure that
4681      cp-name-parser understands this as a single identifier ("função"
4682      is "function" in PT).  */
4683   u8"u8função",
4684
4685   /* \377 (0xff) is Latin1 'ÿ'.  */
4686   "yfunc\377",
4687
4688   /* \377 (0xff) is Latin1 'ÿ'.  */
4689   "\377",
4690   "\377\377123",
4691
4692   /* A name with all sorts of complications.  Starts with "z" to make
4693      it easier for the completion tests below.  */
4694 #define Z_SYM_NAME \
4695   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4696     "::tuple<(anonymous namespace)::ui*, " \
4697     "std::default_delete<(anonymous namespace)::ui>, void>"
4698
4699   Z_SYM_NAME
4700 };
4701
4702 /* Returns true if the mapped_index_base::find_name_component_bounds
4703    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4704    in completion mode.  */
4705
4706 static bool
4707 check_find_bounds_finds (mapped_index_base &index,
4708                          const char *search_name,
4709                          gdb::array_view<const char *> expected_syms)
4710 {
4711   lookup_name_info lookup_name (search_name,
4712                                 symbol_name_match_type::FULL, true);
4713
4714   auto bounds = index.find_name_components_bounds (lookup_name);
4715
4716   size_t distance = std::distance (bounds.first, bounds.second);
4717   if (distance != expected_syms.size ())
4718     return false;
4719
4720   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4721     {
4722       auto nc_elem = bounds.first + exp_elem;
4723       const char *qualified = index.symbol_name_at (nc_elem->idx);
4724       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4725         return false;
4726     }
4727
4728   return true;
4729 }
4730
4731 /* Test the lower-level mapped_index::find_name_component_bounds
4732    method.  */
4733
4734 static void
4735 test_mapped_index_find_name_component_bounds ()
4736 {
4737   mock_mapped_index mock_index (test_symbols);
4738
4739   mock_index.build_name_components ();
4740
4741   /* Test the lower-level mapped_index::find_name_component_bounds
4742      method in completion mode.  */
4743   {
4744     static const char *expected_syms[] = {
4745       "t1_func",
4746       "t1_func1",
4747     };
4748
4749     SELF_CHECK (check_find_bounds_finds (mock_index,
4750                                          "t1_func", expected_syms));
4751   }
4752
4753   /* Check that the increment-last-char in the name matching algorithm
4754      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4755   {
4756     static const char *expected_syms1[] = {
4757       "\377",
4758       "\377\377123",
4759     };
4760     SELF_CHECK (check_find_bounds_finds (mock_index,
4761                                          "\377", expected_syms1));
4762
4763     static const char *expected_syms2[] = {
4764       "\377\377123",
4765     };
4766     SELF_CHECK (check_find_bounds_finds (mock_index,
4767                                          "\377\377", expected_syms2));
4768   }
4769 }
4770
4771 /* Test dw2_expand_symtabs_matching_symbol.  */
4772
4773 static void
4774 test_dw2_expand_symtabs_matching_symbol ()
4775 {
4776   mock_mapped_index mock_index (test_symbols);
4777
4778   /* We let all tests run until the end even if some fails, for debug
4779      convenience.  */
4780   bool any_mismatch = false;
4781
4782   /* Create the expected symbols list (an initializer_list).  Needed
4783      because lists have commas, and we need to pass them to CHECK,
4784      which is a macro.  */
4785 #define EXPECT(...) { __VA_ARGS__ }
4786
4787   /* Wrapper for check_match that passes down the current
4788      __FILE__/__LINE__.  */
4789 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4790   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4791                                 mock_index,                             \
4792                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4793                                 EXPECTED_LIST)
4794
4795   /* Identity checks.  */
4796   for (const char *sym : test_symbols)
4797     {
4798       /* Should be able to match all existing symbols.  */
4799       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4800                    EXPECT (sym));
4801
4802       /* Should be able to match all existing symbols with
4803          parameters.  */
4804       std::string with_params = std::string (sym) + "(int)";
4805       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4806                    EXPECT (sym));
4807
4808       /* Should be able to match all existing symbols with
4809          parameters and qualifiers.  */
4810       with_params = std::string (sym) + " ( int ) const";
4811       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4812                    EXPECT (sym));
4813
4814       /* This should really find sym, but cp-name-parser.y doesn't
4815          know about lvalue/rvalue qualifiers yet.  */
4816       with_params = std::string (sym) + " ( int ) &&";
4817       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4818                    {});
4819     }
4820
4821   /* Check that the name matching algorithm for completion doesn't get
4822      confused with Latin1 'ÿ' / 0xff.  */
4823   {
4824     static const char str[] = "\377";
4825     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4826                  EXPECT ("\377", "\377\377123"));
4827   }
4828
4829   /* Check that the increment-last-char in the matching algorithm for
4830      completion doesn't match "t1_fund" when completing "t1_func".  */
4831   {
4832     static const char str[] = "t1_func";
4833     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4834                  EXPECT ("t1_func", "t1_func1"));
4835   }
4836
4837   /* Check that completion mode works at each prefix of the expected
4838      symbol name.  */
4839   {
4840     static const char str[] = "function(int)";
4841     size_t len = strlen (str);
4842     std::string lookup;
4843
4844     for (size_t i = 1; i < len; i++)
4845       {
4846         lookup.assign (str, i);
4847         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4848                      EXPECT ("function"));
4849       }
4850   }
4851
4852   /* While "w" is a prefix of both components, the match function
4853      should still only be called once.  */
4854   {
4855     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4856                  EXPECT ("w1::w2"));
4857     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4858                  EXPECT ("w1::w2"));
4859   }
4860
4861   /* Same, with a "complicated" symbol.  */
4862   {
4863     static const char str[] = Z_SYM_NAME;
4864     size_t len = strlen (str);
4865     std::string lookup;
4866
4867     for (size_t i = 1; i < len; i++)
4868       {
4869         lookup.assign (str, i);
4870         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4871                      EXPECT (Z_SYM_NAME));
4872       }
4873   }
4874
4875   /* In FULL mode, an incomplete symbol doesn't match.  */
4876   {
4877     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4878                  {});
4879   }
4880
4881   /* A complete symbol with parameters matches any overload, since the
4882      index has no overload info.  */
4883   {
4884     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4885                  EXPECT ("std::zfunction", "std::zfunction2"));
4886     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4887                  EXPECT ("std::zfunction", "std::zfunction2"));
4888     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4889                  EXPECT ("std::zfunction", "std::zfunction2"));
4890   }
4891
4892   /* Check that whitespace is ignored appropriately.  A symbol with a
4893      template argument list. */
4894   {
4895     static const char expected[] = "ns::foo<int>";
4896     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4897                  EXPECT (expected));
4898     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4899                  EXPECT (expected));
4900   }
4901
4902   /* Check that whitespace is ignored appropriately.  A symbol with a
4903      template argument list that includes a pointer.  */
4904   {
4905     static const char expected[] = "ns::foo<char*>";
4906     /* Try both completion and non-completion modes.  */
4907     static const bool completion_mode[2] = {false, true};
4908     for (size_t i = 0; i < 2; i++)
4909       {
4910         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4911                      completion_mode[i], EXPECT (expected));
4912         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4913                      completion_mode[i], EXPECT (expected));
4914
4915         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4916                      completion_mode[i], EXPECT (expected));
4917         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4918                      completion_mode[i], EXPECT (expected));
4919       }
4920   }
4921
4922   {
4923     /* Check method qualifiers are ignored.  */
4924     static const char expected[] = "ns::foo<char*>";
4925     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4926                  symbol_name_match_type::FULL, true, EXPECT (expected));
4927     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4928                  symbol_name_match_type::FULL, true, EXPECT (expected));
4929     CHECK_MATCH ("foo < char * >  ( int ) const",
4930                  symbol_name_match_type::WILD, true, EXPECT (expected));
4931     CHECK_MATCH ("foo < char * >  ( int ) &&",
4932                  symbol_name_match_type::WILD, true, EXPECT (expected));
4933   }
4934
4935   /* Test lookup names that don't match anything.  */
4936   {
4937     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4938                  {});
4939
4940     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4941                  {});
4942   }
4943
4944   /* Some wild matching tests, exercising "(anonymous namespace)",
4945      which should not be confused with a parameter list.  */
4946   {
4947     static const char *syms[] = {
4948       "A::B::C",
4949       "B::C",
4950       "C",
4951       "A :: B :: C ( int )",
4952       "B :: C ( int )",
4953       "C ( int )",
4954     };
4955
4956     for (const char *s : syms)
4957       {
4958         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4959                      EXPECT ("(anonymous namespace)::A::B::C"));
4960       }
4961   }
4962
4963   {
4964     static const char expected[] = "ns2::tmpl<int>::foo2";
4965     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4966                  EXPECT (expected));
4967     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4968                  EXPECT (expected));
4969   }
4970
4971   SELF_CHECK (!any_mismatch);
4972
4973 #undef EXPECT
4974 #undef CHECK_MATCH
4975 }
4976
4977 static void
4978 run_test ()
4979 {
4980   test_mapped_index_find_name_component_bounds ();
4981   test_dw2_expand_symtabs_matching_symbol ();
4982 }
4983
4984 }} // namespace selftests::dw2_expand_symtabs_matching
4985
4986 #endif /* GDB_SELF_TEST */
4987
4988 /* If FILE_MATCHER is NULL or if PER_CU has
4989    dwarf2_per_cu_quick_data::MARK set (see
4990    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4991    EXPANSION_NOTIFY on it.  */
4992
4993 static void
4994 dw2_expand_symtabs_matching_one
4995   (struct dwarf2_per_cu_data *per_cu,
4996    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4997    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
4998 {
4999   if (file_matcher == NULL || per_cu->v.quick->mark)
5000     {
5001       bool symtab_was_null
5002         = (per_cu->v.quick->compunit_symtab == NULL);
5003
5004       dw2_instantiate_symtab (per_cu, false);
5005
5006       if (expansion_notify != NULL
5007           && symtab_was_null
5008           && per_cu->v.quick->compunit_symtab != NULL)
5009         expansion_notify (per_cu->v.quick->compunit_symtab);
5010     }
5011 }
5012
5013 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5014    matched, to expand corresponding CUs that were marked.  IDX is the
5015    index of the symbol name that matched.  */
5016
5017 static void
5018 dw2_expand_marked_cus
5019   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5020    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5021    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5022    search_domain kind)
5023 {
5024   offset_type *vec, vec_len, vec_idx;
5025   bool global_seen = false;
5026   mapped_index &index = *dwarf2_per_objfile->index_table;
5027
5028   vec = (offset_type *) (index.constant_pool
5029                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5030   vec_len = MAYBE_SWAP (vec[0]);
5031   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5032     {
5033       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5034       /* This value is only valid for index versions >= 7.  */
5035       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5036       gdb_index_symbol_kind symbol_kind =
5037         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5038       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5039       /* Only check the symbol attributes if they're present.
5040          Indices prior to version 7 don't record them,
5041          and indices >= 7 may elide them for certain symbols
5042          (gold does this).  */
5043       int attrs_valid =
5044         (index.version >= 7
5045          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5046
5047       /* Work around gold/15646.  */
5048       if (attrs_valid)
5049         {
5050           if (!is_static && global_seen)
5051             continue;
5052           if (!is_static)
5053             global_seen = true;
5054         }
5055
5056       /* Only check the symbol's kind if it has one.  */
5057       if (attrs_valid)
5058         {
5059           switch (kind)
5060             {
5061             case VARIABLES_DOMAIN:
5062               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5063                 continue;
5064               break;
5065             case FUNCTIONS_DOMAIN:
5066               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5067                 continue;
5068               break;
5069             case TYPES_DOMAIN:
5070               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5071                 continue;
5072               break;
5073             default:
5074               break;
5075             }
5076         }
5077
5078       /* Don't crash on bad data.  */
5079       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5080                        + dwarf2_per_objfile->all_type_units.size ()))
5081         {
5082           complaint (_(".gdb_index entry has bad CU index"
5083                        " [in module %s]"),
5084                        objfile_name (dwarf2_per_objfile->objfile));
5085           continue;
5086         }
5087
5088       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5089       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5090                                        expansion_notify);
5091     }
5092 }
5093
5094 /* If FILE_MATCHER is non-NULL, set all the
5095    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5096    that match FILE_MATCHER.  */
5097
5098 static void
5099 dw_expand_symtabs_matching_file_matcher
5100   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5101    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5102 {
5103   if (file_matcher == NULL)
5104     return;
5105
5106   objfile *const objfile = dwarf2_per_objfile->objfile;
5107
5108   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5109                                             htab_eq_pointer,
5110                                             NULL, xcalloc, xfree));
5111   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5112                                                 htab_eq_pointer,
5113                                                 NULL, xcalloc, xfree));
5114
5115   /* The rule is CUs specify all the files, including those used by
5116      any TU, so there's no need to scan TUs here.  */
5117
5118   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5119     {
5120       QUIT;
5121
5122       per_cu->v.quick->mark = 0;
5123
5124       /* We only need to look at symtabs not already expanded.  */
5125       if (per_cu->v.quick->compunit_symtab)
5126         continue;
5127
5128       quick_file_names *file_data = dw2_get_file_names (per_cu);
5129       if (file_data == NULL)
5130         continue;
5131
5132       if (htab_find (visited_not_found.get (), file_data) != NULL)
5133         continue;
5134       else if (htab_find (visited_found.get (), file_data) != NULL)
5135         {
5136           per_cu->v.quick->mark = 1;
5137           continue;
5138         }
5139
5140       for (int j = 0; j < file_data->num_file_names; ++j)
5141         {
5142           const char *this_real_name;
5143
5144           if (file_matcher (file_data->file_names[j], false))
5145             {
5146               per_cu->v.quick->mark = 1;
5147               break;
5148             }
5149
5150           /* Before we invoke realpath, which can get expensive when many
5151              files are involved, do a quick comparison of the basenames.  */
5152           if (!basenames_may_differ
5153               && !file_matcher (lbasename (file_data->file_names[j]),
5154                                 true))
5155             continue;
5156
5157           this_real_name = dw2_get_real_path (objfile, file_data, j);
5158           if (file_matcher (this_real_name, false))
5159             {
5160               per_cu->v.quick->mark = 1;
5161               break;
5162             }
5163         }
5164
5165       void **slot = htab_find_slot (per_cu->v.quick->mark
5166                                     ? visited_found.get ()
5167                                     : visited_not_found.get (),
5168                                     file_data, INSERT);
5169       *slot = file_data;
5170     }
5171 }
5172
5173 static void
5174 dw2_expand_symtabs_matching
5175   (struct objfile *objfile,
5176    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5177    const lookup_name_info &lookup_name,
5178    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5179    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5180    enum search_domain kind)
5181 {
5182   struct dwarf2_per_objfile *dwarf2_per_objfile
5183     = get_dwarf2_per_objfile (objfile);
5184
5185   /* index_table is NULL if OBJF_READNOW.  */
5186   if (!dwarf2_per_objfile->index_table)
5187     return;
5188
5189   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5190
5191   mapped_index &index = *dwarf2_per_objfile->index_table;
5192
5193   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5194                                       symbol_matcher,
5195                                       kind, [&] (offset_type idx)
5196     {
5197       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5198                              expansion_notify, kind);
5199     });
5200 }
5201
5202 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5203    symtab.  */
5204
5205 static struct compunit_symtab *
5206 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5207                                           CORE_ADDR pc)
5208 {
5209   int i;
5210
5211   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5212       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5213     return cust;
5214
5215   if (cust->includes == NULL)
5216     return NULL;
5217
5218   for (i = 0; cust->includes[i]; ++i)
5219     {
5220       struct compunit_symtab *s = cust->includes[i];
5221
5222       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5223       if (s != NULL)
5224         return s;
5225     }
5226
5227   return NULL;
5228 }
5229
5230 static struct compunit_symtab *
5231 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5232                                   struct bound_minimal_symbol msymbol,
5233                                   CORE_ADDR pc,
5234                                   struct obj_section *section,
5235                                   int warn_if_readin)
5236 {
5237   struct dwarf2_per_cu_data *data;
5238   struct compunit_symtab *result;
5239
5240   if (!objfile->partial_symtabs->psymtabs_addrmap)
5241     return NULL;
5242
5243   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5244                                  SECT_OFF_TEXT (objfile));
5245   data = (struct dwarf2_per_cu_data *) addrmap_find
5246     (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
5247   if (!data)
5248     return NULL;
5249
5250   if (warn_if_readin && data->v.quick->compunit_symtab)
5251     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5252              paddress (get_objfile_arch (objfile), pc));
5253
5254   result
5255     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5256                                                                         false),
5257                                                 pc);
5258   gdb_assert (result != NULL);
5259   return result;
5260 }
5261
5262 static void
5263 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5264                           void *data, int need_fullname)
5265 {
5266   struct dwarf2_per_objfile *dwarf2_per_objfile
5267     = get_dwarf2_per_objfile (objfile);
5268
5269   if (!dwarf2_per_objfile->filenames_cache)
5270     {
5271       dwarf2_per_objfile->filenames_cache.emplace ();
5272
5273       htab_up visited (htab_create_alloc (10,
5274                                           htab_hash_pointer, htab_eq_pointer,
5275                                           NULL, xcalloc, xfree));
5276
5277       /* The rule is CUs specify all the files, including those used
5278          by any TU, so there's no need to scan TUs here.  We can
5279          ignore file names coming from already-expanded CUs.  */
5280
5281       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5282         {
5283           if (per_cu->v.quick->compunit_symtab)
5284             {
5285               void **slot = htab_find_slot (visited.get (),
5286                                             per_cu->v.quick->file_names,
5287                                             INSERT);
5288
5289               *slot = per_cu->v.quick->file_names;
5290             }
5291         }
5292
5293       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5294         {
5295           /* We only need to look at symtabs not already expanded.  */
5296           if (per_cu->v.quick->compunit_symtab)
5297             continue;
5298
5299           quick_file_names *file_data = dw2_get_file_names (per_cu);
5300           if (file_data == NULL)
5301             continue;
5302
5303           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5304           if (*slot)
5305             {
5306               /* Already visited.  */
5307               continue;
5308             }
5309           *slot = file_data;
5310
5311           for (int j = 0; j < file_data->num_file_names; ++j)
5312             {
5313               const char *filename = file_data->file_names[j];
5314               dwarf2_per_objfile->filenames_cache->seen (filename);
5315             }
5316         }
5317     }
5318
5319   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5320     {
5321       gdb::unique_xmalloc_ptr<char> this_real_name;
5322
5323       if (need_fullname)
5324         this_real_name = gdb_realpath (filename);
5325       (*fun) (filename, this_real_name.get (), data);
5326     });
5327 }
5328
5329 static int
5330 dw2_has_symbols (struct objfile *objfile)
5331 {
5332   return 1;
5333 }
5334
5335 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5336 {
5337   dw2_has_symbols,
5338   dw2_find_last_source_symtab,
5339   dw2_forget_cached_source_info,
5340   dw2_map_symtabs_matching_filename,
5341   dw2_lookup_symbol,
5342   dw2_print_stats,
5343   dw2_dump,
5344   dw2_expand_symtabs_for_function,
5345   dw2_expand_all_symtabs,
5346   dw2_expand_symtabs_with_fullname,
5347   dw2_map_matching_symbols,
5348   dw2_expand_symtabs_matching,
5349   dw2_find_pc_sect_compunit_symtab,
5350   NULL,
5351   dw2_map_symbol_filenames
5352 };
5353
5354 /* DWARF-5 debug_names reader.  */
5355
5356 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5357 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5358
5359 /* A helper function that reads the .debug_names section in SECTION
5360    and fills in MAP.  FILENAME is the name of the file containing the
5361    section; it is used for error reporting.
5362
5363    Returns true if all went well, false otherwise.  */
5364
5365 static bool
5366 read_debug_names_from_section (struct objfile *objfile,
5367                                const char *filename,
5368                                struct dwarf2_section_info *section,
5369                                mapped_debug_names &map)
5370 {
5371   if (dwarf2_section_empty_p (section))
5372     return false;
5373
5374   /* Older elfutils strip versions could keep the section in the main
5375      executable while splitting it for the separate debug info file.  */
5376   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5377     return false;
5378
5379   dwarf2_read_section (objfile, section);
5380
5381   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5382
5383   const gdb_byte *addr = section->buffer;
5384
5385   bfd *const abfd = get_section_bfd_owner (section);
5386
5387   unsigned int bytes_read;
5388   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5389   addr += bytes_read;
5390
5391   map.dwarf5_is_dwarf64 = bytes_read != 4;
5392   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5393   if (bytes_read + length != section->size)
5394     {
5395       /* There may be multiple per-CU indices.  */
5396       warning (_("Section .debug_names in %s length %s does not match "
5397                  "section length %s, ignoring .debug_names."),
5398                filename, plongest (bytes_read + length),
5399                pulongest (section->size));
5400       return false;
5401     }
5402
5403   /* The version number.  */
5404   uint16_t version = read_2_bytes (abfd, addr);
5405   addr += 2;
5406   if (version != 5)
5407     {
5408       warning (_("Section .debug_names in %s has unsupported version %d, "
5409                  "ignoring .debug_names."),
5410                filename, version);
5411       return false;
5412     }
5413
5414   /* Padding.  */
5415   uint16_t padding = read_2_bytes (abfd, addr);
5416   addr += 2;
5417   if (padding != 0)
5418     {
5419       warning (_("Section .debug_names in %s has unsupported padding %d, "
5420                  "ignoring .debug_names."),
5421                filename, padding);
5422       return false;
5423     }
5424
5425   /* comp_unit_count - The number of CUs in the CU list.  */
5426   map.cu_count = read_4_bytes (abfd, addr);
5427   addr += 4;
5428
5429   /* local_type_unit_count - The number of TUs in the local TU
5430      list.  */
5431   map.tu_count = read_4_bytes (abfd, addr);
5432   addr += 4;
5433
5434   /* foreign_type_unit_count - The number of TUs in the foreign TU
5435      list.  */
5436   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5437   addr += 4;
5438   if (foreign_tu_count != 0)
5439     {
5440       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5441                  "ignoring .debug_names."),
5442                filename, static_cast<unsigned long> (foreign_tu_count));
5443       return false;
5444     }
5445
5446   /* bucket_count - The number of hash buckets in the hash lookup
5447      table.  */
5448   map.bucket_count = read_4_bytes (abfd, addr);
5449   addr += 4;
5450
5451   /* name_count - The number of unique names in the index.  */
5452   map.name_count = read_4_bytes (abfd, addr);
5453   addr += 4;
5454
5455   /* abbrev_table_size - The size in bytes of the abbreviations
5456      table.  */
5457   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5458   addr += 4;
5459
5460   /* augmentation_string_size - The size in bytes of the augmentation
5461      string.  This value is rounded up to a multiple of 4.  */
5462   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5463   addr += 4;
5464   map.augmentation_is_gdb = ((augmentation_string_size
5465                               == sizeof (dwarf5_augmentation))
5466                              && memcmp (addr, dwarf5_augmentation,
5467                                         sizeof (dwarf5_augmentation)) == 0);
5468   augmentation_string_size += (-augmentation_string_size) & 3;
5469   addr += augmentation_string_size;
5470
5471   /* List of CUs */
5472   map.cu_table_reordered = addr;
5473   addr += map.cu_count * map.offset_size;
5474
5475   /* List of Local TUs */
5476   map.tu_table_reordered = addr;
5477   addr += map.tu_count * map.offset_size;
5478
5479   /* Hash Lookup Table */
5480   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5481   addr += map.bucket_count * 4;
5482   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5483   addr += map.name_count * 4;
5484
5485   /* Name Table */
5486   map.name_table_string_offs_reordered = addr;
5487   addr += map.name_count * map.offset_size;
5488   map.name_table_entry_offs_reordered = addr;
5489   addr += map.name_count * map.offset_size;
5490
5491   const gdb_byte *abbrev_table_start = addr;
5492   for (;;)
5493     {
5494       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5495       addr += bytes_read;
5496       if (index_num == 0)
5497         break;
5498
5499       const auto insertpair
5500         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5501       if (!insertpair.second)
5502         {
5503           warning (_("Section .debug_names in %s has duplicate index %s, "
5504                      "ignoring .debug_names."),
5505                    filename, pulongest (index_num));
5506           return false;
5507         }
5508       mapped_debug_names::index_val &indexval = insertpair.first->second;
5509       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5510       addr += bytes_read;
5511
5512       for (;;)
5513         {
5514           mapped_debug_names::index_val::attr attr;
5515           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5516           addr += bytes_read;
5517           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5518           addr += bytes_read;
5519           if (attr.form == DW_FORM_implicit_const)
5520             {
5521               attr.implicit_const = read_signed_leb128 (abfd, addr,
5522                                                         &bytes_read);
5523               addr += bytes_read;
5524             }
5525           if (attr.dw_idx == 0 && attr.form == 0)
5526             break;
5527           indexval.attr_vec.push_back (std::move (attr));
5528         }
5529     }
5530   if (addr != abbrev_table_start + abbrev_table_size)
5531     {
5532       warning (_("Section .debug_names in %s has abbreviation_table "
5533                  "of size %zu vs. written as %u, ignoring .debug_names."),
5534                filename, addr - abbrev_table_start, abbrev_table_size);
5535       return false;
5536     }
5537   map.entry_pool = addr;
5538
5539   return true;
5540 }
5541
5542 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5543    list.  */
5544
5545 static void
5546 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5547                                   const mapped_debug_names &map,
5548                                   dwarf2_section_info &section,
5549                                   bool is_dwz)
5550 {
5551   sect_offset sect_off_prev;
5552   for (uint32_t i = 0; i <= map.cu_count; ++i)
5553     {
5554       sect_offset sect_off_next;
5555       if (i < map.cu_count)
5556         {
5557           sect_off_next
5558             = (sect_offset) (extract_unsigned_integer
5559                              (map.cu_table_reordered + i * map.offset_size,
5560                               map.offset_size,
5561                               map.dwarf5_byte_order));
5562         }
5563       else
5564         sect_off_next = (sect_offset) section.size;
5565       if (i >= 1)
5566         {
5567           const ULONGEST length = sect_off_next - sect_off_prev;
5568           dwarf2_per_cu_data *per_cu
5569             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5570                                          sect_off_prev, length);
5571           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5572         }
5573       sect_off_prev = sect_off_next;
5574     }
5575 }
5576
5577 /* Read the CU list from the mapped index, and use it to create all
5578    the CU objects for this dwarf2_per_objfile.  */
5579
5580 static void
5581 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5582                              const mapped_debug_names &map,
5583                              const mapped_debug_names &dwz_map)
5584 {
5585   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5586   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5587
5588   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5589                                     dwarf2_per_objfile->info,
5590                                     false /* is_dwz */);
5591
5592   if (dwz_map.cu_count == 0)
5593     return;
5594
5595   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5596   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5597                                     true /* is_dwz */);
5598 }
5599
5600 /* Read .debug_names.  If everything went ok, initialize the "quick"
5601    elements of all the CUs and return true.  Otherwise, return false.  */
5602
5603 static bool
5604 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5605 {
5606   std::unique_ptr<mapped_debug_names> map
5607     (new mapped_debug_names (dwarf2_per_objfile));
5608   mapped_debug_names dwz_map (dwarf2_per_objfile);
5609   struct objfile *objfile = dwarf2_per_objfile->objfile;
5610
5611   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5612                                       &dwarf2_per_objfile->debug_names,
5613                                       *map))
5614     return false;
5615
5616   /* Don't use the index if it's empty.  */
5617   if (map->name_count == 0)
5618     return false;
5619
5620   /* If there is a .dwz file, read it so we can get its CU list as
5621      well.  */
5622   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5623   if (dwz != NULL)
5624     {
5625       if (!read_debug_names_from_section (objfile,
5626                                           bfd_get_filename (dwz->dwz_bfd),
5627                                           &dwz->debug_names, dwz_map))
5628         {
5629           warning (_("could not read '.debug_names' section from %s; skipping"),
5630                    bfd_get_filename (dwz->dwz_bfd));
5631           return false;
5632         }
5633     }
5634
5635   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5636
5637   if (map->tu_count != 0)
5638     {
5639       /* We can only handle a single .debug_types when we have an
5640          index.  */
5641       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5642         return false;
5643
5644       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5645                                                 dwarf2_per_objfile->types, 0);
5646
5647       create_signatured_type_table_from_debug_names
5648         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5649     }
5650
5651   create_addrmap_from_aranges (dwarf2_per_objfile,
5652                                &dwarf2_per_objfile->debug_aranges);
5653
5654   dwarf2_per_objfile->debug_names_table = std::move (map);
5655   dwarf2_per_objfile->using_index = 1;
5656   dwarf2_per_objfile->quick_file_names_table =
5657     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5658
5659   return true;
5660 }
5661
5662 /* Type used to manage iterating over all CUs looking for a symbol for
5663    .debug_names.  */
5664
5665 class dw2_debug_names_iterator
5666 {
5667 public:
5668   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5669      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5670   dw2_debug_names_iterator (const mapped_debug_names &map,
5671                             bool want_specific_block,
5672                             block_enum block_index, domain_enum domain,
5673                             const char *name)
5674     : m_map (map), m_want_specific_block (want_specific_block),
5675       m_block_index (block_index), m_domain (domain),
5676       m_addr (find_vec_in_debug_names (map, name))
5677   {}
5678
5679   dw2_debug_names_iterator (const mapped_debug_names &map,
5680                             search_domain search, uint32_t namei)
5681     : m_map (map),
5682       m_search (search),
5683       m_addr (find_vec_in_debug_names (map, namei))
5684   {}
5685
5686   /* Return the next matching CU or NULL if there are no more.  */
5687   dwarf2_per_cu_data *next ();
5688
5689 private:
5690   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5691                                                   const char *name);
5692   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5693                                                   uint32_t namei);
5694
5695   /* The internalized form of .debug_names.  */
5696   const mapped_debug_names &m_map;
5697
5698   /* If true, only look for symbols that match BLOCK_INDEX.  */
5699   const bool m_want_specific_block = false;
5700
5701   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5702      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5703      value.  */
5704   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5705
5706   /* The kind of symbol we're looking for.  */
5707   const domain_enum m_domain = UNDEF_DOMAIN;
5708   const search_domain m_search = ALL_DOMAIN;
5709
5710   /* The list of CUs from the index entry of the symbol, or NULL if
5711      not found.  */
5712   const gdb_byte *m_addr;
5713 };
5714
5715 const char *
5716 mapped_debug_names::namei_to_name (uint32_t namei) const
5717 {
5718   const ULONGEST namei_string_offs
5719     = extract_unsigned_integer ((name_table_string_offs_reordered
5720                                  + namei * offset_size),
5721                                 offset_size,
5722                                 dwarf5_byte_order);
5723   return read_indirect_string_at_offset
5724     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5725 }
5726
5727 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5728    found, return pointer to its pool data.  If NAME cannot be found,
5729    return NULL.  */
5730
5731 const gdb_byte *
5732 dw2_debug_names_iterator::find_vec_in_debug_names
5733   (const mapped_debug_names &map, const char *name)
5734 {
5735   int (*cmp) (const char *, const char *);
5736
5737   if (current_language->la_language == language_cplus
5738       || current_language->la_language == language_fortran
5739       || current_language->la_language == language_d)
5740     {
5741       /* NAME is already canonical.  Drop any qualifiers as
5742          .debug_names does not contain any.  */
5743
5744       if (strchr (name, '(') != NULL)
5745         {
5746           gdb::unique_xmalloc_ptr<char> without_params
5747             = cp_remove_params (name);
5748
5749           if (without_params != NULL)
5750             {
5751               name = without_params.get();
5752             }
5753         }
5754     }
5755
5756   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5757
5758   const uint32_t full_hash = dwarf5_djb_hash (name);
5759   uint32_t namei
5760     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5761                                 (map.bucket_table_reordered
5762                                  + (full_hash % map.bucket_count)), 4,
5763                                 map.dwarf5_byte_order);
5764   if (namei == 0)
5765     return NULL;
5766   --namei;
5767   if (namei >= map.name_count)
5768     {
5769       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5770                    "[in module %s]"),
5771                  namei, map.name_count,
5772                  objfile_name (map.dwarf2_per_objfile->objfile));
5773       return NULL;
5774     }
5775
5776   for (;;)
5777     {
5778       const uint32_t namei_full_hash
5779         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5780                                     (map.hash_table_reordered + namei), 4,
5781                                     map.dwarf5_byte_order);
5782       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5783         return NULL;
5784
5785       if (full_hash == namei_full_hash)
5786         {
5787           const char *const namei_string = map.namei_to_name (namei);
5788
5789 #if 0 /* An expensive sanity check.  */
5790           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5791             {
5792               complaint (_("Wrong .debug_names hash for string at index %u "
5793                            "[in module %s]"),
5794                          namei, objfile_name (dwarf2_per_objfile->objfile));
5795               return NULL;
5796             }
5797 #endif
5798
5799           if (cmp (namei_string, name) == 0)
5800             {
5801               const ULONGEST namei_entry_offs
5802                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5803                                              + namei * map.offset_size),
5804                                             map.offset_size, map.dwarf5_byte_order);
5805               return map.entry_pool + namei_entry_offs;
5806             }
5807         }
5808
5809       ++namei;
5810       if (namei >= map.name_count)
5811         return NULL;
5812     }
5813 }
5814
5815 const gdb_byte *
5816 dw2_debug_names_iterator::find_vec_in_debug_names
5817   (const mapped_debug_names &map, uint32_t namei)
5818 {
5819   if (namei >= map.name_count)
5820     {
5821       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5822                    "[in module %s]"),
5823                  namei, map.name_count,
5824                  objfile_name (map.dwarf2_per_objfile->objfile));
5825       return NULL;
5826     }
5827
5828   const ULONGEST namei_entry_offs
5829     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5830                                  + namei * map.offset_size),
5831                                 map.offset_size, map.dwarf5_byte_order);
5832   return map.entry_pool + namei_entry_offs;
5833 }
5834
5835 /* See dw2_debug_names_iterator.  */
5836
5837 dwarf2_per_cu_data *
5838 dw2_debug_names_iterator::next ()
5839 {
5840   if (m_addr == NULL)
5841     return NULL;
5842
5843   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5844   struct objfile *objfile = dwarf2_per_objfile->objfile;
5845   bfd *const abfd = objfile->obfd;
5846
5847  again:
5848
5849   unsigned int bytes_read;
5850   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5851   m_addr += bytes_read;
5852   if (abbrev == 0)
5853     return NULL;
5854
5855   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5856   if (indexval_it == m_map.abbrev_map.cend ())
5857     {
5858       complaint (_("Wrong .debug_names undefined abbrev code %s "
5859                    "[in module %s]"),
5860                  pulongest (abbrev), objfile_name (objfile));
5861       return NULL;
5862     }
5863   const mapped_debug_names::index_val &indexval = indexval_it->second;
5864   bool have_is_static = false;
5865   bool is_static;
5866   dwarf2_per_cu_data *per_cu = NULL;
5867   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5868     {
5869       ULONGEST ull;
5870       switch (attr.form)
5871         {
5872         case DW_FORM_implicit_const:
5873           ull = attr.implicit_const;
5874           break;
5875         case DW_FORM_flag_present:
5876           ull = 1;
5877           break;
5878         case DW_FORM_udata:
5879           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5880           m_addr += bytes_read;
5881           break;
5882         default:
5883           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5884                      dwarf_form_name (attr.form),
5885                      objfile_name (objfile));
5886           return NULL;
5887         }
5888       switch (attr.dw_idx)
5889         {
5890         case DW_IDX_compile_unit:
5891           /* Don't crash on bad data.  */
5892           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5893             {
5894               complaint (_(".debug_names entry has bad CU index %s"
5895                            " [in module %s]"),
5896                          pulongest (ull),
5897                          objfile_name (dwarf2_per_objfile->objfile));
5898               continue;
5899             }
5900           per_cu = dwarf2_per_objfile->get_cutu (ull);
5901           break;
5902         case DW_IDX_type_unit:
5903           /* Don't crash on bad data.  */
5904           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5905             {
5906               complaint (_(".debug_names entry has bad TU index %s"
5907                            " [in module %s]"),
5908                          pulongest (ull),
5909                          objfile_name (dwarf2_per_objfile->objfile));
5910               continue;
5911             }
5912           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5913           break;
5914         case DW_IDX_GNU_internal:
5915           if (!m_map.augmentation_is_gdb)
5916             break;
5917           have_is_static = true;
5918           is_static = true;
5919           break;
5920         case DW_IDX_GNU_external:
5921           if (!m_map.augmentation_is_gdb)
5922             break;
5923           have_is_static = true;
5924           is_static = false;
5925           break;
5926         }
5927     }
5928
5929   /* Skip if already read in.  */
5930   if (per_cu->v.quick->compunit_symtab)
5931     goto again;
5932
5933   /* Check static vs global.  */
5934   if (have_is_static)
5935     {
5936       const bool want_static = m_block_index != GLOBAL_BLOCK;
5937       if (m_want_specific_block && want_static != is_static)
5938         goto again;
5939     }
5940
5941   /* Match dw2_symtab_iter_next, symbol_kind
5942      and debug_names::psymbol_tag.  */
5943   switch (m_domain)
5944     {
5945     case VAR_DOMAIN:
5946       switch (indexval.dwarf_tag)
5947         {
5948         case DW_TAG_variable:
5949         case DW_TAG_subprogram:
5950         /* Some types are also in VAR_DOMAIN.  */
5951         case DW_TAG_typedef:
5952         case DW_TAG_structure_type:
5953           break;
5954         default:
5955           goto again;
5956         }
5957       break;
5958     case STRUCT_DOMAIN:
5959       switch (indexval.dwarf_tag)
5960         {
5961         case DW_TAG_typedef:
5962         case DW_TAG_structure_type:
5963           break;
5964         default:
5965           goto again;
5966         }
5967       break;
5968     case LABEL_DOMAIN:
5969       switch (indexval.dwarf_tag)
5970         {
5971         case 0:
5972         case DW_TAG_variable:
5973           break;
5974         default:
5975           goto again;
5976         }
5977       break;
5978     default:
5979       break;
5980     }
5981
5982   /* Match dw2_expand_symtabs_matching, symbol_kind and
5983      debug_names::psymbol_tag.  */
5984   switch (m_search)
5985     {
5986     case VARIABLES_DOMAIN:
5987       switch (indexval.dwarf_tag)
5988         {
5989         case DW_TAG_variable:
5990           break;
5991         default:
5992           goto again;
5993         }
5994       break;
5995     case FUNCTIONS_DOMAIN:
5996       switch (indexval.dwarf_tag)
5997         {
5998         case DW_TAG_subprogram:
5999           break;
6000         default:
6001           goto again;
6002         }
6003       break;
6004     case TYPES_DOMAIN:
6005       switch (indexval.dwarf_tag)
6006         {
6007         case DW_TAG_typedef:
6008         case DW_TAG_structure_type:
6009           break;
6010         default:
6011           goto again;
6012         }
6013       break;
6014     default:
6015       break;
6016     }
6017
6018   return per_cu;
6019 }
6020
6021 static struct compunit_symtab *
6022 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6023                                const char *name, domain_enum domain)
6024 {
6025   const block_enum block_index = static_cast<block_enum> (block_index_int);
6026   struct dwarf2_per_objfile *dwarf2_per_objfile
6027     = get_dwarf2_per_objfile (objfile);
6028
6029   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6030   if (!mapp)
6031     {
6032       /* index is NULL if OBJF_READNOW.  */
6033       return NULL;
6034     }
6035   const auto &map = *mapp;
6036
6037   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6038                                  block_index, domain, name);
6039
6040   struct compunit_symtab *stab_best = NULL;
6041   struct dwarf2_per_cu_data *per_cu;
6042   while ((per_cu = iter.next ()) != NULL)
6043     {
6044       struct symbol *sym, *with_opaque = NULL;
6045       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6046       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6047       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6048
6049       sym = block_find_symbol (block, name, domain,
6050                                block_find_non_opaque_type_preferred,
6051                                &with_opaque);
6052
6053       /* Some caution must be observed with overloaded functions and
6054          methods, since the index will not contain any overload
6055          information (but NAME might contain it).  */
6056
6057       if (sym != NULL
6058           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6059         return stab;
6060       if (with_opaque != NULL
6061           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6062         stab_best = stab;
6063
6064       /* Keep looking through other CUs.  */
6065     }
6066
6067   return stab_best;
6068 }
6069
6070 /* This dumps minimal information about .debug_names.  It is called
6071    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6072    uses this to verify that .debug_names has been loaded.  */
6073
6074 static void
6075 dw2_debug_names_dump (struct objfile *objfile)
6076 {
6077   struct dwarf2_per_objfile *dwarf2_per_objfile
6078     = get_dwarf2_per_objfile (objfile);
6079
6080   gdb_assert (dwarf2_per_objfile->using_index);
6081   printf_filtered (".debug_names:");
6082   if (dwarf2_per_objfile->debug_names_table)
6083     printf_filtered (" exists\n");
6084   else
6085     printf_filtered (" faked for \"readnow\"\n");
6086   printf_filtered ("\n");
6087 }
6088
6089 static void
6090 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6091                                              const char *func_name)
6092 {
6093   struct dwarf2_per_objfile *dwarf2_per_objfile
6094     = get_dwarf2_per_objfile (objfile);
6095
6096   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6097   if (dwarf2_per_objfile->debug_names_table)
6098     {
6099       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6100
6101       /* Note: It doesn't matter what we pass for block_index here.  */
6102       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6103                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6104
6105       struct dwarf2_per_cu_data *per_cu;
6106       while ((per_cu = iter.next ()) != NULL)
6107         dw2_instantiate_symtab (per_cu, false);
6108     }
6109 }
6110
6111 static void
6112 dw2_debug_names_expand_symtabs_matching
6113   (struct objfile *objfile,
6114    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6115    const lookup_name_info &lookup_name,
6116    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6117    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6118    enum search_domain kind)
6119 {
6120   struct dwarf2_per_objfile *dwarf2_per_objfile
6121     = get_dwarf2_per_objfile (objfile);
6122
6123   /* debug_names_table is NULL if OBJF_READNOW.  */
6124   if (!dwarf2_per_objfile->debug_names_table)
6125     return;
6126
6127   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6128
6129   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6130
6131   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6132                                       symbol_matcher,
6133                                       kind, [&] (offset_type namei)
6134     {
6135       /* The name was matched, now expand corresponding CUs that were
6136          marked.  */
6137       dw2_debug_names_iterator iter (map, kind, namei);
6138
6139       struct dwarf2_per_cu_data *per_cu;
6140       while ((per_cu = iter.next ()) != NULL)
6141         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6142                                          expansion_notify);
6143     });
6144 }
6145
6146 const struct quick_symbol_functions dwarf2_debug_names_functions =
6147 {
6148   dw2_has_symbols,
6149   dw2_find_last_source_symtab,
6150   dw2_forget_cached_source_info,
6151   dw2_map_symtabs_matching_filename,
6152   dw2_debug_names_lookup_symbol,
6153   dw2_print_stats,
6154   dw2_debug_names_dump,
6155   dw2_debug_names_expand_symtabs_for_function,
6156   dw2_expand_all_symtabs,
6157   dw2_expand_symtabs_with_fullname,
6158   dw2_map_matching_symbols,
6159   dw2_debug_names_expand_symtabs_matching,
6160   dw2_find_pc_sect_compunit_symtab,
6161   NULL,
6162   dw2_map_symbol_filenames
6163 };
6164
6165 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6166    to either a dwarf2_per_objfile or dwz_file object.  */
6167
6168 template <typename T>
6169 static gdb::array_view<const gdb_byte>
6170 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6171 {
6172   dwarf2_section_info *section = &section_owner->gdb_index;
6173
6174   if (dwarf2_section_empty_p (section))
6175     return {};
6176
6177   /* Older elfutils strip versions could keep the section in the main
6178      executable while splitting it for the separate debug info file.  */
6179   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6180     return {};
6181
6182   dwarf2_read_section (obj, section);
6183
6184   /* dwarf2_section_info::size is a bfd_size_type, while
6185      gdb::array_view works with size_t.  On 32-bit hosts, with
6186      --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
6187      is 32-bit.  So we need an explicit narrowing conversion here.
6188      This is fine, because it's impossible to allocate or mmap an
6189      array/buffer larger than what size_t can represent.  */
6190   return gdb::make_array_view (section->buffer, section->size);
6191 }
6192
6193 /* Lookup the index cache for the contents of the index associated to
6194    DWARF2_OBJ.  */
6195
6196 static gdb::array_view<const gdb_byte>
6197 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6198 {
6199   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6200   if (build_id == nullptr)
6201     return {};
6202
6203   return global_index_cache.lookup_gdb_index (build_id,
6204                                               &dwarf2_obj->index_cache_res);
6205 }
6206
6207 /* Same as the above, but for DWZ.  */
6208
6209 static gdb::array_view<const gdb_byte>
6210 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6211 {
6212   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6213   if (build_id == nullptr)
6214     return {};
6215
6216   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6217 }
6218
6219 /* See symfile.h.  */
6220
6221 bool
6222 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6223 {
6224   struct dwarf2_per_objfile *dwarf2_per_objfile
6225     = get_dwarf2_per_objfile (objfile);
6226
6227   /* If we're about to read full symbols, don't bother with the
6228      indices.  In this case we also don't care if some other debug
6229      format is making psymtabs, because they are all about to be
6230      expanded anyway.  */
6231   if ((objfile->flags & OBJF_READNOW))
6232     {
6233       dwarf2_per_objfile->using_index = 1;
6234       create_all_comp_units (dwarf2_per_objfile);
6235       create_all_type_units (dwarf2_per_objfile);
6236       dwarf2_per_objfile->quick_file_names_table
6237         = create_quick_file_names_table
6238             (dwarf2_per_objfile->all_comp_units.size ());
6239
6240       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6241                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6242         {
6243           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6244
6245           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6246                                             struct dwarf2_per_cu_quick_data);
6247         }
6248
6249       /* Return 1 so that gdb sees the "quick" functions.  However,
6250          these functions will be no-ops because we will have expanded
6251          all symtabs.  */
6252       *index_kind = dw_index_kind::GDB_INDEX;
6253       return true;
6254     }
6255
6256   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6257     {
6258       *index_kind = dw_index_kind::DEBUG_NAMES;
6259       return true;
6260     }
6261
6262   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6263                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6264                              get_gdb_index_contents_from_section<dwz_file>))
6265     {
6266       *index_kind = dw_index_kind::GDB_INDEX;
6267       return true;
6268     }
6269
6270   /* ... otherwise, try to find the index in the index cache.  */
6271   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6272                              get_gdb_index_contents_from_cache,
6273                              get_gdb_index_contents_from_cache_dwz))
6274     {
6275       global_index_cache.hit ();
6276       *index_kind = dw_index_kind::GDB_INDEX;
6277       return true;
6278     }
6279
6280   global_index_cache.miss ();
6281   return false;
6282 }
6283
6284 \f
6285
6286 /* Build a partial symbol table.  */
6287
6288 void
6289 dwarf2_build_psymtabs (struct objfile *objfile)
6290 {
6291   struct dwarf2_per_objfile *dwarf2_per_objfile
6292     = get_dwarf2_per_objfile (objfile);
6293
6294   init_psymbol_list (objfile, 1024);
6295
6296   try
6297     {
6298       /* This isn't really ideal: all the data we allocate on the
6299          objfile's obstack is still uselessly kept around.  However,
6300          freeing it seems unsafe.  */
6301       psymtab_discarder psymtabs (objfile);
6302       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6303       psymtabs.keep ();
6304
6305       /* (maybe) store an index in the cache.  */
6306       global_index_cache.store (dwarf2_per_objfile);
6307     }
6308   catch (const gdb_exception_error &except)
6309     {
6310       exception_print (gdb_stderr, except);
6311     }
6312 }
6313
6314 /* Return the total length of the CU described by HEADER.  */
6315
6316 static unsigned int
6317 get_cu_length (const struct comp_unit_head *header)
6318 {
6319   return header->initial_length_size + header->length;
6320 }
6321
6322 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6323
6324 static inline bool
6325 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6326 {
6327   sect_offset bottom = cu_header->sect_off;
6328   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6329
6330   return sect_off >= bottom && sect_off < top;
6331 }
6332
6333 /* Find the base address of the compilation unit for range lists and
6334    location lists.  It will normally be specified by DW_AT_low_pc.
6335    In DWARF-3 draft 4, the base address could be overridden by
6336    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6337    compilation units with discontinuous ranges.  */
6338
6339 static void
6340 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6341 {
6342   struct attribute *attr;
6343
6344   cu->base_known = 0;
6345   cu->base_address = 0;
6346
6347   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6348   if (attr)
6349     {
6350       cu->base_address = attr_value_as_address (attr);
6351       cu->base_known = 1;
6352     }
6353   else
6354     {
6355       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6356       if (attr)
6357         {
6358           cu->base_address = attr_value_as_address (attr);
6359           cu->base_known = 1;
6360         }
6361     }
6362 }
6363
6364 /* Read in the comp unit header information from the debug_info at info_ptr.
6365    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6366    NOTE: This leaves members offset, first_die_offset to be filled in
6367    by the caller.  */
6368
6369 static const gdb_byte *
6370 read_comp_unit_head (struct comp_unit_head *cu_header,
6371                      const gdb_byte *info_ptr,
6372                      struct dwarf2_section_info *section,
6373                      rcuh_kind section_kind)
6374 {
6375   int signed_addr;
6376   unsigned int bytes_read;
6377   const char *filename = get_section_file_name (section);
6378   bfd *abfd = get_section_bfd_owner (section);
6379
6380   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6381   cu_header->initial_length_size = bytes_read;
6382   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6383   info_ptr += bytes_read;
6384   cu_header->version = read_2_bytes (abfd, info_ptr);
6385   if (cu_header->version < 2 || cu_header->version > 5)
6386     error (_("Dwarf Error: wrong version in compilation unit header "
6387            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6388            cu_header->version, filename);
6389   info_ptr += 2;
6390   if (cu_header->version < 5)
6391     switch (section_kind)
6392       {
6393       case rcuh_kind::COMPILE:
6394         cu_header->unit_type = DW_UT_compile;
6395         break;
6396       case rcuh_kind::TYPE:
6397         cu_header->unit_type = DW_UT_type;
6398         break;
6399       default:
6400         internal_error (__FILE__, __LINE__,
6401                         _("read_comp_unit_head: invalid section_kind"));
6402       }
6403   else
6404     {
6405       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6406                                                  (read_1_byte (abfd, info_ptr));
6407       info_ptr += 1;
6408       switch (cu_header->unit_type)
6409         {
6410         case DW_UT_compile:
6411           if (section_kind != rcuh_kind::COMPILE)
6412             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6413                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6414                    filename);
6415           break;
6416         case DW_UT_type:
6417           section_kind = rcuh_kind::TYPE;
6418           break;
6419         default:
6420           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6421                  "(is %d, should be %d or %d) [in module %s]"),
6422                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6423         }
6424
6425       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6426       info_ptr += 1;
6427     }
6428   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6429                                                           cu_header,
6430                                                           &bytes_read);
6431   info_ptr += bytes_read;
6432   if (cu_header->version < 5)
6433     {
6434       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6435       info_ptr += 1;
6436     }
6437   signed_addr = bfd_get_sign_extend_vma (abfd);
6438   if (signed_addr < 0)
6439     internal_error (__FILE__, __LINE__,
6440                     _("read_comp_unit_head: dwarf from non elf file"));
6441   cu_header->signed_addr_p = signed_addr;
6442
6443   if (section_kind == rcuh_kind::TYPE)
6444     {
6445       LONGEST type_offset;
6446
6447       cu_header->signature = read_8_bytes (abfd, info_ptr);
6448       info_ptr += 8;
6449
6450       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6451       info_ptr += bytes_read;
6452       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6453       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6454         error (_("Dwarf Error: Too big type_offset in compilation unit "
6455                "header (is %s) [in module %s]"), plongest (type_offset),
6456                filename);
6457     }
6458
6459   return info_ptr;
6460 }
6461
6462 /* Helper function that returns the proper abbrev section for
6463    THIS_CU.  */
6464
6465 static struct dwarf2_section_info *
6466 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6467 {
6468   struct dwarf2_section_info *abbrev;
6469   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6470
6471   if (this_cu->is_dwz)
6472     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6473   else
6474     abbrev = &dwarf2_per_objfile->abbrev;
6475
6476   return abbrev;
6477 }
6478
6479 /* Subroutine of read_and_check_comp_unit_head and
6480    read_and_check_type_unit_head to simplify them.
6481    Perform various error checking on the header.  */
6482
6483 static void
6484 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6485                             struct comp_unit_head *header,
6486                             struct dwarf2_section_info *section,
6487                             struct dwarf2_section_info *abbrev_section)
6488 {
6489   const char *filename = get_section_file_name (section);
6490
6491   if (to_underlying (header->abbrev_sect_off)
6492       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6493     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6494            "(offset %s + 6) [in module %s]"),
6495            sect_offset_str (header->abbrev_sect_off),
6496            sect_offset_str (header->sect_off),
6497            filename);
6498
6499   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6500      avoid potential 32-bit overflow.  */
6501   if (((ULONGEST) header->sect_off + get_cu_length (header))
6502       > section->size)
6503     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6504            "(offset %s + 0) [in module %s]"),
6505            header->length, sect_offset_str (header->sect_off),
6506            filename);
6507 }
6508
6509 /* Read in a CU/TU header and perform some basic error checking.
6510    The contents of the header are stored in HEADER.
6511    The result is a pointer to the start of the first DIE.  */
6512
6513 static const gdb_byte *
6514 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6515                                struct comp_unit_head *header,
6516                                struct dwarf2_section_info *section,
6517                                struct dwarf2_section_info *abbrev_section,
6518                                const gdb_byte *info_ptr,
6519                                rcuh_kind section_kind)
6520 {
6521   const gdb_byte *beg_of_comp_unit = info_ptr;
6522
6523   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6524
6525   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6526
6527   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6528
6529   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6530                               abbrev_section);
6531
6532   return info_ptr;
6533 }
6534
6535 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6536
6537 static sect_offset
6538 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6539                     struct dwarf2_section_info *section,
6540                     sect_offset sect_off)
6541 {
6542   bfd *abfd = get_section_bfd_owner (section);
6543   const gdb_byte *info_ptr;
6544   unsigned int initial_length_size, offset_size;
6545   uint16_t version;
6546
6547   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6548   info_ptr = section->buffer + to_underlying (sect_off);
6549   read_initial_length (abfd, info_ptr, &initial_length_size);
6550   offset_size = initial_length_size == 4 ? 4 : 8;
6551   info_ptr += initial_length_size;
6552
6553   version = read_2_bytes (abfd, info_ptr);
6554   info_ptr += 2;
6555   if (version >= 5)
6556     {
6557       /* Skip unit type and address size.  */
6558       info_ptr += 2;
6559     }
6560
6561   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6562 }
6563
6564 /* Allocate a new partial symtab for file named NAME and mark this new
6565    partial symtab as being an include of PST.  */
6566
6567 static void
6568 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6569                                struct objfile *objfile)
6570 {
6571   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6572
6573   if (!IS_ABSOLUTE_PATH (subpst->filename))
6574     {
6575       /* It shares objfile->objfile_obstack.  */
6576       subpst->dirname = pst->dirname;
6577     }
6578
6579   subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
6580   subpst->dependencies[0] = pst;
6581   subpst->number_of_dependencies = 1;
6582
6583   subpst->read_symtab = pst->read_symtab;
6584
6585   /* No private part is necessary for include psymtabs.  This property
6586      can be used to differentiate between such include psymtabs and
6587      the regular ones.  */
6588   subpst->read_symtab_private = NULL;
6589 }
6590
6591 /* Read the Line Number Program data and extract the list of files
6592    included by the source file represented by PST.  Build an include
6593    partial symtab for each of these included files.  */
6594
6595 static void
6596 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6597                                struct die_info *die,
6598                                struct partial_symtab *pst)
6599 {
6600   line_header_up lh;
6601   struct attribute *attr;
6602
6603   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6604   if (attr)
6605     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6606   if (lh == NULL)
6607     return;  /* No linetable, so no includes.  */
6608
6609   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6610      that we pass in the raw text_low here; that is ok because we're
6611      only decoding the line table to make include partial symtabs, and
6612      so the addresses aren't really used.  */
6613   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6614                       pst->raw_text_low (), 1);
6615 }
6616
6617 static hashval_t
6618 hash_signatured_type (const void *item)
6619 {
6620   const struct signatured_type *sig_type
6621     = (const struct signatured_type *) item;
6622
6623   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6624   return sig_type->signature;
6625 }
6626
6627 static int
6628 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6629 {
6630   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6631   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6632
6633   return lhs->signature == rhs->signature;
6634 }
6635
6636 /* Allocate a hash table for signatured types.  */
6637
6638 static htab_t
6639 allocate_signatured_type_table (struct objfile *objfile)
6640 {
6641   return htab_create_alloc_ex (41,
6642                                hash_signatured_type,
6643                                eq_signatured_type,
6644                                NULL,
6645                                &objfile->objfile_obstack,
6646                                hashtab_obstack_allocate,
6647                                dummy_obstack_deallocate);
6648 }
6649
6650 /* A helper function to add a signatured type CU to a table.  */
6651
6652 static int
6653 add_signatured_type_cu_to_table (void **slot, void *datum)
6654 {
6655   struct signatured_type *sigt = (struct signatured_type *) *slot;
6656   std::vector<signatured_type *> *all_type_units
6657     = (std::vector<signatured_type *> *) datum;
6658
6659   all_type_units->push_back (sigt);
6660
6661   return 1;
6662 }
6663
6664 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6665    and fill them into TYPES_HTAB.  It will process only type units,
6666    therefore DW_UT_type.  */
6667
6668 static void
6669 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6670                               struct dwo_file *dwo_file,
6671                               dwarf2_section_info *section, htab_t &types_htab,
6672                               rcuh_kind section_kind)
6673 {
6674   struct objfile *objfile = dwarf2_per_objfile->objfile;
6675   struct dwarf2_section_info *abbrev_section;
6676   bfd *abfd;
6677   const gdb_byte *info_ptr, *end_ptr;
6678
6679   abbrev_section = (dwo_file != NULL
6680                     ? &dwo_file->sections.abbrev
6681                     : &dwarf2_per_objfile->abbrev);
6682
6683   if (dwarf_read_debug)
6684     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6685                         get_section_name (section),
6686                         get_section_file_name (abbrev_section));
6687
6688   dwarf2_read_section (objfile, section);
6689   info_ptr = section->buffer;
6690
6691   if (info_ptr == NULL)
6692     return;
6693
6694   /* We can't set abfd until now because the section may be empty or
6695      not present, in which case the bfd is unknown.  */
6696   abfd = get_section_bfd_owner (section);
6697
6698   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6699      because we don't need to read any dies: the signature is in the
6700      header.  */
6701
6702   end_ptr = info_ptr + section->size;
6703   while (info_ptr < end_ptr)
6704     {
6705       struct signatured_type *sig_type;
6706       struct dwo_unit *dwo_tu;
6707       void **slot;
6708       const gdb_byte *ptr = info_ptr;
6709       struct comp_unit_head header;
6710       unsigned int length;
6711
6712       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6713
6714       /* Initialize it due to a false compiler warning.  */
6715       header.signature = -1;
6716       header.type_cu_offset_in_tu = (cu_offset) -1;
6717
6718       /* We need to read the type's signature in order to build the hash
6719          table, but we don't need anything else just yet.  */
6720
6721       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6722                                            abbrev_section, ptr, section_kind);
6723
6724       length = get_cu_length (&header);
6725
6726       /* Skip dummy type units.  */
6727       if (ptr >= info_ptr + length
6728           || peek_abbrev_code (abfd, ptr) == 0
6729           || header.unit_type != DW_UT_type)
6730         {
6731           info_ptr += length;
6732           continue;
6733         }
6734
6735       if (types_htab == NULL)
6736         {
6737           if (dwo_file)
6738             types_htab = allocate_dwo_unit_table (objfile);
6739           else
6740             types_htab = allocate_signatured_type_table (objfile);
6741         }
6742
6743       if (dwo_file)
6744         {
6745           sig_type = NULL;
6746           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6747                                    struct dwo_unit);
6748           dwo_tu->dwo_file = dwo_file;
6749           dwo_tu->signature = header.signature;
6750           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6751           dwo_tu->section = section;
6752           dwo_tu->sect_off = sect_off;
6753           dwo_tu->length = length;
6754         }
6755       else
6756         {
6757           /* N.B.: type_offset is not usable if this type uses a DWO file.
6758              The real type_offset is in the DWO file.  */
6759           dwo_tu = NULL;
6760           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6761                                      struct signatured_type);
6762           sig_type->signature = header.signature;
6763           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6764           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6765           sig_type->per_cu.is_debug_types = 1;
6766           sig_type->per_cu.section = section;
6767           sig_type->per_cu.sect_off = sect_off;
6768           sig_type->per_cu.length = length;
6769         }
6770
6771       slot = htab_find_slot (types_htab,
6772                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6773                              INSERT);
6774       gdb_assert (slot != NULL);
6775       if (*slot != NULL)
6776         {
6777           sect_offset dup_sect_off;
6778
6779           if (dwo_file)
6780             {
6781               const struct dwo_unit *dup_tu
6782                 = (const struct dwo_unit *) *slot;
6783
6784               dup_sect_off = dup_tu->sect_off;
6785             }
6786           else
6787             {
6788               const struct signatured_type *dup_tu
6789                 = (const struct signatured_type *) *slot;
6790
6791               dup_sect_off = dup_tu->per_cu.sect_off;
6792             }
6793
6794           complaint (_("debug type entry at offset %s is duplicate to"
6795                        " the entry at offset %s, signature %s"),
6796                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6797                      hex_string (header.signature));
6798         }
6799       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6800
6801       if (dwarf_read_debug > 1)
6802         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6803                             sect_offset_str (sect_off),
6804                             hex_string (header.signature));
6805
6806       info_ptr += length;
6807     }
6808 }
6809
6810 /* Create the hash table of all entries in the .debug_types
6811    (or .debug_types.dwo) section(s).
6812    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6813    otherwise it is NULL.
6814
6815    The result is a pointer to the hash table or NULL if there are no types.
6816
6817    Note: This function processes DWO files only, not DWP files.  */
6818
6819 static void
6820 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6821                                struct dwo_file *dwo_file,
6822                                VEC (dwarf2_section_info_def) *types,
6823                                htab_t &types_htab)
6824 {
6825   int ix;
6826   struct dwarf2_section_info *section;
6827
6828   if (VEC_empty (dwarf2_section_info_def, types))
6829     return;
6830
6831   for (ix = 0;
6832        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6833        ++ix)
6834     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6835                                   types_htab, rcuh_kind::TYPE);
6836 }
6837
6838 /* Create the hash table of all entries in the .debug_types section,
6839    and initialize all_type_units.
6840    The result is zero if there is an error (e.g. missing .debug_types section),
6841    otherwise non-zero.  */
6842
6843 static int
6844 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6845 {
6846   htab_t types_htab = NULL;
6847
6848   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6849                                 &dwarf2_per_objfile->info, types_htab,
6850                                 rcuh_kind::COMPILE);
6851   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6852                                  dwarf2_per_objfile->types, types_htab);
6853   if (types_htab == NULL)
6854     {
6855       dwarf2_per_objfile->signatured_types = NULL;
6856       return 0;
6857     }
6858
6859   dwarf2_per_objfile->signatured_types = types_htab;
6860
6861   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6862   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6863
6864   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6865                           &dwarf2_per_objfile->all_type_units);
6866
6867   return 1;
6868 }
6869
6870 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6871    If SLOT is non-NULL, it is the entry to use in the hash table.
6872    Otherwise we find one.  */
6873
6874 static struct signatured_type *
6875 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6876                void **slot)
6877 {
6878   struct objfile *objfile = dwarf2_per_objfile->objfile;
6879
6880   if (dwarf2_per_objfile->all_type_units.size ()
6881       == dwarf2_per_objfile->all_type_units.capacity ())
6882     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6883
6884   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6885                                               struct signatured_type);
6886
6887   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6888   sig_type->signature = sig;
6889   sig_type->per_cu.is_debug_types = 1;
6890   if (dwarf2_per_objfile->using_index)
6891     {
6892       sig_type->per_cu.v.quick =
6893         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6894                         struct dwarf2_per_cu_quick_data);
6895     }
6896
6897   if (slot == NULL)
6898     {
6899       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6900                              sig_type, INSERT);
6901     }
6902   gdb_assert (*slot == NULL);
6903   *slot = sig_type;
6904   /* The rest of sig_type must be filled in by the caller.  */
6905   return sig_type;
6906 }
6907
6908 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6909    Fill in SIG_ENTRY with DWO_ENTRY.  */
6910
6911 static void
6912 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6913                                   struct signatured_type *sig_entry,
6914                                   struct dwo_unit *dwo_entry)
6915 {
6916   /* Make sure we're not clobbering something we don't expect to.  */
6917   gdb_assert (! sig_entry->per_cu.queued);
6918   gdb_assert (sig_entry->per_cu.cu == NULL);
6919   if (dwarf2_per_objfile->using_index)
6920     {
6921       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6922       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6923     }
6924   else
6925       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6926   gdb_assert (sig_entry->signature == dwo_entry->signature);
6927   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6928   gdb_assert (sig_entry->type_unit_group == NULL);
6929   gdb_assert (sig_entry->dwo_unit == NULL);
6930
6931   sig_entry->per_cu.section = dwo_entry->section;
6932   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6933   sig_entry->per_cu.length = dwo_entry->length;
6934   sig_entry->per_cu.reading_dwo_directly = 1;
6935   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6936   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6937   sig_entry->dwo_unit = dwo_entry;
6938 }
6939
6940 /* Subroutine of lookup_signatured_type.
6941    If we haven't read the TU yet, create the signatured_type data structure
6942    for a TU to be read in directly from a DWO file, bypassing the stub.
6943    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6944    using .gdb_index, then when reading a CU we want to stay in the DWO file
6945    containing that CU.  Otherwise we could end up reading several other DWO
6946    files (due to comdat folding) to process the transitive closure of all the
6947    mentioned TUs, and that can be slow.  The current DWO file will have every
6948    type signature that it needs.
6949    We only do this for .gdb_index because in the psymtab case we already have
6950    to read all the DWOs to build the type unit groups.  */
6951
6952 static struct signatured_type *
6953 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6954 {
6955   struct dwarf2_per_objfile *dwarf2_per_objfile
6956     = cu->per_cu->dwarf2_per_objfile;
6957   struct objfile *objfile = dwarf2_per_objfile->objfile;
6958   struct dwo_file *dwo_file;
6959   struct dwo_unit find_dwo_entry, *dwo_entry;
6960   struct signatured_type find_sig_entry, *sig_entry;
6961   void **slot;
6962
6963   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6964
6965   /* If TU skeletons have been removed then we may not have read in any
6966      TUs yet.  */
6967   if (dwarf2_per_objfile->signatured_types == NULL)
6968     {
6969       dwarf2_per_objfile->signatured_types
6970         = allocate_signatured_type_table (objfile);
6971     }
6972
6973   /* We only ever need to read in one copy of a signatured type.
6974      Use the global signatured_types array to do our own comdat-folding
6975      of types.  If this is the first time we're reading this TU, and
6976      the TU has an entry in .gdb_index, replace the recorded data from
6977      .gdb_index with this TU.  */
6978
6979   find_sig_entry.signature = sig;
6980   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6981                          &find_sig_entry, INSERT);
6982   sig_entry = (struct signatured_type *) *slot;
6983
6984   /* We can get here with the TU already read, *or* in the process of being
6985      read.  Don't reassign the global entry to point to this DWO if that's
6986      the case.  Also note that if the TU is already being read, it may not
6987      have come from a DWO, the program may be a mix of Fission-compiled
6988      code and non-Fission-compiled code.  */
6989
6990   /* Have we already tried to read this TU?
6991      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6992      needn't exist in the global table yet).  */
6993   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
6994     return sig_entry;
6995
6996   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
6997      dwo_unit of the TU itself.  */
6998   dwo_file = cu->dwo_unit->dwo_file;
6999
7000   /* Ok, this is the first time we're reading this TU.  */
7001   if (dwo_file->tus == NULL)
7002     return NULL;
7003   find_dwo_entry.signature = sig;
7004   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7005   if (dwo_entry == NULL)
7006     return NULL;
7007
7008   /* If the global table doesn't have an entry for this TU, add one.  */
7009   if (sig_entry == NULL)
7010     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7011
7012   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7013   sig_entry->per_cu.tu_read = 1;
7014   return sig_entry;
7015 }
7016
7017 /* Subroutine of lookup_signatured_type.
7018    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7019    then try the DWP file.  If the TU stub (skeleton) has been removed then
7020    it won't be in .gdb_index.  */
7021
7022 static struct signatured_type *
7023 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7024 {
7025   struct dwarf2_per_objfile *dwarf2_per_objfile
7026     = cu->per_cu->dwarf2_per_objfile;
7027   struct objfile *objfile = dwarf2_per_objfile->objfile;
7028   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7029   struct dwo_unit *dwo_entry;
7030   struct signatured_type find_sig_entry, *sig_entry;
7031   void **slot;
7032
7033   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7034   gdb_assert (dwp_file != NULL);
7035
7036   /* If TU skeletons have been removed then we may not have read in any
7037      TUs yet.  */
7038   if (dwarf2_per_objfile->signatured_types == NULL)
7039     {
7040       dwarf2_per_objfile->signatured_types
7041         = allocate_signatured_type_table (objfile);
7042     }
7043
7044   find_sig_entry.signature = sig;
7045   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7046                          &find_sig_entry, INSERT);
7047   sig_entry = (struct signatured_type *) *slot;
7048
7049   /* Have we already tried to read this TU?
7050      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7051      needn't exist in the global table yet).  */
7052   if (sig_entry != NULL)
7053     return sig_entry;
7054
7055   if (dwp_file->tus == NULL)
7056     return NULL;
7057   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7058                                       sig, 1 /* is_debug_types */);
7059   if (dwo_entry == NULL)
7060     return NULL;
7061
7062   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7063   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7064
7065   return sig_entry;
7066 }
7067
7068 /* Lookup a signature based type for DW_FORM_ref_sig8.
7069    Returns NULL if signature SIG is not present in the table.
7070    It is up to the caller to complain about this.  */
7071
7072 static struct signatured_type *
7073 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7074 {
7075   struct dwarf2_per_objfile *dwarf2_per_objfile
7076     = cu->per_cu->dwarf2_per_objfile;
7077
7078   if (cu->dwo_unit
7079       && dwarf2_per_objfile->using_index)
7080     {
7081       /* We're in a DWO/DWP file, and we're using .gdb_index.
7082          These cases require special processing.  */
7083       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7084         return lookup_dwo_signatured_type (cu, sig);
7085       else
7086         return lookup_dwp_signatured_type (cu, sig);
7087     }
7088   else
7089     {
7090       struct signatured_type find_entry, *entry;
7091
7092       if (dwarf2_per_objfile->signatured_types == NULL)
7093         return NULL;
7094       find_entry.signature = sig;
7095       entry = ((struct signatured_type *)
7096                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7097       return entry;
7098     }
7099 }
7100 \f
7101 /* Low level DIE reading support.  */
7102
7103 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7104
7105 static void
7106 init_cu_die_reader (struct die_reader_specs *reader,
7107                     struct dwarf2_cu *cu,
7108                     struct dwarf2_section_info *section,
7109                     struct dwo_file *dwo_file,
7110                     struct abbrev_table *abbrev_table)
7111 {
7112   gdb_assert (section->readin && section->buffer != NULL);
7113   reader->abfd = get_section_bfd_owner (section);
7114   reader->cu = cu;
7115   reader->dwo_file = dwo_file;
7116   reader->die_section = section;
7117   reader->buffer = section->buffer;
7118   reader->buffer_end = section->buffer + section->size;
7119   reader->comp_dir = NULL;
7120   reader->abbrev_table = abbrev_table;
7121 }
7122
7123 /* Subroutine of init_cutu_and_read_dies to simplify it.
7124    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7125    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7126    already.
7127
7128    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7129    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7130    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7131    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7132    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7133    STUB_COMP_DIR may be non-NULL.
7134    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7135    are filled in with the info of the DIE from the DWO file.
7136    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7137    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7138    kept around for at least as long as *RESULT_READER.
7139
7140    The result is non-zero if a valid (non-dummy) DIE was found.  */
7141
7142 static int
7143 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7144                         struct dwo_unit *dwo_unit,
7145                         struct die_info *stub_comp_unit_die,
7146                         const char *stub_comp_dir,
7147                         struct die_reader_specs *result_reader,
7148                         const gdb_byte **result_info_ptr,
7149                         struct die_info **result_comp_unit_die,
7150                         int *result_has_children,
7151                         abbrev_table_up *result_dwo_abbrev_table)
7152 {
7153   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7154   struct objfile *objfile = dwarf2_per_objfile->objfile;
7155   struct dwarf2_cu *cu = this_cu->cu;
7156   bfd *abfd;
7157   const gdb_byte *begin_info_ptr, *info_ptr;
7158   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7159   int i,num_extra_attrs;
7160   struct dwarf2_section_info *dwo_abbrev_section;
7161   struct attribute *attr;
7162   struct die_info *comp_unit_die;
7163
7164   /* At most one of these may be provided.  */
7165   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7166
7167   /* These attributes aren't processed until later:
7168      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7169      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7170      referenced later.  However, these attributes are found in the stub
7171      which we won't have later.  In order to not impose this complication
7172      on the rest of the code, we read them here and copy them to the
7173      DWO CU/TU die.  */
7174
7175   stmt_list = NULL;
7176   low_pc = NULL;
7177   high_pc = NULL;
7178   ranges = NULL;
7179   comp_dir = NULL;
7180
7181   if (stub_comp_unit_die != NULL)
7182     {
7183       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7184          DWO file.  */
7185       if (! this_cu->is_debug_types)
7186         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7187       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7188       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7189       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7190       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7191
7192       /* There should be a DW_AT_addr_base attribute here (if needed).
7193          We need the value before we can process DW_FORM_GNU_addr_index
7194          or DW_FORM_addrx.  */
7195       cu->addr_base = 0;
7196       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7197       if (attr)
7198         cu->addr_base = DW_UNSND (attr);
7199
7200       /* There should be a DW_AT_ranges_base attribute here (if needed).
7201          We need the value before we can process DW_AT_ranges.  */
7202       cu->ranges_base = 0;
7203       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7204       if (attr)
7205         cu->ranges_base = DW_UNSND (attr);
7206     }
7207   else if (stub_comp_dir != NULL)
7208     {
7209       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7210       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7211       comp_dir->name = DW_AT_comp_dir;
7212       comp_dir->form = DW_FORM_string;
7213       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7214       DW_STRING (comp_dir) = stub_comp_dir;
7215     }
7216
7217   /* Set up for reading the DWO CU/TU.  */
7218   cu->dwo_unit = dwo_unit;
7219   dwarf2_section_info *section = dwo_unit->section;
7220   dwarf2_read_section (objfile, section);
7221   abfd = get_section_bfd_owner (section);
7222   begin_info_ptr = info_ptr = (section->buffer
7223                                + to_underlying (dwo_unit->sect_off));
7224   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7225
7226   if (this_cu->is_debug_types)
7227     {
7228       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7229
7230       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7231                                                 &cu->header, section,
7232                                                 dwo_abbrev_section,
7233                                                 info_ptr, rcuh_kind::TYPE);
7234       /* This is not an assert because it can be caused by bad debug info.  */
7235       if (sig_type->signature != cu->header.signature)
7236         {
7237           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7238                    " TU at offset %s [in module %s]"),
7239                  hex_string (sig_type->signature),
7240                  hex_string (cu->header.signature),
7241                  sect_offset_str (dwo_unit->sect_off),
7242                  bfd_get_filename (abfd));
7243         }
7244       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7245       /* For DWOs coming from DWP files, we don't know the CU length
7246          nor the type's offset in the TU until now.  */
7247       dwo_unit->length = get_cu_length (&cu->header);
7248       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7249
7250       /* Establish the type offset that can be used to lookup the type.
7251          For DWO files, we don't know it until now.  */
7252       sig_type->type_offset_in_section
7253         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7254     }
7255   else
7256     {
7257       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7258                                                 &cu->header, section,
7259                                                 dwo_abbrev_section,
7260                                                 info_ptr, rcuh_kind::COMPILE);
7261       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7262       /* For DWOs coming from DWP files, we don't know the CU length
7263          until now.  */
7264       dwo_unit->length = get_cu_length (&cu->header);
7265     }
7266
7267   *result_dwo_abbrev_table
7268     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7269                                cu->header.abbrev_sect_off);
7270   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7271                       result_dwo_abbrev_table->get ());
7272
7273   /* Read in the die, but leave space to copy over the attributes
7274      from the stub.  This has the benefit of simplifying the rest of
7275      the code - all the work to maintain the illusion of a single
7276      DW_TAG_{compile,type}_unit DIE is done here.  */
7277   num_extra_attrs = ((stmt_list != NULL)
7278                      + (low_pc != NULL)
7279                      + (high_pc != NULL)
7280                      + (ranges != NULL)
7281                      + (comp_dir != NULL));
7282   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7283                               result_has_children, num_extra_attrs);
7284
7285   /* Copy over the attributes from the stub to the DIE we just read in.  */
7286   comp_unit_die = *result_comp_unit_die;
7287   i = comp_unit_die->num_attrs;
7288   if (stmt_list != NULL)
7289     comp_unit_die->attrs[i++] = *stmt_list;
7290   if (low_pc != NULL)
7291     comp_unit_die->attrs[i++] = *low_pc;
7292   if (high_pc != NULL)
7293     comp_unit_die->attrs[i++] = *high_pc;
7294   if (ranges != NULL)
7295     comp_unit_die->attrs[i++] = *ranges;
7296   if (comp_dir != NULL)
7297     comp_unit_die->attrs[i++] = *comp_dir;
7298   comp_unit_die->num_attrs += num_extra_attrs;
7299
7300   if (dwarf_die_debug)
7301     {
7302       fprintf_unfiltered (gdb_stdlog,
7303                           "Read die from %s@0x%x of %s:\n",
7304                           get_section_name (section),
7305                           (unsigned) (begin_info_ptr - section->buffer),
7306                           bfd_get_filename (abfd));
7307       dump_die (comp_unit_die, dwarf_die_debug);
7308     }
7309
7310   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7311      TUs by skipping the stub and going directly to the entry in the DWO file.
7312      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7313      to get it via circuitous means.  Blech.  */
7314   if (comp_dir != NULL)
7315     result_reader->comp_dir = DW_STRING (comp_dir);
7316
7317   /* Skip dummy compilation units.  */
7318   if (info_ptr >= begin_info_ptr + dwo_unit->length
7319       || peek_abbrev_code (abfd, info_ptr) == 0)
7320     return 0;
7321
7322   *result_info_ptr = info_ptr;
7323   return 1;
7324 }
7325
7326 /* Subroutine of init_cutu_and_read_dies to simplify it.
7327    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7328    Returns NULL if the specified DWO unit cannot be found.  */
7329
7330 static struct dwo_unit *
7331 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7332                  struct die_info *comp_unit_die)
7333 {
7334   struct dwarf2_cu *cu = this_cu->cu;
7335   ULONGEST signature;
7336   struct dwo_unit *dwo_unit;
7337   const char *comp_dir, *dwo_name;
7338
7339   gdb_assert (cu != NULL);
7340
7341   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7342   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7343   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7344
7345   if (this_cu->is_debug_types)
7346     {
7347       struct signatured_type *sig_type;
7348
7349       /* Since this_cu is the first member of struct signatured_type,
7350          we can go from a pointer to one to a pointer to the other.  */
7351       sig_type = (struct signatured_type *) this_cu;
7352       signature = sig_type->signature;
7353       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7354     }
7355   else
7356     {
7357       struct attribute *attr;
7358
7359       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7360       if (! attr)
7361         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7362                  " [in module %s]"),
7363                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7364       signature = DW_UNSND (attr);
7365       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7366                                        signature);
7367     }
7368
7369   return dwo_unit;
7370 }
7371
7372 /* Subroutine of init_cutu_and_read_dies to simplify it.
7373    See it for a description of the parameters.
7374    Read a TU directly from a DWO file, bypassing the stub.  */
7375
7376 static void
7377 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7378                            int use_existing_cu, int keep,
7379                            die_reader_func_ftype *die_reader_func,
7380                            void *data)
7381 {
7382   std::unique_ptr<dwarf2_cu> new_cu;
7383   struct signatured_type *sig_type;
7384   struct die_reader_specs reader;
7385   const gdb_byte *info_ptr;
7386   struct die_info *comp_unit_die;
7387   int has_children;
7388   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7389
7390   /* Verify we can do the following downcast, and that we have the
7391      data we need.  */
7392   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7393   sig_type = (struct signatured_type *) this_cu;
7394   gdb_assert (sig_type->dwo_unit != NULL);
7395
7396   if (use_existing_cu && this_cu->cu != NULL)
7397     {
7398       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7399       /* There's no need to do the rereading_dwo_cu handling that
7400          init_cutu_and_read_dies does since we don't read the stub.  */
7401     }
7402   else
7403     {
7404       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7405       gdb_assert (this_cu->cu == NULL);
7406       new_cu.reset (new dwarf2_cu (this_cu));
7407     }
7408
7409   /* A future optimization, if needed, would be to use an existing
7410      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7411      could share abbrev tables.  */
7412
7413   /* The abbreviation table used by READER, this must live at least as long as
7414      READER.  */
7415   abbrev_table_up dwo_abbrev_table;
7416
7417   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7418                               NULL /* stub_comp_unit_die */,
7419                               sig_type->dwo_unit->dwo_file->comp_dir,
7420                               &reader, &info_ptr,
7421                               &comp_unit_die, &has_children,
7422                               &dwo_abbrev_table) == 0)
7423     {
7424       /* Dummy die.  */
7425       return;
7426     }
7427
7428   /* All the "real" work is done here.  */
7429   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7430
7431   /* This duplicates the code in init_cutu_and_read_dies,
7432      but the alternative is making the latter more complex.
7433      This function is only for the special case of using DWO files directly:
7434      no point in overly complicating the general case just to handle this.  */
7435   if (new_cu != NULL && keep)
7436     {
7437       /* Link this CU into read_in_chain.  */
7438       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7439       dwarf2_per_objfile->read_in_chain = this_cu;
7440       /* The chain owns it now.  */
7441       new_cu.release ();
7442     }
7443 }
7444
7445 /* Initialize a CU (or TU) and read its DIEs.
7446    If the CU defers to a DWO file, read the DWO file as well.
7447
7448    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7449    Otherwise the table specified in the comp unit header is read in and used.
7450    This is an optimization for when we already have the abbrev table.
7451
7452    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7453    Otherwise, a new CU is allocated with xmalloc.
7454
7455    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7456    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7457
7458    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7459    linker) then DIE_READER_FUNC will not get called.  */
7460
7461 static void
7462 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7463                          struct abbrev_table *abbrev_table,
7464                          int use_existing_cu, int keep,
7465                          bool skip_partial,
7466                          die_reader_func_ftype *die_reader_func,
7467                          void *data)
7468 {
7469   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7470   struct objfile *objfile = dwarf2_per_objfile->objfile;
7471   struct dwarf2_section_info *section = this_cu->section;
7472   bfd *abfd = get_section_bfd_owner (section);
7473   struct dwarf2_cu *cu;
7474   const gdb_byte *begin_info_ptr, *info_ptr;
7475   struct die_reader_specs reader;
7476   struct die_info *comp_unit_die;
7477   int has_children;
7478   struct attribute *attr;
7479   struct signatured_type *sig_type = NULL;
7480   struct dwarf2_section_info *abbrev_section;
7481   /* Non-zero if CU currently points to a DWO file and we need to
7482      reread it.  When this happens we need to reread the skeleton die
7483      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7484   int rereading_dwo_cu = 0;
7485
7486   if (dwarf_die_debug)
7487     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7488                         this_cu->is_debug_types ? "type" : "comp",
7489                         sect_offset_str (this_cu->sect_off));
7490
7491   if (use_existing_cu)
7492     gdb_assert (keep);
7493
7494   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7495      file (instead of going through the stub), short-circuit all of this.  */
7496   if (this_cu->reading_dwo_directly)
7497     {
7498       /* Narrow down the scope of possibilities to have to understand.  */
7499       gdb_assert (this_cu->is_debug_types);
7500       gdb_assert (abbrev_table == NULL);
7501       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7502                                  die_reader_func, data);
7503       return;
7504     }
7505
7506   /* This is cheap if the section is already read in.  */
7507   dwarf2_read_section (objfile, section);
7508
7509   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7510
7511   abbrev_section = get_abbrev_section_for_cu (this_cu);
7512
7513   std::unique_ptr<dwarf2_cu> new_cu;
7514   if (use_existing_cu && this_cu->cu != NULL)
7515     {
7516       cu = this_cu->cu;
7517       /* If this CU is from a DWO file we need to start over, we need to
7518          refetch the attributes from the skeleton CU.
7519          This could be optimized by retrieving those attributes from when we
7520          were here the first time: the previous comp_unit_die was stored in
7521          comp_unit_obstack.  But there's no data yet that we need this
7522          optimization.  */
7523       if (cu->dwo_unit != NULL)
7524         rereading_dwo_cu = 1;
7525     }
7526   else
7527     {
7528       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7529       gdb_assert (this_cu->cu == NULL);
7530       new_cu.reset (new dwarf2_cu (this_cu));
7531       cu = new_cu.get ();
7532     }
7533
7534   /* Get the header.  */
7535   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7536     {
7537       /* We already have the header, there's no need to read it in again.  */
7538       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7539     }
7540   else
7541     {
7542       if (this_cu->is_debug_types)
7543         {
7544           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7545                                                     &cu->header, section,
7546                                                     abbrev_section, info_ptr,
7547                                                     rcuh_kind::TYPE);
7548
7549           /* Since per_cu is the first member of struct signatured_type,
7550              we can go from a pointer to one to a pointer to the other.  */
7551           sig_type = (struct signatured_type *) this_cu;
7552           gdb_assert (sig_type->signature == cu->header.signature);
7553           gdb_assert (sig_type->type_offset_in_tu
7554                       == cu->header.type_cu_offset_in_tu);
7555           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7556
7557           /* LENGTH has not been set yet for type units if we're
7558              using .gdb_index.  */
7559           this_cu->length = get_cu_length (&cu->header);
7560
7561           /* Establish the type offset that can be used to lookup the type.  */
7562           sig_type->type_offset_in_section =
7563             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7564
7565           this_cu->dwarf_version = cu->header.version;
7566         }
7567       else
7568         {
7569           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7570                                                     &cu->header, section,
7571                                                     abbrev_section,
7572                                                     info_ptr,
7573                                                     rcuh_kind::COMPILE);
7574
7575           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7576           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7577           this_cu->dwarf_version = cu->header.version;
7578         }
7579     }
7580
7581   /* Skip dummy compilation units.  */
7582   if (info_ptr >= begin_info_ptr + this_cu->length
7583       || peek_abbrev_code (abfd, info_ptr) == 0)
7584     return;
7585
7586   /* If we don't have them yet, read the abbrevs for this compilation unit.
7587      And if we need to read them now, make sure they're freed when we're
7588      done (own the table through ABBREV_TABLE_HOLDER).  */
7589   abbrev_table_up abbrev_table_holder;
7590   if (abbrev_table != NULL)
7591     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7592   else
7593     {
7594       abbrev_table_holder
7595         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7596                                    cu->header.abbrev_sect_off);
7597       abbrev_table = abbrev_table_holder.get ();
7598     }
7599
7600   /* Read the top level CU/TU die.  */
7601   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7602   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7603
7604   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7605     return;
7606
7607   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7608      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7609      table from the DWO file and pass the ownership over to us.  It will be
7610      referenced from READER, so we must make sure to free it after we're done
7611      with READER.
7612
7613      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7614      DWO CU, that this test will fail (the attribute will not be present).  */
7615   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7616   abbrev_table_up dwo_abbrev_table;
7617   if (attr)
7618     {
7619       struct dwo_unit *dwo_unit;
7620       struct die_info *dwo_comp_unit_die;
7621
7622       if (has_children)
7623         {
7624           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7625                        " has children (offset %s) [in module %s]"),
7626                      sect_offset_str (this_cu->sect_off),
7627                      bfd_get_filename (abfd));
7628         }
7629       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7630       if (dwo_unit != NULL)
7631         {
7632           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7633                                       comp_unit_die, NULL,
7634                                       &reader, &info_ptr,
7635                                       &dwo_comp_unit_die, &has_children,
7636                                       &dwo_abbrev_table) == 0)
7637             {
7638               /* Dummy die.  */
7639               return;
7640             }
7641           comp_unit_die = dwo_comp_unit_die;
7642         }
7643       else
7644         {
7645           /* Yikes, we couldn't find the rest of the DIE, we only have
7646              the stub.  A complaint has already been logged.  There's
7647              not much more we can do except pass on the stub DIE to
7648              die_reader_func.  We don't want to throw an error on bad
7649              debug info.  */
7650         }
7651     }
7652
7653   /* All of the above is setup for this call.  Yikes.  */
7654   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7655
7656   /* Done, clean up.  */
7657   if (new_cu != NULL && keep)
7658     {
7659       /* Link this CU into read_in_chain.  */
7660       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7661       dwarf2_per_objfile->read_in_chain = this_cu;
7662       /* The chain owns it now.  */
7663       new_cu.release ();
7664     }
7665 }
7666
7667 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7668    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7669    to have already done the lookup to find the DWO file).
7670
7671    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7672    THIS_CU->is_debug_types, but nothing else.
7673
7674    We fill in THIS_CU->length.
7675
7676    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7677    linker) then DIE_READER_FUNC will not get called.
7678
7679    THIS_CU->cu is always freed when done.
7680    This is done in order to not leave THIS_CU->cu in a state where we have
7681    to care whether it refers to the "main" CU or the DWO CU.  */
7682
7683 static void
7684 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7685                                    struct dwo_file *dwo_file,
7686                                    die_reader_func_ftype *die_reader_func,
7687                                    void *data)
7688 {
7689   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7690   struct objfile *objfile = dwarf2_per_objfile->objfile;
7691   struct dwarf2_section_info *section = this_cu->section;
7692   bfd *abfd = get_section_bfd_owner (section);
7693   struct dwarf2_section_info *abbrev_section;
7694   const gdb_byte *begin_info_ptr, *info_ptr;
7695   struct die_reader_specs reader;
7696   struct die_info *comp_unit_die;
7697   int has_children;
7698
7699   if (dwarf_die_debug)
7700     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7701                         this_cu->is_debug_types ? "type" : "comp",
7702                         sect_offset_str (this_cu->sect_off));
7703
7704   gdb_assert (this_cu->cu == NULL);
7705
7706   abbrev_section = (dwo_file != NULL
7707                     ? &dwo_file->sections.abbrev
7708                     : get_abbrev_section_for_cu (this_cu));
7709
7710   /* This is cheap if the section is already read in.  */
7711   dwarf2_read_section (objfile, section);
7712
7713   struct dwarf2_cu cu (this_cu);
7714
7715   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7716   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7717                                             &cu.header, section,
7718                                             abbrev_section, info_ptr,
7719                                             (this_cu->is_debug_types
7720                                              ? rcuh_kind::TYPE
7721                                              : rcuh_kind::COMPILE));
7722
7723   this_cu->length = get_cu_length (&cu.header);
7724
7725   /* Skip dummy compilation units.  */
7726   if (info_ptr >= begin_info_ptr + this_cu->length
7727       || peek_abbrev_code (abfd, info_ptr) == 0)
7728     return;
7729
7730   abbrev_table_up abbrev_table
7731     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7732                                cu.header.abbrev_sect_off);
7733
7734   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7735   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7736
7737   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7738 }
7739
7740 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7741    does not lookup the specified DWO file.
7742    This cannot be used to read DWO files.
7743
7744    THIS_CU->cu is always freed when done.
7745    This is done in order to not leave THIS_CU->cu in a state where we have
7746    to care whether it refers to the "main" CU or the DWO CU.
7747    We can revisit this if the data shows there's a performance issue.  */
7748
7749 static void
7750 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7751                                 die_reader_func_ftype *die_reader_func,
7752                                 void *data)
7753 {
7754   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7755 }
7756 \f
7757 /* Type Unit Groups.
7758
7759    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7760    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7761    so that all types coming from the same compilation (.o file) are grouped
7762    together.  A future step could be to put the types in the same symtab as
7763    the CU the types ultimately came from.  */
7764
7765 static hashval_t
7766 hash_type_unit_group (const void *item)
7767 {
7768   const struct type_unit_group *tu_group
7769     = (const struct type_unit_group *) item;
7770
7771   return hash_stmt_list_entry (&tu_group->hash);
7772 }
7773
7774 static int
7775 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7776 {
7777   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7778   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7779
7780   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7781 }
7782
7783 /* Allocate a hash table for type unit groups.  */
7784
7785 static htab_t
7786 allocate_type_unit_groups_table (struct objfile *objfile)
7787 {
7788   return htab_create_alloc_ex (3,
7789                                hash_type_unit_group,
7790                                eq_type_unit_group,
7791                                NULL,
7792                                &objfile->objfile_obstack,
7793                                hashtab_obstack_allocate,
7794                                dummy_obstack_deallocate);
7795 }
7796
7797 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7798    partial symtabs.  We combine several TUs per psymtab to not let the size
7799    of any one psymtab grow too big.  */
7800 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7801 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7802
7803 /* Helper routine for get_type_unit_group.
7804    Create the type_unit_group object used to hold one or more TUs.  */
7805
7806 static struct type_unit_group *
7807 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7808 {
7809   struct dwarf2_per_objfile *dwarf2_per_objfile
7810     = cu->per_cu->dwarf2_per_objfile;
7811   struct objfile *objfile = dwarf2_per_objfile->objfile;
7812   struct dwarf2_per_cu_data *per_cu;
7813   struct type_unit_group *tu_group;
7814
7815   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7816                              struct type_unit_group);
7817   per_cu = &tu_group->per_cu;
7818   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7819
7820   if (dwarf2_per_objfile->using_index)
7821     {
7822       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7823                                         struct dwarf2_per_cu_quick_data);
7824     }
7825   else
7826     {
7827       unsigned int line_offset = to_underlying (line_offset_struct);
7828       struct partial_symtab *pst;
7829       std::string name;
7830
7831       /* Give the symtab a useful name for debug purposes.  */
7832       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7833         name = string_printf ("<type_units_%d>",
7834                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7835       else
7836         name = string_printf ("<type_units_at_0x%x>", line_offset);
7837
7838       pst = create_partial_symtab (per_cu, name.c_str ());
7839       pst->anonymous = 1;
7840     }
7841
7842   tu_group->hash.dwo_unit = cu->dwo_unit;
7843   tu_group->hash.line_sect_off = line_offset_struct;
7844
7845   return tu_group;
7846 }
7847
7848 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7849    STMT_LIST is a DW_AT_stmt_list attribute.  */
7850
7851 static struct type_unit_group *
7852 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7853 {
7854   struct dwarf2_per_objfile *dwarf2_per_objfile
7855     = cu->per_cu->dwarf2_per_objfile;
7856   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7857   struct type_unit_group *tu_group;
7858   void **slot;
7859   unsigned int line_offset;
7860   struct type_unit_group type_unit_group_for_lookup;
7861
7862   if (dwarf2_per_objfile->type_unit_groups == NULL)
7863     {
7864       dwarf2_per_objfile->type_unit_groups =
7865         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7866     }
7867
7868   /* Do we need to create a new group, or can we use an existing one?  */
7869
7870   if (stmt_list)
7871     {
7872       line_offset = DW_UNSND (stmt_list);
7873       ++tu_stats->nr_symtab_sharers;
7874     }
7875   else
7876     {
7877       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7878          We can do various things here like create one group per TU or
7879          spread them over multiple groups to split up the expansion work.
7880          To avoid worst case scenarios (too many groups or too large groups)
7881          we, umm, group them in bunches.  */
7882       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7883                      | (tu_stats->nr_stmt_less_type_units
7884                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7885       ++tu_stats->nr_stmt_less_type_units;
7886     }
7887
7888   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7889   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7890   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7891                          &type_unit_group_for_lookup, INSERT);
7892   if (*slot != NULL)
7893     {
7894       tu_group = (struct type_unit_group *) *slot;
7895       gdb_assert (tu_group != NULL);
7896     }
7897   else
7898     {
7899       sect_offset line_offset_struct = (sect_offset) line_offset;
7900       tu_group = create_type_unit_group (cu, line_offset_struct);
7901       *slot = tu_group;
7902       ++tu_stats->nr_symtabs;
7903     }
7904
7905   return tu_group;
7906 }
7907 \f
7908 /* Partial symbol tables.  */
7909
7910 /* Create a psymtab named NAME and assign it to PER_CU.
7911
7912    The caller must fill in the following details:
7913    dirname, textlow, texthigh.  */
7914
7915 static struct partial_symtab *
7916 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7917 {
7918   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7919   struct partial_symtab *pst;
7920
7921   pst = start_psymtab_common (objfile, name, 0);
7922
7923   pst->psymtabs_addrmap_supported = 1;
7924
7925   /* This is the glue that links PST into GDB's symbol API.  */
7926   pst->read_symtab_private = per_cu;
7927   pst->read_symtab = dwarf2_read_symtab;
7928   per_cu->v.psymtab = pst;
7929
7930   return pst;
7931 }
7932
7933 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7934    type.  */
7935
7936 struct process_psymtab_comp_unit_data
7937 {
7938   /* True if we are reading a DW_TAG_partial_unit.  */
7939
7940   int want_partial_unit;
7941
7942   /* The "pretend" language that is used if the CU doesn't declare a
7943      language.  */
7944
7945   enum language pretend_language;
7946 };
7947
7948 /* die_reader_func for process_psymtab_comp_unit.  */
7949
7950 static void
7951 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7952                                   const gdb_byte *info_ptr,
7953                                   struct die_info *comp_unit_die,
7954                                   int has_children,
7955                                   void *data)
7956 {
7957   struct dwarf2_cu *cu = reader->cu;
7958   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7959   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7960   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7961   CORE_ADDR baseaddr;
7962   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7963   struct partial_symtab *pst;
7964   enum pc_bounds_kind cu_bounds_kind;
7965   const char *filename;
7966   struct process_psymtab_comp_unit_data *info
7967     = (struct process_psymtab_comp_unit_data *) data;
7968
7969   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7970     return;
7971
7972   gdb_assert (! per_cu->is_debug_types);
7973
7974   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7975
7976   /* Allocate a new partial symbol table structure.  */
7977   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7978   if (filename == NULL)
7979     filename = "";
7980
7981   pst = create_partial_symtab (per_cu, filename);
7982
7983   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7984   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7985
7986   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7987
7988   dwarf2_find_base_address (comp_unit_die, cu);
7989
7990   /* Possibly set the default values of LOWPC and HIGHPC from
7991      `DW_AT_ranges'.  */
7992   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
7993                                          &best_highpc, cu, pst);
7994   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
7995     {
7996       CORE_ADDR low
7997         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
7998            - baseaddr);
7999       CORE_ADDR high
8000         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8001            - baseaddr - 1);
8002       /* Store the contiguous range if it is not empty; it can be
8003          empty for CUs with no code.  */
8004       addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
8005                          low, high, pst);
8006     }
8007
8008   /* Check if comp unit has_children.
8009      If so, read the rest of the partial symbols from this comp unit.
8010      If not, there's no more debug_info for this comp unit.  */
8011   if (has_children)
8012     {
8013       struct partial_die_info *first_die;
8014       CORE_ADDR lowpc, highpc;
8015
8016       lowpc = ((CORE_ADDR) -1);
8017       highpc = ((CORE_ADDR) 0);
8018
8019       first_die = load_partial_dies (reader, info_ptr, 1);
8020
8021       scan_partial_symbols (first_die, &lowpc, &highpc,
8022                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8023
8024       /* If we didn't find a lowpc, set it to highpc to avoid
8025          complaints from `maint check'.  */
8026       if (lowpc == ((CORE_ADDR) -1))
8027         lowpc = highpc;
8028
8029       /* If the compilation unit didn't have an explicit address range,
8030          then use the information extracted from its child dies.  */
8031       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8032         {
8033           best_lowpc = lowpc;
8034           best_highpc = highpc;
8035         }
8036     }
8037   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8038                                                  best_lowpc + baseaddr)
8039                      - baseaddr);
8040   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8041                                                   best_highpc + baseaddr)
8042                       - baseaddr);
8043
8044   end_psymtab_common (objfile, pst);
8045
8046   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8047     {
8048       int i;
8049       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8050       struct dwarf2_per_cu_data *iter;
8051
8052       /* Fill in 'dependencies' here; we fill in 'users' in a
8053          post-pass.  */
8054       pst->number_of_dependencies = len;
8055       pst->dependencies
8056         = objfile->partial_symtabs->allocate_dependencies (len);
8057       for (i = 0;
8058            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8059                         i, iter);
8060            ++i)
8061         pst->dependencies[i] = iter->v.psymtab;
8062
8063       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8064     }
8065
8066   /* Get the list of files included in the current compilation unit,
8067      and build a psymtab for each of them.  */
8068   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8069
8070   if (dwarf_read_debug)
8071     fprintf_unfiltered (gdb_stdlog,
8072                         "Psymtab for %s unit @%s: %s - %s"
8073                         ", %d global, %d static syms\n",
8074                         per_cu->is_debug_types ? "type" : "comp",
8075                         sect_offset_str (per_cu->sect_off),
8076                         paddress (gdbarch, pst->text_low (objfile)),
8077                         paddress (gdbarch, pst->text_high (objfile)),
8078                         pst->n_global_syms, pst->n_static_syms);
8079 }
8080
8081 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8082    Process compilation unit THIS_CU for a psymtab.  */
8083
8084 static void
8085 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8086                            int want_partial_unit,
8087                            enum language pretend_language)
8088 {
8089   /* If this compilation unit was already read in, free the
8090      cached copy in order to read it in again.  This is
8091      necessary because we skipped some symbols when we first
8092      read in the compilation unit (see load_partial_dies).
8093      This problem could be avoided, but the benefit is unclear.  */
8094   if (this_cu->cu != NULL)
8095     free_one_cached_comp_unit (this_cu);
8096
8097   if (this_cu->is_debug_types)
8098     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8099                              build_type_psymtabs_reader, NULL);
8100   else
8101     {
8102       process_psymtab_comp_unit_data info;
8103       info.want_partial_unit = want_partial_unit;
8104       info.pretend_language = pretend_language;
8105       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8106                                process_psymtab_comp_unit_reader, &info);
8107     }
8108
8109   /* Age out any secondary CUs.  */
8110   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8111 }
8112
8113 /* Reader function for build_type_psymtabs.  */
8114
8115 static void
8116 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8117                             const gdb_byte *info_ptr,
8118                             struct die_info *type_unit_die,
8119                             int has_children,
8120                             void *data)
8121 {
8122   struct dwarf2_per_objfile *dwarf2_per_objfile
8123     = reader->cu->per_cu->dwarf2_per_objfile;
8124   struct objfile *objfile = dwarf2_per_objfile->objfile;
8125   struct dwarf2_cu *cu = reader->cu;
8126   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8127   struct signatured_type *sig_type;
8128   struct type_unit_group *tu_group;
8129   struct attribute *attr;
8130   struct partial_die_info *first_die;
8131   CORE_ADDR lowpc, highpc;
8132   struct partial_symtab *pst;
8133
8134   gdb_assert (data == NULL);
8135   gdb_assert (per_cu->is_debug_types);
8136   sig_type = (struct signatured_type *) per_cu;
8137
8138   if (! has_children)
8139     return;
8140
8141   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8142   tu_group = get_type_unit_group (cu, attr);
8143
8144   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8145
8146   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8147   pst = create_partial_symtab (per_cu, "");
8148   pst->anonymous = 1;
8149
8150   first_die = load_partial_dies (reader, info_ptr, 1);
8151
8152   lowpc = (CORE_ADDR) -1;
8153   highpc = (CORE_ADDR) 0;
8154   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8155
8156   end_psymtab_common (objfile, pst);
8157 }
8158
8159 /* Struct used to sort TUs by their abbreviation table offset.  */
8160
8161 struct tu_abbrev_offset
8162 {
8163   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8164   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8165   {}
8166
8167   signatured_type *sig_type;
8168   sect_offset abbrev_offset;
8169 };
8170
8171 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8172
8173 static bool
8174 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8175                           const struct tu_abbrev_offset &b)
8176 {
8177   return a.abbrev_offset < b.abbrev_offset;
8178 }
8179
8180 /* Efficiently read all the type units.
8181    This does the bulk of the work for build_type_psymtabs.
8182
8183    The efficiency is because we sort TUs by the abbrev table they use and
8184    only read each abbrev table once.  In one program there are 200K TUs
8185    sharing 8K abbrev tables.
8186
8187    The main purpose of this function is to support building the
8188    dwarf2_per_objfile->type_unit_groups table.
8189    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8190    can collapse the search space by grouping them by stmt_list.
8191    The savings can be significant, in the same program from above the 200K TUs
8192    share 8K stmt_list tables.
8193
8194    FUNC is expected to call get_type_unit_group, which will create the
8195    struct type_unit_group if necessary and add it to
8196    dwarf2_per_objfile->type_unit_groups.  */
8197
8198 static void
8199 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8200 {
8201   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8202   abbrev_table_up abbrev_table;
8203   sect_offset abbrev_offset;
8204
8205   /* It's up to the caller to not call us multiple times.  */
8206   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8207
8208   if (dwarf2_per_objfile->all_type_units.empty ())
8209     return;
8210
8211   /* TUs typically share abbrev tables, and there can be way more TUs than
8212      abbrev tables.  Sort by abbrev table to reduce the number of times we
8213      read each abbrev table in.
8214      Alternatives are to punt or to maintain a cache of abbrev tables.
8215      This is simpler and efficient enough for now.
8216
8217      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8218      symtab to use).  Typically TUs with the same abbrev offset have the same
8219      stmt_list value too so in practice this should work well.
8220
8221      The basic algorithm here is:
8222
8223       sort TUs by abbrev table
8224       for each TU with same abbrev table:
8225         read abbrev table if first user
8226         read TU top level DIE
8227           [IWBN if DWO skeletons had DW_AT_stmt_list]
8228         call FUNC  */
8229
8230   if (dwarf_read_debug)
8231     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8232
8233   /* Sort in a separate table to maintain the order of all_type_units
8234      for .gdb_index: TU indices directly index all_type_units.  */
8235   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8236   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8237
8238   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8239     sorted_by_abbrev.emplace_back
8240       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8241                                      sig_type->per_cu.section,
8242                                      sig_type->per_cu.sect_off));
8243
8244   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8245              sort_tu_by_abbrev_offset);
8246
8247   abbrev_offset = (sect_offset) ~(unsigned) 0;
8248
8249   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8250     {
8251       /* Switch to the next abbrev table if necessary.  */
8252       if (abbrev_table == NULL
8253           || tu.abbrev_offset != abbrev_offset)
8254         {
8255           abbrev_offset = tu.abbrev_offset;
8256           abbrev_table =
8257             abbrev_table_read_table (dwarf2_per_objfile,
8258                                      &dwarf2_per_objfile->abbrev,
8259                                      abbrev_offset);
8260           ++tu_stats->nr_uniq_abbrev_tables;
8261         }
8262
8263       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8264                                0, 0, false, build_type_psymtabs_reader, NULL);
8265     }
8266 }
8267
8268 /* Print collected type unit statistics.  */
8269
8270 static void
8271 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8272 {
8273   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8274
8275   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8276   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8277                       dwarf2_per_objfile->all_type_units.size ());
8278   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8279                       tu_stats->nr_uniq_abbrev_tables);
8280   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8281                       tu_stats->nr_symtabs);
8282   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8283                       tu_stats->nr_symtab_sharers);
8284   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8285                       tu_stats->nr_stmt_less_type_units);
8286   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8287                       tu_stats->nr_all_type_units_reallocs);
8288 }
8289
8290 /* Traversal function for build_type_psymtabs.  */
8291
8292 static int
8293 build_type_psymtab_dependencies (void **slot, void *info)
8294 {
8295   struct dwarf2_per_objfile *dwarf2_per_objfile
8296     = (struct dwarf2_per_objfile *) info;
8297   struct objfile *objfile = dwarf2_per_objfile->objfile;
8298   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8299   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8300   struct partial_symtab *pst = per_cu->v.psymtab;
8301   int len = VEC_length (sig_type_ptr, tu_group->tus);
8302   struct signatured_type *iter;
8303   int i;
8304
8305   gdb_assert (len > 0);
8306   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8307
8308   pst->number_of_dependencies = len;
8309   pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
8310   for (i = 0;
8311        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8312        ++i)
8313     {
8314       gdb_assert (iter->per_cu.is_debug_types);
8315       pst->dependencies[i] = iter->per_cu.v.psymtab;
8316       iter->type_unit_group = tu_group;
8317     }
8318
8319   VEC_free (sig_type_ptr, tu_group->tus);
8320
8321   return 1;
8322 }
8323
8324 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8325    Build partial symbol tables for the .debug_types comp-units.  */
8326
8327 static void
8328 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8329 {
8330   if (! create_all_type_units (dwarf2_per_objfile))
8331     return;
8332
8333   build_type_psymtabs_1 (dwarf2_per_objfile);
8334 }
8335
8336 /* Traversal function for process_skeletonless_type_unit.
8337    Read a TU in a DWO file and build partial symbols for it.  */
8338
8339 static int
8340 process_skeletonless_type_unit (void **slot, void *info)
8341 {
8342   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8343   struct dwarf2_per_objfile *dwarf2_per_objfile
8344     = (struct dwarf2_per_objfile *) info;
8345   struct signatured_type find_entry, *entry;
8346
8347   /* If this TU doesn't exist in the global table, add it and read it in.  */
8348
8349   if (dwarf2_per_objfile->signatured_types == NULL)
8350     {
8351       dwarf2_per_objfile->signatured_types
8352         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8353     }
8354
8355   find_entry.signature = dwo_unit->signature;
8356   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8357                          INSERT);
8358   /* If we've already seen this type there's nothing to do.  What's happening
8359      is we're doing our own version of comdat-folding here.  */
8360   if (*slot != NULL)
8361     return 1;
8362
8363   /* This does the job that create_all_type_units would have done for
8364      this TU.  */
8365   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8366   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8367   *slot = entry;
8368
8369   /* This does the job that build_type_psymtabs_1 would have done.  */
8370   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8371                            build_type_psymtabs_reader, NULL);
8372
8373   return 1;
8374 }
8375
8376 /* Traversal function for process_skeletonless_type_units.  */
8377
8378 static int
8379 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8380 {
8381   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8382
8383   if (dwo_file->tus != NULL)
8384     {
8385       htab_traverse_noresize (dwo_file->tus,
8386                               process_skeletonless_type_unit, info);
8387     }
8388
8389   return 1;
8390 }
8391
8392 /* Scan all TUs of DWO files, verifying we've processed them.
8393    This is needed in case a TU was emitted without its skeleton.
8394    Note: This can't be done until we know what all the DWO files are.  */
8395
8396 static void
8397 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8398 {
8399   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8400   if (get_dwp_file (dwarf2_per_objfile) == NULL
8401       && dwarf2_per_objfile->dwo_files != NULL)
8402     {
8403       htab_traverse_noresize (dwarf2_per_objfile->dwo_files.get (),
8404                               process_dwo_file_for_skeletonless_type_units,
8405                               dwarf2_per_objfile);
8406     }
8407 }
8408
8409 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8410
8411 static void
8412 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8413 {
8414   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8415     {
8416       struct partial_symtab *pst = per_cu->v.psymtab;
8417
8418       if (pst == NULL)
8419         continue;
8420
8421       for (int j = 0; j < pst->number_of_dependencies; ++j)
8422         {
8423           /* Set the 'user' field only if it is not already set.  */
8424           if (pst->dependencies[j]->user == NULL)
8425             pst->dependencies[j]->user = pst;
8426         }
8427     }
8428 }
8429
8430 /* Build the partial symbol table by doing a quick pass through the
8431    .debug_info and .debug_abbrev sections.  */
8432
8433 static void
8434 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8435 {
8436   struct objfile *objfile = dwarf2_per_objfile->objfile;
8437
8438   if (dwarf_read_debug)
8439     {
8440       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8441                           objfile_name (objfile));
8442     }
8443
8444   dwarf2_per_objfile->reading_partial_symbols = 1;
8445
8446   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8447
8448   /* Any cached compilation units will be linked by the per-objfile
8449      read_in_chain.  Make sure to free them when we're done.  */
8450   free_cached_comp_units freer (dwarf2_per_objfile);
8451
8452   build_type_psymtabs (dwarf2_per_objfile);
8453
8454   create_all_comp_units (dwarf2_per_objfile);
8455
8456   /* Create a temporary address map on a temporary obstack.  We later
8457      copy this to the final obstack.  */
8458   auto_obstack temp_obstack;
8459
8460   scoped_restore save_psymtabs_addrmap
8461     = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
8462                            addrmap_create_mutable (&temp_obstack));
8463
8464   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8465     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8466
8467   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8468   process_skeletonless_type_units (dwarf2_per_objfile);
8469
8470   /* Now that all TUs have been processed we can fill in the dependencies.  */
8471   if (dwarf2_per_objfile->type_unit_groups != NULL)
8472     {
8473       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8474                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8475     }
8476
8477   if (dwarf_read_debug)
8478     print_tu_stats (dwarf2_per_objfile);
8479
8480   set_partial_user (dwarf2_per_objfile);
8481
8482   objfile->partial_symtabs->psymtabs_addrmap
8483     = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
8484                             objfile->partial_symtabs->obstack ());
8485   /* At this point we want to keep the address map.  */
8486   save_psymtabs_addrmap.release ();
8487
8488   if (dwarf_read_debug)
8489     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8490                         objfile_name (objfile));
8491 }
8492
8493 /* die_reader_func for load_partial_comp_unit.  */
8494
8495 static void
8496 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8497                                const gdb_byte *info_ptr,
8498                                struct die_info *comp_unit_die,
8499                                int has_children,
8500                                void *data)
8501 {
8502   struct dwarf2_cu *cu = reader->cu;
8503
8504   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8505
8506   /* Check if comp unit has_children.
8507      If so, read the rest of the partial symbols from this comp unit.
8508      If not, there's no more debug_info for this comp unit.  */
8509   if (has_children)
8510     load_partial_dies (reader, info_ptr, 0);
8511 }
8512
8513 /* Load the partial DIEs for a secondary CU into memory.
8514    This is also used when rereading a primary CU with load_all_dies.  */
8515
8516 static void
8517 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8518 {
8519   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8520                            load_partial_comp_unit_reader, NULL);
8521 }
8522
8523 static void
8524 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8525                               struct dwarf2_section_info *section,
8526                               struct dwarf2_section_info *abbrev_section,
8527                               unsigned int is_dwz)
8528 {
8529   const gdb_byte *info_ptr;
8530   struct objfile *objfile = dwarf2_per_objfile->objfile;
8531
8532   if (dwarf_read_debug)
8533     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8534                         get_section_name (section),
8535                         get_section_file_name (section));
8536
8537   dwarf2_read_section (objfile, section);
8538
8539   info_ptr = section->buffer;
8540
8541   while (info_ptr < section->buffer + section->size)
8542     {
8543       struct dwarf2_per_cu_data *this_cu;
8544
8545       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8546
8547       comp_unit_head cu_header;
8548       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8549                                      abbrev_section, info_ptr,
8550                                      rcuh_kind::COMPILE);
8551
8552       /* Save the compilation unit for later lookup.  */
8553       if (cu_header.unit_type != DW_UT_type)
8554         {
8555           this_cu = XOBNEW (&objfile->objfile_obstack,
8556                             struct dwarf2_per_cu_data);
8557           memset (this_cu, 0, sizeof (*this_cu));
8558         }
8559       else
8560         {
8561           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8562                                   struct signatured_type);
8563           memset (sig_type, 0, sizeof (*sig_type));
8564           sig_type->signature = cu_header.signature;
8565           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8566           this_cu = &sig_type->per_cu;
8567         }
8568       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8569       this_cu->sect_off = sect_off;
8570       this_cu->length = cu_header.length + cu_header.initial_length_size;
8571       this_cu->is_dwz = is_dwz;
8572       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8573       this_cu->section = section;
8574
8575       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8576
8577       info_ptr = info_ptr + this_cu->length;
8578     }
8579 }
8580
8581 /* Create a list of all compilation units in OBJFILE.
8582    This is only done for -readnow and building partial symtabs.  */
8583
8584 static void
8585 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8586 {
8587   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8588   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8589                                 &dwarf2_per_objfile->abbrev, 0);
8590
8591   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8592   if (dwz != NULL)
8593     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8594                                   1);
8595 }
8596
8597 /* Process all loaded DIEs for compilation unit CU, starting at
8598    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8599    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8600    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8601    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8602
8603 static void
8604 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8605                       CORE_ADDR *highpc, int set_addrmap,
8606                       struct dwarf2_cu *cu)
8607 {
8608   struct partial_die_info *pdi;
8609
8610   /* Now, march along the PDI's, descending into ones which have
8611      interesting children but skipping the children of the other ones,
8612      until we reach the end of the compilation unit.  */
8613
8614   pdi = first_die;
8615
8616   while (pdi != NULL)
8617     {
8618       pdi->fixup (cu);
8619
8620       /* Anonymous namespaces or modules have no name but have interesting
8621          children, so we need to look at them.  Ditto for anonymous
8622          enums.  */
8623
8624       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8625           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8626           || pdi->tag == DW_TAG_imported_unit
8627           || pdi->tag == DW_TAG_inlined_subroutine)
8628         {
8629           switch (pdi->tag)
8630             {
8631             case DW_TAG_subprogram:
8632             case DW_TAG_inlined_subroutine:
8633               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8634               break;
8635             case DW_TAG_constant:
8636             case DW_TAG_variable:
8637             case DW_TAG_typedef:
8638             case DW_TAG_union_type:
8639               if (!pdi->is_declaration)
8640                 {
8641                   add_partial_symbol (pdi, cu);
8642                 }
8643               break;
8644             case DW_TAG_class_type:
8645             case DW_TAG_interface_type:
8646             case DW_TAG_structure_type:
8647               if (!pdi->is_declaration)
8648                 {
8649                   add_partial_symbol (pdi, cu);
8650                 }
8651               if ((cu->language == language_rust
8652                    || cu->language == language_cplus) && pdi->has_children)
8653                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8654                                       set_addrmap, cu);
8655               break;
8656             case DW_TAG_enumeration_type:
8657               if (!pdi->is_declaration)
8658                 add_partial_enumeration (pdi, cu);
8659               break;
8660             case DW_TAG_base_type:
8661             case DW_TAG_subrange_type:
8662               /* File scope base type definitions are added to the partial
8663                  symbol table.  */
8664               add_partial_symbol (pdi, cu);
8665               break;
8666             case DW_TAG_namespace:
8667               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8668               break;
8669             case DW_TAG_module:
8670               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8671               break;
8672             case DW_TAG_imported_unit:
8673               {
8674                 struct dwarf2_per_cu_data *per_cu;
8675
8676                 /* For now we don't handle imported units in type units.  */
8677                 if (cu->per_cu->is_debug_types)
8678                   {
8679                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8680                              " supported in type units [in module %s]"),
8681                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8682                   }
8683
8684                 per_cu = dwarf2_find_containing_comp_unit
8685                            (pdi->d.sect_off, pdi->is_dwz,
8686                             cu->per_cu->dwarf2_per_objfile);
8687
8688                 /* Go read the partial unit, if needed.  */
8689                 if (per_cu->v.psymtab == NULL)
8690                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8691
8692                 VEC_safe_push (dwarf2_per_cu_ptr,
8693                                cu->per_cu->imported_symtabs, per_cu);
8694               }
8695               break;
8696             case DW_TAG_imported_declaration:
8697               add_partial_symbol (pdi, cu);
8698               break;
8699             default:
8700               break;
8701             }
8702         }
8703
8704       /* If the die has a sibling, skip to the sibling.  */
8705
8706       pdi = pdi->die_sibling;
8707     }
8708 }
8709
8710 /* Functions used to compute the fully scoped name of a partial DIE.
8711
8712    Normally, this is simple.  For C++, the parent DIE's fully scoped
8713    name is concatenated with "::" and the partial DIE's name.
8714    Enumerators are an exception; they use the scope of their parent
8715    enumeration type, i.e. the name of the enumeration type is not
8716    prepended to the enumerator.
8717
8718    There are two complexities.  One is DW_AT_specification; in this
8719    case "parent" means the parent of the target of the specification,
8720    instead of the direct parent of the DIE.  The other is compilers
8721    which do not emit DW_TAG_namespace; in this case we try to guess
8722    the fully qualified name of structure types from their members'
8723    linkage names.  This must be done using the DIE's children rather
8724    than the children of any DW_AT_specification target.  We only need
8725    to do this for structures at the top level, i.e. if the target of
8726    any DW_AT_specification (if any; otherwise the DIE itself) does not
8727    have a parent.  */
8728
8729 /* Compute the scope prefix associated with PDI's parent, in
8730    compilation unit CU.  The result will be allocated on CU's
8731    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8732    field.  NULL is returned if no prefix is necessary.  */
8733 static const char *
8734 partial_die_parent_scope (struct partial_die_info *pdi,
8735                           struct dwarf2_cu *cu)
8736 {
8737   const char *grandparent_scope;
8738   struct partial_die_info *parent, *real_pdi;
8739
8740   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8741      then this means the parent of the specification DIE.  */
8742
8743   real_pdi = pdi;
8744   while (real_pdi->has_specification)
8745     {
8746       auto res = find_partial_die (real_pdi->spec_offset,
8747                                    real_pdi->spec_is_dwz, cu);
8748       real_pdi = res.pdi;
8749       cu = res.cu;
8750     }
8751
8752   parent = real_pdi->die_parent;
8753   if (parent == NULL)
8754     return NULL;
8755
8756   if (parent->scope_set)
8757     return parent->scope;
8758
8759   parent->fixup (cu);
8760
8761   grandparent_scope = partial_die_parent_scope (parent, cu);
8762
8763   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8764      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8765      Work around this problem here.  */
8766   if (cu->language == language_cplus
8767       && parent->tag == DW_TAG_namespace
8768       && strcmp (parent->name, "::") == 0
8769       && grandparent_scope == NULL)
8770     {
8771       parent->scope = NULL;
8772       parent->scope_set = 1;
8773       return NULL;
8774     }
8775
8776   if (pdi->tag == DW_TAG_enumerator)
8777     /* Enumerators should not get the name of the enumeration as a prefix.  */
8778     parent->scope = grandparent_scope;
8779   else if (parent->tag == DW_TAG_namespace
8780       || parent->tag == DW_TAG_module
8781       || parent->tag == DW_TAG_structure_type
8782       || parent->tag == DW_TAG_class_type
8783       || parent->tag == DW_TAG_interface_type
8784       || parent->tag == DW_TAG_union_type
8785       || parent->tag == DW_TAG_enumeration_type)
8786     {
8787       if (grandparent_scope == NULL)
8788         parent->scope = parent->name;
8789       else
8790         parent->scope = typename_concat (&cu->comp_unit_obstack,
8791                                          grandparent_scope,
8792                                          parent->name, 0, cu);
8793     }
8794   else
8795     {
8796       /* FIXME drow/2004-04-01: What should we be doing with
8797          function-local names?  For partial symbols, we should probably be
8798          ignoring them.  */
8799       complaint (_("unhandled containing DIE tag %s for DIE at %s"),
8800                  dwarf_tag_name (parent->tag),
8801                  sect_offset_str (pdi->sect_off));
8802       parent->scope = grandparent_scope;
8803     }
8804
8805   parent->scope_set = 1;
8806   return parent->scope;
8807 }
8808
8809 /* Return the fully scoped name associated with PDI, from compilation unit
8810    CU.  The result will be allocated with malloc.  */
8811
8812 static char *
8813 partial_die_full_name (struct partial_die_info *pdi,
8814                        struct dwarf2_cu *cu)
8815 {
8816   const char *parent_scope;
8817
8818   /* If this is a template instantiation, we can not work out the
8819      template arguments from partial DIEs.  So, unfortunately, we have
8820      to go through the full DIEs.  At least any work we do building
8821      types here will be reused if full symbols are loaded later.  */
8822   if (pdi->has_template_arguments)
8823     {
8824       pdi->fixup (cu);
8825
8826       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8827         {
8828           struct die_info *die;
8829           struct attribute attr;
8830           struct dwarf2_cu *ref_cu = cu;
8831
8832           /* DW_FORM_ref_addr is using section offset.  */
8833           attr.name = (enum dwarf_attribute) 0;
8834           attr.form = DW_FORM_ref_addr;
8835           attr.u.unsnd = to_underlying (pdi->sect_off);
8836           die = follow_die_ref (NULL, &attr, &ref_cu);
8837
8838           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8839         }
8840     }
8841
8842   parent_scope = partial_die_parent_scope (pdi, cu);
8843   if (parent_scope == NULL)
8844     return NULL;
8845   else
8846     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8847 }
8848
8849 static void
8850 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8851 {
8852   struct dwarf2_per_objfile *dwarf2_per_objfile
8853     = cu->per_cu->dwarf2_per_objfile;
8854   struct objfile *objfile = dwarf2_per_objfile->objfile;
8855   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8856   CORE_ADDR addr = 0;
8857   const char *actual_name = NULL;
8858   CORE_ADDR baseaddr;
8859   char *built_actual_name;
8860
8861   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8862
8863   built_actual_name = partial_die_full_name (pdi, cu);
8864   if (built_actual_name != NULL)
8865     actual_name = built_actual_name;
8866
8867   if (actual_name == NULL)
8868     actual_name = pdi->name;
8869
8870   switch (pdi->tag)
8871     {
8872     case DW_TAG_inlined_subroutine:
8873     case DW_TAG_subprogram:
8874       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8875               - baseaddr);
8876       if (pdi->is_external || cu->language == language_ada)
8877         {
8878           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8879              of the global scope.  But in Ada, we want to be able to access
8880              nested procedures globally.  So all Ada subprograms are stored
8881              in the global scope.  */
8882           add_psymbol_to_list (actual_name, strlen (actual_name),
8883                                built_actual_name != NULL,
8884                                VAR_DOMAIN, LOC_BLOCK,
8885                                SECT_OFF_TEXT (objfile),
8886                                psymbol_placement::GLOBAL,
8887                                addr,
8888                                cu->language, objfile);
8889         }
8890       else
8891         {
8892           add_psymbol_to_list (actual_name, strlen (actual_name),
8893                                built_actual_name != NULL,
8894                                VAR_DOMAIN, LOC_BLOCK,
8895                                SECT_OFF_TEXT (objfile),
8896                                psymbol_placement::STATIC,
8897                                addr, cu->language, objfile);
8898         }
8899
8900       if (pdi->main_subprogram && actual_name != NULL)
8901         set_objfile_main_name (objfile, actual_name, cu->language);
8902       break;
8903     case DW_TAG_constant:
8904       add_psymbol_to_list (actual_name, strlen (actual_name),
8905                            built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8906                            -1, (pdi->is_external
8907                                 ? psymbol_placement::GLOBAL
8908                                 : psymbol_placement::STATIC),
8909                            0, cu->language, objfile);
8910       break;
8911     case DW_TAG_variable:
8912       if (pdi->d.locdesc)
8913         addr = decode_locdesc (pdi->d.locdesc, cu);
8914
8915       if (pdi->d.locdesc
8916           && addr == 0
8917           && !dwarf2_per_objfile->has_section_at_zero)
8918         {
8919           /* A global or static variable may also have been stripped
8920              out by the linker if unused, in which case its address
8921              will be nullified; do not add such variables into partial
8922              symbol table then.  */
8923         }
8924       else if (pdi->is_external)
8925         {
8926           /* Global Variable.
8927              Don't enter into the minimal symbol tables as there is
8928              a minimal symbol table entry from the ELF symbols already.
8929              Enter into partial symbol table if it has a location
8930              descriptor or a type.
8931              If the location descriptor is missing, new_symbol will create
8932              a LOC_UNRESOLVED symbol, the address of the variable will then
8933              be determined from the minimal symbol table whenever the variable
8934              is referenced.
8935              The address for the partial symbol table entry is not
8936              used by GDB, but it comes in handy for debugging partial symbol
8937              table building.  */
8938
8939           if (pdi->d.locdesc || pdi->has_type)
8940             add_psymbol_to_list (actual_name, strlen (actual_name),
8941                                  built_actual_name != NULL,
8942                                  VAR_DOMAIN, LOC_STATIC,
8943                                  SECT_OFF_TEXT (objfile),
8944                                  psymbol_placement::GLOBAL,
8945                                  addr, cu->language, objfile);
8946         }
8947       else
8948         {
8949           int has_loc = pdi->d.locdesc != NULL;
8950
8951           /* Static Variable.  Skip symbols whose value we cannot know (those
8952              without location descriptors or constant values).  */
8953           if (!has_loc && !pdi->has_const_value)
8954             {
8955               xfree (built_actual_name);
8956               return;
8957             }
8958
8959           add_psymbol_to_list (actual_name, strlen (actual_name),
8960                                built_actual_name != NULL,
8961                                VAR_DOMAIN, LOC_STATIC,
8962                                SECT_OFF_TEXT (objfile),
8963                                psymbol_placement::STATIC,
8964                                has_loc ? addr : 0,
8965                                cu->language, objfile);
8966         }
8967       break;
8968     case DW_TAG_typedef:
8969     case DW_TAG_base_type:
8970     case DW_TAG_subrange_type:
8971       add_psymbol_to_list (actual_name, strlen (actual_name),
8972                            built_actual_name != NULL,
8973                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8974                            psymbol_placement::STATIC,
8975                            0, cu->language, objfile);
8976       break;
8977     case DW_TAG_imported_declaration:
8978     case DW_TAG_namespace:
8979       add_psymbol_to_list (actual_name, strlen (actual_name),
8980                            built_actual_name != NULL,
8981                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8982                            psymbol_placement::GLOBAL,
8983                            0, cu->language, objfile);
8984       break;
8985     case DW_TAG_module:
8986       /* With Fortran 77 there might be a "BLOCK DATA" module
8987          available without any name.  If so, we skip the module as it
8988          doesn't bring any value.  */
8989       if (actual_name != nullptr)
8990         add_psymbol_to_list (actual_name, strlen (actual_name),
8991                              built_actual_name != NULL,
8992                              MODULE_DOMAIN, LOC_TYPEDEF, -1,
8993                              psymbol_placement::GLOBAL,
8994                              0, cu->language, objfile);
8995       break;
8996     case DW_TAG_class_type:
8997     case DW_TAG_interface_type:
8998     case DW_TAG_structure_type:
8999     case DW_TAG_union_type:
9000     case DW_TAG_enumeration_type:
9001       /* Skip external references.  The DWARF standard says in the section
9002          about "Structure, Union, and Class Type Entries": "An incomplete
9003          structure, union or class type is represented by a structure,
9004          union or class entry that does not have a byte size attribute
9005          and that has a DW_AT_declaration attribute."  */
9006       if (!pdi->has_byte_size && pdi->is_declaration)
9007         {
9008           xfree (built_actual_name);
9009           return;
9010         }
9011
9012       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9013          static vs. global.  */
9014       add_psymbol_to_list (actual_name, strlen (actual_name),
9015                            built_actual_name != NULL,
9016                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9017                            cu->language == language_cplus
9018                            ? psymbol_placement::GLOBAL
9019                            : psymbol_placement::STATIC,
9020                            0, cu->language, objfile);
9021
9022       break;
9023     case DW_TAG_enumerator:
9024       add_psymbol_to_list (actual_name, strlen (actual_name),
9025                            built_actual_name != NULL,
9026                            VAR_DOMAIN, LOC_CONST, -1,
9027                            cu->language == language_cplus
9028                            ? psymbol_placement::GLOBAL
9029                            : psymbol_placement::STATIC,
9030                            0, cu->language, objfile);
9031       break;
9032     default:
9033       break;
9034     }
9035
9036   xfree (built_actual_name);
9037 }
9038
9039 /* Read a partial die corresponding to a namespace; also, add a symbol
9040    corresponding to that namespace to the symbol table.  NAMESPACE is
9041    the name of the enclosing namespace.  */
9042
9043 static void
9044 add_partial_namespace (struct partial_die_info *pdi,
9045                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9046                        int set_addrmap, struct dwarf2_cu *cu)
9047 {
9048   /* Add a symbol for the namespace.  */
9049
9050   add_partial_symbol (pdi, cu);
9051
9052   /* Now scan partial symbols in that namespace.  */
9053
9054   if (pdi->has_children)
9055     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9056 }
9057
9058 /* Read a partial die corresponding to a Fortran module.  */
9059
9060 static void
9061 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9062                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9063 {
9064   /* Add a symbol for the namespace.  */
9065
9066   add_partial_symbol (pdi, cu);
9067
9068   /* Now scan partial symbols in that module.  */
9069
9070   if (pdi->has_children)
9071     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9072 }
9073
9074 /* Read a partial die corresponding to a subprogram or an inlined
9075    subprogram and create a partial symbol for that subprogram.
9076    When the CU language allows it, this routine also defines a partial
9077    symbol for each nested subprogram that this subprogram contains.
9078    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9079    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9080
9081    PDI may also be a lexical block, in which case we simply search
9082    recursively for subprograms defined inside that lexical block.
9083    Again, this is only performed when the CU language allows this
9084    type of definitions.  */
9085
9086 static void
9087 add_partial_subprogram (struct partial_die_info *pdi,
9088                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9089                         int set_addrmap, struct dwarf2_cu *cu)
9090 {
9091   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9092     {
9093       if (pdi->has_pc_info)
9094         {
9095           if (pdi->lowpc < *lowpc)
9096             *lowpc = pdi->lowpc;
9097           if (pdi->highpc > *highpc)
9098             *highpc = pdi->highpc;
9099           if (set_addrmap)
9100             {
9101               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9102               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9103               CORE_ADDR baseaddr;
9104               CORE_ADDR this_highpc;
9105               CORE_ADDR this_lowpc;
9106
9107               baseaddr = ANOFFSET (objfile->section_offsets,
9108                                    SECT_OFF_TEXT (objfile));
9109               this_lowpc
9110                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9111                                                pdi->lowpc + baseaddr)
9112                    - baseaddr);
9113               this_highpc
9114                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9115                                                pdi->highpc + baseaddr)
9116                    - baseaddr);
9117               addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
9118                                  this_lowpc, this_highpc - 1,
9119                                  cu->per_cu->v.psymtab);
9120             }
9121         }
9122
9123       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9124         {
9125           if (!pdi->is_declaration)
9126             /* Ignore subprogram DIEs that do not have a name, they are
9127                illegal.  Do not emit a complaint at this point, we will
9128                do so when we convert this psymtab into a symtab.  */
9129             if (pdi->name)
9130               add_partial_symbol (pdi, cu);
9131         }
9132     }
9133
9134   if (! pdi->has_children)
9135     return;
9136
9137   if (cu->language == language_ada)
9138     {
9139       pdi = pdi->die_child;
9140       while (pdi != NULL)
9141         {
9142           pdi->fixup (cu);
9143           if (pdi->tag == DW_TAG_subprogram
9144               || pdi->tag == DW_TAG_inlined_subroutine
9145               || pdi->tag == DW_TAG_lexical_block)
9146             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9147           pdi = pdi->die_sibling;
9148         }
9149     }
9150 }
9151
9152 /* Read a partial die corresponding to an enumeration type.  */
9153
9154 static void
9155 add_partial_enumeration (struct partial_die_info *enum_pdi,
9156                          struct dwarf2_cu *cu)
9157 {
9158   struct partial_die_info *pdi;
9159
9160   if (enum_pdi->name != NULL)
9161     add_partial_symbol (enum_pdi, cu);
9162
9163   pdi = enum_pdi->die_child;
9164   while (pdi)
9165     {
9166       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9167         complaint (_("malformed enumerator DIE ignored"));
9168       else
9169         add_partial_symbol (pdi, cu);
9170       pdi = pdi->die_sibling;
9171     }
9172 }
9173
9174 /* Return the initial uleb128 in the die at INFO_PTR.  */
9175
9176 static unsigned int
9177 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9178 {
9179   unsigned int bytes_read;
9180
9181   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9182 }
9183
9184 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9185    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9186
9187    Return the corresponding abbrev, or NULL if the number is zero (indicating
9188    an empty DIE).  In either case *BYTES_READ will be set to the length of
9189    the initial number.  */
9190
9191 static struct abbrev_info *
9192 peek_die_abbrev (const die_reader_specs &reader,
9193                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9194 {
9195   dwarf2_cu *cu = reader.cu;
9196   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9197   unsigned int abbrev_number
9198     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9199
9200   if (abbrev_number == 0)
9201     return NULL;
9202
9203   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9204   if (!abbrev)
9205     {
9206       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9207                " at offset %s [in module %s]"),
9208              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9209              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9210     }
9211
9212   return abbrev;
9213 }
9214
9215 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9216    Returns a pointer to the end of a series of DIEs, terminated by an empty
9217    DIE.  Any children of the skipped DIEs will also be skipped.  */
9218
9219 static const gdb_byte *
9220 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9221 {
9222   while (1)
9223     {
9224       unsigned int bytes_read;
9225       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9226
9227       if (abbrev == NULL)
9228         return info_ptr + bytes_read;
9229       else
9230         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9231     }
9232 }
9233
9234 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9235    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9236    abbrev corresponding to that skipped uleb128 should be passed in
9237    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9238    children.  */
9239
9240 static const gdb_byte *
9241 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9242               struct abbrev_info *abbrev)
9243 {
9244   unsigned int bytes_read;
9245   struct attribute attr;
9246   bfd *abfd = reader->abfd;
9247   struct dwarf2_cu *cu = reader->cu;
9248   const gdb_byte *buffer = reader->buffer;
9249   const gdb_byte *buffer_end = reader->buffer_end;
9250   unsigned int form, i;
9251
9252   for (i = 0; i < abbrev->num_attrs; i++)
9253     {
9254       /* The only abbrev we care about is DW_AT_sibling.  */
9255       if (abbrev->attrs[i].name == DW_AT_sibling)
9256         {
9257           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9258           if (attr.form == DW_FORM_ref_addr)
9259             complaint (_("ignoring absolute DW_AT_sibling"));
9260           else
9261             {
9262               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9263               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9264
9265               if (sibling_ptr < info_ptr)
9266                 complaint (_("DW_AT_sibling points backwards"));
9267               else if (sibling_ptr > reader->buffer_end)
9268                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9269               else
9270                 return sibling_ptr;
9271             }
9272         }
9273
9274       /* If it isn't DW_AT_sibling, skip this attribute.  */
9275       form = abbrev->attrs[i].form;
9276     skip_attribute:
9277       switch (form)
9278         {
9279         case DW_FORM_ref_addr:
9280           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9281              and later it is offset sized.  */
9282           if (cu->header.version == 2)
9283             info_ptr += cu->header.addr_size;
9284           else
9285             info_ptr += cu->header.offset_size;
9286           break;
9287         case DW_FORM_GNU_ref_alt:
9288           info_ptr += cu->header.offset_size;
9289           break;
9290         case DW_FORM_addr:
9291           info_ptr += cu->header.addr_size;
9292           break;
9293         case DW_FORM_data1:
9294         case DW_FORM_ref1:
9295         case DW_FORM_flag:
9296           info_ptr += 1;
9297           break;
9298         case DW_FORM_flag_present:
9299         case DW_FORM_implicit_const:
9300           break;
9301         case DW_FORM_data2:
9302         case DW_FORM_ref2:
9303           info_ptr += 2;
9304           break;
9305         case DW_FORM_data4:
9306         case DW_FORM_ref4:
9307           info_ptr += 4;
9308           break;
9309         case DW_FORM_data8:
9310         case DW_FORM_ref8:
9311         case DW_FORM_ref_sig8:
9312           info_ptr += 8;
9313           break;
9314         case DW_FORM_data16:
9315           info_ptr += 16;
9316           break;
9317         case DW_FORM_string:
9318           read_direct_string (abfd, info_ptr, &bytes_read);
9319           info_ptr += bytes_read;
9320           break;
9321         case DW_FORM_sec_offset:
9322         case DW_FORM_strp:
9323         case DW_FORM_GNU_strp_alt:
9324           info_ptr += cu->header.offset_size;
9325           break;
9326         case DW_FORM_exprloc:
9327         case DW_FORM_block:
9328           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9329           info_ptr += bytes_read;
9330           break;
9331         case DW_FORM_block1:
9332           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9333           break;
9334         case DW_FORM_block2:
9335           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9336           break;
9337         case DW_FORM_block4:
9338           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9339           break;
9340         case DW_FORM_addrx:
9341         case DW_FORM_strx:
9342         case DW_FORM_sdata:
9343         case DW_FORM_udata:
9344         case DW_FORM_ref_udata:
9345         case DW_FORM_GNU_addr_index:
9346         case DW_FORM_GNU_str_index:
9347           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9348           break;
9349         case DW_FORM_indirect:
9350           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9351           info_ptr += bytes_read;
9352           /* We need to continue parsing from here, so just go back to
9353              the top.  */
9354           goto skip_attribute;
9355
9356         default:
9357           error (_("Dwarf Error: Cannot handle %s "
9358                    "in DWARF reader [in module %s]"),
9359                  dwarf_form_name (form),
9360                  bfd_get_filename (abfd));
9361         }
9362     }
9363
9364   if (abbrev->has_children)
9365     return skip_children (reader, info_ptr);
9366   else
9367     return info_ptr;
9368 }
9369
9370 /* Locate ORIG_PDI's sibling.
9371    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9372
9373 static const gdb_byte *
9374 locate_pdi_sibling (const struct die_reader_specs *reader,
9375                     struct partial_die_info *orig_pdi,
9376                     const gdb_byte *info_ptr)
9377 {
9378   /* Do we know the sibling already?  */
9379
9380   if (orig_pdi->sibling)
9381     return orig_pdi->sibling;
9382
9383   /* Are there any children to deal with?  */
9384
9385   if (!orig_pdi->has_children)
9386     return info_ptr;
9387
9388   /* Skip the children the long way.  */
9389
9390   return skip_children (reader, info_ptr);
9391 }
9392
9393 /* Expand this partial symbol table into a full symbol table.  SELF is
9394    not NULL.  */
9395
9396 static void
9397 dwarf2_read_symtab (struct partial_symtab *self,
9398                     struct objfile *objfile)
9399 {
9400   struct dwarf2_per_objfile *dwarf2_per_objfile
9401     = get_dwarf2_per_objfile (objfile);
9402
9403   if (self->readin)
9404     {
9405       warning (_("bug: psymtab for %s is already read in."),
9406                self->filename);
9407     }
9408   else
9409     {
9410       if (info_verbose)
9411         {
9412           printf_filtered (_("Reading in symbols for %s..."),
9413                            self->filename);
9414           gdb_flush (gdb_stdout);
9415         }
9416
9417       /* If this psymtab is constructed from a debug-only objfile, the
9418          has_section_at_zero flag will not necessarily be correct.  We
9419          can get the correct value for this flag by looking at the data
9420          associated with the (presumably stripped) associated objfile.  */
9421       if (objfile->separate_debug_objfile_backlink)
9422         {
9423           struct dwarf2_per_objfile *dpo_backlink
9424             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9425
9426           dwarf2_per_objfile->has_section_at_zero
9427             = dpo_backlink->has_section_at_zero;
9428         }
9429
9430       dwarf2_per_objfile->reading_partial_symbols = 0;
9431
9432       psymtab_to_symtab_1 (self);
9433
9434       /* Finish up the debug error message.  */
9435       if (info_verbose)
9436         printf_filtered (_("done.\n"));
9437     }
9438
9439   process_cu_includes (dwarf2_per_objfile);
9440 }
9441 \f
9442 /* Reading in full CUs.  */
9443
9444 /* Add PER_CU to the queue.  */
9445
9446 static void
9447 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9448                  enum language pretend_language)
9449 {
9450   struct dwarf2_queue_item *item;
9451
9452   per_cu->queued = 1;
9453   item = XNEW (struct dwarf2_queue_item);
9454   item->per_cu = per_cu;
9455   item->pretend_language = pretend_language;
9456   item->next = NULL;
9457
9458   if (dwarf2_queue == NULL)
9459     dwarf2_queue = item;
9460   else
9461     dwarf2_queue_tail->next = item;
9462
9463   dwarf2_queue_tail = item;
9464 }
9465
9466 /* If PER_CU is not yet queued, add it to the queue.
9467    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9468    dependency.
9469    The result is non-zero if PER_CU was queued, otherwise the result is zero
9470    meaning either PER_CU is already queued or it is already loaded.
9471
9472    N.B. There is an invariant here that if a CU is queued then it is loaded.
9473    The caller is required to load PER_CU if we return non-zero.  */
9474
9475 static int
9476 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9477                        struct dwarf2_per_cu_data *per_cu,
9478                        enum language pretend_language)
9479 {
9480   /* We may arrive here during partial symbol reading, if we need full
9481      DIEs to process an unusual case (e.g. template arguments).  Do
9482      not queue PER_CU, just tell our caller to load its DIEs.  */
9483   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9484     {
9485       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9486         return 1;
9487       return 0;
9488     }
9489
9490   /* Mark the dependence relation so that we don't flush PER_CU
9491      too early.  */
9492   if (dependent_cu != NULL)
9493     dwarf2_add_dependence (dependent_cu, per_cu);
9494
9495   /* If it's already on the queue, we have nothing to do.  */
9496   if (per_cu->queued)
9497     return 0;
9498
9499   /* If the compilation unit is already loaded, just mark it as
9500      used.  */
9501   if (per_cu->cu != NULL)
9502     {
9503       per_cu->cu->last_used = 0;
9504       return 0;
9505     }
9506
9507   /* Add it to the queue.  */
9508   queue_comp_unit (per_cu, pretend_language);
9509
9510   return 1;
9511 }
9512
9513 /* Process the queue.  */
9514
9515 static void
9516 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9517 {
9518   struct dwarf2_queue_item *item, *next_item;
9519
9520   if (dwarf_read_debug)
9521     {
9522       fprintf_unfiltered (gdb_stdlog,
9523                           "Expanding one or more symtabs of objfile %s ...\n",
9524                           objfile_name (dwarf2_per_objfile->objfile));
9525     }
9526
9527   /* The queue starts out with one item, but following a DIE reference
9528      may load a new CU, adding it to the end of the queue.  */
9529   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9530     {
9531       if ((dwarf2_per_objfile->using_index
9532            ? !item->per_cu->v.quick->compunit_symtab
9533            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9534           /* Skip dummy CUs.  */
9535           && item->per_cu->cu != NULL)
9536         {
9537           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9538           unsigned int debug_print_threshold;
9539           char buf[100];
9540
9541           if (per_cu->is_debug_types)
9542             {
9543               struct signatured_type *sig_type =
9544                 (struct signatured_type *) per_cu;
9545
9546               sprintf (buf, "TU %s at offset %s",
9547                        hex_string (sig_type->signature),
9548                        sect_offset_str (per_cu->sect_off));
9549               /* There can be 100s of TUs.
9550                  Only print them in verbose mode.  */
9551               debug_print_threshold = 2;
9552             }
9553           else
9554             {
9555               sprintf (buf, "CU at offset %s",
9556                        sect_offset_str (per_cu->sect_off));
9557               debug_print_threshold = 1;
9558             }
9559
9560           if (dwarf_read_debug >= debug_print_threshold)
9561             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9562
9563           if (per_cu->is_debug_types)
9564             process_full_type_unit (per_cu, item->pretend_language);
9565           else
9566             process_full_comp_unit (per_cu, item->pretend_language);
9567
9568           if (dwarf_read_debug >= debug_print_threshold)
9569             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9570         }
9571
9572       item->per_cu->queued = 0;
9573       next_item = item->next;
9574       xfree (item);
9575     }
9576
9577   dwarf2_queue_tail = NULL;
9578
9579   if (dwarf_read_debug)
9580     {
9581       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9582                           objfile_name (dwarf2_per_objfile->objfile));
9583     }
9584 }
9585
9586 /* Read in full symbols for PST, and anything it depends on.  */
9587
9588 static void
9589 psymtab_to_symtab_1 (struct partial_symtab *pst)
9590 {
9591   struct dwarf2_per_cu_data *per_cu;
9592   int i;
9593
9594   if (pst->readin)
9595     return;
9596
9597   for (i = 0; i < pst->number_of_dependencies; i++)
9598     if (!pst->dependencies[i]->readin
9599         && pst->dependencies[i]->user == NULL)
9600       {
9601         /* Inform about additional files that need to be read in.  */
9602         if (info_verbose)
9603           {
9604             /* FIXME: i18n: Need to make this a single string.  */
9605             fputs_filtered (" ", gdb_stdout);
9606             wrap_here ("");
9607             fputs_filtered ("and ", gdb_stdout);
9608             wrap_here ("");
9609             printf_filtered ("%s...", pst->dependencies[i]->filename);
9610             wrap_here ("");     /* Flush output.  */
9611             gdb_flush (gdb_stdout);
9612           }
9613         psymtab_to_symtab_1 (pst->dependencies[i]);
9614       }
9615
9616   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9617
9618   if (per_cu == NULL)
9619     {
9620       /* It's an include file, no symbols to read for it.
9621          Everything is in the parent symtab.  */
9622       pst->readin = 1;
9623       return;
9624     }
9625
9626   dw2_do_instantiate_symtab (per_cu, false);
9627 }
9628
9629 /* Trivial hash function for die_info: the hash value of a DIE
9630    is its offset in .debug_info for this objfile.  */
9631
9632 static hashval_t
9633 die_hash (const void *item)
9634 {
9635   const struct die_info *die = (const struct die_info *) item;
9636
9637   return to_underlying (die->sect_off);
9638 }
9639
9640 /* Trivial comparison function for die_info structures: two DIEs
9641    are equal if they have the same offset.  */
9642
9643 static int
9644 die_eq (const void *item_lhs, const void *item_rhs)
9645 {
9646   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9647   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9648
9649   return die_lhs->sect_off == die_rhs->sect_off;
9650 }
9651
9652 /* die_reader_func for load_full_comp_unit.
9653    This is identical to read_signatured_type_reader,
9654    but is kept separate for now.  */
9655
9656 static void
9657 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9658                             const gdb_byte *info_ptr,
9659                             struct die_info *comp_unit_die,
9660                             int has_children,
9661                             void *data)
9662 {
9663   struct dwarf2_cu *cu = reader->cu;
9664   enum language *language_ptr = (enum language *) data;
9665
9666   gdb_assert (cu->die_hash == NULL);
9667   cu->die_hash =
9668     htab_create_alloc_ex (cu->header.length / 12,
9669                           die_hash,
9670                           die_eq,
9671                           NULL,
9672                           &cu->comp_unit_obstack,
9673                           hashtab_obstack_allocate,
9674                           dummy_obstack_deallocate);
9675
9676   if (has_children)
9677     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9678                                                   &info_ptr, comp_unit_die);
9679   cu->dies = comp_unit_die;
9680   /* comp_unit_die is not stored in die_hash, no need.  */
9681
9682   /* We try not to read any attributes in this function, because not
9683      all CUs needed for references have been loaded yet, and symbol
9684      table processing isn't initialized.  But we have to set the CU language,
9685      or we won't be able to build types correctly.
9686      Similarly, if we do not read the producer, we can not apply
9687      producer-specific interpretation.  */
9688   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9689 }
9690
9691 /* Load the DIEs associated with PER_CU into memory.  */
9692
9693 static void
9694 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9695                      bool skip_partial,
9696                      enum language pretend_language)
9697 {
9698   gdb_assert (! this_cu->is_debug_types);
9699
9700   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9701                            load_full_comp_unit_reader, &pretend_language);
9702 }
9703
9704 /* Add a DIE to the delayed physname list.  */
9705
9706 static void
9707 add_to_method_list (struct type *type, int fnfield_index, int index,
9708                     const char *name, struct die_info *die,
9709                     struct dwarf2_cu *cu)
9710 {
9711   struct delayed_method_info mi;
9712   mi.type = type;
9713   mi.fnfield_index = fnfield_index;
9714   mi.index = index;
9715   mi.name = name;
9716   mi.die = die;
9717   cu->method_list.push_back (mi);
9718 }
9719
9720 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9721    "const" / "volatile".  If so, decrements LEN by the length of the
9722    modifier and return true.  Otherwise return false.  */
9723
9724 template<size_t N>
9725 static bool
9726 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9727 {
9728   size_t mod_len = sizeof (mod) - 1;
9729   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9730     {
9731       len -= mod_len;
9732       return true;
9733     }
9734   return false;
9735 }
9736
9737 /* Compute the physnames of any methods on the CU's method list.
9738
9739    The computation of method physnames is delayed in order to avoid the
9740    (bad) condition that one of the method's formal parameters is of an as yet
9741    incomplete type.  */
9742
9743 static void
9744 compute_delayed_physnames (struct dwarf2_cu *cu)
9745 {
9746   /* Only C++ delays computing physnames.  */
9747   if (cu->method_list.empty ())
9748     return;
9749   gdb_assert (cu->language == language_cplus);
9750
9751   for (const delayed_method_info &mi : cu->method_list)
9752     {
9753       const char *physname;
9754       struct fn_fieldlist *fn_flp
9755         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9756       physname = dwarf2_physname (mi.name, mi.die, cu);
9757       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9758         = physname ? physname : "";
9759
9760       /* Since there's no tag to indicate whether a method is a
9761          const/volatile overload, extract that information out of the
9762          demangled name.  */
9763       if (physname != NULL)
9764         {
9765           size_t len = strlen (physname);
9766
9767           while (1)
9768             {
9769               if (physname[len] == ')') /* shortcut */
9770                 break;
9771               else if (check_modifier (physname, len, " const"))
9772                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9773               else if (check_modifier (physname, len, " volatile"))
9774                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9775               else
9776                 break;
9777             }
9778         }
9779     }
9780
9781   /* The list is no longer needed.  */
9782   cu->method_list.clear ();
9783 }
9784
9785 /* Go objects should be embedded in a DW_TAG_module DIE,
9786    and it's not clear if/how imported objects will appear.
9787    To keep Go support simple until that's worked out,
9788    go back through what we've read and create something usable.
9789    We could do this while processing each DIE, and feels kinda cleaner,
9790    but that way is more invasive.
9791    This is to, for example, allow the user to type "p var" or "b main"
9792    without having to specify the package name, and allow lookups
9793    of module.object to work in contexts that use the expression
9794    parser.  */
9795
9796 static void
9797 fixup_go_packaging (struct dwarf2_cu *cu)
9798 {
9799   char *package_name = NULL;
9800   struct pending *list;
9801   int i;
9802
9803   for (list = *cu->get_builder ()->get_global_symbols ();
9804        list != NULL;
9805        list = list->next)
9806     {
9807       for (i = 0; i < list->nsyms; ++i)
9808         {
9809           struct symbol *sym = list->symbol[i];
9810
9811           if (SYMBOL_LANGUAGE (sym) == language_go
9812               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9813             {
9814               char *this_package_name = go_symbol_package_name (sym);
9815
9816               if (this_package_name == NULL)
9817                 continue;
9818               if (package_name == NULL)
9819                 package_name = this_package_name;
9820               else
9821                 {
9822                   struct objfile *objfile
9823                     = cu->per_cu->dwarf2_per_objfile->objfile;
9824                   if (strcmp (package_name, this_package_name) != 0)
9825                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9826                                (symbol_symtab (sym) != NULL
9827                                 ? symtab_to_filename_for_display
9828                                     (symbol_symtab (sym))
9829                                 : objfile_name (objfile)),
9830                                this_package_name, package_name);
9831                   xfree (this_package_name);
9832                 }
9833             }
9834         }
9835     }
9836
9837   if (package_name != NULL)
9838     {
9839       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9840       const char *saved_package_name
9841         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9842                                         package_name,
9843                                         strlen (package_name));
9844       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9845                                      saved_package_name);
9846       struct symbol *sym;
9847
9848       sym = allocate_symbol (objfile);
9849       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9850       SYMBOL_SET_NAMES (sym, saved_package_name,
9851                         strlen (saved_package_name), 0, objfile);
9852       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9853          e.g., "main" finds the "main" module and not C's main().  */
9854       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9855       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9856       SYMBOL_TYPE (sym) = type;
9857
9858       add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9859
9860       xfree (package_name);
9861     }
9862 }
9863
9864 /* Allocate a fully-qualified name consisting of the two parts on the
9865    obstack.  */
9866
9867 static const char *
9868 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9869 {
9870   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9871 }
9872
9873 /* A helper that allocates a struct discriminant_info to attach to a
9874    union type.  */
9875
9876 static struct discriminant_info *
9877 alloc_discriminant_info (struct type *type, int discriminant_index,
9878                          int default_index)
9879 {
9880   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9881   gdb_assert (discriminant_index == -1
9882               || (discriminant_index >= 0
9883                   && discriminant_index < TYPE_NFIELDS (type)));
9884   gdb_assert (default_index == -1
9885               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9886
9887   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9888
9889   struct discriminant_info *disc
9890     = ((struct discriminant_info *)
9891        TYPE_ZALLOC (type,
9892                     offsetof (struct discriminant_info, discriminants)
9893                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9894   disc->default_index = default_index;
9895   disc->discriminant_index = discriminant_index;
9896
9897   struct dynamic_prop prop;
9898   prop.kind = PROP_UNDEFINED;
9899   prop.data.baton = disc;
9900
9901   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9902
9903   return disc;
9904 }
9905
9906 /* Some versions of rustc emitted enums in an unusual way.
9907
9908    Ordinary enums were emitted as unions.  The first element of each
9909    structure in the union was named "RUST$ENUM$DISR".  This element
9910    held the discriminant.
9911
9912    These versions of Rust also implemented the "non-zero"
9913    optimization.  When the enum had two values, and one is empty and
9914    the other holds a pointer that cannot be zero, the pointer is used
9915    as the discriminant, with a zero value meaning the empty variant.
9916    Here, the union's first member is of the form
9917    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9918    where the fieldnos are the indices of the fields that should be
9919    traversed in order to find the field (which may be several fields deep)
9920    and the variantname is the name of the variant of the case when the
9921    field is zero.
9922
9923    This function recognizes whether TYPE is of one of these forms,
9924    and, if so, smashes it to be a variant type.  */
9925
9926 static void
9927 quirk_rust_enum (struct type *type, struct objfile *objfile)
9928 {
9929   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9930
9931   /* We don't need to deal with empty enums.  */
9932   if (TYPE_NFIELDS (type) == 0)
9933     return;
9934
9935 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9936   if (TYPE_NFIELDS (type) == 1
9937       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9938     {
9939       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9940
9941       /* Decode the field name to find the offset of the
9942          discriminant.  */
9943       ULONGEST bit_offset = 0;
9944       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9945       while (name[0] >= '0' && name[0] <= '9')
9946         {
9947           char *tail;
9948           unsigned long index = strtoul (name, &tail, 10);
9949           name = tail;
9950           if (*name != '$'
9951               || index >= TYPE_NFIELDS (field_type)
9952               || (TYPE_FIELD_LOC_KIND (field_type, index)
9953                   != FIELD_LOC_KIND_BITPOS))
9954             {
9955               complaint (_("Could not parse Rust enum encoding string \"%s\""
9956                            "[in module %s]"),
9957                          TYPE_FIELD_NAME (type, 0),
9958                          objfile_name (objfile));
9959               return;
9960             }
9961           ++name;
9962
9963           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9964           field_type = TYPE_FIELD_TYPE (field_type, index);
9965         }
9966
9967       /* Make a union to hold the variants.  */
9968       struct type *union_type = alloc_type (objfile);
9969       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9970       TYPE_NFIELDS (union_type) = 3;
9971       TYPE_FIELDS (union_type)
9972         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9973       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9974       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9975
9976       /* Put the discriminant must at index 0.  */
9977       TYPE_FIELD_TYPE (union_type, 0) = field_type;
9978       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
9979       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
9980       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
9981
9982       /* The order of fields doesn't really matter, so put the real
9983          field at index 1 and the data-less field at index 2.  */
9984       struct discriminant_info *disc
9985         = alloc_discriminant_info (union_type, 0, 1);
9986       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
9987       TYPE_FIELD_NAME (union_type, 1)
9988         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
9989       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
9990         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9991                               TYPE_FIELD_NAME (union_type, 1));
9992
9993       const char *dataless_name
9994         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9995                               name);
9996       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
9997                                               dataless_name);
9998       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
9999       /* NAME points into the original discriminant name, which
10000          already has the correct lifetime.  */
10001       TYPE_FIELD_NAME (union_type, 2) = name;
10002       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10003       disc->discriminants[2] = 0;
10004
10005       /* Smash this type to be a structure type.  We have to do this
10006          because the type has already been recorded.  */
10007       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10008       TYPE_NFIELDS (type) = 1;
10009       TYPE_FIELDS (type)
10010         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10011
10012       /* Install the variant part.  */
10013       TYPE_FIELD_TYPE (type, 0) = union_type;
10014       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10015       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10016     }
10017   else if (TYPE_NFIELDS (type) == 1)
10018     {
10019       /* We assume that a union with a single field is a univariant
10020          enum.  */
10021       /* Smash this type to be a structure type.  We have to do this
10022          because the type has already been recorded.  */
10023       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10024
10025       /* Make a union to hold the variants.  */
10026       struct type *union_type = alloc_type (objfile);
10027       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10028       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10029       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10030       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10031       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10032
10033       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10034       const char *variant_name
10035         = rust_last_path_segment (TYPE_NAME (field_type));
10036       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10037       TYPE_NAME (field_type)
10038         = rust_fully_qualify (&objfile->objfile_obstack,
10039                               TYPE_NAME (type), variant_name);
10040
10041       /* Install the union in the outer struct type.  */
10042       TYPE_NFIELDS (type) = 1;
10043       TYPE_FIELDS (type)
10044         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10045       TYPE_FIELD_TYPE (type, 0) = union_type;
10046       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10047       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10048
10049       alloc_discriminant_info (union_type, -1, 0);
10050     }
10051   else
10052     {
10053       struct type *disr_type = nullptr;
10054       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10055         {
10056           disr_type = TYPE_FIELD_TYPE (type, i);
10057
10058           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10059             {
10060               /* All fields of a true enum will be structs.  */
10061               return;
10062             }
10063           else if (TYPE_NFIELDS (disr_type) == 0)
10064             {
10065               /* Could be data-less variant, so keep going.  */
10066               disr_type = nullptr;
10067             }
10068           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10069                            "RUST$ENUM$DISR") != 0)
10070             {
10071               /* Not a Rust enum.  */
10072               return;
10073             }
10074           else
10075             {
10076               /* Found one.  */
10077               break;
10078             }
10079         }
10080
10081       /* If we got here without a discriminant, then it's probably
10082          just a union.  */
10083       if (disr_type == nullptr)
10084         return;
10085
10086       /* Smash this type to be a structure type.  We have to do this
10087          because the type has already been recorded.  */
10088       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10089
10090       /* Make a union to hold the variants.  */
10091       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10092       struct type *union_type = alloc_type (objfile);
10093       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10094       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10095       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10096       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10097       TYPE_FIELDS (union_type)
10098         = (struct field *) TYPE_ZALLOC (union_type,
10099                                         (TYPE_NFIELDS (union_type)
10100                                          * sizeof (struct field)));
10101
10102       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10103               TYPE_NFIELDS (type) * sizeof (struct field));
10104
10105       /* Install the discriminant at index 0 in the union.  */
10106       TYPE_FIELD (union_type, 0) = *disr_field;
10107       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10108       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10109
10110       /* Install the union in the outer struct type.  */
10111       TYPE_FIELD_TYPE (type, 0) = union_type;
10112       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10113       TYPE_NFIELDS (type) = 1;
10114
10115       /* Set the size and offset of the union type.  */
10116       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10117
10118       /* We need a way to find the correct discriminant given a
10119          variant name.  For convenience we build a map here.  */
10120       struct type *enum_type = FIELD_TYPE (*disr_field);
10121       std::unordered_map<std::string, ULONGEST> discriminant_map;
10122       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10123         {
10124           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10125             {
10126               const char *name
10127                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10128               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10129             }
10130         }
10131
10132       int n_fields = TYPE_NFIELDS (union_type);
10133       struct discriminant_info *disc
10134         = alloc_discriminant_info (union_type, 0, -1);
10135       /* Skip the discriminant here.  */
10136       for (int i = 1; i < n_fields; ++i)
10137         {
10138           /* Find the final word in the name of this variant's type.
10139              That name can be used to look up the correct
10140              discriminant.  */
10141           const char *variant_name
10142             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10143                                                                   i)));
10144
10145           auto iter = discriminant_map.find (variant_name);
10146           if (iter != discriminant_map.end ())
10147             disc->discriminants[i] = iter->second;
10148
10149           /* Remove the discriminant field, if it exists.  */
10150           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10151           if (TYPE_NFIELDS (sub_type) > 0)
10152             {
10153               --TYPE_NFIELDS (sub_type);
10154               ++TYPE_FIELDS (sub_type);
10155             }
10156           TYPE_FIELD_NAME (union_type, i) = variant_name;
10157           TYPE_NAME (sub_type)
10158             = rust_fully_qualify (&objfile->objfile_obstack,
10159                                   TYPE_NAME (type), variant_name);
10160         }
10161     }
10162 }
10163
10164 /* Rewrite some Rust unions to be structures with variants parts.  */
10165
10166 static void
10167 rust_union_quirks (struct dwarf2_cu *cu)
10168 {
10169   gdb_assert (cu->language == language_rust);
10170   for (type *type_ : cu->rust_unions)
10171     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10172   /* We don't need this any more.  */
10173   cu->rust_unions.clear ();
10174 }
10175
10176 /* Return the symtab for PER_CU.  This works properly regardless of
10177    whether we're using the index or psymtabs.  */
10178
10179 static struct compunit_symtab *
10180 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10181 {
10182   return (per_cu->dwarf2_per_objfile->using_index
10183           ? per_cu->v.quick->compunit_symtab
10184           : per_cu->v.psymtab->compunit_symtab);
10185 }
10186
10187 /* A helper function for computing the list of all symbol tables
10188    included by PER_CU.  */
10189
10190 static void
10191 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
10192                                 htab_t all_children, htab_t all_type_symtabs,
10193                                 struct dwarf2_per_cu_data *per_cu,
10194                                 struct compunit_symtab *immediate_parent)
10195 {
10196   void **slot;
10197   int ix;
10198   struct compunit_symtab *cust;
10199   struct dwarf2_per_cu_data *iter;
10200
10201   slot = htab_find_slot (all_children, per_cu, INSERT);
10202   if (*slot != NULL)
10203     {
10204       /* This inclusion and its children have been processed.  */
10205       return;
10206     }
10207
10208   *slot = per_cu;
10209   /* Only add a CU if it has a symbol table.  */
10210   cust = get_compunit_symtab (per_cu);
10211   if (cust != NULL)
10212     {
10213       /* If this is a type unit only add its symbol table if we haven't
10214          seen it yet (type unit per_cu's can share symtabs).  */
10215       if (per_cu->is_debug_types)
10216         {
10217           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10218           if (*slot == NULL)
10219             {
10220               *slot = cust;
10221               result->push_back (cust);
10222               if (cust->user == NULL)
10223                 cust->user = immediate_parent;
10224             }
10225         }
10226       else
10227         {
10228           result->push_back (cust);
10229           if (cust->user == NULL)
10230             cust->user = immediate_parent;
10231         }
10232     }
10233
10234   for (ix = 0;
10235        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10236        ++ix)
10237     {
10238       recursively_compute_inclusions (result, all_children,
10239                                       all_type_symtabs, iter, cust);
10240     }
10241 }
10242
10243 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10244    PER_CU.  */
10245
10246 static void
10247 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10248 {
10249   gdb_assert (! per_cu->is_debug_types);
10250
10251   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10252     {
10253       int ix, len;
10254       struct dwarf2_per_cu_data *per_cu_iter;
10255       std::vector<compunit_symtab *> result_symtabs;
10256       htab_t all_children, all_type_symtabs;
10257       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10258
10259       /* If we don't have a symtab, we can just skip this case.  */
10260       if (cust == NULL)
10261         return;
10262
10263       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10264                                         NULL, xcalloc, xfree);
10265       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10266                                             NULL, xcalloc, xfree);
10267
10268       for (ix = 0;
10269            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10270                         ix, per_cu_iter);
10271            ++ix)
10272         {
10273           recursively_compute_inclusions (&result_symtabs, all_children,
10274                                           all_type_symtabs, per_cu_iter,
10275                                           cust);
10276         }
10277
10278       /* Now we have a transitive closure of all the included symtabs.  */
10279       len = result_symtabs.size ();
10280       cust->includes
10281         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10282                      struct compunit_symtab *, len + 1);
10283       memcpy (cust->includes, result_symtabs.data (),
10284               len * sizeof (compunit_symtab *));
10285       cust->includes[len] = NULL;
10286
10287       htab_delete (all_children);
10288       htab_delete (all_type_symtabs);
10289     }
10290 }
10291
10292 /* Compute the 'includes' field for the symtabs of all the CUs we just
10293    read.  */
10294
10295 static void
10296 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10297 {
10298   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10299     {
10300       if (! iter->is_debug_types)
10301         compute_compunit_symtab_includes (iter);
10302     }
10303
10304   dwarf2_per_objfile->just_read_cus.clear ();
10305 }
10306
10307 /* Generate full symbol information for PER_CU, whose DIEs have
10308    already been loaded into memory.  */
10309
10310 static void
10311 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10312                         enum language pretend_language)
10313 {
10314   struct dwarf2_cu *cu = per_cu->cu;
10315   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10316   struct objfile *objfile = dwarf2_per_objfile->objfile;
10317   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10318   CORE_ADDR lowpc, highpc;
10319   struct compunit_symtab *cust;
10320   CORE_ADDR baseaddr;
10321   struct block *static_block;
10322   CORE_ADDR addr;
10323
10324   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10325
10326   /* Clear the list here in case something was left over.  */
10327   cu->method_list.clear ();
10328
10329   cu->language = pretend_language;
10330   cu->language_defn = language_def (cu->language);
10331
10332   /* Do line number decoding in read_file_scope () */
10333   process_die (cu->dies, cu);
10334
10335   /* For now fudge the Go package.  */
10336   if (cu->language == language_go)
10337     fixup_go_packaging (cu);
10338
10339   /* Now that we have processed all the DIEs in the CU, all the types 
10340      should be complete, and it should now be safe to compute all of the
10341      physnames.  */
10342   compute_delayed_physnames (cu);
10343
10344   if (cu->language == language_rust)
10345     rust_union_quirks (cu);
10346
10347   /* Some compilers don't define a DW_AT_high_pc attribute for the
10348      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10349      it, by scanning the DIE's below the compilation unit.  */
10350   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10351
10352   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10353   static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
10354
10355   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10356      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10357      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10358      addrmap to help ensure it has an accurate map of pc values belonging to
10359      this comp unit.  */
10360   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10361
10362   cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10363                                                     SECT_OFF_TEXT (objfile),
10364                                                     0);
10365
10366   if (cust != NULL)
10367     {
10368       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10369
10370       /* Set symtab language to language from DW_AT_language.  If the
10371          compilation is from a C file generated by language preprocessors, do
10372          not set the language if it was already deduced by start_subfile.  */
10373       if (!(cu->language == language_c
10374             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10375         COMPUNIT_FILETABS (cust)->language = cu->language;
10376
10377       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10378          produce DW_AT_location with location lists but it can be possibly
10379          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10380          there were bugs in prologue debug info, fixed later in GCC-4.5
10381          by "unwind info for epilogues" patch (which is not directly related).
10382
10383          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10384          needed, it would be wrong due to missing DW_AT_producer there.
10385
10386          Still one can confuse GDB by using non-standard GCC compilation
10387          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10388          */ 
10389       if (cu->has_loclist && gcc_4_minor >= 5)
10390         cust->locations_valid = 1;
10391
10392       if (gcc_4_minor >= 5)
10393         cust->epilogue_unwind_valid = 1;
10394
10395       cust->call_site_htab = cu->call_site_htab;
10396     }
10397
10398   if (dwarf2_per_objfile->using_index)
10399     per_cu->v.quick->compunit_symtab = cust;
10400   else
10401     {
10402       struct partial_symtab *pst = per_cu->v.psymtab;
10403       pst->compunit_symtab = cust;
10404       pst->readin = 1;
10405     }
10406
10407   /* Push it for inclusion processing later.  */
10408   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10409
10410   /* Not needed any more.  */
10411   cu->reset_builder ();
10412 }
10413
10414 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10415    already been loaded into memory.  */
10416
10417 static void
10418 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10419                         enum language pretend_language)
10420 {
10421   struct dwarf2_cu *cu = per_cu->cu;
10422   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10423   struct objfile *objfile = dwarf2_per_objfile->objfile;
10424   struct compunit_symtab *cust;
10425   struct signatured_type *sig_type;
10426
10427   gdb_assert (per_cu->is_debug_types);
10428   sig_type = (struct signatured_type *) per_cu;
10429
10430   /* Clear the list here in case something was left over.  */
10431   cu->method_list.clear ();
10432
10433   cu->language = pretend_language;
10434   cu->language_defn = language_def (cu->language);
10435
10436   /* The symbol tables are set up in read_type_unit_scope.  */
10437   process_die (cu->dies, cu);
10438
10439   /* For now fudge the Go package.  */
10440   if (cu->language == language_go)
10441     fixup_go_packaging (cu);
10442
10443   /* Now that we have processed all the DIEs in the CU, all the types 
10444      should be complete, and it should now be safe to compute all of the
10445      physnames.  */
10446   compute_delayed_physnames (cu);
10447
10448   if (cu->language == language_rust)
10449     rust_union_quirks (cu);
10450
10451   /* TUs share symbol tables.
10452      If this is the first TU to use this symtab, complete the construction
10453      of it with end_expandable_symtab.  Otherwise, complete the addition of
10454      this TU's symbols to the existing symtab.  */
10455   if (sig_type->type_unit_group->compunit_symtab == NULL)
10456     {
10457       buildsym_compunit *builder = cu->get_builder ();
10458       cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10459       sig_type->type_unit_group->compunit_symtab = cust;
10460
10461       if (cust != NULL)
10462         {
10463           /* Set symtab language to language from DW_AT_language.  If the
10464              compilation is from a C file generated by language preprocessors,
10465              do not set the language if it was already deduced by
10466              start_subfile.  */
10467           if (!(cu->language == language_c
10468                 && COMPUNIT_FILETABS (cust)->language != language_c))
10469             COMPUNIT_FILETABS (cust)->language = cu->language;
10470         }
10471     }
10472   else
10473     {
10474       cu->get_builder ()->augment_type_symtab ();
10475       cust = sig_type->type_unit_group->compunit_symtab;
10476     }
10477
10478   if (dwarf2_per_objfile->using_index)
10479     per_cu->v.quick->compunit_symtab = cust;
10480   else
10481     {
10482       struct partial_symtab *pst = per_cu->v.psymtab;
10483       pst->compunit_symtab = cust;
10484       pst->readin = 1;
10485     }
10486
10487   /* Not needed any more.  */
10488   cu->reset_builder ();
10489 }
10490
10491 /* Process an imported unit DIE.  */
10492
10493 static void
10494 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10495 {
10496   struct attribute *attr;
10497
10498   /* For now we don't handle imported units in type units.  */
10499   if (cu->per_cu->is_debug_types)
10500     {
10501       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10502                " supported in type units [in module %s]"),
10503              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10504     }
10505
10506   attr = dwarf2_attr (die, DW_AT_import, cu);
10507   if (attr != NULL)
10508     {
10509       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10510       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10511       dwarf2_per_cu_data *per_cu
10512         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10513                                             cu->per_cu->dwarf2_per_objfile);
10514
10515       /* If necessary, add it to the queue and load its DIEs.  */
10516       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10517         load_full_comp_unit (per_cu, false, cu->language);
10518
10519       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10520                      per_cu);
10521     }
10522 }
10523
10524 /* RAII object that represents a process_die scope: i.e.,
10525    starts/finishes processing a DIE.  */
10526 class process_die_scope
10527 {
10528 public:
10529   process_die_scope (die_info *die, dwarf2_cu *cu)
10530     : m_die (die), m_cu (cu)
10531   {
10532     /* We should only be processing DIEs not already in process.  */
10533     gdb_assert (!m_die->in_process);
10534     m_die->in_process = true;
10535   }
10536
10537   ~process_die_scope ()
10538   {
10539     m_die->in_process = false;
10540
10541     /* If we're done processing the DIE for the CU that owns the line
10542        header, we don't need the line header anymore.  */
10543     if (m_cu->line_header_die_owner == m_die)
10544       {
10545         delete m_cu->line_header;
10546         m_cu->line_header = NULL;
10547         m_cu->line_header_die_owner = NULL;
10548       }
10549   }
10550
10551 private:
10552   die_info *m_die;
10553   dwarf2_cu *m_cu;
10554 };
10555
10556 /* Process a die and its children.  */
10557
10558 static void
10559 process_die (struct die_info *die, struct dwarf2_cu *cu)
10560 {
10561   process_die_scope scope (die, cu);
10562
10563   switch (die->tag)
10564     {
10565     case DW_TAG_padding:
10566       break;
10567     case DW_TAG_compile_unit:
10568     case DW_TAG_partial_unit:
10569       read_file_scope (die, cu);
10570       break;
10571     case DW_TAG_type_unit:
10572       read_type_unit_scope (die, cu);
10573       break;
10574     case DW_TAG_subprogram:
10575     case DW_TAG_inlined_subroutine:
10576       read_func_scope (die, cu);
10577       break;
10578     case DW_TAG_lexical_block:
10579     case DW_TAG_try_block:
10580     case DW_TAG_catch_block:
10581       read_lexical_block_scope (die, cu);
10582       break;
10583     case DW_TAG_call_site:
10584     case DW_TAG_GNU_call_site:
10585       read_call_site_scope (die, cu);
10586       break;
10587     case DW_TAG_class_type:
10588     case DW_TAG_interface_type:
10589     case DW_TAG_structure_type:
10590     case DW_TAG_union_type:
10591       process_structure_scope (die, cu);
10592       break;
10593     case DW_TAG_enumeration_type:
10594       process_enumeration_scope (die, cu);
10595       break;
10596
10597     /* These dies have a type, but processing them does not create
10598        a symbol or recurse to process the children.  Therefore we can
10599        read them on-demand through read_type_die.  */
10600     case DW_TAG_subroutine_type:
10601     case DW_TAG_set_type:
10602     case DW_TAG_array_type:
10603     case DW_TAG_pointer_type:
10604     case DW_TAG_ptr_to_member_type:
10605     case DW_TAG_reference_type:
10606     case DW_TAG_rvalue_reference_type:
10607     case DW_TAG_string_type:
10608       break;
10609
10610     case DW_TAG_base_type:
10611     case DW_TAG_subrange_type:
10612     case DW_TAG_typedef:
10613       /* Add a typedef symbol for the type definition, if it has a
10614          DW_AT_name.  */
10615       new_symbol (die, read_type_die (die, cu), cu);
10616       break;
10617     case DW_TAG_common_block:
10618       read_common_block (die, cu);
10619       break;
10620     case DW_TAG_common_inclusion:
10621       break;
10622     case DW_TAG_namespace:
10623       cu->processing_has_namespace_info = true;
10624       read_namespace (die, cu);
10625       break;
10626     case DW_TAG_module:
10627       cu->processing_has_namespace_info = true;
10628       read_module (die, cu);
10629       break;
10630     case DW_TAG_imported_declaration:
10631       cu->processing_has_namespace_info = true;
10632       if (read_namespace_alias (die, cu))
10633         break;
10634       /* The declaration is not a global namespace alias.  */
10635       /* Fall through.  */
10636     case DW_TAG_imported_module:
10637       cu->processing_has_namespace_info = true;
10638       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10639                                  || cu->language != language_fortran))
10640         complaint (_("Tag '%s' has unexpected children"),
10641                    dwarf_tag_name (die->tag));
10642       read_import_statement (die, cu);
10643       break;
10644
10645     case DW_TAG_imported_unit:
10646       process_imported_unit_die (die, cu);
10647       break;
10648
10649     case DW_TAG_variable:
10650       read_variable (die, cu);
10651       break;
10652
10653     default:
10654       new_symbol (die, NULL, cu);
10655       break;
10656     }
10657 }
10658 \f
10659 /* DWARF name computation.  */
10660
10661 /* A helper function for dwarf2_compute_name which determines whether DIE
10662    needs to have the name of the scope prepended to the name listed in the
10663    die.  */
10664
10665 static int
10666 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10667 {
10668   struct attribute *attr;
10669
10670   switch (die->tag)
10671     {
10672     case DW_TAG_namespace:
10673     case DW_TAG_typedef:
10674     case DW_TAG_class_type:
10675     case DW_TAG_interface_type:
10676     case DW_TAG_structure_type:
10677     case DW_TAG_union_type:
10678     case DW_TAG_enumeration_type:
10679     case DW_TAG_enumerator:
10680     case DW_TAG_subprogram:
10681     case DW_TAG_inlined_subroutine:
10682     case DW_TAG_member:
10683     case DW_TAG_imported_declaration:
10684       return 1;
10685
10686     case DW_TAG_variable:
10687     case DW_TAG_constant:
10688       /* We only need to prefix "globally" visible variables.  These include
10689          any variable marked with DW_AT_external or any variable that
10690          lives in a namespace.  [Variables in anonymous namespaces
10691          require prefixing, but they are not DW_AT_external.]  */
10692
10693       if (dwarf2_attr (die, DW_AT_specification, cu))
10694         {
10695           struct dwarf2_cu *spec_cu = cu;
10696
10697           return die_needs_namespace (die_specification (die, &spec_cu),
10698                                       spec_cu);
10699         }
10700
10701       attr = dwarf2_attr (die, DW_AT_external, cu);
10702       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10703           && die->parent->tag != DW_TAG_module)
10704         return 0;
10705       /* A variable in a lexical block of some kind does not need a
10706          namespace, even though in C++ such variables may be external
10707          and have a mangled name.  */
10708       if (die->parent->tag ==  DW_TAG_lexical_block
10709           || die->parent->tag ==  DW_TAG_try_block
10710           || die->parent->tag ==  DW_TAG_catch_block
10711           || die->parent->tag == DW_TAG_subprogram)
10712         return 0;
10713       return 1;
10714
10715     default:
10716       return 0;
10717     }
10718 }
10719
10720 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10721    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10722    defined for the given DIE.  */
10723
10724 static struct attribute *
10725 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10726 {
10727   struct attribute *attr;
10728
10729   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10730   if (attr == NULL)
10731     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10732
10733   return attr;
10734 }
10735
10736 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10737    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10738    defined for the given DIE.  */
10739
10740 static const char *
10741 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10742 {
10743   const char *linkage_name;
10744
10745   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10746   if (linkage_name == NULL)
10747     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10748
10749   return linkage_name;
10750 }
10751
10752 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10753    compute the physname for the object, which include a method's:
10754    - formal parameters (C++),
10755    - receiver type (Go),
10756
10757    The term "physname" is a bit confusing.
10758    For C++, for example, it is the demangled name.
10759    For Go, for example, it's the mangled name.
10760
10761    For Ada, return the DIE's linkage name rather than the fully qualified
10762    name.  PHYSNAME is ignored..
10763
10764    The result is allocated on the objfile_obstack and canonicalized.  */
10765
10766 static const char *
10767 dwarf2_compute_name (const char *name,
10768                      struct die_info *die, struct dwarf2_cu *cu,
10769                      int physname)
10770 {
10771   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10772
10773   if (name == NULL)
10774     name = dwarf2_name (die, cu);
10775
10776   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10777      but otherwise compute it by typename_concat inside GDB.
10778      FIXME: Actually this is not really true, or at least not always true.
10779      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10780      Fortran names because there is no mangling standard.  So new_symbol
10781      will set the demangled name to the result of dwarf2_full_name, and it is
10782      the demangled name that GDB uses if it exists.  */
10783   if (cu->language == language_ada
10784       || (cu->language == language_fortran && physname))
10785     {
10786       /* For Ada unit, we prefer the linkage name over the name, as
10787          the former contains the exported name, which the user expects
10788          to be able to reference.  Ideally, we want the user to be able
10789          to reference this entity using either natural or linkage name,
10790          but we haven't started looking at this enhancement yet.  */
10791       const char *linkage_name = dw2_linkage_name (die, cu);
10792
10793       if (linkage_name != NULL)
10794         return linkage_name;
10795     }
10796
10797   /* These are the only languages we know how to qualify names in.  */
10798   if (name != NULL
10799       && (cu->language == language_cplus
10800           || cu->language == language_fortran || cu->language == language_d
10801           || cu->language == language_rust))
10802     {
10803       if (die_needs_namespace (die, cu))
10804         {
10805           const char *prefix;
10806           const char *canonical_name = NULL;
10807
10808           string_file buf;
10809
10810           prefix = determine_prefix (die, cu);
10811           if (*prefix != '\0')
10812             {
10813               char *prefixed_name = typename_concat (NULL, prefix, name,
10814                                                      physname, cu);
10815
10816               buf.puts (prefixed_name);
10817               xfree (prefixed_name);
10818             }
10819           else
10820             buf.puts (name);
10821
10822           /* Template parameters may be specified in the DIE's DW_AT_name, or
10823              as children with DW_TAG_template_type_param or
10824              DW_TAG_value_type_param.  If the latter, add them to the name
10825              here.  If the name already has template parameters, then
10826              skip this step; some versions of GCC emit both, and
10827              it is more efficient to use the pre-computed name.
10828
10829              Something to keep in mind about this process: it is very
10830              unlikely, or in some cases downright impossible, to produce
10831              something that will match the mangled name of a function.
10832              If the definition of the function has the same debug info,
10833              we should be able to match up with it anyway.  But fallbacks
10834              using the minimal symbol, for instance to find a method
10835              implemented in a stripped copy of libstdc++, will not work.
10836              If we do not have debug info for the definition, we will have to
10837              match them up some other way.
10838
10839              When we do name matching there is a related problem with function
10840              templates; two instantiated function templates are allowed to
10841              differ only by their return types, which we do not add here.  */
10842
10843           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10844             {
10845               struct attribute *attr;
10846               struct die_info *child;
10847               int first = 1;
10848
10849               die->building_fullname = 1;
10850
10851               for (child = die->child; child != NULL; child = child->sibling)
10852                 {
10853                   struct type *type;
10854                   LONGEST value;
10855                   const gdb_byte *bytes;
10856                   struct dwarf2_locexpr_baton *baton;
10857                   struct value *v;
10858
10859                   if (child->tag != DW_TAG_template_type_param
10860                       && child->tag != DW_TAG_template_value_param)
10861                     continue;
10862
10863                   if (first)
10864                     {
10865                       buf.puts ("<");
10866                       first = 0;
10867                     }
10868                   else
10869                     buf.puts (", ");
10870
10871                   attr = dwarf2_attr (child, DW_AT_type, cu);
10872                   if (attr == NULL)
10873                     {
10874                       complaint (_("template parameter missing DW_AT_type"));
10875                       buf.puts ("UNKNOWN_TYPE");
10876                       continue;
10877                     }
10878                   type = die_type (child, cu);
10879
10880                   if (child->tag == DW_TAG_template_type_param)
10881                     {
10882                       c_print_type (type, "", &buf, -1, 0, cu->language,
10883                                     &type_print_raw_options);
10884                       continue;
10885                     }
10886
10887                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10888                   if (attr == NULL)
10889                     {
10890                       complaint (_("template parameter missing "
10891                                    "DW_AT_const_value"));
10892                       buf.puts ("UNKNOWN_VALUE");
10893                       continue;
10894                     }
10895
10896                   dwarf2_const_value_attr (attr, type, name,
10897                                            &cu->comp_unit_obstack, cu,
10898                                            &value, &bytes, &baton);
10899
10900                   if (TYPE_NOSIGN (type))
10901                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10902                        changed, this can use value_print instead.  */
10903                     c_printchar (value, type, &buf);
10904                   else
10905                     {
10906                       struct value_print_options opts;
10907
10908                       if (baton != NULL)
10909                         v = dwarf2_evaluate_loc_desc (type, NULL,
10910                                                       baton->data,
10911                                                       baton->size,
10912                                                       baton->per_cu);
10913                       else if (bytes != NULL)
10914                         {
10915                           v = allocate_value (type);
10916                           memcpy (value_contents_writeable (v), bytes,
10917                                   TYPE_LENGTH (type));
10918                         }
10919                       else
10920                         v = value_from_longest (type, value);
10921
10922                       /* Specify decimal so that we do not depend on
10923                          the radix.  */
10924                       get_formatted_print_options (&opts, 'd');
10925                       opts.raw = 1;
10926                       value_print (v, &buf, &opts);
10927                       release_value (v);
10928                     }
10929                 }
10930
10931               die->building_fullname = 0;
10932
10933               if (!first)
10934                 {
10935                   /* Close the argument list, with a space if necessary
10936                      (nested templates).  */
10937                   if (!buf.empty () && buf.string ().back () == '>')
10938                     buf.puts (" >");
10939                   else
10940                     buf.puts (">");
10941                 }
10942             }
10943
10944           /* For C++ methods, append formal parameter type
10945              information, if PHYSNAME.  */
10946
10947           if (physname && die->tag == DW_TAG_subprogram
10948               && cu->language == language_cplus)
10949             {
10950               struct type *type = read_type_die (die, cu);
10951
10952               c_type_print_args (type, &buf, 1, cu->language,
10953                                  &type_print_raw_options);
10954
10955               if (cu->language == language_cplus)
10956                 {
10957                   /* Assume that an artificial first parameter is
10958                      "this", but do not crash if it is not.  RealView
10959                      marks unnamed (and thus unused) parameters as
10960                      artificial; there is no way to differentiate
10961                      the two cases.  */
10962                   if (TYPE_NFIELDS (type) > 0
10963                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10964                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10965                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10966                                                                         0))))
10967                     buf.puts (" const");
10968                 }
10969             }
10970
10971           const std::string &intermediate_name = buf.string ();
10972
10973           if (cu->language == language_cplus)
10974             canonical_name
10975               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
10976                                           &objfile->per_bfd->storage_obstack);
10977
10978           /* If we only computed INTERMEDIATE_NAME, or if
10979              INTERMEDIATE_NAME is already canonical, then we need to
10980              copy it to the appropriate obstack.  */
10981           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
10982             name = ((const char *)
10983                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
10984                                    intermediate_name.c_str (),
10985                                    intermediate_name.length ()));
10986           else
10987             name = canonical_name;
10988         }
10989     }
10990
10991   return name;
10992 }
10993
10994 /* Return the fully qualified name of DIE, based on its DW_AT_name.
10995    If scope qualifiers are appropriate they will be added.  The result
10996    will be allocated on the storage_obstack, or NULL if the DIE does
10997    not have a name.  NAME may either be from a previous call to
10998    dwarf2_name or NULL.
10999
11000    The output string will be canonicalized (if C++).  */
11001
11002 static const char *
11003 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11004 {
11005   return dwarf2_compute_name (name, die, cu, 0);
11006 }
11007
11008 /* Construct a physname for the given DIE in CU.  NAME may either be
11009    from a previous call to dwarf2_name or NULL.  The result will be
11010    allocated on the objfile_objstack or NULL if the DIE does not have a
11011    name.
11012
11013    The output string will be canonicalized (if C++).  */
11014
11015 static const char *
11016 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11017 {
11018   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11019   const char *retval, *mangled = NULL, *canon = NULL;
11020   int need_copy = 1;
11021
11022   /* In this case dwarf2_compute_name is just a shortcut not building anything
11023      on its own.  */
11024   if (!die_needs_namespace (die, cu))
11025     return dwarf2_compute_name (name, die, cu, 1);
11026
11027   mangled = dw2_linkage_name (die, cu);
11028
11029   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11030      See https://github.com/rust-lang/rust/issues/32925.  */
11031   if (cu->language == language_rust && mangled != NULL
11032       && strchr (mangled, '{') != NULL)
11033     mangled = NULL;
11034
11035   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11036      has computed.  */
11037   gdb::unique_xmalloc_ptr<char> demangled;
11038   if (mangled != NULL)
11039     {
11040
11041       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11042         {
11043           /* Do nothing (do not demangle the symbol name).  */
11044         }
11045       else if (cu->language == language_go)
11046         {
11047           /* This is a lie, but we already lie to the caller new_symbol.
11048              new_symbol assumes we return the mangled name.
11049              This just undoes that lie until things are cleaned up.  */
11050         }
11051       else
11052         {
11053           /* Use DMGL_RET_DROP for C++ template functions to suppress
11054              their return type.  It is easier for GDB users to search
11055              for such functions as `name(params)' than `long name(params)'.
11056              In such case the minimal symbol names do not match the full
11057              symbol names but for template functions there is never a need
11058              to look up their definition from their declaration so
11059              the only disadvantage remains the minimal symbol variant
11060              `long name(params)' does not have the proper inferior type.  */
11061           demangled.reset (gdb_demangle (mangled,
11062                                          (DMGL_PARAMS | DMGL_ANSI
11063                                           | DMGL_RET_DROP)));
11064         }
11065       if (demangled)
11066         canon = demangled.get ();
11067       else
11068         {
11069           canon = mangled;
11070           need_copy = 0;
11071         }
11072     }
11073
11074   if (canon == NULL || check_physname)
11075     {
11076       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11077
11078       if (canon != NULL && strcmp (physname, canon) != 0)
11079         {
11080           /* It may not mean a bug in GDB.  The compiler could also
11081              compute DW_AT_linkage_name incorrectly.  But in such case
11082              GDB would need to be bug-to-bug compatible.  */
11083
11084           complaint (_("Computed physname <%s> does not match demangled <%s> "
11085                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11086                      physname, canon, mangled, sect_offset_str (die->sect_off),
11087                      objfile_name (objfile));
11088
11089           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11090              is available here - over computed PHYSNAME.  It is safer
11091              against both buggy GDB and buggy compilers.  */
11092
11093           retval = canon;
11094         }
11095       else
11096         {
11097           retval = physname;
11098           need_copy = 0;
11099         }
11100     }
11101   else
11102     retval = canon;
11103
11104   if (need_copy)
11105     retval = ((const char *)
11106               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11107                              retval, strlen (retval)));
11108
11109   return retval;
11110 }
11111
11112 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11113    a new symbol for it.
11114
11115    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11116
11117 static int
11118 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11119 {
11120   struct attribute *attr;
11121
11122   /* If the die does not have a name, this is not a namespace
11123      alias.  */
11124   attr = dwarf2_attr (die, DW_AT_name, cu);
11125   if (attr != NULL)
11126     {
11127       int num;
11128       struct die_info *d = die;
11129       struct dwarf2_cu *imported_cu = cu;
11130
11131       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11132          keep inspecting DIEs until we hit the underlying import.  */
11133 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11134       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11135         {
11136           attr = dwarf2_attr (d, DW_AT_import, cu);
11137           if (attr == NULL)
11138             break;
11139
11140           d = follow_die_ref (d, attr, &imported_cu);
11141           if (d->tag != DW_TAG_imported_declaration)
11142             break;
11143         }
11144
11145       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11146         {
11147           complaint (_("DIE at %s has too many recursively imported "
11148                        "declarations"), sect_offset_str (d->sect_off));
11149           return 0;
11150         }
11151
11152       if (attr != NULL)
11153         {
11154           struct type *type;
11155           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11156
11157           type = get_die_type_at_offset (sect_off, cu->per_cu);
11158           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11159             {
11160               /* This declaration is a global namespace alias.  Add
11161                  a symbol for it whose type is the aliased namespace.  */
11162               new_symbol (die, type, cu);
11163               return 1;
11164             }
11165         }
11166     }
11167
11168   return 0;
11169 }
11170
11171 /* Return the using directives repository (global or local?) to use in the
11172    current context for CU.
11173
11174    For Ada, imported declarations can materialize renamings, which *may* be
11175    global.  However it is impossible (for now?) in DWARF to distinguish
11176    "external" imported declarations and "static" ones.  As all imported
11177    declarations seem to be static in all other languages, make them all CU-wide
11178    global only in Ada.  */
11179
11180 static struct using_direct **
11181 using_directives (struct dwarf2_cu *cu)
11182 {
11183   if (cu->language == language_ada
11184       && cu->get_builder ()->outermost_context_p ())
11185     return cu->get_builder ()->get_global_using_directives ();
11186   else
11187     return cu->get_builder ()->get_local_using_directives ();
11188 }
11189
11190 /* Read the import statement specified by the given die and record it.  */
11191
11192 static void
11193 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11194 {
11195   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11196   struct attribute *import_attr;
11197   struct die_info *imported_die, *child_die;
11198   struct dwarf2_cu *imported_cu;
11199   const char *imported_name;
11200   const char *imported_name_prefix;
11201   const char *canonical_name;
11202   const char *import_alias;
11203   const char *imported_declaration = NULL;
11204   const char *import_prefix;
11205   std::vector<const char *> excludes;
11206
11207   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11208   if (import_attr == NULL)
11209     {
11210       complaint (_("Tag '%s' has no DW_AT_import"),
11211                  dwarf_tag_name (die->tag));
11212       return;
11213     }
11214
11215   imported_cu = cu;
11216   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11217   imported_name = dwarf2_name (imported_die, imported_cu);
11218   if (imported_name == NULL)
11219     {
11220       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11221
11222         The import in the following code:
11223         namespace A
11224           {
11225             typedef int B;
11226           }
11227
11228         int main ()
11229           {
11230             using A::B;
11231             B b;
11232             return b;
11233           }
11234
11235         ...
11236          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11237             <52>   DW_AT_decl_file   : 1
11238             <53>   DW_AT_decl_line   : 6
11239             <54>   DW_AT_import      : <0x75>
11240          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11241             <59>   DW_AT_name        : B
11242             <5b>   DW_AT_decl_file   : 1
11243             <5c>   DW_AT_decl_line   : 2
11244             <5d>   DW_AT_type        : <0x6e>
11245         ...
11246          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11247             <76>   DW_AT_byte_size   : 4
11248             <77>   DW_AT_encoding    : 5        (signed)
11249
11250         imports the wrong die ( 0x75 instead of 0x58 ).
11251         This case will be ignored until the gcc bug is fixed.  */
11252       return;
11253     }
11254
11255   /* Figure out the local name after import.  */
11256   import_alias = dwarf2_name (die, cu);
11257
11258   /* Figure out where the statement is being imported to.  */
11259   import_prefix = determine_prefix (die, cu);
11260
11261   /* Figure out what the scope of the imported die is and prepend it
11262      to the name of the imported die.  */
11263   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11264
11265   if (imported_die->tag != DW_TAG_namespace
11266       && imported_die->tag != DW_TAG_module)
11267     {
11268       imported_declaration = imported_name;
11269       canonical_name = imported_name_prefix;
11270     }
11271   else if (strlen (imported_name_prefix) > 0)
11272     canonical_name = obconcat (&objfile->objfile_obstack,
11273                                imported_name_prefix,
11274                                (cu->language == language_d ? "." : "::"),
11275                                imported_name, (char *) NULL);
11276   else
11277     canonical_name = imported_name;
11278
11279   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11280     for (child_die = die->child; child_die && child_die->tag;
11281          child_die = sibling_die (child_die))
11282       {
11283         /* DWARF-4: A Fortran use statement with a “rename list” may be
11284            represented by an imported module entry with an import attribute
11285            referring to the module and owned entries corresponding to those
11286            entities that are renamed as part of being imported.  */
11287
11288         if (child_die->tag != DW_TAG_imported_declaration)
11289           {
11290             complaint (_("child DW_TAG_imported_declaration expected "
11291                          "- DIE at %s [in module %s]"),
11292                        sect_offset_str (child_die->sect_off),
11293                        objfile_name (objfile));
11294             continue;
11295           }
11296
11297         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11298         if (import_attr == NULL)
11299           {
11300             complaint (_("Tag '%s' has no DW_AT_import"),
11301                        dwarf_tag_name (child_die->tag));
11302             continue;
11303           }
11304
11305         imported_cu = cu;
11306         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11307                                               &imported_cu);
11308         imported_name = dwarf2_name (imported_die, imported_cu);
11309         if (imported_name == NULL)
11310           {
11311             complaint (_("child DW_TAG_imported_declaration has unknown "
11312                          "imported name - DIE at %s [in module %s]"),
11313                        sect_offset_str (child_die->sect_off),
11314                        objfile_name (objfile));
11315             continue;
11316           }
11317
11318         excludes.push_back (imported_name);
11319
11320         process_die (child_die, cu);
11321       }
11322
11323   add_using_directive (using_directives (cu),
11324                        import_prefix,
11325                        canonical_name,
11326                        import_alias,
11327                        imported_declaration,
11328                        excludes,
11329                        0,
11330                        &objfile->objfile_obstack);
11331 }
11332
11333 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11334    types, but gives them a size of zero.  Starting with version 14,
11335    ICC is compatible with GCC.  */
11336
11337 static bool
11338 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11339 {
11340   if (!cu->checked_producer)
11341     check_producer (cu);
11342
11343   return cu->producer_is_icc_lt_14;
11344 }
11345
11346 /* ICC generates a DW_AT_type for C void functions.  This was observed on
11347    ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11348    which says that void functions should not have a DW_AT_type.  */
11349
11350 static bool
11351 producer_is_icc (struct dwarf2_cu *cu)
11352 {
11353   if (!cu->checked_producer)
11354     check_producer (cu);
11355
11356   return cu->producer_is_icc;
11357 }
11358
11359 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11360    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11361    this, it was first present in GCC release 4.3.0.  */
11362
11363 static bool
11364 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11365 {
11366   if (!cu->checked_producer)
11367     check_producer (cu);
11368
11369   return cu->producer_is_gcc_lt_4_3;
11370 }
11371
11372 static file_and_directory
11373 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11374 {
11375   file_and_directory res;
11376
11377   /* Find the filename.  Do not use dwarf2_name here, since the filename
11378      is not a source language identifier.  */
11379   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11380   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11381
11382   if (res.comp_dir == NULL
11383       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11384       && IS_ABSOLUTE_PATH (res.name))
11385     {
11386       res.comp_dir_storage = ldirname (res.name);
11387       if (!res.comp_dir_storage.empty ())
11388         res.comp_dir = res.comp_dir_storage.c_str ();
11389     }
11390   if (res.comp_dir != NULL)
11391     {
11392       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11393          directory, get rid of it.  */
11394       const char *cp = strchr (res.comp_dir, ':');
11395
11396       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11397         res.comp_dir = cp + 1;
11398     }
11399
11400   if (res.name == NULL)
11401     res.name = "<unknown>";
11402
11403   return res;
11404 }
11405
11406 /* Handle DW_AT_stmt_list for a compilation unit.
11407    DIE is the DW_TAG_compile_unit die for CU.
11408    COMP_DIR is the compilation directory.  LOWPC is passed to
11409    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11410
11411 static void
11412 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11413                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11414 {
11415   struct dwarf2_per_objfile *dwarf2_per_objfile
11416     = cu->per_cu->dwarf2_per_objfile;
11417   struct objfile *objfile = dwarf2_per_objfile->objfile;
11418   struct attribute *attr;
11419   struct line_header line_header_local;
11420   hashval_t line_header_local_hash;
11421   void **slot;
11422   int decode_mapping;
11423
11424   gdb_assert (! cu->per_cu->is_debug_types);
11425
11426   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11427   if (attr == NULL)
11428     return;
11429
11430   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11431
11432   /* The line header hash table is only created if needed (it exists to
11433      prevent redundant reading of the line table for partial_units).
11434      If we're given a partial_unit, we'll need it.  If we're given a
11435      compile_unit, then use the line header hash table if it's already
11436      created, but don't create one just yet.  */
11437
11438   if (dwarf2_per_objfile->line_header_hash == NULL
11439       && die->tag == DW_TAG_partial_unit)
11440     {
11441       dwarf2_per_objfile->line_header_hash
11442         = htab_create_alloc_ex (127, line_header_hash_voidp,
11443                                 line_header_eq_voidp,
11444                                 free_line_header_voidp,
11445                                 &objfile->objfile_obstack,
11446                                 hashtab_obstack_allocate,
11447                                 dummy_obstack_deallocate);
11448     }
11449
11450   line_header_local.sect_off = line_offset;
11451   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11452   line_header_local_hash = line_header_hash (&line_header_local);
11453   if (dwarf2_per_objfile->line_header_hash != NULL)
11454     {
11455       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11456                                        &line_header_local,
11457                                        line_header_local_hash, NO_INSERT);
11458
11459       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11460          is not present in *SLOT (since if there is something in *SLOT then
11461          it will be for a partial_unit).  */
11462       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11463         {
11464           gdb_assert (*slot != NULL);
11465           cu->line_header = (struct line_header *) *slot;
11466           return;
11467         }
11468     }
11469
11470   /* dwarf_decode_line_header does not yet provide sufficient information.
11471      We always have to call also dwarf_decode_lines for it.  */
11472   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11473   if (lh == NULL)
11474     return;
11475
11476   cu->line_header = lh.release ();
11477   cu->line_header_die_owner = die;
11478
11479   if (dwarf2_per_objfile->line_header_hash == NULL)
11480     slot = NULL;
11481   else
11482     {
11483       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11484                                        &line_header_local,
11485                                        line_header_local_hash, INSERT);
11486       gdb_assert (slot != NULL);
11487     }
11488   if (slot != NULL && *slot == NULL)
11489     {
11490       /* This newly decoded line number information unit will be owned
11491          by line_header_hash hash table.  */
11492       *slot = cu->line_header;
11493       cu->line_header_die_owner = NULL;
11494     }
11495   else
11496     {
11497       /* We cannot free any current entry in (*slot) as that struct line_header
11498          may be already used by multiple CUs.  Create only temporary decoded
11499          line_header for this CU - it may happen at most once for each line
11500          number information unit.  And if we're not using line_header_hash
11501          then this is what we want as well.  */
11502       gdb_assert (die->tag != DW_TAG_partial_unit);
11503     }
11504   decode_mapping = (die->tag != DW_TAG_partial_unit);
11505   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11506                       decode_mapping);
11507
11508 }
11509
11510 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11511
11512 static void
11513 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11514 {
11515   struct dwarf2_per_objfile *dwarf2_per_objfile
11516     = cu->per_cu->dwarf2_per_objfile;
11517   struct objfile *objfile = dwarf2_per_objfile->objfile;
11518   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11519   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11520   CORE_ADDR highpc = ((CORE_ADDR) 0);
11521   struct attribute *attr;
11522   struct die_info *child_die;
11523   CORE_ADDR baseaddr;
11524
11525   prepare_one_comp_unit (cu, die, cu->language);
11526   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11527
11528   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11529
11530   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11531      from finish_block.  */
11532   if (lowpc == ((CORE_ADDR) -1))
11533     lowpc = highpc;
11534   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11535
11536   file_and_directory fnd = find_file_and_directory (die, cu);
11537
11538   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11539      standardised yet.  As a workaround for the language detection we fall
11540      back to the DW_AT_producer string.  */
11541   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11542     cu->language = language_opencl;
11543
11544   /* Similar hack for Go.  */
11545   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11546     set_cu_language (DW_LANG_Go, cu);
11547
11548   cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11549
11550   /* Decode line number information if present.  We do this before
11551      processing child DIEs, so that the line header table is available
11552      for DW_AT_decl_file.  */
11553   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11554
11555   /* Process all dies in compilation unit.  */
11556   if (die->child != NULL)
11557     {
11558       child_die = die->child;
11559       while (child_die && child_die->tag)
11560         {
11561           process_die (child_die, cu);
11562           child_die = sibling_die (child_die);
11563         }
11564     }
11565
11566   /* Decode macro information, if present.  Dwarf 2 macro information
11567      refers to information in the line number info statement program
11568      header, so we can only read it if we've read the header
11569      successfully.  */
11570   attr = dwarf2_attr (die, DW_AT_macros, cu);
11571   if (attr == NULL)
11572     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11573   if (attr && cu->line_header)
11574     {
11575       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11576         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11577
11578       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11579     }
11580   else
11581     {
11582       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11583       if (attr && cu->line_header)
11584         {
11585           unsigned int macro_offset = DW_UNSND (attr);
11586
11587           dwarf_decode_macros (cu, macro_offset, 0);
11588         }
11589     }
11590 }
11591
11592 void
11593 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11594 {
11595   struct type_unit_group *tu_group;
11596   int first_time;
11597   struct attribute *attr;
11598   unsigned int i;
11599   struct signatured_type *sig_type;
11600
11601   gdb_assert (per_cu->is_debug_types);
11602   sig_type = (struct signatured_type *) per_cu;
11603
11604   attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11605
11606   /* If we're using .gdb_index (includes -readnow) then
11607      per_cu->type_unit_group may not have been set up yet.  */
11608   if (sig_type->type_unit_group == NULL)
11609     sig_type->type_unit_group = get_type_unit_group (this, attr);
11610   tu_group = sig_type->type_unit_group;
11611
11612   /* If we've already processed this stmt_list there's no real need to
11613      do it again, we could fake it and just recreate the part we need
11614      (file name,index -> symtab mapping).  If data shows this optimization
11615      is useful we can do it then.  */
11616   first_time = tu_group->compunit_symtab == NULL;
11617
11618   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11619      debug info.  */
11620   line_header_up lh;
11621   if (attr != NULL)
11622     {
11623       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11624       lh = dwarf_decode_line_header (line_offset, this);
11625     }
11626   if (lh == NULL)
11627     {
11628       if (first_time)
11629         start_symtab ("", NULL, 0);
11630       else
11631         {
11632           gdb_assert (tu_group->symtabs == NULL);
11633           gdb_assert (m_builder == nullptr);
11634           struct compunit_symtab *cust = tu_group->compunit_symtab;
11635           m_builder.reset (new struct buildsym_compunit
11636                            (COMPUNIT_OBJFILE (cust), "",
11637                             COMPUNIT_DIRNAME (cust),
11638                             compunit_language (cust),
11639                             0, cust));
11640         }
11641       return;
11642     }
11643
11644   line_header = lh.release ();
11645   line_header_die_owner = die;
11646
11647   if (first_time)
11648     {
11649       struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11650
11651       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11652          still initializing it, and our caller (a few levels up)
11653          process_full_type_unit still needs to know if this is the first
11654          time.  */
11655
11656       tu_group->num_symtabs = line_header->file_names.size ();
11657       tu_group->symtabs = XNEWVEC (struct symtab *,
11658                                    line_header->file_names.size ());
11659
11660       for (i = 0; i < line_header->file_names.size (); ++i)
11661         {
11662           file_entry &fe = line_header->file_names[i];
11663
11664           dwarf2_start_subfile (this, fe.name,
11665                                 fe.include_dir (line_header));
11666           buildsym_compunit *b = get_builder ();
11667           if (b->get_current_subfile ()->symtab == NULL)
11668             {
11669               /* NOTE: start_subfile will recognize when it's been
11670                  passed a file it has already seen.  So we can't
11671                  assume there's a simple mapping from
11672                  cu->line_header->file_names to subfiles, plus
11673                  cu->line_header->file_names may contain dups.  */
11674               b->get_current_subfile ()->symtab
11675                 = allocate_symtab (cust, b->get_current_subfile ()->name);
11676             }
11677
11678           fe.symtab = b->get_current_subfile ()->symtab;
11679           tu_group->symtabs[i] = fe.symtab;
11680         }
11681     }
11682   else
11683     {
11684       gdb_assert (m_builder == nullptr);
11685       struct compunit_symtab *cust = tu_group->compunit_symtab;
11686       m_builder.reset (new struct buildsym_compunit
11687                        (COMPUNIT_OBJFILE (cust), "",
11688                         COMPUNIT_DIRNAME (cust),
11689                         compunit_language (cust),
11690                         0, cust));
11691
11692       for (i = 0; i < line_header->file_names.size (); ++i)
11693         {
11694           file_entry &fe = line_header->file_names[i];
11695
11696           fe.symtab = tu_group->symtabs[i];
11697         }
11698     }
11699
11700   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11701      so they don't have a "real" (so to speak) symtab anyway.
11702      There is later code that will assign the main symtab to all symbols
11703      that don't have one.  We need to handle the case of a symbol with a
11704      missing symtab (DW_AT_decl_file) anyway.  */
11705 }
11706
11707 /* Process DW_TAG_type_unit.
11708    For TUs we want to skip the first top level sibling if it's not the
11709    actual type being defined by this TU.  In this case the first top
11710    level sibling is there to provide context only.  */
11711
11712 static void
11713 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11714 {
11715   struct die_info *child_die;
11716
11717   prepare_one_comp_unit (cu, die, language_minimal);
11718
11719   /* Initialize (or reinitialize) the machinery for building symtabs.
11720      We do this before processing child DIEs, so that the line header table
11721      is available for DW_AT_decl_file.  */
11722   cu->setup_type_unit_groups (die);
11723
11724   if (die->child != NULL)
11725     {
11726       child_die = die->child;
11727       while (child_die && child_die->tag)
11728         {
11729           process_die (child_die, cu);
11730           child_die = sibling_die (child_die);
11731         }
11732     }
11733 }
11734 \f
11735 /* DWO/DWP files.
11736
11737    http://gcc.gnu.org/wiki/DebugFission
11738    http://gcc.gnu.org/wiki/DebugFissionDWP
11739
11740    To simplify handling of both DWO files ("object" files with the DWARF info)
11741    and DWP files (a file with the DWOs packaged up into one file), we treat
11742    DWP files as having a collection of virtual DWO files.  */
11743
11744 static hashval_t
11745 hash_dwo_file (const void *item)
11746 {
11747   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11748   hashval_t hash;
11749
11750   hash = htab_hash_string (dwo_file->dwo_name);
11751   if (dwo_file->comp_dir != NULL)
11752     hash += htab_hash_string (dwo_file->comp_dir);
11753   return hash;
11754 }
11755
11756 static int
11757 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11758 {
11759   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11760   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11761
11762   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11763     return 0;
11764   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11765     return lhs->comp_dir == rhs->comp_dir;
11766   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11767 }
11768
11769 /* Allocate a hash table for DWO files.  */
11770
11771 static htab_up
11772 allocate_dwo_file_hash_table (struct objfile *objfile)
11773 {
11774   auto delete_dwo_file = [] (void *item)
11775     {
11776       struct dwo_file *dwo_file = (struct dwo_file *) item;
11777
11778       delete dwo_file;
11779     };
11780
11781   return htab_up (htab_create_alloc_ex (41,
11782                                         hash_dwo_file,
11783                                         eq_dwo_file,
11784                                         delete_dwo_file,
11785                                         &objfile->objfile_obstack,
11786                                         hashtab_obstack_allocate,
11787                                         dummy_obstack_deallocate));
11788 }
11789
11790 /* Lookup DWO file DWO_NAME.  */
11791
11792 static void **
11793 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11794                       const char *dwo_name,
11795                       const char *comp_dir)
11796 {
11797   struct dwo_file find_entry;
11798   void **slot;
11799
11800   if (dwarf2_per_objfile->dwo_files == NULL)
11801     dwarf2_per_objfile->dwo_files
11802       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11803
11804   find_entry.dwo_name = dwo_name;
11805   find_entry.comp_dir = comp_dir;
11806   slot = htab_find_slot (dwarf2_per_objfile->dwo_files.get (), &find_entry,
11807                          INSERT);
11808
11809   return slot;
11810 }
11811
11812 static hashval_t
11813 hash_dwo_unit (const void *item)
11814 {
11815   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11816
11817   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11818   return dwo_unit->signature;
11819 }
11820
11821 static int
11822 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11823 {
11824   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11825   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11826
11827   /* The signature is assumed to be unique within the DWO file.
11828      So while object file CU dwo_id's always have the value zero,
11829      that's OK, assuming each object file DWO file has only one CU,
11830      and that's the rule for now.  */
11831   return lhs->signature == rhs->signature;
11832 }
11833
11834 /* Allocate a hash table for DWO CUs,TUs.
11835    There is one of these tables for each of CUs,TUs for each DWO file.  */
11836
11837 static htab_t
11838 allocate_dwo_unit_table (struct objfile *objfile)
11839 {
11840   /* Start out with a pretty small number.
11841      Generally DWO files contain only one CU and maybe some TUs.  */
11842   return htab_create_alloc_ex (3,
11843                                hash_dwo_unit,
11844                                eq_dwo_unit,
11845                                NULL,
11846                                &objfile->objfile_obstack,
11847                                hashtab_obstack_allocate,
11848                                dummy_obstack_deallocate);
11849 }
11850
11851 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11852
11853 struct create_dwo_cu_data
11854 {
11855   struct dwo_file *dwo_file;
11856   struct dwo_unit dwo_unit;
11857 };
11858
11859 /* die_reader_func for create_dwo_cu.  */
11860
11861 static void
11862 create_dwo_cu_reader (const struct die_reader_specs *reader,
11863                       const gdb_byte *info_ptr,
11864                       struct die_info *comp_unit_die,
11865                       int has_children,
11866                       void *datap)
11867 {
11868   struct dwarf2_cu *cu = reader->cu;
11869   sect_offset sect_off = cu->per_cu->sect_off;
11870   struct dwarf2_section_info *section = cu->per_cu->section;
11871   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11872   struct dwo_file *dwo_file = data->dwo_file;
11873   struct dwo_unit *dwo_unit = &data->dwo_unit;
11874   struct attribute *attr;
11875
11876   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11877   if (attr == NULL)
11878     {
11879       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11880                    " its dwo_id [in module %s]"),
11881                  sect_offset_str (sect_off), dwo_file->dwo_name);
11882       return;
11883     }
11884
11885   dwo_unit->dwo_file = dwo_file;
11886   dwo_unit->signature = DW_UNSND (attr);
11887   dwo_unit->section = section;
11888   dwo_unit->sect_off = sect_off;
11889   dwo_unit->length = cu->per_cu->length;
11890
11891   if (dwarf_read_debug)
11892     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11893                         sect_offset_str (sect_off),
11894                         hex_string (dwo_unit->signature));
11895 }
11896
11897 /* Create the dwo_units for the CUs in a DWO_FILE.
11898    Note: This function processes DWO files only, not DWP files.  */
11899
11900 static void
11901 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11902                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11903                        htab_t &cus_htab)
11904 {
11905   struct objfile *objfile = dwarf2_per_objfile->objfile;
11906   const gdb_byte *info_ptr, *end_ptr;
11907
11908   dwarf2_read_section (objfile, &section);
11909   info_ptr = section.buffer;
11910
11911   if (info_ptr == NULL)
11912     return;
11913
11914   if (dwarf_read_debug)
11915     {
11916       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11917                           get_section_name (&section),
11918                           get_section_file_name (&section));
11919     }
11920
11921   end_ptr = info_ptr + section.size;
11922   while (info_ptr < end_ptr)
11923     {
11924       struct dwarf2_per_cu_data per_cu;
11925       struct create_dwo_cu_data create_dwo_cu_data;
11926       struct dwo_unit *dwo_unit;
11927       void **slot;
11928       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11929
11930       memset (&create_dwo_cu_data.dwo_unit, 0,
11931               sizeof (create_dwo_cu_data.dwo_unit));
11932       memset (&per_cu, 0, sizeof (per_cu));
11933       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11934       per_cu.is_debug_types = 0;
11935       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11936       per_cu.section = &section;
11937       create_dwo_cu_data.dwo_file = &dwo_file;
11938
11939       init_cutu_and_read_dies_no_follow (
11940           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11941       info_ptr += per_cu.length;
11942
11943       // If the unit could not be parsed, skip it.
11944       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11945         continue;
11946
11947       if (cus_htab == NULL)
11948         cus_htab = allocate_dwo_unit_table (objfile);
11949
11950       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11951       *dwo_unit = create_dwo_cu_data.dwo_unit;
11952       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11953       gdb_assert (slot != NULL);
11954       if (*slot != NULL)
11955         {
11956           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11957           sect_offset dup_sect_off = dup_cu->sect_off;
11958
11959           complaint (_("debug cu entry at offset %s is duplicate to"
11960                        " the entry at offset %s, signature %s"),
11961                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11962                      hex_string (dwo_unit->signature));
11963         }
11964       *slot = (void *)dwo_unit;
11965     }
11966 }
11967
11968 /* DWP file .debug_{cu,tu}_index section format:
11969    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11970
11971    DWP Version 1:
11972
11973    Both index sections have the same format, and serve to map a 64-bit
11974    signature to a set of section numbers.  Each section begins with a header,
11975    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11976    indexes, and a pool of 32-bit section numbers.  The index sections will be
11977    aligned at 8-byte boundaries in the file.
11978
11979    The index section header consists of:
11980
11981     V, 32 bit version number
11982     -, 32 bits unused
11983     N, 32 bit number of compilation units or type units in the index
11984     M, 32 bit number of slots in the hash table
11985
11986    Numbers are recorded using the byte order of the application binary.
11987
11988    The hash table begins at offset 16 in the section, and consists of an array
11989    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
11990    order of the application binary).  Unused slots in the hash table are 0.
11991    (We rely on the extreme unlikeliness of a signature being exactly 0.)
11992
11993    The parallel table begins immediately after the hash table
11994    (at offset 16 + 8 * M from the beginning of the section), and consists of an
11995    array of 32-bit indexes (using the byte order of the application binary),
11996    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
11997    table contains a 32-bit index into the pool of section numbers.  For unused
11998    hash table slots, the corresponding entry in the parallel table will be 0.
11999
12000    The pool of section numbers begins immediately following the hash table
12001    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12002    section numbers consists of an array of 32-bit words (using the byte order
12003    of the application binary).  Each item in the array is indexed starting
12004    from 0.  The hash table entry provides the index of the first section
12005    number in the set.  Additional section numbers in the set follow, and the
12006    set is terminated by a 0 entry (section number 0 is not used in ELF).
12007
12008    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12009    section must be the first entry in the set, and the .debug_abbrev.dwo must
12010    be the second entry. Other members of the set may follow in any order.
12011
12012    ---
12013
12014    DWP Version 2:
12015
12016    DWP Version 2 combines all the .debug_info, etc. sections into one,
12017    and the entries in the index tables are now offsets into these sections.
12018    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12019    section.
12020
12021    Index Section Contents:
12022     Header
12023     Hash Table of Signatures   dwp_hash_table.hash_table
12024     Parallel Table of Indices  dwp_hash_table.unit_table
12025     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12026     Table of Section Sizes     dwp_hash_table.v2.sizes
12027
12028    The index section header consists of:
12029
12030     V, 32 bit version number
12031     L, 32 bit number of columns in the table of section offsets
12032     N, 32 bit number of compilation units or type units in the index
12033     M, 32 bit number of slots in the hash table
12034
12035    Numbers are recorded using the byte order of the application binary.
12036
12037    The hash table has the same format as version 1.
12038    The parallel table of indices has the same format as version 1,
12039    except that the entries are origin-1 indices into the table of sections
12040    offsets and the table of section sizes.
12041
12042    The table of offsets begins immediately following the parallel table
12043    (at offset 16 + 12 * M from the beginning of the section).  The table is
12044    a two-dimensional array of 32-bit words (using the byte order of the
12045    application binary), with L columns and N+1 rows, in row-major order.
12046    Each row in the array is indexed starting from 0.  The first row provides
12047    a key to the remaining rows: each column in this row provides an identifier
12048    for a debug section, and the offsets in the same column of subsequent rows
12049    refer to that section.  The section identifiers are:
12050
12051     DW_SECT_INFO         1  .debug_info.dwo
12052     DW_SECT_TYPES        2  .debug_types.dwo
12053     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12054     DW_SECT_LINE         4  .debug_line.dwo
12055     DW_SECT_LOC          5  .debug_loc.dwo
12056     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12057     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12058     DW_SECT_MACRO        8  .debug_macro.dwo
12059
12060    The offsets provided by the CU and TU index sections are the base offsets
12061    for the contributions made by each CU or TU to the corresponding section
12062    in the package file.  Each CU and TU header contains an abbrev_offset
12063    field, used to find the abbreviations table for that CU or TU within the
12064    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12065    be interpreted as relative to the base offset given in the index section.
12066    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12067    should be interpreted as relative to the base offset for .debug_line.dwo,
12068    and offsets into other debug sections obtained from DWARF attributes should
12069    also be interpreted as relative to the corresponding base offset.
12070
12071    The table of sizes begins immediately following the table of offsets.
12072    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12073    with L columns and N rows, in row-major order.  Each row in the array is
12074    indexed starting from 1 (row 0 is shared by the two tables).
12075
12076    ---
12077
12078    Hash table lookup is handled the same in version 1 and 2:
12079
12080    We assume that N and M will not exceed 2^32 - 1.
12081    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12082
12083    Given a 64-bit compilation unit signature or a type signature S, an entry
12084    in the hash table is located as follows:
12085
12086    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12087       the low-order k bits all set to 1.
12088
12089    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12090
12091    3) If the hash table entry at index H matches the signature, use that
12092       entry.  If the hash table entry at index H is unused (all zeroes),
12093       terminate the search: the signature is not present in the table.
12094
12095    4) Let H = (H + H') modulo M. Repeat at Step 3.
12096
12097    Because M > N and H' and M are relatively prime, the search is guaranteed
12098    to stop at an unused slot or find the match.  */
12099
12100 /* Create a hash table to map DWO IDs to their CU/TU entry in
12101    .debug_{info,types}.dwo in DWP_FILE.
12102    Returns NULL if there isn't one.
12103    Note: This function processes DWP files only, not DWO files.  */
12104
12105 static struct dwp_hash_table *
12106 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12107                        struct dwp_file *dwp_file, int is_debug_types)
12108 {
12109   struct objfile *objfile = dwarf2_per_objfile->objfile;
12110   bfd *dbfd = dwp_file->dbfd.get ();
12111   const gdb_byte *index_ptr, *index_end;
12112   struct dwarf2_section_info *index;
12113   uint32_t version, nr_columns, nr_units, nr_slots;
12114   struct dwp_hash_table *htab;
12115
12116   if (is_debug_types)
12117     index = &dwp_file->sections.tu_index;
12118   else
12119     index = &dwp_file->sections.cu_index;
12120
12121   if (dwarf2_section_empty_p (index))
12122     return NULL;
12123   dwarf2_read_section (objfile, index);
12124
12125   index_ptr = index->buffer;
12126   index_end = index_ptr + index->size;
12127
12128   version = read_4_bytes (dbfd, index_ptr);
12129   index_ptr += 4;
12130   if (version == 2)
12131     nr_columns = read_4_bytes (dbfd, index_ptr);
12132   else
12133     nr_columns = 0;
12134   index_ptr += 4;
12135   nr_units = read_4_bytes (dbfd, index_ptr);
12136   index_ptr += 4;
12137   nr_slots = read_4_bytes (dbfd, index_ptr);
12138   index_ptr += 4;
12139
12140   if (version != 1 && version != 2)
12141     {
12142       error (_("Dwarf Error: unsupported DWP file version (%s)"
12143                " [in module %s]"),
12144              pulongest (version), dwp_file->name);
12145     }
12146   if (nr_slots != (nr_slots & -nr_slots))
12147     {
12148       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12149                " is not power of 2 [in module %s]"),
12150              pulongest (nr_slots), dwp_file->name);
12151     }
12152
12153   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12154   htab->version = version;
12155   htab->nr_columns = nr_columns;
12156   htab->nr_units = nr_units;
12157   htab->nr_slots = nr_slots;
12158   htab->hash_table = index_ptr;
12159   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12160
12161   /* Exit early if the table is empty.  */
12162   if (nr_slots == 0 || nr_units == 0
12163       || (version == 2 && nr_columns == 0))
12164     {
12165       /* All must be zero.  */
12166       if (nr_slots != 0 || nr_units != 0
12167           || (version == 2 && nr_columns != 0))
12168         {
12169           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12170                        " all zero [in modules %s]"),
12171                      dwp_file->name);
12172         }
12173       return htab;
12174     }
12175
12176   if (version == 1)
12177     {
12178       htab->section_pool.v1.indices =
12179         htab->unit_table + sizeof (uint32_t) * nr_slots;
12180       /* It's harder to decide whether the section is too small in v1.
12181          V1 is deprecated anyway so we punt.  */
12182     }
12183   else
12184     {
12185       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12186       int *ids = htab->section_pool.v2.section_ids;
12187       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12188       /* Reverse map for error checking.  */
12189       int ids_seen[DW_SECT_MAX + 1];
12190       int i;
12191
12192       if (nr_columns < 2)
12193         {
12194           error (_("Dwarf Error: bad DWP hash table, too few columns"
12195                    " in section table [in module %s]"),
12196                  dwp_file->name);
12197         }
12198       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12199         {
12200           error (_("Dwarf Error: bad DWP hash table, too many columns"
12201                    " in section table [in module %s]"),
12202                  dwp_file->name);
12203         }
12204       memset (ids, 255, sizeof_ids);
12205       memset (ids_seen, 255, sizeof (ids_seen));
12206       for (i = 0; i < nr_columns; ++i)
12207         {
12208           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12209
12210           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12211             {
12212               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12213                        " in section table [in module %s]"),
12214                      id, dwp_file->name);
12215             }
12216           if (ids_seen[id] != -1)
12217             {
12218               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12219                        " id %d in section table [in module %s]"),
12220                      id, dwp_file->name);
12221             }
12222           ids_seen[id] = i;
12223           ids[i] = id;
12224         }
12225       /* Must have exactly one info or types section.  */
12226       if (((ids_seen[DW_SECT_INFO] != -1)
12227            + (ids_seen[DW_SECT_TYPES] != -1))
12228           != 1)
12229         {
12230           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12231                    " DWO info/types section [in module %s]"),
12232                  dwp_file->name);
12233         }
12234       /* Must have an abbrev section.  */
12235       if (ids_seen[DW_SECT_ABBREV] == -1)
12236         {
12237           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12238                    " section [in module %s]"),
12239                  dwp_file->name);
12240         }
12241       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12242       htab->section_pool.v2.sizes =
12243         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12244                                          * nr_units * nr_columns);
12245       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12246                                           * nr_units * nr_columns))
12247           > index_end)
12248         {
12249           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12250                    " [in module %s]"),
12251                  dwp_file->name);
12252         }
12253     }
12254
12255   return htab;
12256 }
12257
12258 /* Update SECTIONS with the data from SECTP.
12259
12260    This function is like the other "locate" section routines that are
12261    passed to bfd_map_over_sections, but in this context the sections to
12262    read comes from the DWP V1 hash table, not the full ELF section table.
12263
12264    The result is non-zero for success, or zero if an error was found.  */
12265
12266 static int
12267 locate_v1_virtual_dwo_sections (asection *sectp,
12268                                 struct virtual_v1_dwo_sections *sections)
12269 {
12270   const struct dwop_section_names *names = &dwop_section_names;
12271
12272   if (section_is_p (sectp->name, &names->abbrev_dwo))
12273     {
12274       /* There can be only one.  */
12275       if (sections->abbrev.s.section != NULL)
12276         return 0;
12277       sections->abbrev.s.section = sectp;
12278       sections->abbrev.size = bfd_get_section_size (sectp);
12279     }
12280   else if (section_is_p (sectp->name, &names->info_dwo)
12281            || section_is_p (sectp->name, &names->types_dwo))
12282     {
12283       /* There can be only one.  */
12284       if (sections->info_or_types.s.section != NULL)
12285         return 0;
12286       sections->info_or_types.s.section = sectp;
12287       sections->info_or_types.size = bfd_get_section_size (sectp);
12288     }
12289   else if (section_is_p (sectp->name, &names->line_dwo))
12290     {
12291       /* There can be only one.  */
12292       if (sections->line.s.section != NULL)
12293         return 0;
12294       sections->line.s.section = sectp;
12295       sections->line.size = bfd_get_section_size (sectp);
12296     }
12297   else if (section_is_p (sectp->name, &names->loc_dwo))
12298     {
12299       /* There can be only one.  */
12300       if (sections->loc.s.section != NULL)
12301         return 0;
12302       sections->loc.s.section = sectp;
12303       sections->loc.size = bfd_get_section_size (sectp);
12304     }
12305   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12306     {
12307       /* There can be only one.  */
12308       if (sections->macinfo.s.section != NULL)
12309         return 0;
12310       sections->macinfo.s.section = sectp;
12311       sections->macinfo.size = bfd_get_section_size (sectp);
12312     }
12313   else if (section_is_p (sectp->name, &names->macro_dwo))
12314     {
12315       /* There can be only one.  */
12316       if (sections->macro.s.section != NULL)
12317         return 0;
12318       sections->macro.s.section = sectp;
12319       sections->macro.size = bfd_get_section_size (sectp);
12320     }
12321   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12322     {
12323       /* There can be only one.  */
12324       if (sections->str_offsets.s.section != NULL)
12325         return 0;
12326       sections->str_offsets.s.section = sectp;
12327       sections->str_offsets.size = bfd_get_section_size (sectp);
12328     }
12329   else
12330     {
12331       /* No other kind of section is valid.  */
12332       return 0;
12333     }
12334
12335   return 1;
12336 }
12337
12338 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12339    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12340    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12341    This is for DWP version 1 files.  */
12342
12343 static struct dwo_unit *
12344 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12345                            struct dwp_file *dwp_file,
12346                            uint32_t unit_index,
12347                            const char *comp_dir,
12348                            ULONGEST signature, int is_debug_types)
12349 {
12350   struct objfile *objfile = dwarf2_per_objfile->objfile;
12351   const struct dwp_hash_table *dwp_htab =
12352     is_debug_types ? dwp_file->tus : dwp_file->cus;
12353   bfd *dbfd = dwp_file->dbfd.get ();
12354   const char *kind = is_debug_types ? "TU" : "CU";
12355   struct dwo_file *dwo_file;
12356   struct dwo_unit *dwo_unit;
12357   struct virtual_v1_dwo_sections sections;
12358   void **dwo_file_slot;
12359   int i;
12360
12361   gdb_assert (dwp_file->version == 1);
12362
12363   if (dwarf_read_debug)
12364     {
12365       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12366                           kind,
12367                           pulongest (unit_index), hex_string (signature),
12368                           dwp_file->name);
12369     }
12370
12371   /* Fetch the sections of this DWO unit.
12372      Put a limit on the number of sections we look for so that bad data
12373      doesn't cause us to loop forever.  */
12374
12375 #define MAX_NR_V1_DWO_SECTIONS \
12376   (1 /* .debug_info or .debug_types */ \
12377    + 1 /* .debug_abbrev */ \
12378    + 1 /* .debug_line */ \
12379    + 1 /* .debug_loc */ \
12380    + 1 /* .debug_str_offsets */ \
12381    + 1 /* .debug_macro or .debug_macinfo */ \
12382    + 1 /* trailing zero */)
12383
12384   memset (&sections, 0, sizeof (sections));
12385
12386   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12387     {
12388       asection *sectp;
12389       uint32_t section_nr =
12390         read_4_bytes (dbfd,
12391                       dwp_htab->section_pool.v1.indices
12392                       + (unit_index + i) * sizeof (uint32_t));
12393
12394       if (section_nr == 0)
12395         break;
12396       if (section_nr >= dwp_file->num_sections)
12397         {
12398           error (_("Dwarf Error: bad DWP hash table, section number too large"
12399                    " [in module %s]"),
12400                  dwp_file->name);
12401         }
12402
12403       sectp = dwp_file->elf_sections[section_nr];
12404       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12405         {
12406           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12407                    " [in module %s]"),
12408                  dwp_file->name);
12409         }
12410     }
12411
12412   if (i < 2
12413       || dwarf2_section_empty_p (&sections.info_or_types)
12414       || dwarf2_section_empty_p (&sections.abbrev))
12415     {
12416       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12417                " [in module %s]"),
12418              dwp_file->name);
12419     }
12420   if (i == MAX_NR_V1_DWO_SECTIONS)
12421     {
12422       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12423                " [in module %s]"),
12424              dwp_file->name);
12425     }
12426
12427   /* It's easier for the rest of the code if we fake a struct dwo_file and
12428      have dwo_unit "live" in that.  At least for now.
12429
12430      The DWP file can be made up of a random collection of CUs and TUs.
12431      However, for each CU + set of TUs that came from the same original DWO
12432      file, we can combine them back into a virtual DWO file to save space
12433      (fewer struct dwo_file objects to allocate).  Remember that for really
12434      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12435
12436   std::string virtual_dwo_name =
12437     string_printf ("virtual-dwo/%d-%d-%d-%d",
12438                    get_section_id (&sections.abbrev),
12439                    get_section_id (&sections.line),
12440                    get_section_id (&sections.loc),
12441                    get_section_id (&sections.str_offsets));
12442   /* Can we use an existing virtual DWO file?  */
12443   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12444                                         virtual_dwo_name.c_str (),
12445                                         comp_dir);
12446   /* Create one if necessary.  */
12447   if (*dwo_file_slot == NULL)
12448     {
12449       if (dwarf_read_debug)
12450         {
12451           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12452                               virtual_dwo_name.c_str ());
12453         }
12454       dwo_file = new struct dwo_file;
12455       dwo_file->dwo_name
12456         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12457                                         virtual_dwo_name.c_str (),
12458                                         virtual_dwo_name.size ());
12459       dwo_file->comp_dir = comp_dir;
12460       dwo_file->sections.abbrev = sections.abbrev;
12461       dwo_file->sections.line = sections.line;
12462       dwo_file->sections.loc = sections.loc;
12463       dwo_file->sections.macinfo = sections.macinfo;
12464       dwo_file->sections.macro = sections.macro;
12465       dwo_file->sections.str_offsets = sections.str_offsets;
12466       /* The "str" section is global to the entire DWP file.  */
12467       dwo_file->sections.str = dwp_file->sections.str;
12468       /* The info or types section is assigned below to dwo_unit,
12469          there's no need to record it in dwo_file.
12470          Also, we can't simply record type sections in dwo_file because
12471          we record a pointer into the vector in dwo_unit.  As we collect more
12472          types we'll grow the vector and eventually have to reallocate space
12473          for it, invalidating all copies of pointers into the previous
12474          contents.  */
12475       *dwo_file_slot = dwo_file;
12476     }
12477   else
12478     {
12479       if (dwarf_read_debug)
12480         {
12481           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12482                               virtual_dwo_name.c_str ());
12483         }
12484       dwo_file = (struct dwo_file *) *dwo_file_slot;
12485     }
12486
12487   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12488   dwo_unit->dwo_file = dwo_file;
12489   dwo_unit->signature = signature;
12490   dwo_unit->section =
12491     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12492   *dwo_unit->section = sections.info_or_types;
12493   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12494
12495   return dwo_unit;
12496 }
12497
12498 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12499    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12500    piece within that section used by a TU/CU, return a virtual section
12501    of just that piece.  */
12502
12503 static struct dwarf2_section_info
12504 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12505                        struct dwarf2_section_info *section,
12506                        bfd_size_type offset, bfd_size_type size)
12507 {
12508   struct dwarf2_section_info result;
12509   asection *sectp;
12510
12511   gdb_assert (section != NULL);
12512   gdb_assert (!section->is_virtual);
12513
12514   memset (&result, 0, sizeof (result));
12515   result.s.containing_section = section;
12516   result.is_virtual = true;
12517
12518   if (size == 0)
12519     return result;
12520
12521   sectp = get_section_bfd_section (section);
12522
12523   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12524      bounds of the real section.  This is a pretty-rare event, so just
12525      flag an error (easier) instead of a warning and trying to cope.  */
12526   if (sectp == NULL
12527       || offset + size > bfd_get_section_size (sectp))
12528     {
12529       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12530                " in section %s [in module %s]"),
12531              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12532              objfile_name (dwarf2_per_objfile->objfile));
12533     }
12534
12535   result.virtual_offset = offset;
12536   result.size = size;
12537   return result;
12538 }
12539
12540 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12541    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12542    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12543    This is for DWP version 2 files.  */
12544
12545 static struct dwo_unit *
12546 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12547                            struct dwp_file *dwp_file,
12548                            uint32_t unit_index,
12549                            const char *comp_dir,
12550                            ULONGEST signature, int is_debug_types)
12551 {
12552   struct objfile *objfile = dwarf2_per_objfile->objfile;
12553   const struct dwp_hash_table *dwp_htab =
12554     is_debug_types ? dwp_file->tus : dwp_file->cus;
12555   bfd *dbfd = dwp_file->dbfd.get ();
12556   const char *kind = is_debug_types ? "TU" : "CU";
12557   struct dwo_file *dwo_file;
12558   struct dwo_unit *dwo_unit;
12559   struct virtual_v2_dwo_sections sections;
12560   void **dwo_file_slot;
12561   int i;
12562
12563   gdb_assert (dwp_file->version == 2);
12564
12565   if (dwarf_read_debug)
12566     {
12567       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12568                           kind,
12569                           pulongest (unit_index), hex_string (signature),
12570                           dwp_file->name);
12571     }
12572
12573   /* Fetch the section offsets of this DWO unit.  */
12574
12575   memset (&sections, 0, sizeof (sections));
12576
12577   for (i = 0; i < dwp_htab->nr_columns; ++i)
12578     {
12579       uint32_t offset = read_4_bytes (dbfd,
12580                                       dwp_htab->section_pool.v2.offsets
12581                                       + (((unit_index - 1) * dwp_htab->nr_columns
12582                                           + i)
12583                                          * sizeof (uint32_t)));
12584       uint32_t size = read_4_bytes (dbfd,
12585                                     dwp_htab->section_pool.v2.sizes
12586                                     + (((unit_index - 1) * dwp_htab->nr_columns
12587                                         + i)
12588                                        * sizeof (uint32_t)));
12589
12590       switch (dwp_htab->section_pool.v2.section_ids[i])
12591         {
12592         case DW_SECT_INFO:
12593         case DW_SECT_TYPES:
12594           sections.info_or_types_offset = offset;
12595           sections.info_or_types_size = size;
12596           break;
12597         case DW_SECT_ABBREV:
12598           sections.abbrev_offset = offset;
12599           sections.abbrev_size = size;
12600           break;
12601         case DW_SECT_LINE:
12602           sections.line_offset = offset;
12603           sections.line_size = size;
12604           break;
12605         case DW_SECT_LOC:
12606           sections.loc_offset = offset;
12607           sections.loc_size = size;
12608           break;
12609         case DW_SECT_STR_OFFSETS:
12610           sections.str_offsets_offset = offset;
12611           sections.str_offsets_size = size;
12612           break;
12613         case DW_SECT_MACINFO:
12614           sections.macinfo_offset = offset;
12615           sections.macinfo_size = size;
12616           break;
12617         case DW_SECT_MACRO:
12618           sections.macro_offset = offset;
12619           sections.macro_size = size;
12620           break;
12621         }
12622     }
12623
12624   /* It's easier for the rest of the code if we fake a struct dwo_file and
12625      have dwo_unit "live" in that.  At least for now.
12626
12627      The DWP file can be made up of a random collection of CUs and TUs.
12628      However, for each CU + set of TUs that came from the same original DWO
12629      file, we can combine them back into a virtual DWO file to save space
12630      (fewer struct dwo_file objects to allocate).  Remember that for really
12631      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12632
12633   std::string virtual_dwo_name =
12634     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12635                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12636                    (long) (sections.line_size ? sections.line_offset : 0),
12637                    (long) (sections.loc_size ? sections.loc_offset : 0),
12638                    (long) (sections.str_offsets_size
12639                            ? sections.str_offsets_offset : 0));
12640   /* Can we use an existing virtual DWO file?  */
12641   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12642                                         virtual_dwo_name.c_str (),
12643                                         comp_dir);
12644   /* Create one if necessary.  */
12645   if (*dwo_file_slot == NULL)
12646     {
12647       if (dwarf_read_debug)
12648         {
12649           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12650                               virtual_dwo_name.c_str ());
12651         }
12652       dwo_file = new struct dwo_file;
12653       dwo_file->dwo_name
12654         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12655                                         virtual_dwo_name.c_str (),
12656                                         virtual_dwo_name.size ());
12657       dwo_file->comp_dir = comp_dir;
12658       dwo_file->sections.abbrev =
12659         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12660                                sections.abbrev_offset, sections.abbrev_size);
12661       dwo_file->sections.line =
12662         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12663                                sections.line_offset, sections.line_size);
12664       dwo_file->sections.loc =
12665         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12666                                sections.loc_offset, sections.loc_size);
12667       dwo_file->sections.macinfo =
12668         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12669                                sections.macinfo_offset, sections.macinfo_size);
12670       dwo_file->sections.macro =
12671         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12672                                sections.macro_offset, sections.macro_size);
12673       dwo_file->sections.str_offsets =
12674         create_dwp_v2_section (dwarf2_per_objfile,
12675                                &dwp_file->sections.str_offsets,
12676                                sections.str_offsets_offset,
12677                                sections.str_offsets_size);
12678       /* The "str" section is global to the entire DWP file.  */
12679       dwo_file->sections.str = dwp_file->sections.str;
12680       /* The info or types section is assigned below to dwo_unit,
12681          there's no need to record it in dwo_file.
12682          Also, we can't simply record type sections in dwo_file because
12683          we record a pointer into the vector in dwo_unit.  As we collect more
12684          types we'll grow the vector and eventually have to reallocate space
12685          for it, invalidating all copies of pointers into the previous
12686          contents.  */
12687       *dwo_file_slot = dwo_file;
12688     }
12689   else
12690     {
12691       if (dwarf_read_debug)
12692         {
12693           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12694                               virtual_dwo_name.c_str ());
12695         }
12696       dwo_file = (struct dwo_file *) *dwo_file_slot;
12697     }
12698
12699   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12700   dwo_unit->dwo_file = dwo_file;
12701   dwo_unit->signature = signature;
12702   dwo_unit->section =
12703     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12704   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12705                                               is_debug_types
12706                                               ? &dwp_file->sections.types
12707                                               : &dwp_file->sections.info,
12708                                               sections.info_or_types_offset,
12709                                               sections.info_or_types_size);
12710   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12711
12712   return dwo_unit;
12713 }
12714
12715 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12716    Returns NULL if the signature isn't found.  */
12717
12718 static struct dwo_unit *
12719 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12720                         struct dwp_file *dwp_file, const char *comp_dir,
12721                         ULONGEST signature, int is_debug_types)
12722 {
12723   const struct dwp_hash_table *dwp_htab =
12724     is_debug_types ? dwp_file->tus : dwp_file->cus;
12725   bfd *dbfd = dwp_file->dbfd.get ();
12726   uint32_t mask = dwp_htab->nr_slots - 1;
12727   uint32_t hash = signature & mask;
12728   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12729   unsigned int i;
12730   void **slot;
12731   struct dwo_unit find_dwo_cu;
12732
12733   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12734   find_dwo_cu.signature = signature;
12735   slot = htab_find_slot (is_debug_types
12736                          ? dwp_file->loaded_tus
12737                          : dwp_file->loaded_cus,
12738                          &find_dwo_cu, INSERT);
12739
12740   if (*slot != NULL)
12741     return (struct dwo_unit *) *slot;
12742
12743   /* Use a for loop so that we don't loop forever on bad debug info.  */
12744   for (i = 0; i < dwp_htab->nr_slots; ++i)
12745     {
12746       ULONGEST signature_in_table;
12747
12748       signature_in_table =
12749         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12750       if (signature_in_table == signature)
12751         {
12752           uint32_t unit_index =
12753             read_4_bytes (dbfd,
12754                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12755
12756           if (dwp_file->version == 1)
12757             {
12758               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12759                                                  dwp_file, unit_index,
12760                                                  comp_dir, signature,
12761                                                  is_debug_types);
12762             }
12763           else
12764             {
12765               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12766                                                  dwp_file, unit_index,
12767                                                  comp_dir, signature,
12768                                                  is_debug_types);
12769             }
12770           return (struct dwo_unit *) *slot;
12771         }
12772       if (signature_in_table == 0)
12773         return NULL;
12774       hash = (hash + hash2) & mask;
12775     }
12776
12777   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12778            " [in module %s]"),
12779          dwp_file->name);
12780 }
12781
12782 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12783    Open the file specified by FILE_NAME and hand it off to BFD for
12784    preliminary analysis.  Return a newly initialized bfd *, which
12785    includes a canonicalized copy of FILE_NAME.
12786    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12787    SEARCH_CWD is true if the current directory is to be searched.
12788    It will be searched before debug-file-directory.
12789    If successful, the file is added to the bfd include table of the
12790    objfile's bfd (see gdb_bfd_record_inclusion).
12791    If unable to find/open the file, return NULL.
12792    NOTE: This function is derived from symfile_bfd_open.  */
12793
12794 static gdb_bfd_ref_ptr
12795 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12796                     const char *file_name, int is_dwp, int search_cwd)
12797 {
12798   int desc;
12799   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12800      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12801      to debug_file_directory.  */
12802   const char *search_path;
12803   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12804
12805   gdb::unique_xmalloc_ptr<char> search_path_holder;
12806   if (search_cwd)
12807     {
12808       if (*debug_file_directory != '\0')
12809         {
12810           search_path_holder.reset (concat (".", dirname_separator_string,
12811                                             debug_file_directory,
12812                                             (char *) NULL));
12813           search_path = search_path_holder.get ();
12814         }
12815       else
12816         search_path = ".";
12817     }
12818   else
12819     search_path = debug_file_directory;
12820
12821   openp_flags flags = OPF_RETURN_REALPATH;
12822   if (is_dwp)
12823     flags |= OPF_SEARCH_IN_PATH;
12824
12825   gdb::unique_xmalloc_ptr<char> absolute_name;
12826   desc = openp (search_path, flags, file_name,
12827                 O_RDONLY | O_BINARY, &absolute_name);
12828   if (desc < 0)
12829     return NULL;
12830
12831   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12832                                          gnutarget, desc));
12833   if (sym_bfd == NULL)
12834     return NULL;
12835   bfd_set_cacheable (sym_bfd.get (), 1);
12836
12837   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12838     return NULL;
12839
12840   /* Success.  Record the bfd as having been included by the objfile's bfd.
12841      This is important because things like demangled_names_hash lives in the
12842      objfile's per_bfd space and may have references to things like symbol
12843      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12844   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12845
12846   return sym_bfd;
12847 }
12848
12849 /* Try to open DWO file FILE_NAME.
12850    COMP_DIR is the DW_AT_comp_dir attribute.
12851    The result is the bfd handle of the file.
12852    If there is a problem finding or opening the file, return NULL.
12853    Upon success, the canonicalized path of the file is stored in the bfd,
12854    same as symfile_bfd_open.  */
12855
12856 static gdb_bfd_ref_ptr
12857 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12858                const char *file_name, const char *comp_dir)
12859 {
12860   if (IS_ABSOLUTE_PATH (file_name))
12861     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12862                                0 /*is_dwp*/, 0 /*search_cwd*/);
12863
12864   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12865
12866   if (comp_dir != NULL)
12867     {
12868       char *path_to_try = concat (comp_dir, SLASH_STRING,
12869                                   file_name, (char *) NULL);
12870
12871       /* NOTE: If comp_dir is a relative path, this will also try the
12872          search path, which seems useful.  */
12873       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12874                                                 path_to_try,
12875                                                 0 /*is_dwp*/,
12876                                                 1 /*search_cwd*/));
12877       xfree (path_to_try);
12878       if (abfd != NULL)
12879         return abfd;
12880     }
12881
12882   /* That didn't work, try debug-file-directory, which, despite its name,
12883      is a list of paths.  */
12884
12885   if (*debug_file_directory == '\0')
12886     return NULL;
12887
12888   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12889                              0 /*is_dwp*/, 1 /*search_cwd*/);
12890 }
12891
12892 /* This function is mapped across the sections and remembers the offset and
12893    size of each of the DWO debugging sections we are interested in.  */
12894
12895 static void
12896 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12897 {
12898   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12899   const struct dwop_section_names *names = &dwop_section_names;
12900
12901   if (section_is_p (sectp->name, &names->abbrev_dwo))
12902     {
12903       dwo_sections->abbrev.s.section = sectp;
12904       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12905     }
12906   else if (section_is_p (sectp->name, &names->info_dwo))
12907     {
12908       dwo_sections->info.s.section = sectp;
12909       dwo_sections->info.size = bfd_get_section_size (sectp);
12910     }
12911   else if (section_is_p (sectp->name, &names->line_dwo))
12912     {
12913       dwo_sections->line.s.section = sectp;
12914       dwo_sections->line.size = bfd_get_section_size (sectp);
12915     }
12916   else if (section_is_p (sectp->name, &names->loc_dwo))
12917     {
12918       dwo_sections->loc.s.section = sectp;
12919       dwo_sections->loc.size = bfd_get_section_size (sectp);
12920     }
12921   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12922     {
12923       dwo_sections->macinfo.s.section = sectp;
12924       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12925     }
12926   else if (section_is_p (sectp->name, &names->macro_dwo))
12927     {
12928       dwo_sections->macro.s.section = sectp;
12929       dwo_sections->macro.size = bfd_get_section_size (sectp);
12930     }
12931   else if (section_is_p (sectp->name, &names->str_dwo))
12932     {
12933       dwo_sections->str.s.section = sectp;
12934       dwo_sections->str.size = bfd_get_section_size (sectp);
12935     }
12936   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12937     {
12938       dwo_sections->str_offsets.s.section = sectp;
12939       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12940     }
12941   else if (section_is_p (sectp->name, &names->types_dwo))
12942     {
12943       struct dwarf2_section_info type_section;
12944
12945       memset (&type_section, 0, sizeof (type_section));
12946       type_section.s.section = sectp;
12947       type_section.size = bfd_get_section_size (sectp);
12948       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12949                      &type_section);
12950     }
12951 }
12952
12953 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12954    by PER_CU.  This is for the non-DWP case.
12955    The result is NULL if DWO_NAME can't be found.  */
12956
12957 static struct dwo_file *
12958 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12959                         const char *dwo_name, const char *comp_dir)
12960 {
12961   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12962
12963   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12964   if (dbfd == NULL)
12965     {
12966       if (dwarf_read_debug)
12967         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12968       return NULL;
12969     }
12970
12971   dwo_file_up dwo_file (new struct dwo_file);
12972   dwo_file->dwo_name = dwo_name;
12973   dwo_file->comp_dir = comp_dir;
12974   dwo_file->dbfd = dbfd.release ();
12975
12976   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12977                          &dwo_file->sections);
12978
12979   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12980                          dwo_file->cus);
12981
12982   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12983                                  dwo_file->sections.types, dwo_file->tus);
12984
12985   if (dwarf_read_debug)
12986     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
12987
12988   return dwo_file.release ();
12989 }
12990
12991 /* This function is mapped across the sections and remembers the offset and
12992    size of each of the DWP debugging sections common to version 1 and 2 that
12993    we are interested in.  */
12994
12995 static void
12996 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
12997                                    void *dwp_file_ptr)
12998 {
12999   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13000   const struct dwop_section_names *names = &dwop_section_names;
13001   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13002
13003   /* Record the ELF section number for later lookup: this is what the
13004      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13005   gdb_assert (elf_section_nr < dwp_file->num_sections);
13006   dwp_file->elf_sections[elf_section_nr] = sectp;
13007
13008   /* Look for specific sections that we need.  */
13009   if (section_is_p (sectp->name, &names->str_dwo))
13010     {
13011       dwp_file->sections.str.s.section = sectp;
13012       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13013     }
13014   else if (section_is_p (sectp->name, &names->cu_index))
13015     {
13016       dwp_file->sections.cu_index.s.section = sectp;
13017       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13018     }
13019   else if (section_is_p (sectp->name, &names->tu_index))
13020     {
13021       dwp_file->sections.tu_index.s.section = sectp;
13022       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13023     }
13024 }
13025
13026 /* This function is mapped across the sections and remembers the offset and
13027    size of each of the DWP version 2 debugging sections that we are interested
13028    in.  This is split into a separate function because we don't know if we
13029    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13030
13031 static void
13032 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13033 {
13034   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13035   const struct dwop_section_names *names = &dwop_section_names;
13036   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13037
13038   /* Record the ELF section number for later lookup: this is what the
13039      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13040   gdb_assert (elf_section_nr < dwp_file->num_sections);
13041   dwp_file->elf_sections[elf_section_nr] = sectp;
13042
13043   /* Look for specific sections that we need.  */
13044   if (section_is_p (sectp->name, &names->abbrev_dwo))
13045     {
13046       dwp_file->sections.abbrev.s.section = sectp;
13047       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13048     }
13049   else if (section_is_p (sectp->name, &names->info_dwo))
13050     {
13051       dwp_file->sections.info.s.section = sectp;
13052       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13053     }
13054   else if (section_is_p (sectp->name, &names->line_dwo))
13055     {
13056       dwp_file->sections.line.s.section = sectp;
13057       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13058     }
13059   else if (section_is_p (sectp->name, &names->loc_dwo))
13060     {
13061       dwp_file->sections.loc.s.section = sectp;
13062       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13063     }
13064   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13065     {
13066       dwp_file->sections.macinfo.s.section = sectp;
13067       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13068     }
13069   else if (section_is_p (sectp->name, &names->macro_dwo))
13070     {
13071       dwp_file->sections.macro.s.section = sectp;
13072       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13073     }
13074   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13075     {
13076       dwp_file->sections.str_offsets.s.section = sectp;
13077       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13078     }
13079   else if (section_is_p (sectp->name, &names->types_dwo))
13080     {
13081       dwp_file->sections.types.s.section = sectp;
13082       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13083     }
13084 }
13085
13086 /* Hash function for dwp_file loaded CUs/TUs.  */
13087
13088 static hashval_t
13089 hash_dwp_loaded_cutus (const void *item)
13090 {
13091   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13092
13093   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13094   return dwo_unit->signature;
13095 }
13096
13097 /* Equality function for dwp_file loaded CUs/TUs.  */
13098
13099 static int
13100 eq_dwp_loaded_cutus (const void *a, const void *b)
13101 {
13102   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13103   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13104
13105   return dua->signature == dub->signature;
13106 }
13107
13108 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13109
13110 static htab_t
13111 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13112 {
13113   return htab_create_alloc_ex (3,
13114                                hash_dwp_loaded_cutus,
13115                                eq_dwp_loaded_cutus,
13116                                NULL,
13117                                &objfile->objfile_obstack,
13118                                hashtab_obstack_allocate,
13119                                dummy_obstack_deallocate);
13120 }
13121
13122 /* Try to open DWP file FILE_NAME.
13123    The result is the bfd handle of the file.
13124    If there is a problem finding or opening the file, return NULL.
13125    Upon success, the canonicalized path of the file is stored in the bfd,
13126    same as symfile_bfd_open.  */
13127
13128 static gdb_bfd_ref_ptr
13129 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13130                const char *file_name)
13131 {
13132   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13133                                             1 /*is_dwp*/,
13134                                             1 /*search_cwd*/));
13135   if (abfd != NULL)
13136     return abfd;
13137
13138   /* Work around upstream bug 15652.
13139      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13140      [Whether that's a "bug" is debatable, but it is getting in our way.]
13141      We have no real idea where the dwp file is, because gdb's realpath-ing
13142      of the executable's path may have discarded the needed info.
13143      [IWBN if the dwp file name was recorded in the executable, akin to
13144      .gnu_debuglink, but that doesn't exist yet.]
13145      Strip the directory from FILE_NAME and search again.  */
13146   if (*debug_file_directory != '\0')
13147     {
13148       /* Don't implicitly search the current directory here.
13149          If the user wants to search "." to handle this case,
13150          it must be added to debug-file-directory.  */
13151       return try_open_dwop_file (dwarf2_per_objfile,
13152                                  lbasename (file_name), 1 /*is_dwp*/,
13153                                  0 /*search_cwd*/);
13154     }
13155
13156   return NULL;
13157 }
13158
13159 /* Initialize the use of the DWP file for the current objfile.
13160    By convention the name of the DWP file is ${objfile}.dwp.
13161    The result is NULL if it can't be found.  */
13162
13163 static std::unique_ptr<struct dwp_file>
13164 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13165 {
13166   struct objfile *objfile = dwarf2_per_objfile->objfile;
13167
13168   /* Try to find first .dwp for the binary file before any symbolic links
13169      resolving.  */
13170
13171   /* If the objfile is a debug file, find the name of the real binary
13172      file and get the name of dwp file from there.  */
13173   std::string dwp_name;
13174   if (objfile->separate_debug_objfile_backlink != NULL)
13175     {
13176       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13177       const char *backlink_basename = lbasename (backlink->original_name);
13178
13179       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13180     }
13181   else
13182     dwp_name = objfile->original_name;
13183
13184   dwp_name += ".dwp";
13185
13186   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13187   if (dbfd == NULL
13188       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13189     {
13190       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13191       dwp_name = objfile_name (objfile);
13192       dwp_name += ".dwp";
13193       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13194     }
13195
13196   if (dbfd == NULL)
13197     {
13198       if (dwarf_read_debug)
13199         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13200       return std::unique_ptr<dwp_file> ();
13201     }
13202
13203   const char *name = bfd_get_filename (dbfd.get ());
13204   std::unique_ptr<struct dwp_file> dwp_file
13205     (new struct dwp_file (name, std::move (dbfd)));
13206
13207   dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
13208   dwp_file->elf_sections =
13209     OBSTACK_CALLOC (&objfile->objfile_obstack,
13210                     dwp_file->num_sections, asection *);
13211
13212   bfd_map_over_sections (dwp_file->dbfd.get (),
13213                          dwarf2_locate_common_dwp_sections,
13214                          dwp_file.get ());
13215
13216   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13217                                          0);
13218
13219   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13220                                          1);
13221
13222   /* The DWP file version is stored in the hash table.  Oh well.  */
13223   if (dwp_file->cus && dwp_file->tus
13224       && dwp_file->cus->version != dwp_file->tus->version)
13225     {
13226       /* Technically speaking, we should try to limp along, but this is
13227          pretty bizarre.  We use pulongest here because that's the established
13228          portability solution (e.g, we cannot use %u for uint32_t).  */
13229       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13230                " TU version %s [in DWP file %s]"),
13231              pulongest (dwp_file->cus->version),
13232              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13233     }
13234
13235   if (dwp_file->cus)
13236     dwp_file->version = dwp_file->cus->version;
13237   else if (dwp_file->tus)
13238     dwp_file->version = dwp_file->tus->version;
13239   else
13240     dwp_file->version = 2;
13241
13242   if (dwp_file->version == 2)
13243     bfd_map_over_sections (dwp_file->dbfd.get (),
13244                            dwarf2_locate_v2_dwp_sections,
13245                            dwp_file.get ());
13246
13247   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13248   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13249
13250   if (dwarf_read_debug)
13251     {
13252       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13253       fprintf_unfiltered (gdb_stdlog,
13254                           "    %s CUs, %s TUs\n",
13255                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13256                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13257     }
13258
13259   return dwp_file;
13260 }
13261
13262 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13263
13264 static struct dwp_file *
13265 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13266 {
13267   if (! dwarf2_per_objfile->dwp_checked)
13268     {
13269       dwarf2_per_objfile->dwp_file
13270         = open_and_init_dwp_file (dwarf2_per_objfile);
13271       dwarf2_per_objfile->dwp_checked = 1;
13272     }
13273   return dwarf2_per_objfile->dwp_file.get ();
13274 }
13275
13276 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13277    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13278    or in the DWP file for the objfile, referenced by THIS_UNIT.
13279    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13280    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13281
13282    This is called, for example, when wanting to read a variable with a
13283    complex location.  Therefore we don't want to do file i/o for every call.
13284    Therefore we don't want to look for a DWO file on every call.
13285    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13286    then we check if we've already seen DWO_NAME, and only THEN do we check
13287    for a DWO file.
13288
13289    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13290    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13291
13292 static struct dwo_unit *
13293 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13294                  const char *dwo_name, const char *comp_dir,
13295                  ULONGEST signature, int is_debug_types)
13296 {
13297   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13298   struct objfile *objfile = dwarf2_per_objfile->objfile;
13299   const char *kind = is_debug_types ? "TU" : "CU";
13300   void **dwo_file_slot;
13301   struct dwo_file *dwo_file;
13302   struct dwp_file *dwp_file;
13303
13304   /* First see if there's a DWP file.
13305      If we have a DWP file but didn't find the DWO inside it, don't
13306      look for the original DWO file.  It makes gdb behave differently
13307      depending on whether one is debugging in the build tree.  */
13308
13309   dwp_file = get_dwp_file (dwarf2_per_objfile);
13310   if (dwp_file != NULL)
13311     {
13312       const struct dwp_hash_table *dwp_htab =
13313         is_debug_types ? dwp_file->tus : dwp_file->cus;
13314
13315       if (dwp_htab != NULL)
13316         {
13317           struct dwo_unit *dwo_cutu =
13318             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13319                                     signature, is_debug_types);
13320
13321           if (dwo_cutu != NULL)
13322             {
13323               if (dwarf_read_debug)
13324                 {
13325                   fprintf_unfiltered (gdb_stdlog,
13326                                       "Virtual DWO %s %s found: @%s\n",
13327                                       kind, hex_string (signature),
13328                                       host_address_to_string (dwo_cutu));
13329                 }
13330               return dwo_cutu;
13331             }
13332         }
13333     }
13334   else
13335     {
13336       /* No DWP file, look for the DWO file.  */
13337
13338       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13339                                             dwo_name, comp_dir);
13340       if (*dwo_file_slot == NULL)
13341         {
13342           /* Read in the file and build a table of the CUs/TUs it contains.  */
13343           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13344         }
13345       /* NOTE: This will be NULL if unable to open the file.  */
13346       dwo_file = (struct dwo_file *) *dwo_file_slot;
13347
13348       if (dwo_file != NULL)
13349         {
13350           struct dwo_unit *dwo_cutu = NULL;
13351
13352           if (is_debug_types && dwo_file->tus)
13353             {
13354               struct dwo_unit find_dwo_cutu;
13355
13356               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13357               find_dwo_cutu.signature = signature;
13358               dwo_cutu
13359                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13360             }
13361           else if (!is_debug_types && dwo_file->cus)
13362             {
13363               struct dwo_unit find_dwo_cutu;
13364
13365               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13366               find_dwo_cutu.signature = signature;
13367               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13368                                                        &find_dwo_cutu);
13369             }
13370
13371           if (dwo_cutu != NULL)
13372             {
13373               if (dwarf_read_debug)
13374                 {
13375                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13376                                       kind, dwo_name, hex_string (signature),
13377                                       host_address_to_string (dwo_cutu));
13378                 }
13379               return dwo_cutu;
13380             }
13381         }
13382     }
13383
13384   /* We didn't find it.  This could mean a dwo_id mismatch, or
13385      someone deleted the DWO/DWP file, or the search path isn't set up
13386      correctly to find the file.  */
13387
13388   if (dwarf_read_debug)
13389     {
13390       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13391                           kind, dwo_name, hex_string (signature));
13392     }
13393
13394   /* This is a warning and not a complaint because it can be caused by
13395      pilot error (e.g., user accidentally deleting the DWO).  */
13396   {
13397     /* Print the name of the DWP file if we looked there, helps the user
13398        better diagnose the problem.  */
13399     std::string dwp_text;
13400
13401     if (dwp_file != NULL)
13402       dwp_text = string_printf (" [in DWP file %s]",
13403                                 lbasename (dwp_file->name));
13404
13405     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13406                " [in module %s]"),
13407              kind, dwo_name, hex_string (signature),
13408              dwp_text.c_str (),
13409              this_unit->is_debug_types ? "TU" : "CU",
13410              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13411   }
13412   return NULL;
13413 }
13414
13415 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13416    See lookup_dwo_cutu_unit for details.  */
13417
13418 static struct dwo_unit *
13419 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13420                       const char *dwo_name, const char *comp_dir,
13421                       ULONGEST signature)
13422 {
13423   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13424 }
13425
13426 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13427    See lookup_dwo_cutu_unit for details.  */
13428
13429 static struct dwo_unit *
13430 lookup_dwo_type_unit (struct signatured_type *this_tu,
13431                       const char *dwo_name, const char *comp_dir)
13432 {
13433   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13434 }
13435
13436 /* Traversal function for queue_and_load_all_dwo_tus.  */
13437
13438 static int
13439 queue_and_load_dwo_tu (void **slot, void *info)
13440 {
13441   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13442   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13443   ULONGEST signature = dwo_unit->signature;
13444   struct signatured_type *sig_type =
13445     lookup_dwo_signatured_type (per_cu->cu, signature);
13446
13447   if (sig_type != NULL)
13448     {
13449       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13450
13451       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13452          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13453          while processing PER_CU.  */
13454       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13455         load_full_type_unit (sig_cu);
13456       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13457     }
13458
13459   return 1;
13460 }
13461
13462 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13463    The DWO may have the only definition of the type, though it may not be
13464    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13465    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13466
13467 static void
13468 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13469 {
13470   struct dwo_unit *dwo_unit;
13471   struct dwo_file *dwo_file;
13472
13473   gdb_assert (!per_cu->is_debug_types);
13474   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13475   gdb_assert (per_cu->cu != NULL);
13476
13477   dwo_unit = per_cu->cu->dwo_unit;
13478   gdb_assert (dwo_unit != NULL);
13479
13480   dwo_file = dwo_unit->dwo_file;
13481   if (dwo_file->tus != NULL)
13482     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13483 }
13484
13485 /* Read in various DIEs.  */
13486
13487 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13488    Inherit only the children of the DW_AT_abstract_origin DIE not being
13489    already referenced by DW_AT_abstract_origin from the children of the
13490    current DIE.  */
13491
13492 static void
13493 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13494 {
13495   struct die_info *child_die;
13496   sect_offset *offsetp;
13497   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13498   struct die_info *origin_die;
13499   /* Iterator of the ORIGIN_DIE children.  */
13500   struct die_info *origin_child_die;
13501   struct attribute *attr;
13502   struct dwarf2_cu *origin_cu;
13503   struct pending **origin_previous_list_in_scope;
13504
13505   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13506   if (!attr)
13507     return;
13508
13509   /* Note that following die references may follow to a die in a
13510      different cu.  */
13511
13512   origin_cu = cu;
13513   origin_die = follow_die_ref (die, attr, &origin_cu);
13514
13515   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13516      symbols in.  */
13517   origin_previous_list_in_scope = origin_cu->list_in_scope;
13518   origin_cu->list_in_scope = cu->list_in_scope;
13519
13520   if (die->tag != origin_die->tag
13521       && !(die->tag == DW_TAG_inlined_subroutine
13522            && origin_die->tag == DW_TAG_subprogram))
13523     complaint (_("DIE %s and its abstract origin %s have different tags"),
13524                sect_offset_str (die->sect_off),
13525                sect_offset_str (origin_die->sect_off));
13526
13527   std::vector<sect_offset> offsets;
13528
13529   for (child_die = die->child;
13530        child_die && child_die->tag;
13531        child_die = sibling_die (child_die))
13532     {
13533       struct die_info *child_origin_die;
13534       struct dwarf2_cu *child_origin_cu;
13535
13536       /* We are trying to process concrete instance entries:
13537          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13538          it's not relevant to our analysis here. i.e. detecting DIEs that are
13539          present in the abstract instance but not referenced in the concrete
13540          one.  */
13541       if (child_die->tag == DW_TAG_call_site
13542           || child_die->tag == DW_TAG_GNU_call_site)
13543         continue;
13544
13545       /* For each CHILD_DIE, find the corresponding child of
13546          ORIGIN_DIE.  If there is more than one layer of
13547          DW_AT_abstract_origin, follow them all; there shouldn't be,
13548          but GCC versions at least through 4.4 generate this (GCC PR
13549          40573).  */
13550       child_origin_die = child_die;
13551       child_origin_cu = cu;
13552       while (1)
13553         {
13554           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13555                               child_origin_cu);
13556           if (attr == NULL)
13557             break;
13558           child_origin_die = follow_die_ref (child_origin_die, attr,
13559                                              &child_origin_cu);
13560         }
13561
13562       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13563          counterpart may exist.  */
13564       if (child_origin_die != child_die)
13565         {
13566           if (child_die->tag != child_origin_die->tag
13567               && !(child_die->tag == DW_TAG_inlined_subroutine
13568                    && child_origin_die->tag == DW_TAG_subprogram))
13569             complaint (_("Child DIE %s and its abstract origin %s have "
13570                          "different tags"),
13571                        sect_offset_str (child_die->sect_off),
13572                        sect_offset_str (child_origin_die->sect_off));
13573           if (child_origin_die->parent != origin_die)
13574             complaint (_("Child DIE %s and its abstract origin %s have "
13575                          "different parents"),
13576                        sect_offset_str (child_die->sect_off),
13577                        sect_offset_str (child_origin_die->sect_off));
13578           else
13579             offsets.push_back (child_origin_die->sect_off);
13580         }
13581     }
13582   std::sort (offsets.begin (), offsets.end ());
13583   sect_offset *offsets_end = offsets.data () + offsets.size ();
13584   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13585     if (offsetp[-1] == *offsetp)
13586       complaint (_("Multiple children of DIE %s refer "
13587                    "to DIE %s as their abstract origin"),
13588                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13589
13590   offsetp = offsets.data ();
13591   origin_child_die = origin_die->child;
13592   while (origin_child_die && origin_child_die->tag)
13593     {
13594       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13595       while (offsetp < offsets_end
13596              && *offsetp < origin_child_die->sect_off)
13597         offsetp++;
13598       if (offsetp >= offsets_end
13599           || *offsetp > origin_child_die->sect_off)
13600         {
13601           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13602              Check whether we're already processing ORIGIN_CHILD_DIE.
13603              This can happen with mutually referenced abstract_origins.
13604              PR 16581.  */
13605           if (!origin_child_die->in_process)
13606             process_die (origin_child_die, origin_cu);
13607         }
13608       origin_child_die = sibling_die (origin_child_die);
13609     }
13610   origin_cu->list_in_scope = origin_previous_list_in_scope;
13611 }
13612
13613 static void
13614 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13615 {
13616   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13617   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13618   struct context_stack *newobj;
13619   CORE_ADDR lowpc;
13620   CORE_ADDR highpc;
13621   struct die_info *child_die;
13622   struct attribute *attr, *call_line, *call_file;
13623   const char *name;
13624   CORE_ADDR baseaddr;
13625   struct block *block;
13626   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13627   std::vector<struct symbol *> template_args;
13628   struct template_symbol *templ_func = NULL;
13629
13630   if (inlined_func)
13631     {
13632       /* If we do not have call site information, we can't show the
13633          caller of this inlined function.  That's too confusing, so
13634          only use the scope for local variables.  */
13635       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13636       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13637       if (call_line == NULL || call_file == NULL)
13638         {
13639           read_lexical_block_scope (die, cu);
13640           return;
13641         }
13642     }
13643
13644   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13645
13646   name = dwarf2_name (die, cu);
13647
13648   /* Ignore functions with missing or empty names.  These are actually
13649      illegal according to the DWARF standard.  */
13650   if (name == NULL)
13651     {
13652       complaint (_("missing name for subprogram DIE at %s"),
13653                  sect_offset_str (die->sect_off));
13654       return;
13655     }
13656
13657   /* Ignore functions with missing or invalid low and high pc attributes.  */
13658   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13659       <= PC_BOUNDS_INVALID)
13660     {
13661       attr = dwarf2_attr (die, DW_AT_external, cu);
13662       if (!attr || !DW_UNSND (attr))
13663         complaint (_("cannot get low and high bounds "
13664                      "for subprogram DIE at %s"),
13665                    sect_offset_str (die->sect_off));
13666       return;
13667     }
13668
13669   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13670   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13671
13672   /* If we have any template arguments, then we must allocate a
13673      different sort of symbol.  */
13674   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13675     {
13676       if (child_die->tag == DW_TAG_template_type_param
13677           || child_die->tag == DW_TAG_template_value_param)
13678         {
13679           templ_func = allocate_template_symbol (objfile);
13680           templ_func->subclass = SYMBOL_TEMPLATE;
13681           break;
13682         }
13683     }
13684
13685   newobj = cu->get_builder ()->push_context (0, lowpc);
13686   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13687                              (struct symbol *) templ_func);
13688
13689   if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
13690     set_objfile_main_name (objfile, SYMBOL_LINKAGE_NAME (newobj->name),
13691                            cu->language);
13692
13693   /* If there is a location expression for DW_AT_frame_base, record
13694      it.  */
13695   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13696   if (attr)
13697     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13698
13699   /* If there is a location for the static link, record it.  */
13700   newobj->static_link = NULL;
13701   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13702   if (attr)
13703     {
13704       newobj->static_link
13705         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13706       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13707     }
13708
13709   cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13710
13711   if (die->child != NULL)
13712     {
13713       child_die = die->child;
13714       while (child_die && child_die->tag)
13715         {
13716           if (child_die->tag == DW_TAG_template_type_param
13717               || child_die->tag == DW_TAG_template_value_param)
13718             {
13719               struct symbol *arg = new_symbol (child_die, NULL, cu);
13720
13721               if (arg != NULL)
13722                 template_args.push_back (arg);
13723             }
13724           else
13725             process_die (child_die, cu);
13726           child_die = sibling_die (child_die);
13727         }
13728     }
13729
13730   inherit_abstract_dies (die, cu);
13731
13732   /* If we have a DW_AT_specification, we might need to import using
13733      directives from the context of the specification DIE.  See the
13734      comment in determine_prefix.  */
13735   if (cu->language == language_cplus
13736       && dwarf2_attr (die, DW_AT_specification, cu))
13737     {
13738       struct dwarf2_cu *spec_cu = cu;
13739       struct die_info *spec_die = die_specification (die, &spec_cu);
13740
13741       while (spec_die)
13742         {
13743           child_die = spec_die->child;
13744           while (child_die && child_die->tag)
13745             {
13746               if (child_die->tag == DW_TAG_imported_module)
13747                 process_die (child_die, spec_cu);
13748               child_die = sibling_die (child_die);
13749             }
13750
13751           /* In some cases, GCC generates specification DIEs that
13752              themselves contain DW_AT_specification attributes.  */
13753           spec_die = die_specification (spec_die, &spec_cu);
13754         }
13755     }
13756
13757   struct context_stack cstk = cu->get_builder ()->pop_context ();
13758   /* Make a block for the local symbols within.  */
13759   block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13760                                      cstk.static_link, lowpc, highpc);
13761
13762   /* For C++, set the block's scope.  */
13763   if ((cu->language == language_cplus
13764        || cu->language == language_fortran
13765        || cu->language == language_d
13766        || cu->language == language_rust)
13767       && cu->processing_has_namespace_info)
13768     block_set_scope (block, determine_prefix (die, cu),
13769                      &objfile->objfile_obstack);
13770
13771   /* If we have address ranges, record them.  */
13772   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13773
13774   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13775
13776   /* Attach template arguments to function.  */
13777   if (!template_args.empty ())
13778     {
13779       gdb_assert (templ_func != NULL);
13780
13781       templ_func->n_template_arguments = template_args.size ();
13782       templ_func->template_arguments
13783         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13784                      templ_func->n_template_arguments);
13785       memcpy (templ_func->template_arguments,
13786               template_args.data (),
13787               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13788
13789       /* Make sure that the symtab is set on the new symbols.  Even
13790          though they don't appear in this symtab directly, other parts
13791          of gdb assume that symbols do, and this is reasonably
13792          true.  */
13793       for (symbol *sym : template_args)
13794         symbol_set_symtab (sym, symbol_symtab (templ_func));
13795     }
13796
13797   /* In C++, we can have functions nested inside functions (e.g., when
13798      a function declares a class that has methods).  This means that
13799      when we finish processing a function scope, we may need to go
13800      back to building a containing block's symbol lists.  */
13801   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13802   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13803
13804   /* If we've finished processing a top-level function, subsequent
13805      symbols go in the file symbol list.  */
13806   if (cu->get_builder ()->outermost_context_p ())
13807     cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13808 }
13809
13810 /* Process all the DIES contained within a lexical block scope.  Start
13811    a new scope, process the dies, and then close the scope.  */
13812
13813 static void
13814 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13815 {
13816   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13817   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13818   CORE_ADDR lowpc, highpc;
13819   struct die_info *child_die;
13820   CORE_ADDR baseaddr;
13821
13822   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13823
13824   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13825   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13826      as multiple lexical blocks?  Handling children in a sane way would
13827      be nasty.  Might be easier to properly extend generic blocks to
13828      describe ranges.  */
13829   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13830     {
13831     case PC_BOUNDS_NOT_PRESENT:
13832       /* DW_TAG_lexical_block has no attributes, process its children as if
13833          there was no wrapping by that DW_TAG_lexical_block.
13834          GCC does no longer produces such DWARF since GCC r224161.  */
13835       for (child_die = die->child;
13836            child_die != NULL && child_die->tag;
13837            child_die = sibling_die (child_die))
13838         process_die (child_die, cu);
13839       return;
13840     case PC_BOUNDS_INVALID:
13841       return;
13842     }
13843   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13844   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13845
13846   cu->get_builder ()->push_context (0, lowpc);
13847   if (die->child != NULL)
13848     {
13849       child_die = die->child;
13850       while (child_die && child_die->tag)
13851         {
13852           process_die (child_die, cu);
13853           child_die = sibling_die (child_die);
13854         }
13855     }
13856   inherit_abstract_dies (die, cu);
13857   struct context_stack cstk = cu->get_builder ()->pop_context ();
13858
13859   if (*cu->get_builder ()->get_local_symbols () != NULL
13860       || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13861     {
13862       struct block *block
13863         = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13864                                      cstk.start_addr, highpc);
13865
13866       /* Note that recording ranges after traversing children, as we
13867          do here, means that recording a parent's ranges entails
13868          walking across all its children's ranges as they appear in
13869          the address map, which is quadratic behavior.
13870
13871          It would be nicer to record the parent's ranges before
13872          traversing its children, simply overriding whatever you find
13873          there.  But since we don't even decide whether to create a
13874          block until after we've traversed its children, that's hard
13875          to do.  */
13876       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13877     }
13878   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13879   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13880 }
13881
13882 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13883
13884 static void
13885 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13886 {
13887   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13888   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13889   CORE_ADDR pc, baseaddr;
13890   struct attribute *attr;
13891   struct call_site *call_site, call_site_local;
13892   void **slot;
13893   int nparams;
13894   struct die_info *child_die;
13895
13896   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13897
13898   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13899   if (attr == NULL)
13900     {
13901       /* This was a pre-DWARF-5 GNU extension alias
13902          for DW_AT_call_return_pc.  */
13903       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13904     }
13905   if (!attr)
13906     {
13907       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13908                    "DIE %s [in module %s]"),
13909                  sect_offset_str (die->sect_off), objfile_name (objfile));
13910       return;
13911     }
13912   pc = attr_value_as_address (attr) + baseaddr;
13913   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13914
13915   if (cu->call_site_htab == NULL)
13916     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13917                                                NULL, &objfile->objfile_obstack,
13918                                                hashtab_obstack_allocate, NULL);
13919   call_site_local.pc = pc;
13920   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13921   if (*slot != NULL)
13922     {
13923       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13924                    "DIE %s [in module %s]"),
13925                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13926                  objfile_name (objfile));
13927       return;
13928     }
13929
13930   /* Count parameters at the caller.  */
13931
13932   nparams = 0;
13933   for (child_die = die->child; child_die && child_die->tag;
13934        child_die = sibling_die (child_die))
13935     {
13936       if (child_die->tag != DW_TAG_call_site_parameter
13937           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13938         {
13939           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13940                        "DW_TAG_call_site child DIE %s [in module %s]"),
13941                      child_die->tag, sect_offset_str (child_die->sect_off),
13942                      objfile_name (objfile));
13943           continue;
13944         }
13945
13946       nparams++;
13947     }
13948
13949   call_site
13950     = ((struct call_site *)
13951        obstack_alloc (&objfile->objfile_obstack,
13952                       sizeof (*call_site)
13953                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13954   *slot = call_site;
13955   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13956   call_site->pc = pc;
13957
13958   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13959       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
13960     {
13961       struct die_info *func_die;
13962
13963       /* Skip also over DW_TAG_inlined_subroutine.  */
13964       for (func_die = die->parent;
13965            func_die && func_die->tag != DW_TAG_subprogram
13966            && func_die->tag != DW_TAG_subroutine_type;
13967            func_die = func_die->parent);
13968
13969       /* DW_AT_call_all_calls is a superset
13970          of DW_AT_call_all_tail_calls.  */
13971       if (func_die
13972           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
13973           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
13974           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
13975           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
13976         {
13977           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
13978              not complete.  But keep CALL_SITE for look ups via call_site_htab,
13979              both the initial caller containing the real return address PC and
13980              the final callee containing the current PC of a chain of tail
13981              calls do not need to have the tail call list complete.  But any
13982              function candidate for a virtual tail call frame searched via
13983              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
13984              determined unambiguously.  */
13985         }
13986       else
13987         {
13988           struct type *func_type = NULL;
13989
13990           if (func_die)
13991             func_type = get_die_type (func_die, cu);
13992           if (func_type != NULL)
13993             {
13994               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
13995
13996               /* Enlist this call site to the function.  */
13997               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
13998               TYPE_TAIL_CALL_LIST (func_type) = call_site;
13999             }
14000           else
14001             complaint (_("Cannot find function owning DW_TAG_call_site "
14002                          "DIE %s [in module %s]"),
14003                        sect_offset_str (die->sect_off), objfile_name (objfile));
14004         }
14005     }
14006
14007   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14008   if (attr == NULL)
14009     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14010   if (attr == NULL)
14011     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14012   if (attr == NULL)
14013     {
14014       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14015       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14016     }
14017   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14018   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14019     /* Keep NULL DWARF_BLOCK.  */;
14020   else if (attr_form_is_block (attr))
14021     {
14022       struct dwarf2_locexpr_baton *dlbaton;
14023
14024       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14025       dlbaton->data = DW_BLOCK (attr)->data;
14026       dlbaton->size = DW_BLOCK (attr)->size;
14027       dlbaton->per_cu = cu->per_cu;
14028
14029       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14030     }
14031   else if (attr_form_is_ref (attr))
14032     {
14033       struct dwarf2_cu *target_cu = cu;
14034       struct die_info *target_die;
14035
14036       target_die = follow_die_ref (die, attr, &target_cu);
14037       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14038       if (die_is_declaration (target_die, target_cu))
14039         {
14040           const char *target_physname;
14041
14042           /* Prefer the mangled name; otherwise compute the demangled one.  */
14043           target_physname = dw2_linkage_name (target_die, target_cu);
14044           if (target_physname == NULL)
14045             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14046           if (target_physname == NULL)
14047             complaint (_("DW_AT_call_target target DIE has invalid "
14048                          "physname, for referencing DIE %s [in module %s]"),
14049                        sect_offset_str (die->sect_off), objfile_name (objfile));
14050           else
14051             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14052         }
14053       else
14054         {
14055           CORE_ADDR lowpc;
14056
14057           /* DW_AT_entry_pc should be preferred.  */
14058           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14059               <= PC_BOUNDS_INVALID)
14060             complaint (_("DW_AT_call_target target DIE has invalid "
14061                          "low pc, for referencing DIE %s [in module %s]"),
14062                        sect_offset_str (die->sect_off), objfile_name (objfile));
14063           else
14064             {
14065               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14066               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14067             }
14068         }
14069     }
14070   else
14071     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14072                  "block nor reference, for DIE %s [in module %s]"),
14073                sect_offset_str (die->sect_off), objfile_name (objfile));
14074
14075   call_site->per_cu = cu->per_cu;
14076
14077   for (child_die = die->child;
14078        child_die && child_die->tag;
14079        child_die = sibling_die (child_die))
14080     {
14081       struct call_site_parameter *parameter;
14082       struct attribute *loc, *origin;
14083
14084       if (child_die->tag != DW_TAG_call_site_parameter
14085           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14086         {
14087           /* Already printed the complaint above.  */
14088           continue;
14089         }
14090
14091       gdb_assert (call_site->parameter_count < nparams);
14092       parameter = &call_site->parameter[call_site->parameter_count];
14093
14094       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14095          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14096          register is contained in DW_AT_call_value.  */
14097
14098       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14099       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14100       if (origin == NULL)
14101         {
14102           /* This was a pre-DWARF-5 GNU extension alias
14103              for DW_AT_call_parameter.  */
14104           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14105         }
14106       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14107         {
14108           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14109
14110           sect_offset sect_off
14111             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14112           if (!offset_in_cu_p (&cu->header, sect_off))
14113             {
14114               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14115                  binding can be done only inside one CU.  Such referenced DIE
14116                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14117               complaint (_("DW_AT_call_parameter offset is not in CU for "
14118                            "DW_TAG_call_site child DIE %s [in module %s]"),
14119                          sect_offset_str (child_die->sect_off),
14120                          objfile_name (objfile));
14121               continue;
14122             }
14123           parameter->u.param_cu_off
14124             = (cu_offset) (sect_off - cu->header.sect_off);
14125         }
14126       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14127         {
14128           complaint (_("No DW_FORM_block* DW_AT_location for "
14129                        "DW_TAG_call_site child DIE %s [in module %s]"),
14130                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14131           continue;
14132         }
14133       else
14134         {
14135           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14136             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14137           if (parameter->u.dwarf_reg != -1)
14138             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14139           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14140                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14141                                              &parameter->u.fb_offset))
14142             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14143           else
14144             {
14145               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14146                            "for DW_FORM_block* DW_AT_location is supported for "
14147                            "DW_TAG_call_site child DIE %s "
14148                            "[in module %s]"),
14149                          sect_offset_str (child_die->sect_off),
14150                          objfile_name (objfile));
14151               continue;
14152             }
14153         }
14154
14155       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14156       if (attr == NULL)
14157         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14158       if (!attr_form_is_block (attr))
14159         {
14160           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14161                        "DW_TAG_call_site child DIE %s [in module %s]"),
14162                      sect_offset_str (child_die->sect_off),
14163                      objfile_name (objfile));
14164           continue;
14165         }
14166       parameter->value = DW_BLOCK (attr)->data;
14167       parameter->value_size = DW_BLOCK (attr)->size;
14168
14169       /* Parameters are not pre-cleared by memset above.  */
14170       parameter->data_value = NULL;
14171       parameter->data_value_size = 0;
14172       call_site->parameter_count++;
14173
14174       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14175       if (attr == NULL)
14176         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14177       if (attr)
14178         {
14179           if (!attr_form_is_block (attr))
14180             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14181                          "DW_TAG_call_site child DIE %s [in module %s]"),
14182                        sect_offset_str (child_die->sect_off),
14183                        objfile_name (objfile));
14184           else
14185             {
14186               parameter->data_value = DW_BLOCK (attr)->data;
14187               parameter->data_value_size = DW_BLOCK (attr)->size;
14188             }
14189         }
14190     }
14191 }
14192
14193 /* Helper function for read_variable.  If DIE represents a virtual
14194    table, then return the type of the concrete object that is
14195    associated with the virtual table.  Otherwise, return NULL.  */
14196
14197 static struct type *
14198 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14199 {
14200   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14201   if (attr == NULL)
14202     return NULL;
14203
14204   /* Find the type DIE.  */
14205   struct die_info *type_die = NULL;
14206   struct dwarf2_cu *type_cu = cu;
14207
14208   if (attr_form_is_ref (attr))
14209     type_die = follow_die_ref (die, attr, &type_cu);
14210   if (type_die == NULL)
14211     return NULL;
14212
14213   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14214     return NULL;
14215   return die_containing_type (type_die, type_cu);
14216 }
14217
14218 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14219
14220 static void
14221 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14222 {
14223   struct rust_vtable_symbol *storage = NULL;
14224
14225   if (cu->language == language_rust)
14226     {
14227       struct type *containing_type = rust_containing_type (die, cu);
14228
14229       if (containing_type != NULL)
14230         {
14231           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14232
14233           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14234                                     struct rust_vtable_symbol);
14235           initialize_objfile_symbol (storage);
14236           storage->concrete_type = containing_type;
14237           storage->subclass = SYMBOL_RUST_VTABLE;
14238         }
14239     }
14240
14241   struct symbol *res = new_symbol (die, NULL, cu, storage);
14242   struct attribute *abstract_origin
14243     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14244   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14245   if (res == NULL && loc && abstract_origin)
14246     {
14247       /* We have a variable without a name, but with a location and an abstract
14248          origin.  This may be a concrete instance of an abstract variable
14249          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14250          later.  */
14251       struct dwarf2_cu *origin_cu = cu;
14252       struct die_info *origin_die
14253         = follow_die_ref (die, abstract_origin, &origin_cu);
14254       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14255       dpo->abstract_to_concrete[origin_die->sect_off].push_back (die->sect_off);
14256     }
14257 }
14258
14259 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14260    reading .debug_rnglists.
14261    Callback's type should be:
14262     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14263    Return true if the attributes are present and valid, otherwise,
14264    return false.  */
14265
14266 template <typename Callback>
14267 static bool
14268 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14269                          Callback &&callback)
14270 {
14271   struct dwarf2_per_objfile *dwarf2_per_objfile
14272     = cu->per_cu->dwarf2_per_objfile;
14273   struct objfile *objfile = dwarf2_per_objfile->objfile;
14274   bfd *obfd = objfile->obfd;
14275   /* Base address selection entry.  */
14276   CORE_ADDR base;
14277   int found_base;
14278   const gdb_byte *buffer;
14279   CORE_ADDR baseaddr;
14280   bool overflow = false;
14281
14282   found_base = cu->base_known;
14283   base = cu->base_address;
14284
14285   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14286   if (offset >= dwarf2_per_objfile->rnglists.size)
14287     {
14288       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14289                  offset);
14290       return false;
14291     }
14292   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14293
14294   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14295
14296   while (1)
14297     {
14298       /* Initialize it due to a false compiler warning.  */
14299       CORE_ADDR range_beginning = 0, range_end = 0;
14300       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14301                                  + dwarf2_per_objfile->rnglists.size);
14302       unsigned int bytes_read;
14303
14304       if (buffer == buf_end)
14305         {
14306           overflow = true;
14307           break;
14308         }
14309       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14310       switch (rlet)
14311         {
14312         case DW_RLE_end_of_list:
14313           break;
14314         case DW_RLE_base_address:
14315           if (buffer + cu->header.addr_size > buf_end)
14316             {
14317               overflow = true;
14318               break;
14319             }
14320           base = read_address (obfd, buffer, cu, &bytes_read);
14321           found_base = 1;
14322           buffer += bytes_read;
14323           break;
14324         case DW_RLE_start_length:
14325           if (buffer + cu->header.addr_size > buf_end)
14326             {
14327               overflow = true;
14328               break;
14329             }
14330           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14331           buffer += bytes_read;
14332           range_end = (range_beginning
14333                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14334           buffer += bytes_read;
14335           if (buffer > buf_end)
14336             {
14337               overflow = true;
14338               break;
14339             }
14340           break;
14341         case DW_RLE_offset_pair:
14342           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14343           buffer += bytes_read;
14344           if (buffer > buf_end)
14345             {
14346               overflow = true;
14347               break;
14348             }
14349           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14350           buffer += bytes_read;
14351           if (buffer > buf_end)
14352             {
14353               overflow = true;
14354               break;
14355             }
14356           break;
14357         case DW_RLE_start_end:
14358           if (buffer + 2 * cu->header.addr_size > buf_end)
14359             {
14360               overflow = true;
14361               break;
14362             }
14363           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14364           buffer += bytes_read;
14365           range_end = read_address (obfd, buffer, cu, &bytes_read);
14366           buffer += bytes_read;
14367           break;
14368         default:
14369           complaint (_("Invalid .debug_rnglists data (no base address)"));
14370           return false;
14371         }
14372       if (rlet == DW_RLE_end_of_list || overflow)
14373         break;
14374       if (rlet == DW_RLE_base_address)
14375         continue;
14376
14377       if (!found_base)
14378         {
14379           /* We have no valid base address for the ranges
14380              data.  */
14381           complaint (_("Invalid .debug_rnglists data (no base address)"));
14382           return false;
14383         }
14384
14385       if (range_beginning > range_end)
14386         {
14387           /* Inverted range entries are invalid.  */
14388           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14389           return false;
14390         }
14391
14392       /* Empty range entries have no effect.  */
14393       if (range_beginning == range_end)
14394         continue;
14395
14396       range_beginning += base;
14397       range_end += base;
14398
14399       /* A not-uncommon case of bad debug info.
14400          Don't pollute the addrmap with bad data.  */
14401       if (range_beginning + baseaddr == 0
14402           && !dwarf2_per_objfile->has_section_at_zero)
14403         {
14404           complaint (_(".debug_rnglists entry has start address of zero"
14405                        " [in module %s]"), objfile_name (objfile));
14406           continue;
14407         }
14408
14409       callback (range_beginning, range_end);
14410     }
14411
14412   if (overflow)
14413     {
14414       complaint (_("Offset %d is not terminated "
14415                    "for DW_AT_ranges attribute"),
14416                  offset);
14417       return false;
14418     }
14419
14420   return true;
14421 }
14422
14423 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14424    Callback's type should be:
14425     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14426    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14427
14428 template <typename Callback>
14429 static int
14430 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14431                        Callback &&callback)
14432 {
14433   struct dwarf2_per_objfile *dwarf2_per_objfile
14434       = cu->per_cu->dwarf2_per_objfile;
14435   struct objfile *objfile = dwarf2_per_objfile->objfile;
14436   struct comp_unit_head *cu_header = &cu->header;
14437   bfd *obfd = objfile->obfd;
14438   unsigned int addr_size = cu_header->addr_size;
14439   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14440   /* Base address selection entry.  */
14441   CORE_ADDR base;
14442   int found_base;
14443   unsigned int dummy;
14444   const gdb_byte *buffer;
14445   CORE_ADDR baseaddr;
14446
14447   if (cu_header->version >= 5)
14448     return dwarf2_rnglists_process (offset, cu, callback);
14449
14450   found_base = cu->base_known;
14451   base = cu->base_address;
14452
14453   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14454   if (offset >= dwarf2_per_objfile->ranges.size)
14455     {
14456       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14457                  offset);
14458       return 0;
14459     }
14460   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14461
14462   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14463
14464   while (1)
14465     {
14466       CORE_ADDR range_beginning, range_end;
14467
14468       range_beginning = read_address (obfd, buffer, cu, &dummy);
14469       buffer += addr_size;
14470       range_end = read_address (obfd, buffer, cu, &dummy);
14471       buffer += addr_size;
14472       offset += 2 * addr_size;
14473
14474       /* An end of list marker is a pair of zero addresses.  */
14475       if (range_beginning == 0 && range_end == 0)
14476         /* Found the end of list entry.  */
14477         break;
14478
14479       /* Each base address selection entry is a pair of 2 values.
14480          The first is the largest possible address, the second is
14481          the base address.  Check for a base address here.  */
14482       if ((range_beginning & mask) == mask)
14483         {
14484           /* If we found the largest possible address, then we already
14485              have the base address in range_end.  */
14486           base = range_end;
14487           found_base = 1;
14488           continue;
14489         }
14490
14491       if (!found_base)
14492         {
14493           /* We have no valid base address for the ranges
14494              data.  */
14495           complaint (_("Invalid .debug_ranges data (no base address)"));
14496           return 0;
14497         }
14498
14499       if (range_beginning > range_end)
14500         {
14501           /* Inverted range entries are invalid.  */
14502           complaint (_("Invalid .debug_ranges data (inverted range)"));
14503           return 0;
14504         }
14505
14506       /* Empty range entries have no effect.  */
14507       if (range_beginning == range_end)
14508         continue;
14509
14510       range_beginning += base;
14511       range_end += base;
14512
14513       /* A not-uncommon case of bad debug info.
14514          Don't pollute the addrmap with bad data.  */
14515       if (range_beginning + baseaddr == 0
14516           && !dwarf2_per_objfile->has_section_at_zero)
14517         {
14518           complaint (_(".debug_ranges entry has start address of zero"
14519                        " [in module %s]"), objfile_name (objfile));
14520           continue;
14521         }
14522
14523       callback (range_beginning, range_end);
14524     }
14525
14526   return 1;
14527 }
14528
14529 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14530    Return 1 if the attributes are present and valid, otherwise, return 0.
14531    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14532
14533 static int
14534 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14535                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14536                     struct partial_symtab *ranges_pst)
14537 {
14538   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14539   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14540   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14541                                        SECT_OFF_TEXT (objfile));
14542   int low_set = 0;
14543   CORE_ADDR low = 0;
14544   CORE_ADDR high = 0;
14545   int retval;
14546
14547   retval = dwarf2_ranges_process (offset, cu,
14548     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14549     {
14550       if (ranges_pst != NULL)
14551         {
14552           CORE_ADDR lowpc;
14553           CORE_ADDR highpc;
14554
14555           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14556                                                range_beginning + baseaddr)
14557                    - baseaddr);
14558           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14559                                                 range_end + baseaddr)
14560                     - baseaddr);
14561           addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14562                              lowpc, highpc - 1, ranges_pst);
14563         }
14564
14565       /* FIXME: This is recording everything as a low-high
14566          segment of consecutive addresses.  We should have a
14567          data structure for discontiguous block ranges
14568          instead.  */
14569       if (! low_set)
14570         {
14571           low = range_beginning;
14572           high = range_end;
14573           low_set = 1;
14574         }
14575       else
14576         {
14577           if (range_beginning < low)
14578             low = range_beginning;
14579           if (range_end > high)
14580             high = range_end;
14581         }
14582     });
14583   if (!retval)
14584     return 0;
14585
14586   if (! low_set)
14587     /* If the first entry is an end-of-list marker, the range
14588        describes an empty scope, i.e. no instructions.  */
14589     return 0;
14590
14591   if (low_return)
14592     *low_return = low;
14593   if (high_return)
14594     *high_return = high;
14595   return 1;
14596 }
14597
14598 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14599    definition for the return value.  *LOWPC and *HIGHPC are set iff
14600    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14601
14602 static enum pc_bounds_kind
14603 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14604                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14605                       struct partial_symtab *pst)
14606 {
14607   struct dwarf2_per_objfile *dwarf2_per_objfile
14608     = cu->per_cu->dwarf2_per_objfile;
14609   struct attribute *attr;
14610   struct attribute *attr_high;
14611   CORE_ADDR low = 0;
14612   CORE_ADDR high = 0;
14613   enum pc_bounds_kind ret;
14614
14615   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14616   if (attr_high)
14617     {
14618       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14619       if (attr)
14620         {
14621           low = attr_value_as_address (attr);
14622           high = attr_value_as_address (attr_high);
14623           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14624             high += low;
14625         }
14626       else
14627         /* Found high w/o low attribute.  */
14628         return PC_BOUNDS_INVALID;
14629
14630       /* Found consecutive range of addresses.  */
14631       ret = PC_BOUNDS_HIGH_LOW;
14632     }
14633   else
14634     {
14635       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14636       if (attr != NULL)
14637         {
14638           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14639              We take advantage of the fact that DW_AT_ranges does not appear
14640              in DW_TAG_compile_unit of DWO files.  */
14641           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14642           unsigned int ranges_offset = (DW_UNSND (attr)
14643                                         + (need_ranges_base
14644                                            ? cu->ranges_base
14645                                            : 0));
14646
14647           /* Value of the DW_AT_ranges attribute is the offset in the
14648              .debug_ranges section.  */
14649           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14650             return PC_BOUNDS_INVALID;
14651           /* Found discontinuous range of addresses.  */
14652           ret = PC_BOUNDS_RANGES;
14653         }
14654       else
14655         return PC_BOUNDS_NOT_PRESENT;
14656     }
14657
14658   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14659   if (high <= low)
14660     return PC_BOUNDS_INVALID;
14661
14662   /* When using the GNU linker, .gnu.linkonce. sections are used to
14663      eliminate duplicate copies of functions and vtables and such.
14664      The linker will arbitrarily choose one and discard the others.
14665      The AT_*_pc values for such functions refer to local labels in
14666      these sections.  If the section from that file was discarded, the
14667      labels are not in the output, so the relocs get a value of 0.
14668      If this is a discarded function, mark the pc bounds as invalid,
14669      so that GDB will ignore it.  */
14670   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14671     return PC_BOUNDS_INVALID;
14672
14673   *lowpc = low;
14674   if (highpc)
14675     *highpc = high;
14676   return ret;
14677 }
14678
14679 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14680    its low and high PC addresses.  Do nothing if these addresses could not
14681    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14682    and HIGHPC to the high address if greater than HIGHPC.  */
14683
14684 static void
14685 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14686                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14687                                  struct dwarf2_cu *cu)
14688 {
14689   CORE_ADDR low, high;
14690   struct die_info *child = die->child;
14691
14692   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14693     {
14694       *lowpc = std::min (*lowpc, low);
14695       *highpc = std::max (*highpc, high);
14696     }
14697
14698   /* If the language does not allow nested subprograms (either inside
14699      subprograms or lexical blocks), we're done.  */
14700   if (cu->language != language_ada)
14701     return;
14702
14703   /* Check all the children of the given DIE.  If it contains nested
14704      subprograms, then check their pc bounds.  Likewise, we need to
14705      check lexical blocks as well, as they may also contain subprogram
14706      definitions.  */
14707   while (child && child->tag)
14708     {
14709       if (child->tag == DW_TAG_subprogram
14710           || child->tag == DW_TAG_lexical_block)
14711         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14712       child = sibling_die (child);
14713     }
14714 }
14715
14716 /* Get the low and high pc's represented by the scope DIE, and store
14717    them in *LOWPC and *HIGHPC.  If the correct values can't be
14718    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14719
14720 static void
14721 get_scope_pc_bounds (struct die_info *die,
14722                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14723                      struct dwarf2_cu *cu)
14724 {
14725   CORE_ADDR best_low = (CORE_ADDR) -1;
14726   CORE_ADDR best_high = (CORE_ADDR) 0;
14727   CORE_ADDR current_low, current_high;
14728
14729   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14730       >= PC_BOUNDS_RANGES)
14731     {
14732       best_low = current_low;
14733       best_high = current_high;
14734     }
14735   else
14736     {
14737       struct die_info *child = die->child;
14738
14739       while (child && child->tag)
14740         {
14741           switch (child->tag) {
14742           case DW_TAG_subprogram:
14743             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14744             break;
14745           case DW_TAG_namespace:
14746           case DW_TAG_module:
14747             /* FIXME: carlton/2004-01-16: Should we do this for
14748                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14749                that current GCC's always emit the DIEs corresponding
14750                to definitions of methods of classes as children of a
14751                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14752                the DIEs giving the declarations, which could be
14753                anywhere).  But I don't see any reason why the
14754                standards says that they have to be there.  */
14755             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14756
14757             if (current_low != ((CORE_ADDR) -1))
14758               {
14759                 best_low = std::min (best_low, current_low);
14760                 best_high = std::max (best_high, current_high);
14761               }
14762             break;
14763           default:
14764             /* Ignore.  */
14765             break;
14766           }
14767
14768           child = sibling_die (child);
14769         }
14770     }
14771
14772   *lowpc = best_low;
14773   *highpc = best_high;
14774 }
14775
14776 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14777    in DIE.  */
14778
14779 static void
14780 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14781                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14782 {
14783   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14784   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14785   struct attribute *attr;
14786   struct attribute *attr_high;
14787
14788   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14789   if (attr_high)
14790     {
14791       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14792       if (attr)
14793         {
14794           CORE_ADDR low = attr_value_as_address (attr);
14795           CORE_ADDR high = attr_value_as_address (attr_high);
14796
14797           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14798             high += low;
14799
14800           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14801           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14802           cu->get_builder ()->record_block_range (block, low, high - 1);
14803         }
14804     }
14805
14806   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14807   if (attr)
14808     {
14809       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14810          We take advantage of the fact that DW_AT_ranges does not appear
14811          in DW_TAG_compile_unit of DWO files.  */
14812       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14813
14814       /* The value of the DW_AT_ranges attribute is the offset of the
14815          address range list in the .debug_ranges section.  */
14816       unsigned long offset = (DW_UNSND (attr)
14817                               + (need_ranges_base ? cu->ranges_base : 0));
14818
14819       std::vector<blockrange> blockvec;
14820       dwarf2_ranges_process (offset, cu,
14821         [&] (CORE_ADDR start, CORE_ADDR end)
14822         {
14823           start += baseaddr;
14824           end += baseaddr;
14825           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14826           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14827           cu->get_builder ()->record_block_range (block, start, end - 1);
14828           blockvec.emplace_back (start, end);
14829         });
14830
14831       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14832     }
14833 }
14834
14835 /* Check whether the producer field indicates either of GCC < 4.6, or the
14836    Intel C/C++ compiler, and cache the result in CU.  */
14837
14838 static void
14839 check_producer (struct dwarf2_cu *cu)
14840 {
14841   int major, minor;
14842
14843   if (cu->producer == NULL)
14844     {
14845       /* For unknown compilers expect their behavior is DWARF version
14846          compliant.
14847
14848          GCC started to support .debug_types sections by -gdwarf-4 since
14849          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14850          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14851          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14852          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14853     }
14854   else if (producer_is_gcc (cu->producer, &major, &minor))
14855     {
14856       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14857       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14858     }
14859   else if (producer_is_icc (cu->producer, &major, &minor))
14860     {
14861       cu->producer_is_icc = true;
14862       cu->producer_is_icc_lt_14 = major < 14;
14863     }
14864   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14865     cu->producer_is_codewarrior = true;
14866   else
14867     {
14868       /* For other non-GCC compilers, expect their behavior is DWARF version
14869          compliant.  */
14870     }
14871
14872   cu->checked_producer = true;
14873 }
14874
14875 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14876    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14877    during 4.6.0 experimental.  */
14878
14879 static bool
14880 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14881 {
14882   if (!cu->checked_producer)
14883     check_producer (cu);
14884
14885   return cu->producer_is_gxx_lt_4_6;
14886 }
14887
14888
14889 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14890    with incorrect is_stmt attributes.  */
14891
14892 static bool
14893 producer_is_codewarrior (struct dwarf2_cu *cu)
14894 {
14895   if (!cu->checked_producer)
14896     check_producer (cu);
14897
14898   return cu->producer_is_codewarrior;
14899 }
14900
14901 /* Return the default accessibility type if it is not overriden by
14902    DW_AT_accessibility.  */
14903
14904 static enum dwarf_access_attribute
14905 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14906 {
14907   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14908     {
14909       /* The default DWARF 2 accessibility for members is public, the default
14910          accessibility for inheritance is private.  */
14911
14912       if (die->tag != DW_TAG_inheritance)
14913         return DW_ACCESS_public;
14914       else
14915         return DW_ACCESS_private;
14916     }
14917   else
14918     {
14919       /* DWARF 3+ defines the default accessibility a different way.  The same
14920          rules apply now for DW_TAG_inheritance as for the members and it only
14921          depends on the container kind.  */
14922
14923       if (die->parent->tag == DW_TAG_class_type)
14924         return DW_ACCESS_private;
14925       else
14926         return DW_ACCESS_public;
14927     }
14928 }
14929
14930 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14931    offset.  If the attribute was not found return 0, otherwise return
14932    1.  If it was found but could not properly be handled, set *OFFSET
14933    to 0.  */
14934
14935 static int
14936 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14937                              LONGEST *offset)
14938 {
14939   struct attribute *attr;
14940
14941   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14942   if (attr != NULL)
14943     {
14944       *offset = 0;
14945
14946       /* Note that we do not check for a section offset first here.
14947          This is because DW_AT_data_member_location is new in DWARF 4,
14948          so if we see it, we can assume that a constant form is really
14949          a constant and not a section offset.  */
14950       if (attr_form_is_constant (attr))
14951         *offset = dwarf2_get_attr_constant_value (attr, 0);
14952       else if (attr_form_is_section_offset (attr))
14953         dwarf2_complex_location_expr_complaint ();
14954       else if (attr_form_is_block (attr))
14955         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14956       else
14957         dwarf2_complex_location_expr_complaint ();
14958
14959       return 1;
14960     }
14961
14962   return 0;
14963 }
14964
14965 /* Add an aggregate field to the field list.  */
14966
14967 static void
14968 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14969                   struct dwarf2_cu *cu)
14970 {
14971   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14972   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14973   struct nextfield *new_field;
14974   struct attribute *attr;
14975   struct field *fp;
14976   const char *fieldname = "";
14977
14978   if (die->tag == DW_TAG_inheritance)
14979     {
14980       fip->baseclasses.emplace_back ();
14981       new_field = &fip->baseclasses.back ();
14982     }
14983   else
14984     {
14985       fip->fields.emplace_back ();
14986       new_field = &fip->fields.back ();
14987     }
14988
14989   fip->nfields++;
14990
14991   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
14992   if (attr)
14993     new_field->accessibility = DW_UNSND (attr);
14994   else
14995     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
14996   if (new_field->accessibility != DW_ACCESS_public)
14997     fip->non_public_fields = 1;
14998
14999   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15000   if (attr)
15001     new_field->virtuality = DW_UNSND (attr);
15002   else
15003     new_field->virtuality = DW_VIRTUALITY_none;
15004
15005   fp = &new_field->field;
15006
15007   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15008     {
15009       LONGEST offset;
15010
15011       /* Data member other than a C++ static data member.  */
15012
15013       /* Get type of field.  */
15014       fp->type = die_type (die, cu);
15015
15016       SET_FIELD_BITPOS (*fp, 0);
15017
15018       /* Get bit size of field (zero if none).  */
15019       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15020       if (attr)
15021         {
15022           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15023         }
15024       else
15025         {
15026           FIELD_BITSIZE (*fp) = 0;
15027         }
15028
15029       /* Get bit offset of field.  */
15030       if (handle_data_member_location (die, cu, &offset))
15031         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15032       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15033       if (attr)
15034         {
15035           if (gdbarch_bits_big_endian (gdbarch))
15036             {
15037               /* For big endian bits, the DW_AT_bit_offset gives the
15038                  additional bit offset from the MSB of the containing
15039                  anonymous object to the MSB of the field.  We don't
15040                  have to do anything special since we don't need to
15041                  know the size of the anonymous object.  */
15042               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15043             }
15044           else
15045             {
15046               /* For little endian bits, compute the bit offset to the
15047                  MSB of the anonymous object, subtract off the number of
15048                  bits from the MSB of the field to the MSB of the
15049                  object, and then subtract off the number of bits of
15050                  the field itself.  The result is the bit offset of
15051                  the LSB of the field.  */
15052               int anonymous_size;
15053               int bit_offset = DW_UNSND (attr);
15054
15055               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15056               if (attr)
15057                 {
15058                   /* The size of the anonymous object containing
15059                      the bit field is explicit, so use the
15060                      indicated size (in bytes).  */
15061                   anonymous_size = DW_UNSND (attr);
15062                 }
15063               else
15064                 {
15065                   /* The size of the anonymous object containing
15066                      the bit field must be inferred from the type
15067                      attribute of the data member containing the
15068                      bit field.  */
15069                   anonymous_size = TYPE_LENGTH (fp->type);
15070                 }
15071               SET_FIELD_BITPOS (*fp,
15072                                 (FIELD_BITPOS (*fp)
15073                                  + anonymous_size * bits_per_byte
15074                                  - bit_offset - FIELD_BITSIZE (*fp)));
15075             }
15076         }
15077       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15078       if (attr != NULL)
15079         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15080                                 + dwarf2_get_attr_constant_value (attr, 0)));
15081
15082       /* Get name of field.  */
15083       fieldname = dwarf2_name (die, cu);
15084       if (fieldname == NULL)
15085         fieldname = "";
15086
15087       /* The name is already allocated along with this objfile, so we don't
15088          need to duplicate it for the type.  */
15089       fp->name = fieldname;
15090
15091       /* Change accessibility for artificial fields (e.g. virtual table
15092          pointer or virtual base class pointer) to private.  */
15093       if (dwarf2_attr (die, DW_AT_artificial, cu))
15094         {
15095           FIELD_ARTIFICIAL (*fp) = 1;
15096           new_field->accessibility = DW_ACCESS_private;
15097           fip->non_public_fields = 1;
15098         }
15099     }
15100   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15101     {
15102       /* C++ static member.  */
15103
15104       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15105          is a declaration, but all versions of G++ as of this writing
15106          (so through at least 3.2.1) incorrectly generate
15107          DW_TAG_variable tags.  */
15108
15109       const char *physname;
15110
15111       /* Get name of field.  */
15112       fieldname = dwarf2_name (die, cu);
15113       if (fieldname == NULL)
15114         return;
15115
15116       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15117       if (attr
15118           /* Only create a symbol if this is an external value.
15119              new_symbol checks this and puts the value in the global symbol
15120              table, which we want.  If it is not external, new_symbol
15121              will try to put the value in cu->list_in_scope which is wrong.  */
15122           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15123         {
15124           /* A static const member, not much different than an enum as far as
15125              we're concerned, except that we can support more types.  */
15126           new_symbol (die, NULL, cu);
15127         }
15128
15129       /* Get physical name.  */
15130       physname = dwarf2_physname (fieldname, die, cu);
15131
15132       /* The name is already allocated along with this objfile, so we don't
15133          need to duplicate it for the type.  */
15134       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15135       FIELD_TYPE (*fp) = die_type (die, cu);
15136       FIELD_NAME (*fp) = fieldname;
15137     }
15138   else if (die->tag == DW_TAG_inheritance)
15139     {
15140       LONGEST offset;
15141
15142       /* C++ base class field.  */
15143       if (handle_data_member_location (die, cu, &offset))
15144         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15145       FIELD_BITSIZE (*fp) = 0;
15146       FIELD_TYPE (*fp) = die_type (die, cu);
15147       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15148     }
15149   else if (die->tag == DW_TAG_variant_part)
15150     {
15151       /* process_structure_scope will treat this DIE as a union.  */
15152       process_structure_scope (die, cu);
15153
15154       /* The variant part is relative to the start of the enclosing
15155          structure.  */
15156       SET_FIELD_BITPOS (*fp, 0);
15157       fp->type = get_die_type (die, cu);
15158       fp->artificial = 1;
15159       fp->name = "<<variant>>";
15160
15161       /* Normally a DW_TAG_variant_part won't have a size, but our
15162          representation requires one, so set it to the maximum of the
15163          child sizes.  */
15164       if (TYPE_LENGTH (fp->type) == 0)
15165         {
15166           unsigned max = 0;
15167           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15168             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15169               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15170           TYPE_LENGTH (fp->type) = max;
15171         }
15172     }
15173   else
15174     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15175 }
15176
15177 /* Can the type given by DIE define another type?  */
15178
15179 static bool
15180 type_can_define_types (const struct die_info *die)
15181 {
15182   switch (die->tag)
15183     {
15184     case DW_TAG_typedef:
15185     case DW_TAG_class_type:
15186     case DW_TAG_structure_type:
15187     case DW_TAG_union_type:
15188     case DW_TAG_enumeration_type:
15189       return true;
15190
15191     default:
15192       return false;
15193     }
15194 }
15195
15196 /* Add a type definition defined in the scope of the FIP's class.  */
15197
15198 static void
15199 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15200                       struct dwarf2_cu *cu)
15201 {
15202   struct decl_field fp;
15203   memset (&fp, 0, sizeof (fp));
15204
15205   gdb_assert (type_can_define_types (die));
15206
15207   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15208   fp.name = dwarf2_name (die, cu);
15209   fp.type = read_type_die (die, cu);
15210
15211   /* Save accessibility.  */
15212   enum dwarf_access_attribute accessibility;
15213   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15214   if (attr != NULL)
15215     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15216   else
15217     accessibility = dwarf2_default_access_attribute (die, cu);
15218   switch (accessibility)
15219     {
15220     case DW_ACCESS_public:
15221       /* The assumed value if neither private nor protected.  */
15222       break;
15223     case DW_ACCESS_private:
15224       fp.is_private = 1;
15225       break;
15226     case DW_ACCESS_protected:
15227       fp.is_protected = 1;
15228       break;
15229     default:
15230       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15231     }
15232
15233   if (die->tag == DW_TAG_typedef)
15234     fip->typedef_field_list.push_back (fp);
15235   else
15236     fip->nested_types_list.push_back (fp);
15237 }
15238
15239 /* Create the vector of fields, and attach it to the type.  */
15240
15241 static void
15242 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15243                               struct dwarf2_cu *cu)
15244 {
15245   int nfields = fip->nfields;
15246
15247   /* Record the field count, allocate space for the array of fields,
15248      and create blank accessibility bitfields if necessary.  */
15249   TYPE_NFIELDS (type) = nfields;
15250   TYPE_FIELDS (type) = (struct field *)
15251     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15252
15253   if (fip->non_public_fields && cu->language != language_ada)
15254     {
15255       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15256
15257       TYPE_FIELD_PRIVATE_BITS (type) =
15258         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15259       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15260
15261       TYPE_FIELD_PROTECTED_BITS (type) =
15262         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15263       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15264
15265       TYPE_FIELD_IGNORE_BITS (type) =
15266         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15267       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15268     }
15269
15270   /* If the type has baseclasses, allocate and clear a bit vector for
15271      TYPE_FIELD_VIRTUAL_BITS.  */
15272   if (!fip->baseclasses.empty () && cu->language != language_ada)
15273     {
15274       int num_bytes = B_BYTES (fip->baseclasses.size ());
15275       unsigned char *pointer;
15276
15277       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15278       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15279       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15280       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15281       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15282     }
15283
15284   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15285     {
15286       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15287
15288       for (int index = 0; index < nfields; ++index)
15289         {
15290           struct nextfield &field = fip->fields[index];
15291
15292           if (field.variant.is_discriminant)
15293             di->discriminant_index = index;
15294           else if (field.variant.default_branch)
15295             di->default_index = index;
15296           else
15297             di->discriminants[index] = field.variant.discriminant_value;
15298         }
15299     }
15300
15301   /* Copy the saved-up fields into the field vector.  */
15302   for (int i = 0; i < nfields; ++i)
15303     {
15304       struct nextfield &field
15305         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15306            : fip->fields[i - fip->baseclasses.size ()]);
15307
15308       TYPE_FIELD (type, i) = field.field;
15309       switch (field.accessibility)
15310         {
15311         case DW_ACCESS_private:
15312           if (cu->language != language_ada)
15313             SET_TYPE_FIELD_PRIVATE (type, i);
15314           break;
15315
15316         case DW_ACCESS_protected:
15317           if (cu->language != language_ada)
15318             SET_TYPE_FIELD_PROTECTED (type, i);
15319           break;
15320
15321         case DW_ACCESS_public:
15322           break;
15323
15324         default:
15325           /* Unknown accessibility.  Complain and treat it as public.  */
15326           {
15327             complaint (_("unsupported accessibility %d"),
15328                        field.accessibility);
15329           }
15330           break;
15331         }
15332       if (i < fip->baseclasses.size ())
15333         {
15334           switch (field.virtuality)
15335             {
15336             case DW_VIRTUALITY_virtual:
15337             case DW_VIRTUALITY_pure_virtual:
15338               if (cu->language == language_ada)
15339                 error (_("unexpected virtuality in component of Ada type"));
15340               SET_TYPE_FIELD_VIRTUAL (type, i);
15341               break;
15342             }
15343         }
15344     }
15345 }
15346
15347 /* Return true if this member function is a constructor, false
15348    otherwise.  */
15349
15350 static int
15351 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15352 {
15353   const char *fieldname;
15354   const char *type_name;
15355   int len;
15356
15357   if (die->parent == NULL)
15358     return 0;
15359
15360   if (die->parent->tag != DW_TAG_structure_type
15361       && die->parent->tag != DW_TAG_union_type
15362       && die->parent->tag != DW_TAG_class_type)
15363     return 0;
15364
15365   fieldname = dwarf2_name (die, cu);
15366   type_name = dwarf2_name (die->parent, cu);
15367   if (fieldname == NULL || type_name == NULL)
15368     return 0;
15369
15370   len = strlen (fieldname);
15371   return (strncmp (fieldname, type_name, len) == 0
15372           && (type_name[len] == '\0' || type_name[len] == '<'));
15373 }
15374
15375 /* Add a member function to the proper fieldlist.  */
15376
15377 static void
15378 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15379                       struct type *type, struct dwarf2_cu *cu)
15380 {
15381   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15382   struct attribute *attr;
15383   int i;
15384   struct fnfieldlist *flp = nullptr;
15385   struct fn_field *fnp;
15386   const char *fieldname;
15387   struct type *this_type;
15388   enum dwarf_access_attribute accessibility;
15389
15390   if (cu->language == language_ada)
15391     error (_("unexpected member function in Ada type"));
15392
15393   /* Get name of member function.  */
15394   fieldname = dwarf2_name (die, cu);
15395   if (fieldname == NULL)
15396     return;
15397
15398   /* Look up member function name in fieldlist.  */
15399   for (i = 0; i < fip->fnfieldlists.size (); i++)
15400     {
15401       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15402         {
15403           flp = &fip->fnfieldlists[i];
15404           break;
15405         }
15406     }
15407
15408   /* Create a new fnfieldlist if necessary.  */
15409   if (flp == nullptr)
15410     {
15411       fip->fnfieldlists.emplace_back ();
15412       flp = &fip->fnfieldlists.back ();
15413       flp->name = fieldname;
15414       i = fip->fnfieldlists.size () - 1;
15415     }
15416
15417   /* Create a new member function field and add it to the vector of
15418      fnfieldlists.  */
15419   flp->fnfields.emplace_back ();
15420   fnp = &flp->fnfields.back ();
15421
15422   /* Delay processing of the physname until later.  */
15423   if (cu->language == language_cplus)
15424     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15425                         die, cu);
15426   else
15427     {
15428       const char *physname = dwarf2_physname (fieldname, die, cu);
15429       fnp->physname = physname ? physname : "";
15430     }
15431
15432   fnp->type = alloc_type (objfile);
15433   this_type = read_type_die (die, cu);
15434   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15435     {
15436       int nparams = TYPE_NFIELDS (this_type);
15437
15438       /* TYPE is the domain of this method, and THIS_TYPE is the type
15439            of the method itself (TYPE_CODE_METHOD).  */
15440       smash_to_method_type (fnp->type, type,
15441                             TYPE_TARGET_TYPE (this_type),
15442                             TYPE_FIELDS (this_type),
15443                             TYPE_NFIELDS (this_type),
15444                             TYPE_VARARGS (this_type));
15445
15446       /* Handle static member functions.
15447          Dwarf2 has no clean way to discern C++ static and non-static
15448          member functions.  G++ helps GDB by marking the first
15449          parameter for non-static member functions (which is the this
15450          pointer) as artificial.  We obtain this information from
15451          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15452       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15453         fnp->voffset = VOFFSET_STATIC;
15454     }
15455   else
15456     complaint (_("member function type missing for '%s'"),
15457                dwarf2_full_name (fieldname, die, cu));
15458
15459   /* Get fcontext from DW_AT_containing_type if present.  */
15460   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15461     fnp->fcontext = die_containing_type (die, cu);
15462
15463   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15464      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15465
15466   /* Get accessibility.  */
15467   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15468   if (attr)
15469     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15470   else
15471     accessibility = dwarf2_default_access_attribute (die, cu);
15472   switch (accessibility)
15473     {
15474     case DW_ACCESS_private:
15475       fnp->is_private = 1;
15476       break;
15477     case DW_ACCESS_protected:
15478       fnp->is_protected = 1;
15479       break;
15480     }
15481
15482   /* Check for artificial methods.  */
15483   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15484   if (attr && DW_UNSND (attr) != 0)
15485     fnp->is_artificial = 1;
15486
15487   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15488
15489   /* Get index in virtual function table if it is a virtual member
15490      function.  For older versions of GCC, this is an offset in the
15491      appropriate virtual table, as specified by DW_AT_containing_type.
15492      For everyone else, it is an expression to be evaluated relative
15493      to the object address.  */
15494
15495   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15496   if (attr)
15497     {
15498       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15499         {
15500           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15501             {
15502               /* Old-style GCC.  */
15503               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15504             }
15505           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15506                    || (DW_BLOCK (attr)->size > 1
15507                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15508                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15509             {
15510               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15511               if ((fnp->voffset % cu->header.addr_size) != 0)
15512                 dwarf2_complex_location_expr_complaint ();
15513               else
15514                 fnp->voffset /= cu->header.addr_size;
15515               fnp->voffset += 2;
15516             }
15517           else
15518             dwarf2_complex_location_expr_complaint ();
15519
15520           if (!fnp->fcontext)
15521             {
15522               /* If there is no `this' field and no DW_AT_containing_type,
15523                  we cannot actually find a base class context for the
15524                  vtable!  */
15525               if (TYPE_NFIELDS (this_type) == 0
15526                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15527                 {
15528                   complaint (_("cannot determine context for virtual member "
15529                                "function \"%s\" (offset %s)"),
15530                              fieldname, sect_offset_str (die->sect_off));
15531                 }
15532               else
15533                 {
15534                   fnp->fcontext
15535                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15536                 }
15537             }
15538         }
15539       else if (attr_form_is_section_offset (attr))
15540         {
15541           dwarf2_complex_location_expr_complaint ();
15542         }
15543       else
15544         {
15545           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15546                                                  fieldname);
15547         }
15548     }
15549   else
15550     {
15551       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15552       if (attr && DW_UNSND (attr))
15553         {
15554           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15555           complaint (_("Member function \"%s\" (offset %s) is virtual "
15556                        "but the vtable offset is not specified"),
15557                      fieldname, sect_offset_str (die->sect_off));
15558           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15559           TYPE_CPLUS_DYNAMIC (type) = 1;
15560         }
15561     }
15562 }
15563
15564 /* Create the vector of member function fields, and attach it to the type.  */
15565
15566 static void
15567 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15568                                  struct dwarf2_cu *cu)
15569 {
15570   if (cu->language == language_ada)
15571     error (_("unexpected member functions in Ada type"));
15572
15573   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15574   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15575     TYPE_ALLOC (type,
15576                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15577
15578   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15579     {
15580       struct fnfieldlist &nf = fip->fnfieldlists[i];
15581       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15582
15583       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15584       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15585       fn_flp->fn_fields = (struct fn_field *)
15586         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15587
15588       for (int k = 0; k < nf.fnfields.size (); ++k)
15589         fn_flp->fn_fields[k] = nf.fnfields[k];
15590     }
15591
15592   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15593 }
15594
15595 /* Returns non-zero if NAME is the name of a vtable member in CU's
15596    language, zero otherwise.  */
15597 static int
15598 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15599 {
15600   static const char vptr[] = "_vptr";
15601
15602   /* Look for the C++ form of the vtable.  */
15603   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15604     return 1;
15605
15606   return 0;
15607 }
15608
15609 /* GCC outputs unnamed structures that are really pointers to member
15610    functions, with the ABI-specified layout.  If TYPE describes
15611    such a structure, smash it into a member function type.
15612
15613    GCC shouldn't do this; it should just output pointer to member DIEs.
15614    This is GCC PR debug/28767.  */
15615
15616 static void
15617 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15618 {
15619   struct type *pfn_type, *self_type, *new_type;
15620
15621   /* Check for a structure with no name and two children.  */
15622   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15623     return;
15624
15625   /* Check for __pfn and __delta members.  */
15626   if (TYPE_FIELD_NAME (type, 0) == NULL
15627       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15628       || TYPE_FIELD_NAME (type, 1) == NULL
15629       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15630     return;
15631
15632   /* Find the type of the method.  */
15633   pfn_type = TYPE_FIELD_TYPE (type, 0);
15634   if (pfn_type == NULL
15635       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15636       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15637     return;
15638
15639   /* Look for the "this" argument.  */
15640   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15641   if (TYPE_NFIELDS (pfn_type) == 0
15642       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15643       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15644     return;
15645
15646   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15647   new_type = alloc_type (objfile);
15648   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15649                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15650                         TYPE_VARARGS (pfn_type));
15651   smash_to_methodptr_type (type, new_type);
15652 }
15653
15654 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15655    appropriate error checking and issuing complaints if there is a
15656    problem.  */
15657
15658 static ULONGEST
15659 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15660 {
15661   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15662
15663   if (attr == nullptr)
15664     return 0;
15665
15666   if (!attr_form_is_constant (attr))
15667     {
15668       complaint (_("DW_AT_alignment must have constant form"
15669                    " - DIE at %s [in module %s]"),
15670                  sect_offset_str (die->sect_off),
15671                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15672       return 0;
15673     }
15674
15675   ULONGEST align;
15676   if (attr->form == DW_FORM_sdata)
15677     {
15678       LONGEST val = DW_SND (attr);
15679       if (val < 0)
15680         {
15681           complaint (_("DW_AT_alignment value must not be negative"
15682                        " - DIE at %s [in module %s]"),
15683                      sect_offset_str (die->sect_off),
15684                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15685           return 0;
15686         }
15687       align = val;
15688     }
15689   else
15690     align = DW_UNSND (attr);
15691
15692   if (align == 0)
15693     {
15694       complaint (_("DW_AT_alignment value must not be zero"
15695                    " - DIE at %s [in module %s]"),
15696                  sect_offset_str (die->sect_off),
15697                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15698       return 0;
15699     }
15700   if ((align & (align - 1)) != 0)
15701     {
15702       complaint (_("DW_AT_alignment value must be a power of 2"
15703                    " - DIE at %s [in module %s]"),
15704                  sect_offset_str (die->sect_off),
15705                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15706       return 0;
15707     }
15708
15709   return align;
15710 }
15711
15712 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15713    the alignment for TYPE.  */
15714
15715 static void
15716 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15717                      struct type *type)
15718 {
15719   if (!set_type_align (type, get_alignment (cu, die)))
15720     complaint (_("DW_AT_alignment value too large"
15721                  " - DIE at %s [in module %s]"),
15722                sect_offset_str (die->sect_off),
15723                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15724 }
15725
15726 /* Called when we find the DIE that starts a structure or union scope
15727    (definition) to create a type for the structure or union.  Fill in
15728    the type's name and general properties; the members will not be
15729    processed until process_structure_scope.  A symbol table entry for
15730    the type will also not be done until process_structure_scope (assuming
15731    the type has a name).
15732
15733    NOTE: we need to call these functions regardless of whether or not the
15734    DIE has a DW_AT_name attribute, since it might be an anonymous
15735    structure or union.  This gets the type entered into our set of
15736    user defined types.  */
15737
15738 static struct type *
15739 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15740 {
15741   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15742   struct type *type;
15743   struct attribute *attr;
15744   const char *name;
15745
15746   /* If the definition of this type lives in .debug_types, read that type.
15747      Don't follow DW_AT_specification though, that will take us back up
15748      the chain and we want to go down.  */
15749   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15750   if (attr)
15751     {
15752       type = get_DW_AT_signature_type (die, attr, cu);
15753
15754       /* The type's CU may not be the same as CU.
15755          Ensure TYPE is recorded with CU in die_type_hash.  */
15756       return set_die_type (die, type, cu);
15757     }
15758
15759   type = alloc_type (objfile);
15760   INIT_CPLUS_SPECIFIC (type);
15761
15762   name = dwarf2_name (die, cu);
15763   if (name != NULL)
15764     {
15765       if (cu->language == language_cplus
15766           || cu->language == language_d
15767           || cu->language == language_rust)
15768         {
15769           const char *full_name = dwarf2_full_name (name, die, cu);
15770
15771           /* dwarf2_full_name might have already finished building the DIE's
15772              type.  If so, there is no need to continue.  */
15773           if (get_die_type (die, cu) != NULL)
15774             return get_die_type (die, cu);
15775
15776           TYPE_NAME (type) = full_name;
15777         }
15778       else
15779         {
15780           /* The name is already allocated along with this objfile, so
15781              we don't need to duplicate it for the type.  */
15782           TYPE_NAME (type) = name;
15783         }
15784     }
15785
15786   if (die->tag == DW_TAG_structure_type)
15787     {
15788       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15789     }
15790   else if (die->tag == DW_TAG_union_type)
15791     {
15792       TYPE_CODE (type) = TYPE_CODE_UNION;
15793     }
15794   else if (die->tag == DW_TAG_variant_part)
15795     {
15796       TYPE_CODE (type) = TYPE_CODE_UNION;
15797       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15798     }
15799   else
15800     {
15801       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15802     }
15803
15804   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15805     TYPE_DECLARED_CLASS (type) = 1;
15806
15807   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15808   if (attr)
15809     {
15810       if (attr_form_is_constant (attr))
15811         TYPE_LENGTH (type) = DW_UNSND (attr);
15812       else
15813         {
15814           /* For the moment, dynamic type sizes are not supported
15815              by GDB's struct type.  The actual size is determined
15816              on-demand when resolving the type of a given object,
15817              so set the type's length to zero for now.  Otherwise,
15818              we record an expression as the length, and that expression
15819              could lead to a very large value, which could eventually
15820              lead to us trying to allocate that much memory when creating
15821              a value of that type.  */
15822           TYPE_LENGTH (type) = 0;
15823         }
15824     }
15825   else
15826     {
15827       TYPE_LENGTH (type) = 0;
15828     }
15829
15830   maybe_set_alignment (cu, die, type);
15831
15832   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15833     {
15834       /* ICC<14 does not output the required DW_AT_declaration on
15835          incomplete types, but gives them a size of zero.  */
15836       TYPE_STUB (type) = 1;
15837     }
15838   else
15839     TYPE_STUB_SUPPORTED (type) = 1;
15840
15841   if (die_is_declaration (die, cu))
15842     TYPE_STUB (type) = 1;
15843   else if (attr == NULL && die->child == NULL
15844            && producer_is_realview (cu->producer))
15845     /* RealView does not output the required DW_AT_declaration
15846        on incomplete types.  */
15847     TYPE_STUB (type) = 1;
15848
15849   /* We need to add the type field to the die immediately so we don't
15850      infinitely recurse when dealing with pointers to the structure
15851      type within the structure itself.  */
15852   set_die_type (die, type, cu);
15853
15854   /* set_die_type should be already done.  */
15855   set_descriptive_type (type, die, cu);
15856
15857   return type;
15858 }
15859
15860 /* A helper for process_structure_scope that handles a single member
15861    DIE.  */
15862
15863 static void
15864 handle_struct_member_die (struct die_info *child_die, struct type *type,
15865                           struct field_info *fi,
15866                           std::vector<struct symbol *> *template_args,
15867                           struct dwarf2_cu *cu)
15868 {
15869   if (child_die->tag == DW_TAG_member
15870       || child_die->tag == DW_TAG_variable
15871       || child_die->tag == DW_TAG_variant_part)
15872     {
15873       /* NOTE: carlton/2002-11-05: A C++ static data member
15874          should be a DW_TAG_member that is a declaration, but
15875          all versions of G++ as of this writing (so through at
15876          least 3.2.1) incorrectly generate DW_TAG_variable
15877          tags for them instead.  */
15878       dwarf2_add_field (fi, child_die, cu);
15879     }
15880   else if (child_die->tag == DW_TAG_subprogram)
15881     {
15882       /* Rust doesn't have member functions in the C++ sense.
15883          However, it does emit ordinary functions as children
15884          of a struct DIE.  */
15885       if (cu->language == language_rust)
15886         read_func_scope (child_die, cu);
15887       else
15888         {
15889           /* C++ member function.  */
15890           dwarf2_add_member_fn (fi, child_die, type, cu);
15891         }
15892     }
15893   else if (child_die->tag == DW_TAG_inheritance)
15894     {
15895       /* C++ base class field.  */
15896       dwarf2_add_field (fi, child_die, cu);
15897     }
15898   else if (type_can_define_types (child_die))
15899     dwarf2_add_type_defn (fi, child_die, cu);
15900   else if (child_die->tag == DW_TAG_template_type_param
15901            || child_die->tag == DW_TAG_template_value_param)
15902     {
15903       struct symbol *arg = new_symbol (child_die, NULL, cu);
15904
15905       if (arg != NULL)
15906         template_args->push_back (arg);
15907     }
15908   else if (child_die->tag == DW_TAG_variant)
15909     {
15910       /* In a variant we want to get the discriminant and also add a
15911          field for our sole member child.  */
15912       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15913
15914       for (die_info *variant_child = child_die->child;
15915            variant_child != NULL;
15916            variant_child = sibling_die (variant_child))
15917         {
15918           if (variant_child->tag == DW_TAG_member)
15919             {
15920               handle_struct_member_die (variant_child, type, fi,
15921                                         template_args, cu);
15922               /* Only handle the one.  */
15923               break;
15924             }
15925         }
15926
15927       /* We don't handle this but we might as well report it if we see
15928          it.  */
15929       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15930           complaint (_("DW_AT_discr_list is not supported yet"
15931                        " - DIE at %s [in module %s]"),
15932                      sect_offset_str (child_die->sect_off),
15933                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15934
15935       /* The first field was just added, so we can stash the
15936          discriminant there.  */
15937       gdb_assert (!fi->fields.empty ());
15938       if (discr == NULL)
15939         fi->fields.back ().variant.default_branch = true;
15940       else
15941         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15942     }
15943 }
15944
15945 /* Finish creating a structure or union type, including filling in
15946    its members and creating a symbol for it.  */
15947
15948 static void
15949 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15950 {
15951   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15952   struct die_info *child_die;
15953   struct type *type;
15954
15955   type = get_die_type (die, cu);
15956   if (type == NULL)
15957     type = read_structure_type (die, cu);
15958
15959   /* When reading a DW_TAG_variant_part, we need to notice when we
15960      read the discriminant member, so we can record it later in the
15961      discriminant_info.  */
15962   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15963   sect_offset discr_offset;
15964   bool has_template_parameters = false;
15965
15966   if (is_variant_part)
15967     {
15968       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15969       if (discr == NULL)
15970         {
15971           /* Maybe it's a univariant form, an extension we support.
15972              In this case arrange not to check the offset.  */
15973           is_variant_part = false;
15974         }
15975       else if (attr_form_is_ref (discr))
15976         {
15977           struct dwarf2_cu *target_cu = cu;
15978           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15979
15980           discr_offset = target_die->sect_off;
15981         }
15982       else
15983         {
15984           complaint (_("DW_AT_discr does not have DIE reference form"
15985                        " - DIE at %s [in module %s]"),
15986                      sect_offset_str (die->sect_off),
15987                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15988           is_variant_part = false;
15989         }
15990     }
15991
15992   if (die->child != NULL && ! die_is_declaration (die, cu))
15993     {
15994       struct field_info fi;
15995       std::vector<struct symbol *> template_args;
15996
15997       child_die = die->child;
15998
15999       while (child_die && child_die->tag)
16000         {
16001           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16002
16003           if (is_variant_part && discr_offset == child_die->sect_off)
16004             fi.fields.back ().variant.is_discriminant = true;
16005
16006           child_die = sibling_die (child_die);
16007         }
16008
16009       /* Attach template arguments to type.  */
16010       if (!template_args.empty ())
16011         {
16012           has_template_parameters = true;
16013           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16014           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16015           TYPE_TEMPLATE_ARGUMENTS (type)
16016             = XOBNEWVEC (&objfile->objfile_obstack,
16017                          struct symbol *,
16018                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16019           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16020                   template_args.data (),
16021                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16022                    * sizeof (struct symbol *)));
16023         }
16024
16025       /* Attach fields and member functions to the type.  */
16026       if (fi.nfields)
16027         dwarf2_attach_fields_to_type (&fi, type, cu);
16028       if (!fi.fnfieldlists.empty ())
16029         {
16030           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16031
16032           /* Get the type which refers to the base class (possibly this
16033              class itself) which contains the vtable pointer for the current
16034              class from the DW_AT_containing_type attribute.  This use of
16035              DW_AT_containing_type is a GNU extension.  */
16036
16037           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16038             {
16039               struct type *t = die_containing_type (die, cu);
16040
16041               set_type_vptr_basetype (type, t);
16042               if (type == t)
16043                 {
16044                   int i;
16045
16046                   /* Our own class provides vtbl ptr.  */
16047                   for (i = TYPE_NFIELDS (t) - 1;
16048                        i >= TYPE_N_BASECLASSES (t);
16049                        --i)
16050                     {
16051                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16052
16053                       if (is_vtable_name (fieldname, cu))
16054                         {
16055                           set_type_vptr_fieldno (type, i);
16056                           break;
16057                         }
16058                     }
16059
16060                   /* Complain if virtual function table field not found.  */
16061                   if (i < TYPE_N_BASECLASSES (t))
16062                     complaint (_("virtual function table pointer "
16063                                  "not found when defining class '%s'"),
16064                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16065                 }
16066               else
16067                 {
16068                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16069                 }
16070             }
16071           else if (cu->producer
16072                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16073             {
16074               /* The IBM XLC compiler does not provide direct indication
16075                  of the containing type, but the vtable pointer is
16076                  always named __vfp.  */
16077
16078               int i;
16079
16080               for (i = TYPE_NFIELDS (type) - 1;
16081                    i >= TYPE_N_BASECLASSES (type);
16082                    --i)
16083                 {
16084                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16085                     {
16086                       set_type_vptr_fieldno (type, i);
16087                       set_type_vptr_basetype (type, type);
16088                       break;
16089                     }
16090                 }
16091             }
16092         }
16093
16094       /* Copy fi.typedef_field_list linked list elements content into the
16095          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16096       if (!fi.typedef_field_list.empty ())
16097         {
16098           int count = fi.typedef_field_list.size ();
16099
16100           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16101           TYPE_TYPEDEF_FIELD_ARRAY (type)
16102             = ((struct decl_field *)
16103                TYPE_ALLOC (type,
16104                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16105           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16106
16107           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16108             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16109         }
16110
16111       /* Copy fi.nested_types_list linked list elements content into the
16112          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16113       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16114         {
16115           int count = fi.nested_types_list.size ();
16116
16117           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16118           TYPE_NESTED_TYPES_ARRAY (type)
16119             = ((struct decl_field *)
16120                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16121           TYPE_NESTED_TYPES_COUNT (type) = count;
16122
16123           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16124             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16125         }
16126     }
16127
16128   quirk_gcc_member_function_pointer (type, objfile);
16129   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16130     cu->rust_unions.push_back (type);
16131
16132   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16133      snapshots) has been known to create a die giving a declaration
16134      for a class that has, as a child, a die giving a definition for a
16135      nested class.  So we have to process our children even if the
16136      current die is a declaration.  Normally, of course, a declaration
16137      won't have any children at all.  */
16138
16139   child_die = die->child;
16140
16141   while (child_die != NULL && child_die->tag)
16142     {
16143       if (child_die->tag == DW_TAG_member
16144           || child_die->tag == DW_TAG_variable
16145           || child_die->tag == DW_TAG_inheritance
16146           || child_die->tag == DW_TAG_template_value_param
16147           || child_die->tag == DW_TAG_template_type_param)
16148         {
16149           /* Do nothing.  */
16150         }
16151       else
16152         process_die (child_die, cu);
16153
16154       child_die = sibling_die (child_die);
16155     }
16156
16157   /* Do not consider external references.  According to the DWARF standard,
16158      these DIEs are identified by the fact that they have no byte_size
16159      attribute, and a declaration attribute.  */
16160   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16161       || !die_is_declaration (die, cu))
16162     {
16163       struct symbol *sym = new_symbol (die, type, cu);
16164
16165       if (has_template_parameters)
16166         {
16167           struct symtab *symtab;
16168           if (sym != nullptr)
16169             symtab = symbol_symtab (sym);
16170           else if (cu->line_header != nullptr)
16171             {
16172               /* Any related symtab will do.  */
16173               symtab
16174                 = cu->line_header->file_name_at (file_name_index (1))->symtab;
16175             }
16176           else
16177             {
16178               symtab = nullptr;
16179               complaint (_("could not find suitable "
16180                            "symtab for template parameter"
16181                            " - DIE at %s [in module %s]"),
16182                          sect_offset_str (die->sect_off),
16183                          objfile_name (objfile));
16184             }
16185
16186           if (symtab != nullptr)
16187             {
16188               /* Make sure that the symtab is set on the new symbols.
16189                  Even though they don't appear in this symtab directly,
16190                  other parts of gdb assume that symbols do, and this is
16191                  reasonably true.  */
16192               for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16193                 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
16194             }
16195         }
16196     }
16197 }
16198
16199 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16200    update TYPE using some information only available in DIE's children.  */
16201
16202 static void
16203 update_enumeration_type_from_children (struct die_info *die,
16204                                        struct type *type,
16205                                        struct dwarf2_cu *cu)
16206 {
16207   struct die_info *child_die;
16208   int unsigned_enum = 1;
16209   int flag_enum = 1;
16210   ULONGEST mask = 0;
16211
16212   auto_obstack obstack;
16213
16214   for (child_die = die->child;
16215        child_die != NULL && child_die->tag;
16216        child_die = sibling_die (child_die))
16217     {
16218       struct attribute *attr;
16219       LONGEST value;
16220       const gdb_byte *bytes;
16221       struct dwarf2_locexpr_baton *baton;
16222       const char *name;
16223
16224       if (child_die->tag != DW_TAG_enumerator)
16225         continue;
16226
16227       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16228       if (attr == NULL)
16229         continue;
16230
16231       name = dwarf2_name (child_die, cu);
16232       if (name == NULL)
16233         name = "<anonymous enumerator>";
16234
16235       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16236                                &value, &bytes, &baton);
16237       if (value < 0)
16238         {
16239           unsigned_enum = 0;
16240           flag_enum = 0;
16241         }
16242       else if ((mask & value) != 0)
16243         flag_enum = 0;
16244       else
16245         mask |= value;
16246
16247       /* If we already know that the enum type is neither unsigned, nor
16248          a flag type, no need to look at the rest of the enumerates.  */
16249       if (!unsigned_enum && !flag_enum)
16250         break;
16251     }
16252
16253   if (unsigned_enum)
16254     TYPE_UNSIGNED (type) = 1;
16255   if (flag_enum)
16256     TYPE_FLAG_ENUM (type) = 1;
16257 }
16258
16259 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16260    complete the type's fields yet, or create any symbols.  */
16261
16262 static struct type *
16263 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16264 {
16265   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16266   struct type *type;
16267   struct attribute *attr;
16268   const char *name;
16269
16270   /* If the definition of this type lives in .debug_types, read that type.
16271      Don't follow DW_AT_specification though, that will take us back up
16272      the chain and we want to go down.  */
16273   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16274   if (attr)
16275     {
16276       type = get_DW_AT_signature_type (die, attr, cu);
16277
16278       /* The type's CU may not be the same as CU.
16279          Ensure TYPE is recorded with CU in die_type_hash.  */
16280       return set_die_type (die, type, cu);
16281     }
16282
16283   type = alloc_type (objfile);
16284
16285   TYPE_CODE (type) = TYPE_CODE_ENUM;
16286   name = dwarf2_full_name (NULL, die, cu);
16287   if (name != NULL)
16288     TYPE_NAME (type) = name;
16289
16290   attr = dwarf2_attr (die, DW_AT_type, cu);
16291   if (attr != NULL)
16292     {
16293       struct type *underlying_type = die_type (die, cu);
16294
16295       TYPE_TARGET_TYPE (type) = underlying_type;
16296     }
16297
16298   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16299   if (attr)
16300     {
16301       TYPE_LENGTH (type) = DW_UNSND (attr);
16302     }
16303   else
16304     {
16305       TYPE_LENGTH (type) = 0;
16306     }
16307
16308   maybe_set_alignment (cu, die, type);
16309
16310   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16311      declared as private in the package spec, and then defined only
16312      inside the package body.  Such types are known as Taft Amendment
16313      Types.  When another package uses such a type, an incomplete DIE
16314      may be generated by the compiler.  */
16315   if (die_is_declaration (die, cu))
16316     TYPE_STUB (type) = 1;
16317
16318   /* Finish the creation of this type by using the enum's children.
16319      We must call this even when the underlying type has been provided
16320      so that we can determine if we're looking at a "flag" enum.  */
16321   update_enumeration_type_from_children (die, type, cu);
16322
16323   /* If this type has an underlying type that is not a stub, then we
16324      may use its attributes.  We always use the "unsigned" attribute
16325      in this situation, because ordinarily we guess whether the type
16326      is unsigned -- but the guess can be wrong and the underlying type
16327      can tell us the reality.  However, we defer to a local size
16328      attribute if one exists, because this lets the compiler override
16329      the underlying type if needed.  */
16330   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16331     {
16332       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16333       if (TYPE_LENGTH (type) == 0)
16334         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16335       if (TYPE_RAW_ALIGN (type) == 0
16336           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16337         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16338     }
16339
16340   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16341
16342   return set_die_type (die, type, cu);
16343 }
16344
16345 /* Given a pointer to a die which begins an enumeration, process all
16346    the dies that define the members of the enumeration, and create the
16347    symbol for the enumeration type.
16348
16349    NOTE: We reverse the order of the element list.  */
16350
16351 static void
16352 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16353 {
16354   struct type *this_type;
16355
16356   this_type = get_die_type (die, cu);
16357   if (this_type == NULL)
16358     this_type = read_enumeration_type (die, cu);
16359
16360   if (die->child != NULL)
16361     {
16362       struct die_info *child_die;
16363       struct symbol *sym;
16364       struct field *fields = NULL;
16365       int num_fields = 0;
16366       const char *name;
16367
16368       child_die = die->child;
16369       while (child_die && child_die->tag)
16370         {
16371           if (child_die->tag != DW_TAG_enumerator)
16372             {
16373               process_die (child_die, cu);
16374             }
16375           else
16376             {
16377               name = dwarf2_name (child_die, cu);
16378               if (name)
16379                 {
16380                   sym = new_symbol (child_die, this_type, cu);
16381
16382                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16383                     {
16384                       fields = (struct field *)
16385                         xrealloc (fields,
16386                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16387                                   * sizeof (struct field));
16388                     }
16389
16390                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16391                   FIELD_TYPE (fields[num_fields]) = NULL;
16392                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16393                   FIELD_BITSIZE (fields[num_fields]) = 0;
16394
16395                   num_fields++;
16396                 }
16397             }
16398
16399           child_die = sibling_die (child_die);
16400         }
16401
16402       if (num_fields)
16403         {
16404           TYPE_NFIELDS (this_type) = num_fields;
16405           TYPE_FIELDS (this_type) = (struct field *)
16406             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16407           memcpy (TYPE_FIELDS (this_type), fields,
16408                   sizeof (struct field) * num_fields);
16409           xfree (fields);
16410         }
16411     }
16412
16413   /* If we are reading an enum from a .debug_types unit, and the enum
16414      is a declaration, and the enum is not the signatured type in the
16415      unit, then we do not want to add a symbol for it.  Adding a
16416      symbol would in some cases obscure the true definition of the
16417      enum, giving users an incomplete type when the definition is
16418      actually available.  Note that we do not want to do this for all
16419      enums which are just declarations, because C++0x allows forward
16420      enum declarations.  */
16421   if (cu->per_cu->is_debug_types
16422       && die_is_declaration (die, cu))
16423     {
16424       struct signatured_type *sig_type;
16425
16426       sig_type = (struct signatured_type *) cu->per_cu;
16427       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16428       if (sig_type->type_offset_in_section != die->sect_off)
16429         return;
16430     }
16431
16432   new_symbol (die, this_type, cu);
16433 }
16434
16435 /* Extract all information from a DW_TAG_array_type DIE and put it in
16436    the DIE's type field.  For now, this only handles one dimensional
16437    arrays.  */
16438
16439 static struct type *
16440 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16441 {
16442   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16443   struct die_info *child_die;
16444   struct type *type;
16445   struct type *element_type, *range_type, *index_type;
16446   struct attribute *attr;
16447   const char *name;
16448   struct dynamic_prop *byte_stride_prop = NULL;
16449   unsigned int bit_stride = 0;
16450
16451   element_type = die_type (die, cu);
16452
16453   /* The die_type call above may have already set the type for this DIE.  */
16454   type = get_die_type (die, cu);
16455   if (type)
16456     return type;
16457
16458   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16459   if (attr != NULL)
16460     {
16461       int stride_ok;
16462
16463       byte_stride_prop
16464         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16465       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16466       if (!stride_ok)
16467         {
16468           complaint (_("unable to read array DW_AT_byte_stride "
16469                        " - DIE at %s [in module %s]"),
16470                      sect_offset_str (die->sect_off),
16471                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16472           /* Ignore this attribute.  We will likely not be able to print
16473              arrays of this type correctly, but there is little we can do
16474              to help if we cannot read the attribute's value.  */
16475           byte_stride_prop = NULL;
16476         }
16477     }
16478
16479   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16480   if (attr != NULL)
16481     bit_stride = DW_UNSND (attr);
16482
16483   /* Irix 6.2 native cc creates array types without children for
16484      arrays with unspecified length.  */
16485   if (die->child == NULL)
16486     {
16487       index_type = objfile_type (objfile)->builtin_int;
16488       range_type = create_static_range_type (NULL, index_type, 0, -1);
16489       type = create_array_type_with_stride (NULL, element_type, range_type,
16490                                             byte_stride_prop, bit_stride);
16491       return set_die_type (die, type, cu);
16492     }
16493
16494   std::vector<struct type *> range_types;
16495   child_die = die->child;
16496   while (child_die && child_die->tag)
16497     {
16498       if (child_die->tag == DW_TAG_subrange_type)
16499         {
16500           struct type *child_type = read_type_die (child_die, cu);
16501
16502           if (child_type != NULL)
16503             {
16504               /* The range type was succesfully read.  Save it for the
16505                  array type creation.  */
16506               range_types.push_back (child_type);
16507             }
16508         }
16509       child_die = sibling_die (child_die);
16510     }
16511
16512   /* Dwarf2 dimensions are output from left to right, create the
16513      necessary array types in backwards order.  */
16514
16515   type = element_type;
16516
16517   if (read_array_order (die, cu) == DW_ORD_col_major)
16518     {
16519       int i = 0;
16520
16521       while (i < range_types.size ())
16522         type = create_array_type_with_stride (NULL, type, range_types[i++],
16523                                               byte_stride_prop, bit_stride);
16524     }
16525   else
16526     {
16527       size_t ndim = range_types.size ();
16528       while (ndim-- > 0)
16529         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16530                                               byte_stride_prop, bit_stride);
16531     }
16532
16533   /* Understand Dwarf2 support for vector types (like they occur on
16534      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16535      array type.  This is not part of the Dwarf2/3 standard yet, but a
16536      custom vendor extension.  The main difference between a regular
16537      array and the vector variant is that vectors are passed by value
16538      to functions.  */
16539   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16540   if (attr)
16541     make_vector_type (type);
16542
16543   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16544      implementation may choose to implement triple vectors using this
16545      attribute.  */
16546   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16547   if (attr)
16548     {
16549       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16550         TYPE_LENGTH (type) = DW_UNSND (attr);
16551       else
16552         complaint (_("DW_AT_byte_size for array type smaller "
16553                      "than the total size of elements"));
16554     }
16555
16556   name = dwarf2_name (die, cu);
16557   if (name)
16558     TYPE_NAME (type) = name;
16559
16560   maybe_set_alignment (cu, die, type);
16561
16562   /* Install the type in the die.  */
16563   set_die_type (die, type, cu);
16564
16565   /* set_die_type should be already done.  */
16566   set_descriptive_type (type, die, cu);
16567
16568   return type;
16569 }
16570
16571 static enum dwarf_array_dim_ordering
16572 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16573 {
16574   struct attribute *attr;
16575
16576   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16577
16578   if (attr)
16579     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16580
16581   /* GNU F77 is a special case, as at 08/2004 array type info is the
16582      opposite order to the dwarf2 specification, but data is still
16583      laid out as per normal fortran.
16584
16585      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16586      version checking.  */
16587
16588   if (cu->language == language_fortran
16589       && cu->producer && strstr (cu->producer, "GNU F77"))
16590     {
16591       return DW_ORD_row_major;
16592     }
16593
16594   switch (cu->language_defn->la_array_ordering)
16595     {
16596     case array_column_major:
16597       return DW_ORD_col_major;
16598     case array_row_major:
16599     default:
16600       return DW_ORD_row_major;
16601     };
16602 }
16603
16604 /* Extract all information from a DW_TAG_set_type DIE and put it in
16605    the DIE's type field.  */
16606
16607 static struct type *
16608 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16609 {
16610   struct type *domain_type, *set_type;
16611   struct attribute *attr;
16612
16613   domain_type = die_type (die, cu);
16614
16615   /* The die_type call above may have already set the type for this DIE.  */
16616   set_type = get_die_type (die, cu);
16617   if (set_type)
16618     return set_type;
16619
16620   set_type = create_set_type (NULL, domain_type);
16621
16622   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16623   if (attr)
16624     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16625
16626   maybe_set_alignment (cu, die, set_type);
16627
16628   return set_die_type (die, set_type, cu);
16629 }
16630
16631 /* A helper for read_common_block that creates a locexpr baton.
16632    SYM is the symbol which we are marking as computed.
16633    COMMON_DIE is the DIE for the common block.
16634    COMMON_LOC is the location expression attribute for the common
16635    block itself.
16636    MEMBER_LOC is the location expression attribute for the particular
16637    member of the common block that we are processing.
16638    CU is the CU from which the above come.  */
16639
16640 static void
16641 mark_common_block_symbol_computed (struct symbol *sym,
16642                                    struct die_info *common_die,
16643                                    struct attribute *common_loc,
16644                                    struct attribute *member_loc,
16645                                    struct dwarf2_cu *cu)
16646 {
16647   struct dwarf2_per_objfile *dwarf2_per_objfile
16648     = cu->per_cu->dwarf2_per_objfile;
16649   struct objfile *objfile = dwarf2_per_objfile->objfile;
16650   struct dwarf2_locexpr_baton *baton;
16651   gdb_byte *ptr;
16652   unsigned int cu_off;
16653   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16654   LONGEST offset = 0;
16655
16656   gdb_assert (common_loc && member_loc);
16657   gdb_assert (attr_form_is_block (common_loc));
16658   gdb_assert (attr_form_is_block (member_loc)
16659               || attr_form_is_constant (member_loc));
16660
16661   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16662   baton->per_cu = cu->per_cu;
16663   gdb_assert (baton->per_cu);
16664
16665   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16666
16667   if (attr_form_is_constant (member_loc))
16668     {
16669       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16670       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16671     }
16672   else
16673     baton->size += DW_BLOCK (member_loc)->size;
16674
16675   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16676   baton->data = ptr;
16677
16678   *ptr++ = DW_OP_call4;
16679   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16680   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16681   ptr += 4;
16682
16683   if (attr_form_is_constant (member_loc))
16684     {
16685       *ptr++ = DW_OP_addr;
16686       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16687       ptr += cu->header.addr_size;
16688     }
16689   else
16690     {
16691       /* We have to copy the data here, because DW_OP_call4 will only
16692          use a DW_AT_location attribute.  */
16693       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16694       ptr += DW_BLOCK (member_loc)->size;
16695     }
16696
16697   *ptr++ = DW_OP_plus;
16698   gdb_assert (ptr - baton->data == baton->size);
16699
16700   SYMBOL_LOCATION_BATON (sym) = baton;
16701   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16702 }
16703
16704 /* Create appropriate locally-scoped variables for all the
16705    DW_TAG_common_block entries.  Also create a struct common_block
16706    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16707    is used to sepate the common blocks name namespace from regular
16708    variable names.  */
16709
16710 static void
16711 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16712 {
16713   struct attribute *attr;
16714
16715   attr = dwarf2_attr (die, DW_AT_location, cu);
16716   if (attr)
16717     {
16718       /* Support the .debug_loc offsets.  */
16719       if (attr_form_is_block (attr))
16720         {
16721           /* Ok.  */
16722         }
16723       else if (attr_form_is_section_offset (attr))
16724         {
16725           dwarf2_complex_location_expr_complaint ();
16726           attr = NULL;
16727         }
16728       else
16729         {
16730           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16731                                                  "common block member");
16732           attr = NULL;
16733         }
16734     }
16735
16736   if (die->child != NULL)
16737     {
16738       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16739       struct die_info *child_die;
16740       size_t n_entries = 0, size;
16741       struct common_block *common_block;
16742       struct symbol *sym;
16743
16744       for (child_die = die->child;
16745            child_die && child_die->tag;
16746            child_die = sibling_die (child_die))
16747         ++n_entries;
16748
16749       size = (sizeof (struct common_block)
16750               + (n_entries - 1) * sizeof (struct symbol *));
16751       common_block
16752         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16753                                                  size);
16754       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16755       common_block->n_entries = 0;
16756
16757       for (child_die = die->child;
16758            child_die && child_die->tag;
16759            child_die = sibling_die (child_die))
16760         {
16761           /* Create the symbol in the DW_TAG_common_block block in the current
16762              symbol scope.  */
16763           sym = new_symbol (child_die, NULL, cu);
16764           if (sym != NULL)
16765             {
16766               struct attribute *member_loc;
16767
16768               common_block->contents[common_block->n_entries++] = sym;
16769
16770               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16771                                         cu);
16772               if (member_loc)
16773                 {
16774                   /* GDB has handled this for a long time, but it is
16775                      not specified by DWARF.  It seems to have been
16776                      emitted by gfortran at least as recently as:
16777                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16778                   complaint (_("Variable in common block has "
16779                                "DW_AT_data_member_location "
16780                                "- DIE at %s [in module %s]"),
16781                                sect_offset_str (child_die->sect_off),
16782                              objfile_name (objfile));
16783
16784                   if (attr_form_is_section_offset (member_loc))
16785                     dwarf2_complex_location_expr_complaint ();
16786                   else if (attr_form_is_constant (member_loc)
16787                            || attr_form_is_block (member_loc))
16788                     {
16789                       if (attr)
16790                         mark_common_block_symbol_computed (sym, die, attr,
16791                                                            member_loc, cu);
16792                     }
16793                   else
16794                     dwarf2_complex_location_expr_complaint ();
16795                 }
16796             }
16797         }
16798
16799       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16800       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16801     }
16802 }
16803
16804 /* Create a type for a C++ namespace.  */
16805
16806 static struct type *
16807 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16808 {
16809   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16810   const char *previous_prefix, *name;
16811   int is_anonymous;
16812   struct type *type;
16813
16814   /* For extensions, reuse the type of the original namespace.  */
16815   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16816     {
16817       struct die_info *ext_die;
16818       struct dwarf2_cu *ext_cu = cu;
16819
16820       ext_die = dwarf2_extension (die, &ext_cu);
16821       type = read_type_die (ext_die, ext_cu);
16822
16823       /* EXT_CU may not be the same as CU.
16824          Ensure TYPE is recorded with CU in die_type_hash.  */
16825       return set_die_type (die, type, cu);
16826     }
16827
16828   name = namespace_name (die, &is_anonymous, cu);
16829
16830   /* Now build the name of the current namespace.  */
16831
16832   previous_prefix = determine_prefix (die, cu);
16833   if (previous_prefix[0] != '\0')
16834     name = typename_concat (&objfile->objfile_obstack,
16835                             previous_prefix, name, 0, cu);
16836
16837   /* Create the type.  */
16838   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16839
16840   return set_die_type (die, type, cu);
16841 }
16842
16843 /* Read a namespace scope.  */
16844
16845 static void
16846 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16847 {
16848   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16849   int is_anonymous;
16850
16851   /* Add a symbol associated to this if we haven't seen the namespace
16852      before.  Also, add a using directive if it's an anonymous
16853      namespace.  */
16854
16855   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16856     {
16857       struct type *type;
16858
16859       type = read_type_die (die, cu);
16860       new_symbol (die, type, cu);
16861
16862       namespace_name (die, &is_anonymous, cu);
16863       if (is_anonymous)
16864         {
16865           const char *previous_prefix = determine_prefix (die, cu);
16866
16867           std::vector<const char *> excludes;
16868           add_using_directive (using_directives (cu),
16869                                previous_prefix, TYPE_NAME (type), NULL,
16870                                NULL, excludes, 0, &objfile->objfile_obstack);
16871         }
16872     }
16873
16874   if (die->child != NULL)
16875     {
16876       struct die_info *child_die = die->child;
16877
16878       while (child_die && child_die->tag)
16879         {
16880           process_die (child_die, cu);
16881           child_die = sibling_die (child_die);
16882         }
16883     }
16884 }
16885
16886 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16887    imported module.  Still we need that type as local Fortran "use ... only"
16888    declaration imports depend on the created type in determine_prefix.  */
16889
16890 static struct type *
16891 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16892 {
16893   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16894   const char *module_name;
16895   struct type *type;
16896
16897   module_name = dwarf2_name (die, cu);
16898   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16899
16900   return set_die_type (die, type, cu);
16901 }
16902
16903 /* Read a Fortran module.  */
16904
16905 static void
16906 read_module (struct die_info *die, struct dwarf2_cu *cu)
16907 {
16908   struct die_info *child_die = die->child;
16909   struct type *type;
16910
16911   type = read_type_die (die, cu);
16912   new_symbol (die, type, cu);
16913
16914   while (child_die && child_die->tag)
16915     {
16916       process_die (child_die, cu);
16917       child_die = sibling_die (child_die);
16918     }
16919 }
16920
16921 /* Return the name of the namespace represented by DIE.  Set
16922    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16923    namespace.  */
16924
16925 static const char *
16926 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16927 {
16928   struct die_info *current_die;
16929   const char *name = NULL;
16930
16931   /* Loop through the extensions until we find a name.  */
16932
16933   for (current_die = die;
16934        current_die != NULL;
16935        current_die = dwarf2_extension (die, &cu))
16936     {
16937       /* We don't use dwarf2_name here so that we can detect the absence
16938          of a name -> anonymous namespace.  */
16939       name = dwarf2_string_attr (die, DW_AT_name, cu);
16940
16941       if (name != NULL)
16942         break;
16943     }
16944
16945   /* Is it an anonymous namespace?  */
16946
16947   *is_anonymous = (name == NULL);
16948   if (*is_anonymous)
16949     name = CP_ANONYMOUS_NAMESPACE_STR;
16950
16951   return name;
16952 }
16953
16954 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16955    the user defined type vector.  */
16956
16957 static struct type *
16958 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16959 {
16960   struct gdbarch *gdbarch
16961     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16962   struct comp_unit_head *cu_header = &cu->header;
16963   struct type *type;
16964   struct attribute *attr_byte_size;
16965   struct attribute *attr_address_class;
16966   int byte_size, addr_class;
16967   struct type *target_type;
16968
16969   target_type = die_type (die, cu);
16970
16971   /* The die_type call above may have already set the type for this DIE.  */
16972   type = get_die_type (die, cu);
16973   if (type)
16974     return type;
16975
16976   type = lookup_pointer_type (target_type);
16977
16978   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16979   if (attr_byte_size)
16980     byte_size = DW_UNSND (attr_byte_size);
16981   else
16982     byte_size = cu_header->addr_size;
16983
16984   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16985   if (attr_address_class)
16986     addr_class = DW_UNSND (attr_address_class);
16987   else
16988     addr_class = DW_ADDR_none;
16989
16990   ULONGEST alignment = get_alignment (cu, die);
16991
16992   /* If the pointer size, alignment, or address class is different
16993      than the default, create a type variant marked as such and set
16994      the length accordingly.  */
16995   if (TYPE_LENGTH (type) != byte_size
16996       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
16997           && alignment != TYPE_RAW_ALIGN (type))
16998       || addr_class != DW_ADDR_none)
16999     {
17000       if (gdbarch_address_class_type_flags_p (gdbarch))
17001         {
17002           int type_flags;
17003
17004           type_flags = gdbarch_address_class_type_flags
17005                          (gdbarch, byte_size, addr_class);
17006           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17007                       == 0);
17008           type = make_type_with_address_space (type, type_flags);
17009         }
17010       else if (TYPE_LENGTH (type) != byte_size)
17011         {
17012           complaint (_("invalid pointer size %d"), byte_size);
17013         }
17014       else if (TYPE_RAW_ALIGN (type) != alignment)
17015         {
17016           complaint (_("Invalid DW_AT_alignment"
17017                        " - DIE at %s [in module %s]"),
17018                      sect_offset_str (die->sect_off),
17019                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17020         }
17021       else
17022         {
17023           /* Should we also complain about unhandled address classes?  */
17024         }
17025     }
17026
17027   TYPE_LENGTH (type) = byte_size;
17028   set_type_align (type, alignment);
17029   return set_die_type (die, type, cu);
17030 }
17031
17032 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17033    the user defined type vector.  */
17034
17035 static struct type *
17036 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17037 {
17038   struct type *type;
17039   struct type *to_type;
17040   struct type *domain;
17041
17042   to_type = die_type (die, cu);
17043   domain = die_containing_type (die, cu);
17044
17045   /* The calls above may have already set the type for this DIE.  */
17046   type = get_die_type (die, cu);
17047   if (type)
17048     return type;
17049
17050   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17051     type = lookup_methodptr_type (to_type);
17052   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17053     {
17054       struct type *new_type
17055         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17056
17057       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17058                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17059                             TYPE_VARARGS (to_type));
17060       type = lookup_methodptr_type (new_type);
17061     }
17062   else
17063     type = lookup_memberptr_type (to_type, domain);
17064
17065   return set_die_type (die, type, cu);
17066 }
17067
17068 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17069    the user defined type vector.  */
17070
17071 static struct type *
17072 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17073                           enum type_code refcode)
17074 {
17075   struct comp_unit_head *cu_header = &cu->header;
17076   struct type *type, *target_type;
17077   struct attribute *attr;
17078
17079   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17080
17081   target_type = die_type (die, cu);
17082
17083   /* The die_type call above may have already set the type for this DIE.  */
17084   type = get_die_type (die, cu);
17085   if (type)
17086     return type;
17087
17088   type = lookup_reference_type (target_type, refcode);
17089   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17090   if (attr)
17091     {
17092       TYPE_LENGTH (type) = DW_UNSND (attr);
17093     }
17094   else
17095     {
17096       TYPE_LENGTH (type) = cu_header->addr_size;
17097     }
17098   maybe_set_alignment (cu, die, type);
17099   return set_die_type (die, type, cu);
17100 }
17101
17102 /* Add the given cv-qualifiers to the element type of the array.  GCC
17103    outputs DWARF type qualifiers that apply to an array, not the
17104    element type.  But GDB relies on the array element type to carry
17105    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17106    specification.  */
17107
17108 static struct type *
17109 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17110                    struct type *base_type, int cnst, int voltl)
17111 {
17112   struct type *el_type, *inner_array;
17113
17114   base_type = copy_type (base_type);
17115   inner_array = base_type;
17116
17117   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17118     {
17119       TYPE_TARGET_TYPE (inner_array) =
17120         copy_type (TYPE_TARGET_TYPE (inner_array));
17121       inner_array = TYPE_TARGET_TYPE (inner_array);
17122     }
17123
17124   el_type = TYPE_TARGET_TYPE (inner_array);
17125   cnst |= TYPE_CONST (el_type);
17126   voltl |= TYPE_VOLATILE (el_type);
17127   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17128
17129   return set_die_type (die, base_type, cu);
17130 }
17131
17132 static struct type *
17133 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17134 {
17135   struct type *base_type, *cv_type;
17136
17137   base_type = die_type (die, cu);
17138
17139   /* The die_type call above may have already set the type for this DIE.  */
17140   cv_type = get_die_type (die, cu);
17141   if (cv_type)
17142     return cv_type;
17143
17144   /* In case the const qualifier is applied to an array type, the element type
17145      is so qualified, not the array type (section 6.7.3 of C99).  */
17146   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17147     return add_array_cv_type (die, cu, base_type, 1, 0);
17148
17149   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17150   return set_die_type (die, cv_type, cu);
17151 }
17152
17153 static struct type *
17154 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17155 {
17156   struct type *base_type, *cv_type;
17157
17158   base_type = die_type (die, cu);
17159
17160   /* The die_type call above may have already set the type for this DIE.  */
17161   cv_type = get_die_type (die, cu);
17162   if (cv_type)
17163     return cv_type;
17164
17165   /* In case the volatile qualifier is applied to an array type, the
17166      element type is so qualified, not the array type (section 6.7.3
17167      of C99).  */
17168   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17169     return add_array_cv_type (die, cu, base_type, 0, 1);
17170
17171   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17172   return set_die_type (die, cv_type, cu);
17173 }
17174
17175 /* Handle DW_TAG_restrict_type.  */
17176
17177 static struct type *
17178 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17179 {
17180   struct type *base_type, *cv_type;
17181
17182   base_type = die_type (die, cu);
17183
17184   /* The die_type call above may have already set the type for this DIE.  */
17185   cv_type = get_die_type (die, cu);
17186   if (cv_type)
17187     return cv_type;
17188
17189   cv_type = make_restrict_type (base_type);
17190   return set_die_type (die, cv_type, cu);
17191 }
17192
17193 /* Handle DW_TAG_atomic_type.  */
17194
17195 static struct type *
17196 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17197 {
17198   struct type *base_type, *cv_type;
17199
17200   base_type = die_type (die, cu);
17201
17202   /* The die_type call above may have already set the type for this DIE.  */
17203   cv_type = get_die_type (die, cu);
17204   if (cv_type)
17205     return cv_type;
17206
17207   cv_type = make_atomic_type (base_type);
17208   return set_die_type (die, cv_type, cu);
17209 }
17210
17211 /* Extract all information from a DW_TAG_string_type DIE and add to
17212    the user defined type vector.  It isn't really a user defined type,
17213    but it behaves like one, with other DIE's using an AT_user_def_type
17214    attribute to reference it.  */
17215
17216 static struct type *
17217 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17218 {
17219   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17220   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17221   struct type *type, *range_type, *index_type, *char_type;
17222   struct attribute *attr;
17223   unsigned int length;
17224
17225   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17226   if (attr)
17227     {
17228       length = DW_UNSND (attr);
17229     }
17230   else
17231     {
17232       /* Check for the DW_AT_byte_size attribute.  */
17233       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17234       if (attr)
17235         {
17236           length = DW_UNSND (attr);
17237         }
17238       else
17239         {
17240           length = 1;
17241         }
17242     }
17243
17244   index_type = objfile_type (objfile)->builtin_int;
17245   range_type = create_static_range_type (NULL, index_type, 1, length);
17246   char_type = language_string_char_type (cu->language_defn, gdbarch);
17247   type = create_string_type (NULL, char_type, range_type);
17248
17249   return set_die_type (die, type, cu);
17250 }
17251
17252 /* Assuming that DIE corresponds to a function, returns nonzero
17253    if the function is prototyped.  */
17254
17255 static int
17256 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17257 {
17258   struct attribute *attr;
17259
17260   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17261   if (attr && (DW_UNSND (attr) != 0))
17262     return 1;
17263
17264   /* The DWARF standard implies that the DW_AT_prototyped attribute
17265      is only meaninful for C, but the concept also extends to other
17266      languages that allow unprototyped functions (Eg: Objective C).
17267      For all other languages, assume that functions are always
17268      prototyped.  */
17269   if (cu->language != language_c
17270       && cu->language != language_objc
17271       && cu->language != language_opencl)
17272     return 1;
17273
17274   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17275      prototyped and unprototyped functions; default to prototyped,
17276      since that is more common in modern code (and RealView warns
17277      about unprototyped functions).  */
17278   if (producer_is_realview (cu->producer))
17279     return 1;
17280
17281   return 0;
17282 }
17283
17284 /* Handle DIES due to C code like:
17285
17286    struct foo
17287    {
17288    int (*funcp)(int a, long l);
17289    int b;
17290    };
17291
17292    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17293
17294 static struct type *
17295 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17296 {
17297   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17298   struct type *type;            /* Type that this function returns.  */
17299   struct type *ftype;           /* Function that returns above type.  */
17300   struct attribute *attr;
17301
17302   type = die_type (die, cu);
17303
17304   /* The die_type call above may have already set the type for this DIE.  */
17305   ftype = get_die_type (die, cu);
17306   if (ftype)
17307     return ftype;
17308
17309   ftype = lookup_function_type (type);
17310
17311   if (prototyped_function_p (die, cu))
17312     TYPE_PROTOTYPED (ftype) = 1;
17313
17314   /* Store the calling convention in the type if it's available in
17315      the subroutine die.  Otherwise set the calling convention to
17316      the default value DW_CC_normal.  */
17317   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17318   if (attr)
17319     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17320   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17321     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17322   else
17323     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17324
17325   /* Record whether the function returns normally to its caller or not
17326      if the DWARF producer set that information.  */
17327   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17328   if (attr && (DW_UNSND (attr) != 0))
17329     TYPE_NO_RETURN (ftype) = 1;
17330
17331   /* We need to add the subroutine type to the die immediately so
17332      we don't infinitely recurse when dealing with parameters
17333      declared as the same subroutine type.  */
17334   set_die_type (die, ftype, cu);
17335
17336   if (die->child != NULL)
17337     {
17338       struct type *void_type = objfile_type (objfile)->builtin_void;
17339       struct die_info *child_die;
17340       int nparams, iparams;
17341
17342       /* Count the number of parameters.
17343          FIXME: GDB currently ignores vararg functions, but knows about
17344          vararg member functions.  */
17345       nparams = 0;
17346       child_die = die->child;
17347       while (child_die && child_die->tag)
17348         {
17349           if (child_die->tag == DW_TAG_formal_parameter)
17350             nparams++;
17351           else if (child_die->tag == DW_TAG_unspecified_parameters)
17352             TYPE_VARARGS (ftype) = 1;
17353           child_die = sibling_die (child_die);
17354         }
17355
17356       /* Allocate storage for parameters and fill them in.  */
17357       TYPE_NFIELDS (ftype) = nparams;
17358       TYPE_FIELDS (ftype) = (struct field *)
17359         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17360
17361       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17362          even if we error out during the parameters reading below.  */
17363       for (iparams = 0; iparams < nparams; iparams++)
17364         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17365
17366       iparams = 0;
17367       child_die = die->child;
17368       while (child_die && child_die->tag)
17369         {
17370           if (child_die->tag == DW_TAG_formal_parameter)
17371             {
17372               struct type *arg_type;
17373
17374               /* DWARF version 2 has no clean way to discern C++
17375                  static and non-static member functions.  G++ helps
17376                  GDB by marking the first parameter for non-static
17377                  member functions (which is the this pointer) as
17378                  artificial.  We pass this information to
17379                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17380
17381                  DWARF version 3 added DW_AT_object_pointer, which GCC
17382                  4.5 does not yet generate.  */
17383               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17384               if (attr)
17385                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17386               else
17387                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17388               arg_type = die_type (child_die, cu);
17389
17390               /* RealView does not mark THIS as const, which the testsuite
17391                  expects.  GCC marks THIS as const in method definitions,
17392                  but not in the class specifications (GCC PR 43053).  */
17393               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17394                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17395                 {
17396                   int is_this = 0;
17397                   struct dwarf2_cu *arg_cu = cu;
17398                   const char *name = dwarf2_name (child_die, cu);
17399
17400                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17401                   if (attr)
17402                     {
17403                       /* If the compiler emits this, use it.  */
17404                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17405                         is_this = 1;
17406                     }
17407                   else if (name && strcmp (name, "this") == 0)
17408                     /* Function definitions will have the argument names.  */
17409                     is_this = 1;
17410                   else if (name == NULL && iparams == 0)
17411                     /* Declarations may not have the names, so like
17412                        elsewhere in GDB, assume an artificial first
17413                        argument is "this".  */
17414                     is_this = 1;
17415
17416                   if (is_this)
17417                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17418                                              arg_type, 0);
17419                 }
17420
17421               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17422               iparams++;
17423             }
17424           child_die = sibling_die (child_die);
17425         }
17426     }
17427
17428   return ftype;
17429 }
17430
17431 static struct type *
17432 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17433 {
17434   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17435   const char *name = NULL;
17436   struct type *this_type, *target_type;
17437
17438   name = dwarf2_full_name (NULL, die, cu);
17439   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17440   TYPE_TARGET_STUB (this_type) = 1;
17441   set_die_type (die, this_type, cu);
17442   target_type = die_type (die, cu);
17443   if (target_type != this_type)
17444     TYPE_TARGET_TYPE (this_type) = target_type;
17445   else
17446     {
17447       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17448          spec and cause infinite loops in GDB.  */
17449       complaint (_("Self-referential DW_TAG_typedef "
17450                    "- DIE at %s [in module %s]"),
17451                  sect_offset_str (die->sect_off), objfile_name (objfile));
17452       TYPE_TARGET_TYPE (this_type) = NULL;
17453     }
17454   return this_type;
17455 }
17456
17457 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17458    (which may be different from NAME) to the architecture back-end to allow
17459    it to guess the correct format if necessary.  */
17460
17461 static struct type *
17462 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17463                         const char *name_hint)
17464 {
17465   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17466   const struct floatformat **format;
17467   struct type *type;
17468
17469   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17470   if (format)
17471     type = init_float_type (objfile, bits, name, format);
17472   else
17473     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17474
17475   return type;
17476 }
17477
17478 /* Allocate an integer type of size BITS and name NAME.  */
17479
17480 static struct type *
17481 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17482                           int bits, int unsigned_p, const char *name)
17483 {
17484   struct type *type;
17485
17486   /* Versions of Intel's C Compiler generate an integer type called "void"
17487      instead of using DW_TAG_unspecified_type.  This has been seen on
17488      at least versions 14, 17, and 18.  */
17489   if (bits == 0 && producer_is_icc (cu) && name != nullptr
17490       && strcmp (name, "void") == 0)
17491     type = objfile_type (objfile)->builtin_void;
17492   else
17493     type = init_integer_type (objfile, bits, unsigned_p, name);
17494
17495   return type;
17496 }
17497
17498 /* Initialise and return a floating point type of size BITS suitable for
17499    use as a component of a complex number.  The NAME_HINT is passed through
17500    when initialising the floating point type and is the name of the complex
17501    type.
17502
17503    As DWARF doesn't currently provide an explicit name for the components
17504    of a complex number, but it can be helpful to have these components
17505    named, we try to select a suitable name based on the size of the
17506    component.  */
17507 static struct type *
17508 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17509                                  struct objfile *objfile,
17510                                  int bits, const char *name_hint)
17511 {
17512   gdbarch *gdbarch = get_objfile_arch (objfile);
17513   struct type *tt = nullptr;
17514
17515   /* Try to find a suitable floating point builtin type of size BITS.
17516      We're going to use the name of this type as the name for the complex
17517      target type that we are about to create.  */
17518   switch (cu->language)
17519     {
17520     case language_fortran:
17521       switch (bits)
17522         {
17523         case 32:
17524           tt = builtin_f_type (gdbarch)->builtin_real;
17525           break;
17526         case 64:
17527           tt = builtin_f_type (gdbarch)->builtin_real_s8;
17528           break;
17529         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17530         case 128:
17531           tt = builtin_f_type (gdbarch)->builtin_real_s16;
17532           break;
17533         }
17534       break;
17535     default:
17536       switch (bits)
17537         {
17538         case 32:
17539           tt = builtin_type (gdbarch)->builtin_float;
17540           break;
17541         case 64:
17542           tt = builtin_type (gdbarch)->builtin_double;
17543           break;
17544         case 96:        /* The x86-32 ABI specifies 96-bit long double.  */
17545         case 128:
17546           tt = builtin_type (gdbarch)->builtin_long_double;
17547           break;
17548         }
17549       break;
17550     }
17551
17552   /* If the type we found doesn't match the size we were looking for, then
17553      pretend we didn't find a type at all, the complex target type we
17554      create will then be nameless.  */
17555   if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17556     tt = nullptr;
17557
17558   const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17559   return dwarf2_init_float_type (objfile, bits, name, name_hint);
17560 }
17561
17562 /* Find a representation of a given base type and install
17563    it in the TYPE field of the die.  */
17564
17565 static struct type *
17566 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17567 {
17568   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17569   struct type *type;
17570   struct attribute *attr;
17571   int encoding = 0, bits = 0;
17572   const char *name;
17573
17574   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17575   if (attr)
17576     {
17577       encoding = DW_UNSND (attr);
17578     }
17579   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17580   if (attr)
17581     {
17582       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17583     }
17584   name = dwarf2_name (die, cu);
17585   if (!name)
17586     {
17587       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17588     }
17589
17590   switch (encoding)
17591     {
17592       case DW_ATE_address:
17593         /* Turn DW_ATE_address into a void * pointer.  */
17594         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17595         type = init_pointer_type (objfile, bits, name, type);
17596         break;
17597       case DW_ATE_boolean:
17598         type = init_boolean_type (objfile, bits, 1, name);
17599         break;
17600       case DW_ATE_complex_float:
17601         type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name);
17602         type = init_complex_type (objfile, name, type);
17603         break;
17604       case DW_ATE_decimal_float:
17605         type = init_decfloat_type (objfile, bits, name);
17606         break;
17607       case DW_ATE_float:
17608         type = dwarf2_init_float_type (objfile, bits, name, name);
17609         break;
17610       case DW_ATE_signed:
17611         type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17612         break;
17613       case DW_ATE_unsigned:
17614         if (cu->language == language_fortran
17615             && name
17616             && startswith (name, "character("))
17617           type = init_character_type (objfile, bits, 1, name);
17618         else
17619           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17620         break;
17621       case DW_ATE_signed_char:
17622         if (cu->language == language_ada || cu->language == language_m2
17623             || cu->language == language_pascal
17624             || cu->language == language_fortran)
17625           type = init_character_type (objfile, bits, 0, name);
17626         else
17627           type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17628         break;
17629       case DW_ATE_unsigned_char:
17630         if (cu->language == language_ada || cu->language == language_m2
17631             || cu->language == language_pascal
17632             || cu->language == language_fortran
17633             || cu->language == language_rust)
17634           type = init_character_type (objfile, bits, 1, name);
17635         else
17636           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17637         break;
17638       case DW_ATE_UTF:
17639         {
17640           gdbarch *arch = get_objfile_arch (objfile);
17641
17642           if (bits == 16)
17643             type = builtin_type (arch)->builtin_char16;
17644           else if (bits == 32)
17645             type = builtin_type (arch)->builtin_char32;
17646           else
17647             {
17648               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17649                          bits);
17650               type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17651             }
17652           return set_die_type (die, type, cu);
17653         }
17654         break;
17655
17656       default:
17657         complaint (_("unsupported DW_AT_encoding: '%s'"),
17658                    dwarf_type_encoding_name (encoding));
17659         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17660         break;
17661     }
17662
17663   if (name && strcmp (name, "char") == 0)
17664     TYPE_NOSIGN (type) = 1;
17665
17666   maybe_set_alignment (cu, die, type);
17667
17668   return set_die_type (die, type, cu);
17669 }
17670
17671 /* Parse dwarf attribute if it's a block, reference or constant and put the
17672    resulting value of the attribute into struct bound_prop.
17673    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17674
17675 static int
17676 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17677                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17678 {
17679   struct dwarf2_property_baton *baton;
17680   struct obstack *obstack
17681     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17682
17683   if (attr == NULL || prop == NULL)
17684     return 0;
17685
17686   if (attr_form_is_block (attr))
17687     {
17688       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17689       baton->referenced_type = NULL;
17690       baton->locexpr.per_cu = cu->per_cu;
17691       baton->locexpr.size = DW_BLOCK (attr)->size;
17692       baton->locexpr.data = DW_BLOCK (attr)->data;
17693       prop->data.baton = baton;
17694       prop->kind = PROP_LOCEXPR;
17695       gdb_assert (prop->data.baton != NULL);
17696     }
17697   else if (attr_form_is_ref (attr))
17698     {
17699       struct dwarf2_cu *target_cu = cu;
17700       struct die_info *target_die;
17701       struct attribute *target_attr;
17702
17703       target_die = follow_die_ref (die, attr, &target_cu);
17704       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17705       if (target_attr == NULL)
17706         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17707                                    target_cu);
17708       if (target_attr == NULL)
17709         return 0;
17710
17711       switch (target_attr->name)
17712         {
17713           case DW_AT_location:
17714             if (attr_form_is_section_offset (target_attr))
17715               {
17716                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17717                 baton->referenced_type = die_type (target_die, target_cu);
17718                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17719                 prop->data.baton = baton;
17720                 prop->kind = PROP_LOCLIST;
17721                 gdb_assert (prop->data.baton != NULL);
17722               }
17723             else if (attr_form_is_block (target_attr))
17724               {
17725                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17726                 baton->referenced_type = die_type (target_die, target_cu);
17727                 baton->locexpr.per_cu = cu->per_cu;
17728                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17729                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17730                 prop->data.baton = baton;
17731                 prop->kind = PROP_LOCEXPR;
17732                 gdb_assert (prop->data.baton != NULL);
17733               }
17734             else
17735               {
17736                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17737                                                        "dynamic property");
17738                 return 0;
17739               }
17740             break;
17741           case DW_AT_data_member_location:
17742             {
17743               LONGEST offset;
17744
17745               if (!handle_data_member_location (target_die, target_cu,
17746                                                 &offset))
17747                 return 0;
17748
17749               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17750               baton->referenced_type = read_type_die (target_die->parent,
17751                                                       target_cu);
17752               baton->offset_info.offset = offset;
17753               baton->offset_info.type = die_type (target_die, target_cu);
17754               prop->data.baton = baton;
17755               prop->kind = PROP_ADDR_OFFSET;
17756               break;
17757             }
17758         }
17759     }
17760   else if (attr_form_is_constant (attr))
17761     {
17762       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17763       prop->kind = PROP_CONST;
17764     }
17765   else
17766     {
17767       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17768                                              dwarf2_name (die, cu));
17769       return 0;
17770     }
17771
17772   return 1;
17773 }
17774
17775 /* Read the given DW_AT_subrange DIE.  */
17776
17777 static struct type *
17778 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17779 {
17780   struct type *base_type, *orig_base_type;
17781   struct type *range_type;
17782   struct attribute *attr;
17783   struct dynamic_prop low, high;
17784   int low_default_is_valid;
17785   int high_bound_is_count = 0;
17786   const char *name;
17787   ULONGEST negative_mask;
17788
17789   orig_base_type = die_type (die, cu);
17790   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17791      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17792      creating the range type, but we use the result of check_typedef
17793      when examining properties of the type.  */
17794   base_type = check_typedef (orig_base_type);
17795
17796   /* The die_type call above may have already set the type for this DIE.  */
17797   range_type = get_die_type (die, cu);
17798   if (range_type)
17799     return range_type;
17800
17801   low.kind = PROP_CONST;
17802   high.kind = PROP_CONST;
17803   high.data.const_val = 0;
17804
17805   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17806      omitting DW_AT_lower_bound.  */
17807   switch (cu->language)
17808     {
17809     case language_c:
17810     case language_cplus:
17811       low.data.const_val = 0;
17812       low_default_is_valid = 1;
17813       break;
17814     case language_fortran:
17815       low.data.const_val = 1;
17816       low_default_is_valid = 1;
17817       break;
17818     case language_d:
17819     case language_objc:
17820     case language_rust:
17821       low.data.const_val = 0;
17822       low_default_is_valid = (cu->header.version >= 4);
17823       break;
17824     case language_ada:
17825     case language_m2:
17826     case language_pascal:
17827       low.data.const_val = 1;
17828       low_default_is_valid = (cu->header.version >= 4);
17829       break;
17830     default:
17831       low.data.const_val = 0;
17832       low_default_is_valid = 0;
17833       break;
17834     }
17835
17836   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17837   if (attr)
17838     attr_to_dynamic_prop (attr, die, cu, &low);
17839   else if (!low_default_is_valid)
17840     complaint (_("Missing DW_AT_lower_bound "
17841                                       "- DIE at %s [in module %s]"),
17842                sect_offset_str (die->sect_off),
17843                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17844
17845   struct attribute *attr_ub, *attr_count;
17846   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17847   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17848     {
17849       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17850       if (attr_to_dynamic_prop (attr, die, cu, &high))
17851         {
17852           /* If bounds are constant do the final calculation here.  */
17853           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17854             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17855           else
17856             high_bound_is_count = 1;
17857         }
17858       else
17859         {
17860           if (attr_ub != NULL)
17861             complaint (_("Unresolved DW_AT_upper_bound "
17862                          "- DIE at %s [in module %s]"),
17863                        sect_offset_str (die->sect_off),
17864                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17865           if (attr_count != NULL)
17866             complaint (_("Unresolved DW_AT_count "
17867                          "- DIE at %s [in module %s]"),
17868                        sect_offset_str (die->sect_off),
17869                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17870         }
17871         
17872     }
17873
17874   /* Dwarf-2 specifications explicitly allows to create subrange types
17875      without specifying a base type.
17876      In that case, the base type must be set to the type of
17877      the lower bound, upper bound or count, in that order, if any of these
17878      three attributes references an object that has a type.
17879      If no base type is found, the Dwarf-2 specifications say that
17880      a signed integer type of size equal to the size of an address should
17881      be used.
17882      For the following C code: `extern char gdb_int [];'
17883      GCC produces an empty range DIE.
17884      FIXME: muller/2010-05-28: Possible references to object for low bound,
17885      high bound or count are not yet handled by this code.  */
17886   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17887     {
17888       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17889       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17890       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17891       struct type *int_type = objfile_type (objfile)->builtin_int;
17892
17893       /* Test "int", "long int", and "long long int" objfile types,
17894          and select the first one having a size above or equal to the
17895          architecture address size.  */
17896       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17897         base_type = int_type;
17898       else
17899         {
17900           int_type = objfile_type (objfile)->builtin_long;
17901           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17902             base_type = int_type;
17903           else
17904             {
17905               int_type = objfile_type (objfile)->builtin_long_long;
17906               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17907                 base_type = int_type;
17908             }
17909         }
17910     }
17911
17912   /* Normally, the DWARF producers are expected to use a signed
17913      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17914      But this is unfortunately not always the case, as witnessed
17915      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17916      is used instead.  To work around that ambiguity, we treat
17917      the bounds as signed, and thus sign-extend their values, when
17918      the base type is signed.  */
17919   negative_mask =
17920     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17921   if (low.kind == PROP_CONST
17922       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17923     low.data.const_val |= negative_mask;
17924   if (high.kind == PROP_CONST
17925       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17926     high.data.const_val |= negative_mask;
17927
17928   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17929
17930   if (high_bound_is_count)
17931     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17932
17933   /* Ada expects an empty array on no boundary attributes.  */
17934   if (attr == NULL && cu->language != language_ada)
17935     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17936
17937   name = dwarf2_name (die, cu);
17938   if (name)
17939     TYPE_NAME (range_type) = name;
17940
17941   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17942   if (attr)
17943     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17944
17945   maybe_set_alignment (cu, die, range_type);
17946
17947   set_die_type (die, range_type, cu);
17948
17949   /* set_die_type should be already done.  */
17950   set_descriptive_type (range_type, die, cu);
17951
17952   return range_type;
17953 }
17954
17955 static struct type *
17956 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17957 {
17958   struct type *type;
17959
17960   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17961                     NULL);
17962   TYPE_NAME (type) = dwarf2_name (die, cu);
17963
17964   /* In Ada, an unspecified type is typically used when the description
17965      of the type is defered to a different unit.  When encountering
17966      such a type, we treat it as a stub, and try to resolve it later on,
17967      when needed.  */
17968   if (cu->language == language_ada)
17969     TYPE_STUB (type) = 1;
17970
17971   return set_die_type (die, type, cu);
17972 }
17973
17974 /* Read a single die and all its descendents.  Set the die's sibling
17975    field to NULL; set other fields in the die correctly, and set all
17976    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17977    location of the info_ptr after reading all of those dies.  PARENT
17978    is the parent of the die in question.  */
17979
17980 static struct die_info *
17981 read_die_and_children (const struct die_reader_specs *reader,
17982                        const gdb_byte *info_ptr,
17983                        const gdb_byte **new_info_ptr,
17984                        struct die_info *parent)
17985 {
17986   struct die_info *die;
17987   const gdb_byte *cur_ptr;
17988   int has_children;
17989
17990   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17991   if (die == NULL)
17992     {
17993       *new_info_ptr = cur_ptr;
17994       return NULL;
17995     }
17996   store_in_ref_table (die, reader->cu);
17997
17998   if (has_children)
17999     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
18000   else
18001     {
18002       die->child = NULL;
18003       *new_info_ptr = cur_ptr;
18004     }
18005
18006   die->sibling = NULL;
18007   die->parent = parent;
18008   return die;
18009 }
18010
18011 /* Read a die, all of its descendents, and all of its siblings; set
18012    all of the fields of all of the dies correctly.  Arguments are as
18013    in read_die_and_children.  */
18014
18015 static struct die_info *
18016 read_die_and_siblings_1 (const struct die_reader_specs *reader,
18017                          const gdb_byte *info_ptr,
18018                          const gdb_byte **new_info_ptr,
18019                          struct die_info *parent)
18020 {
18021   struct die_info *first_die, *last_sibling;
18022   const gdb_byte *cur_ptr;
18023
18024   cur_ptr = info_ptr;
18025   first_die = last_sibling = NULL;
18026
18027   while (1)
18028     {
18029       struct die_info *die
18030         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
18031
18032       if (die == NULL)
18033         {
18034           *new_info_ptr = cur_ptr;
18035           return first_die;
18036         }
18037
18038       if (!first_die)
18039         first_die = die;
18040       else
18041         last_sibling->sibling = die;
18042
18043       last_sibling = die;
18044     }
18045 }
18046
18047 /* Read a die, all of its descendents, and all of its siblings; set
18048    all of the fields of all of the dies correctly.  Arguments are as
18049    in read_die_and_children.
18050    This the main entry point for reading a DIE and all its children.  */
18051
18052 static struct die_info *
18053 read_die_and_siblings (const struct die_reader_specs *reader,
18054                        const gdb_byte *info_ptr,
18055                        const gdb_byte **new_info_ptr,
18056                        struct die_info *parent)
18057 {
18058   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18059                                                   new_info_ptr, parent);
18060
18061   if (dwarf_die_debug)
18062     {
18063       fprintf_unfiltered (gdb_stdlog,
18064                           "Read die from %s@0x%x of %s:\n",
18065                           get_section_name (reader->die_section),
18066                           (unsigned) (info_ptr - reader->die_section->buffer),
18067                           bfd_get_filename (reader->abfd));
18068       dump_die (die, dwarf_die_debug);
18069     }
18070
18071   return die;
18072 }
18073
18074 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18075    attributes.
18076    The caller is responsible for filling in the extra attributes
18077    and updating (*DIEP)->num_attrs.
18078    Set DIEP to point to a newly allocated die with its information,
18079    except for its child, sibling, and parent fields.
18080    Set HAS_CHILDREN to tell whether the die has children or not.  */
18081
18082 static const gdb_byte *
18083 read_full_die_1 (const struct die_reader_specs *reader,
18084                  struct die_info **diep, const gdb_byte *info_ptr,
18085                  int *has_children, int num_extra_attrs)
18086 {
18087   unsigned int abbrev_number, bytes_read, i;
18088   struct abbrev_info *abbrev;
18089   struct die_info *die;
18090   struct dwarf2_cu *cu = reader->cu;
18091   bfd *abfd = reader->abfd;
18092
18093   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18094   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18095   info_ptr += bytes_read;
18096   if (!abbrev_number)
18097     {
18098       *diep = NULL;
18099       *has_children = 0;
18100       return info_ptr;
18101     }
18102
18103   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18104   if (!abbrev)
18105     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18106            abbrev_number,
18107            bfd_get_filename (abfd));
18108
18109   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18110   die->sect_off = sect_off;
18111   die->tag = abbrev->tag;
18112   die->abbrev = abbrev_number;
18113
18114   /* Make the result usable.
18115      The caller needs to update num_attrs after adding the extra
18116      attributes.  */
18117   die->num_attrs = abbrev->num_attrs;
18118
18119   for (i = 0; i < abbrev->num_attrs; ++i)
18120     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18121                                info_ptr);
18122
18123   *diep = die;
18124   *has_children = abbrev->has_children;
18125   return info_ptr;
18126 }
18127
18128 /* Read a die and all its attributes.
18129    Set DIEP to point to a newly allocated die with its information,
18130    except for its child, sibling, and parent fields.
18131    Set HAS_CHILDREN to tell whether the die has children or not.  */
18132
18133 static const gdb_byte *
18134 read_full_die (const struct die_reader_specs *reader,
18135                struct die_info **diep, const gdb_byte *info_ptr,
18136                int *has_children)
18137 {
18138   const gdb_byte *result;
18139
18140   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18141
18142   if (dwarf_die_debug)
18143     {
18144       fprintf_unfiltered (gdb_stdlog,
18145                           "Read die from %s@0x%x of %s:\n",
18146                           get_section_name (reader->die_section),
18147                           (unsigned) (info_ptr - reader->die_section->buffer),
18148                           bfd_get_filename (reader->abfd));
18149       dump_die (*diep, dwarf_die_debug);
18150     }
18151
18152   return result;
18153 }
18154 \f
18155 /* Abbreviation tables.
18156
18157    In DWARF version 2, the description of the debugging information is
18158    stored in a separate .debug_abbrev section.  Before we read any
18159    dies from a section we read in all abbreviations and install them
18160    in a hash table.  */
18161
18162 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18163
18164 struct abbrev_info *
18165 abbrev_table::alloc_abbrev ()
18166 {
18167   struct abbrev_info *abbrev;
18168
18169   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18170   memset (abbrev, 0, sizeof (struct abbrev_info));
18171
18172   return abbrev;
18173 }
18174
18175 /* Add an abbreviation to the table.  */
18176
18177 void
18178 abbrev_table::add_abbrev (unsigned int abbrev_number,
18179                           struct abbrev_info *abbrev)
18180 {
18181   unsigned int hash_number;
18182
18183   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18184   abbrev->next = m_abbrevs[hash_number];
18185   m_abbrevs[hash_number] = abbrev;
18186 }
18187
18188 /* Look up an abbrev in the table.
18189    Returns NULL if the abbrev is not found.  */
18190
18191 struct abbrev_info *
18192 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18193 {
18194   unsigned int hash_number;
18195   struct abbrev_info *abbrev;
18196
18197   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18198   abbrev = m_abbrevs[hash_number];
18199
18200   while (abbrev)
18201     {
18202       if (abbrev->number == abbrev_number)
18203         return abbrev;
18204       abbrev = abbrev->next;
18205     }
18206   return NULL;
18207 }
18208
18209 /* Read in an abbrev table.  */
18210
18211 static abbrev_table_up
18212 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18213                          struct dwarf2_section_info *section,
18214                          sect_offset sect_off)
18215 {
18216   struct objfile *objfile = dwarf2_per_objfile->objfile;
18217   bfd *abfd = get_section_bfd_owner (section);
18218   const gdb_byte *abbrev_ptr;
18219   struct abbrev_info *cur_abbrev;
18220   unsigned int abbrev_number, bytes_read, abbrev_name;
18221   unsigned int abbrev_form;
18222   struct attr_abbrev *cur_attrs;
18223   unsigned int allocated_attrs;
18224
18225   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18226
18227   dwarf2_read_section (objfile, section);
18228   abbrev_ptr = section->buffer + to_underlying (sect_off);
18229   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18230   abbrev_ptr += bytes_read;
18231
18232   allocated_attrs = ATTR_ALLOC_CHUNK;
18233   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18234
18235   /* Loop until we reach an abbrev number of 0.  */
18236   while (abbrev_number)
18237     {
18238       cur_abbrev = abbrev_table->alloc_abbrev ();
18239
18240       /* read in abbrev header */
18241       cur_abbrev->number = abbrev_number;
18242       cur_abbrev->tag
18243         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18244       abbrev_ptr += bytes_read;
18245       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18246       abbrev_ptr += 1;
18247
18248       /* now read in declarations */
18249       for (;;)
18250         {
18251           LONGEST implicit_const;
18252
18253           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18254           abbrev_ptr += bytes_read;
18255           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18256           abbrev_ptr += bytes_read;
18257           if (abbrev_form == DW_FORM_implicit_const)
18258             {
18259               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18260                                                    &bytes_read);
18261               abbrev_ptr += bytes_read;
18262             }
18263           else
18264             {
18265               /* Initialize it due to a false compiler warning.  */
18266               implicit_const = -1;
18267             }
18268
18269           if (abbrev_name == 0)
18270             break;
18271
18272           if (cur_abbrev->num_attrs == allocated_attrs)
18273             {
18274               allocated_attrs += ATTR_ALLOC_CHUNK;
18275               cur_attrs
18276                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18277             }
18278
18279           cur_attrs[cur_abbrev->num_attrs].name
18280             = (enum dwarf_attribute) abbrev_name;
18281           cur_attrs[cur_abbrev->num_attrs].form
18282             = (enum dwarf_form) abbrev_form;
18283           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18284           ++cur_abbrev->num_attrs;
18285         }
18286
18287       cur_abbrev->attrs =
18288         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18289                    cur_abbrev->num_attrs);
18290       memcpy (cur_abbrev->attrs, cur_attrs,
18291               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18292
18293       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18294
18295       /* Get next abbreviation.
18296          Under Irix6 the abbreviations for a compilation unit are not
18297          always properly terminated with an abbrev number of 0.
18298          Exit loop if we encounter an abbreviation which we have
18299          already read (which means we are about to read the abbreviations
18300          for the next compile unit) or if the end of the abbreviation
18301          table is reached.  */
18302       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18303         break;
18304       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18305       abbrev_ptr += bytes_read;
18306       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18307         break;
18308     }
18309
18310   xfree (cur_attrs);
18311   return abbrev_table;
18312 }
18313
18314 /* Returns nonzero if TAG represents a type that we might generate a partial
18315    symbol for.  */
18316
18317 static int
18318 is_type_tag_for_partial (int tag)
18319 {
18320   switch (tag)
18321     {
18322 #if 0
18323     /* Some types that would be reasonable to generate partial symbols for,
18324        that we don't at present.  */
18325     case DW_TAG_array_type:
18326     case DW_TAG_file_type:
18327     case DW_TAG_ptr_to_member_type:
18328     case DW_TAG_set_type:
18329     case DW_TAG_string_type:
18330     case DW_TAG_subroutine_type:
18331 #endif
18332     case DW_TAG_base_type:
18333     case DW_TAG_class_type:
18334     case DW_TAG_interface_type:
18335     case DW_TAG_enumeration_type:
18336     case DW_TAG_structure_type:
18337     case DW_TAG_subrange_type:
18338     case DW_TAG_typedef:
18339     case DW_TAG_union_type:
18340       return 1;
18341     default:
18342       return 0;
18343     }
18344 }
18345
18346 /* Load all DIEs that are interesting for partial symbols into memory.  */
18347
18348 static struct partial_die_info *
18349 load_partial_dies (const struct die_reader_specs *reader,
18350                    const gdb_byte *info_ptr, int building_psymtab)
18351 {
18352   struct dwarf2_cu *cu = reader->cu;
18353   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18354   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18355   unsigned int bytes_read;
18356   unsigned int load_all = 0;
18357   int nesting_level = 1;
18358
18359   parent_die = NULL;
18360   last_die = NULL;
18361
18362   gdb_assert (cu->per_cu != NULL);
18363   if (cu->per_cu->load_all_dies)
18364     load_all = 1;
18365
18366   cu->partial_dies
18367     = htab_create_alloc_ex (cu->header.length / 12,
18368                             partial_die_hash,
18369                             partial_die_eq,
18370                             NULL,
18371                             &cu->comp_unit_obstack,
18372                             hashtab_obstack_allocate,
18373                             dummy_obstack_deallocate);
18374
18375   while (1)
18376     {
18377       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18378
18379       /* A NULL abbrev means the end of a series of children.  */
18380       if (abbrev == NULL)
18381         {
18382           if (--nesting_level == 0)
18383             return first_die;
18384
18385           info_ptr += bytes_read;
18386           last_die = parent_die;
18387           parent_die = parent_die->die_parent;
18388           continue;
18389         }
18390
18391       /* Check for template arguments.  We never save these; if
18392          they're seen, we just mark the parent, and go on our way.  */
18393       if (parent_die != NULL
18394           && cu->language == language_cplus
18395           && (abbrev->tag == DW_TAG_template_type_param
18396               || abbrev->tag == DW_TAG_template_value_param))
18397         {
18398           parent_die->has_template_arguments = 1;
18399
18400           if (!load_all)
18401             {
18402               /* We don't need a partial DIE for the template argument.  */
18403               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18404               continue;
18405             }
18406         }
18407
18408       /* We only recurse into c++ subprograms looking for template arguments.
18409          Skip their other children.  */
18410       if (!load_all
18411           && cu->language == language_cplus
18412           && parent_die != NULL
18413           && parent_die->tag == DW_TAG_subprogram)
18414         {
18415           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18416           continue;
18417         }
18418
18419       /* Check whether this DIE is interesting enough to save.  Normally
18420          we would not be interested in members here, but there may be
18421          later variables referencing them via DW_AT_specification (for
18422          static members).  */
18423       if (!load_all
18424           && !is_type_tag_for_partial (abbrev->tag)
18425           && abbrev->tag != DW_TAG_constant
18426           && abbrev->tag != DW_TAG_enumerator
18427           && abbrev->tag != DW_TAG_subprogram
18428           && abbrev->tag != DW_TAG_inlined_subroutine
18429           && abbrev->tag != DW_TAG_lexical_block
18430           && abbrev->tag != DW_TAG_variable
18431           && abbrev->tag != DW_TAG_namespace
18432           && abbrev->tag != DW_TAG_module
18433           && abbrev->tag != DW_TAG_member
18434           && abbrev->tag != DW_TAG_imported_unit
18435           && abbrev->tag != DW_TAG_imported_declaration)
18436         {
18437           /* Otherwise we skip to the next sibling, if any.  */
18438           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18439           continue;
18440         }
18441
18442       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18443                                    abbrev);
18444
18445       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18446
18447       /* This two-pass algorithm for processing partial symbols has a
18448          high cost in cache pressure.  Thus, handle some simple cases
18449          here which cover the majority of C partial symbols.  DIEs
18450          which neither have specification tags in them, nor could have
18451          specification tags elsewhere pointing at them, can simply be
18452          processed and discarded.
18453
18454          This segment is also optional; scan_partial_symbols and
18455          add_partial_symbol will handle these DIEs if we chain
18456          them in normally.  When compilers which do not emit large
18457          quantities of duplicate debug information are more common,
18458          this code can probably be removed.  */
18459
18460       /* Any complete simple types at the top level (pretty much all
18461          of them, for a language without namespaces), can be processed
18462          directly.  */
18463       if (parent_die == NULL
18464           && pdi.has_specification == 0
18465           && pdi.is_declaration == 0
18466           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18467               || pdi.tag == DW_TAG_base_type
18468               || pdi.tag == DW_TAG_subrange_type))
18469         {
18470           if (building_psymtab && pdi.name != NULL)
18471             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18472                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18473                                  psymbol_placement::STATIC,
18474                                  0, cu->language, objfile);
18475           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18476           continue;
18477         }
18478
18479       /* The exception for DW_TAG_typedef with has_children above is
18480          a workaround of GCC PR debug/47510.  In the case of this complaint
18481          type_name_or_error will error on such types later.
18482
18483          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18484          it could not find the child DIEs referenced later, this is checked
18485          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18486
18487       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18488         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18489                      "- DIE at %s [in module %s]"),
18490                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18491
18492       /* If we're at the second level, and we're an enumerator, and
18493          our parent has no specification (meaning possibly lives in a
18494          namespace elsewhere), then we can add the partial symbol now
18495          instead of queueing it.  */
18496       if (pdi.tag == DW_TAG_enumerator
18497           && parent_die != NULL
18498           && parent_die->die_parent == NULL
18499           && parent_die->tag == DW_TAG_enumeration_type
18500           && parent_die->has_specification == 0)
18501         {
18502           if (pdi.name == NULL)
18503             complaint (_("malformed enumerator DIE ignored"));
18504           else if (building_psymtab)
18505             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18506                                  VAR_DOMAIN, LOC_CONST, -1,
18507                                  cu->language == language_cplus
18508                                  ? psymbol_placement::GLOBAL
18509                                  : psymbol_placement::STATIC,
18510                                  0, cu->language, objfile);
18511
18512           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18513           continue;
18514         }
18515
18516       struct partial_die_info *part_die
18517         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18518
18519       /* We'll save this DIE so link it in.  */
18520       part_die->die_parent = parent_die;
18521       part_die->die_sibling = NULL;
18522       part_die->die_child = NULL;
18523
18524       if (last_die && last_die == parent_die)
18525         last_die->die_child = part_die;
18526       else if (last_die)
18527         last_die->die_sibling = part_die;
18528
18529       last_die = part_die;
18530
18531       if (first_die == NULL)
18532         first_die = part_die;
18533
18534       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18535          find interesting need to be in the hash table, because we
18536          also have the parent/sibling/child chains; only those that we
18537          might refer to by offset later during partial symbol reading.
18538
18539          For now this means things that might have be the target of a
18540          DW_AT_specification, DW_AT_abstract_origin, or
18541          DW_AT_extension.  DW_AT_extension will refer only to
18542          namespaces; DW_AT_abstract_origin refers to functions (and
18543          many things under the function DIE, but we do not recurse
18544          into function DIEs during partial symbol reading) and
18545          possibly variables as well; DW_AT_specification refers to
18546          declarations.  Declarations ought to have the DW_AT_declaration
18547          flag.  It happens that GCC forgets to put it in sometimes, but
18548          only for functions, not for types.
18549
18550          Adding more things than necessary to the hash table is harmless
18551          except for the performance cost.  Adding too few will result in
18552          wasted time in find_partial_die, when we reread the compilation
18553          unit with load_all_dies set.  */
18554
18555       if (load_all
18556           || abbrev->tag == DW_TAG_constant
18557           || abbrev->tag == DW_TAG_subprogram
18558           || abbrev->tag == DW_TAG_variable
18559           || abbrev->tag == DW_TAG_namespace
18560           || part_die->is_declaration)
18561         {
18562           void **slot;
18563
18564           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18565                                            to_underlying (part_die->sect_off),
18566                                            INSERT);
18567           *slot = part_die;
18568         }
18569
18570       /* For some DIEs we want to follow their children (if any).  For C
18571          we have no reason to follow the children of structures; for other
18572          languages we have to, so that we can get at method physnames
18573          to infer fully qualified class names, for DW_AT_specification,
18574          and for C++ template arguments.  For C++, we also look one level
18575          inside functions to find template arguments (if the name of the
18576          function does not already contain the template arguments).
18577
18578          For Ada, we need to scan the children of subprograms and lexical
18579          blocks as well because Ada allows the definition of nested
18580          entities that could be interesting for the debugger, such as
18581          nested subprograms for instance.  */
18582       if (last_die->has_children
18583           && (load_all
18584               || last_die->tag == DW_TAG_namespace
18585               || last_die->tag == DW_TAG_module
18586               || last_die->tag == DW_TAG_enumeration_type
18587               || (cu->language == language_cplus
18588                   && last_die->tag == DW_TAG_subprogram
18589                   && (last_die->name == NULL
18590                       || strchr (last_die->name, '<') == NULL))
18591               || (cu->language != language_c
18592                   && (last_die->tag == DW_TAG_class_type
18593                       || last_die->tag == DW_TAG_interface_type
18594                       || last_die->tag == DW_TAG_structure_type
18595                       || last_die->tag == DW_TAG_union_type))
18596               || (cu->language == language_ada
18597                   && (last_die->tag == DW_TAG_subprogram
18598                       || last_die->tag == DW_TAG_lexical_block))))
18599         {
18600           nesting_level++;
18601           parent_die = last_die;
18602           continue;
18603         }
18604
18605       /* Otherwise we skip to the next sibling, if any.  */
18606       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18607
18608       /* Back to the top, do it again.  */
18609     }
18610 }
18611
18612 partial_die_info::partial_die_info (sect_offset sect_off_,
18613                                     struct abbrev_info *abbrev)
18614   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18615 {
18616 }
18617
18618 /* Read a minimal amount of information into the minimal die structure.
18619    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18620
18621 const gdb_byte *
18622 partial_die_info::read (const struct die_reader_specs *reader,
18623                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18624 {
18625   struct dwarf2_cu *cu = reader->cu;
18626   struct dwarf2_per_objfile *dwarf2_per_objfile
18627     = cu->per_cu->dwarf2_per_objfile;
18628   unsigned int i;
18629   int has_low_pc_attr = 0;
18630   int has_high_pc_attr = 0;
18631   int high_pc_relative = 0;
18632
18633   for (i = 0; i < abbrev.num_attrs; ++i)
18634     {
18635       struct attribute attr;
18636
18637       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18638
18639       /* Store the data if it is of an attribute we want to keep in a
18640          partial symbol table.  */
18641       switch (attr.name)
18642         {
18643         case DW_AT_name:
18644           switch (tag)
18645             {
18646             case DW_TAG_compile_unit:
18647             case DW_TAG_partial_unit:
18648             case DW_TAG_type_unit:
18649               /* Compilation units have a DW_AT_name that is a filename, not
18650                  a source language identifier.  */
18651             case DW_TAG_enumeration_type:
18652             case DW_TAG_enumerator:
18653               /* These tags always have simple identifiers already; no need
18654                  to canonicalize them.  */
18655               name = DW_STRING (&attr);
18656               break;
18657             default:
18658               {
18659                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18660
18661                 name
18662                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18663                                               &objfile->per_bfd->storage_obstack);
18664               }
18665               break;
18666             }
18667           break;
18668         case DW_AT_linkage_name:
18669         case DW_AT_MIPS_linkage_name:
18670           /* Note that both forms of linkage name might appear.  We
18671              assume they will be the same, and we only store the last
18672              one we see.  */
18673           if (cu->language == language_ada)
18674             name = DW_STRING (&attr);
18675           linkage_name = DW_STRING (&attr);
18676           break;
18677         case DW_AT_low_pc:
18678           has_low_pc_attr = 1;
18679           lowpc = attr_value_as_address (&attr);
18680           break;
18681         case DW_AT_high_pc:
18682           has_high_pc_attr = 1;
18683           highpc = attr_value_as_address (&attr);
18684           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18685                 high_pc_relative = 1;
18686           break;
18687         case DW_AT_location:
18688           /* Support the .debug_loc offsets.  */
18689           if (attr_form_is_block (&attr))
18690             {
18691                d.locdesc = DW_BLOCK (&attr);
18692             }
18693           else if (attr_form_is_section_offset (&attr))
18694             {
18695               dwarf2_complex_location_expr_complaint ();
18696             }
18697           else
18698             {
18699               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18700                                                      "partial symbol information");
18701             }
18702           break;
18703         case DW_AT_external:
18704           is_external = DW_UNSND (&attr);
18705           break;
18706         case DW_AT_declaration:
18707           is_declaration = DW_UNSND (&attr);
18708           break;
18709         case DW_AT_type:
18710           has_type = 1;
18711           break;
18712         case DW_AT_abstract_origin:
18713         case DW_AT_specification:
18714         case DW_AT_extension:
18715           has_specification = 1;
18716           spec_offset = dwarf2_get_ref_die_offset (&attr);
18717           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18718                                    || cu->per_cu->is_dwz);
18719           break;
18720         case DW_AT_sibling:
18721           /* Ignore absolute siblings, they might point outside of
18722              the current compile unit.  */
18723           if (attr.form == DW_FORM_ref_addr)
18724             complaint (_("ignoring absolute DW_AT_sibling"));
18725           else
18726             {
18727               const gdb_byte *buffer = reader->buffer;
18728               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18729               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18730
18731               if (sibling_ptr < info_ptr)
18732                 complaint (_("DW_AT_sibling points backwards"));
18733               else if (sibling_ptr > reader->buffer_end)
18734                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18735               else
18736                 sibling = sibling_ptr;
18737             }
18738           break;
18739         case DW_AT_byte_size:
18740           has_byte_size = 1;
18741           break;
18742         case DW_AT_const_value:
18743           has_const_value = 1;
18744           break;
18745         case DW_AT_calling_convention:
18746           /* DWARF doesn't provide a way to identify a program's source-level
18747              entry point.  DW_AT_calling_convention attributes are only meant
18748              to describe functions' calling conventions.
18749
18750              However, because it's a necessary piece of information in
18751              Fortran, and before DWARF 4 DW_CC_program was the only
18752              piece of debugging information whose definition refers to
18753              a 'main program' at all, several compilers marked Fortran
18754              main programs with DW_CC_program --- even when those
18755              functions use the standard calling conventions.
18756
18757              Although DWARF now specifies a way to provide this
18758              information, we support this practice for backward
18759              compatibility.  */
18760           if (DW_UNSND (&attr) == DW_CC_program
18761               && cu->language == language_fortran)
18762             main_subprogram = 1;
18763           break;
18764         case DW_AT_inline:
18765           if (DW_UNSND (&attr) == DW_INL_inlined
18766               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18767             may_be_inlined = 1;
18768           break;
18769
18770         case DW_AT_import:
18771           if (tag == DW_TAG_imported_unit)
18772             {
18773               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18774               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18775                                   || cu->per_cu->is_dwz);
18776             }
18777           break;
18778
18779         case DW_AT_main_subprogram:
18780           main_subprogram = DW_UNSND (&attr);
18781           break;
18782
18783         case DW_AT_ranges:
18784           {
18785             /* It would be nice to reuse dwarf2_get_pc_bounds here,
18786                but that requires a full DIE, so instead we just
18787                reimplement it.  */
18788             int need_ranges_base = tag != DW_TAG_compile_unit;
18789             unsigned int ranges_offset = (DW_UNSND (&attr)
18790                                           + (need_ranges_base
18791                                              ? cu->ranges_base
18792                                              : 0));
18793
18794             /* Value of the DW_AT_ranges attribute is the offset in the
18795                .debug_ranges section.  */
18796             if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18797                                     nullptr))
18798               has_pc_info = 1;
18799           }
18800           break;
18801
18802         default:
18803           break;
18804         }
18805     }
18806
18807   if (high_pc_relative)
18808     highpc += lowpc;
18809
18810   if (has_low_pc_attr && has_high_pc_attr)
18811     {
18812       /* When using the GNU linker, .gnu.linkonce. sections are used to
18813          eliminate duplicate copies of functions and vtables and such.
18814          The linker will arbitrarily choose one and discard the others.
18815          The AT_*_pc values for such functions refer to local labels in
18816          these sections.  If the section from that file was discarded, the
18817          labels are not in the output, so the relocs get a value of 0.
18818          If this is a discarded function, mark the pc bounds as invalid,
18819          so that GDB will ignore it.  */
18820       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18821         {
18822           struct objfile *objfile = dwarf2_per_objfile->objfile;
18823           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18824
18825           complaint (_("DW_AT_low_pc %s is zero "
18826                        "for DIE at %s [in module %s]"),
18827                      paddress (gdbarch, lowpc),
18828                      sect_offset_str (sect_off),
18829                      objfile_name (objfile));
18830         }
18831       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18832       else if (lowpc >= highpc)
18833         {
18834           struct objfile *objfile = dwarf2_per_objfile->objfile;
18835           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18836
18837           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18838                        "for DIE at %s [in module %s]"),
18839                      paddress (gdbarch, lowpc),
18840                      paddress (gdbarch, highpc),
18841                      sect_offset_str (sect_off),
18842                      objfile_name (objfile));
18843         }
18844       else
18845         has_pc_info = 1;
18846     }
18847
18848   return info_ptr;
18849 }
18850
18851 /* Find a cached partial DIE at OFFSET in CU.  */
18852
18853 struct partial_die_info *
18854 dwarf2_cu::find_partial_die (sect_offset sect_off)
18855 {
18856   struct partial_die_info *lookup_die = NULL;
18857   struct partial_die_info part_die (sect_off);
18858
18859   lookup_die = ((struct partial_die_info *)
18860                 htab_find_with_hash (partial_dies, &part_die,
18861                                      to_underlying (sect_off)));
18862
18863   return lookup_die;
18864 }
18865
18866 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18867    except in the case of .debug_types DIEs which do not reference
18868    outside their CU (they do however referencing other types via
18869    DW_FORM_ref_sig8).  */
18870
18871 static const struct cu_partial_die_info
18872 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18873 {
18874   struct dwarf2_per_objfile *dwarf2_per_objfile
18875     = cu->per_cu->dwarf2_per_objfile;
18876   struct objfile *objfile = dwarf2_per_objfile->objfile;
18877   struct dwarf2_per_cu_data *per_cu = NULL;
18878   struct partial_die_info *pd = NULL;
18879
18880   if (offset_in_dwz == cu->per_cu->is_dwz
18881       && offset_in_cu_p (&cu->header, sect_off))
18882     {
18883       pd = cu->find_partial_die (sect_off);
18884       if (pd != NULL)
18885         return { cu, pd };
18886       /* We missed recording what we needed.
18887          Load all dies and try again.  */
18888       per_cu = cu->per_cu;
18889     }
18890   else
18891     {
18892       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18893       if (cu->per_cu->is_debug_types)
18894         {
18895           error (_("Dwarf Error: Type Unit at offset %s contains"
18896                    " external reference to offset %s [in module %s].\n"),
18897                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18898                  bfd_get_filename (objfile->obfd));
18899         }
18900       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18901                                                  dwarf2_per_objfile);
18902
18903       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18904         load_partial_comp_unit (per_cu);
18905
18906       per_cu->cu->last_used = 0;
18907       pd = per_cu->cu->find_partial_die (sect_off);
18908     }
18909
18910   /* If we didn't find it, and not all dies have been loaded,
18911      load them all and try again.  */
18912
18913   if (pd == NULL && per_cu->load_all_dies == 0)
18914     {
18915       per_cu->load_all_dies = 1;
18916
18917       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18918          THIS_CU->cu may already be in use.  So we can't just free it and
18919          replace its DIEs with the ones we read in.  Instead, we leave those
18920          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18921          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18922          set.  */
18923       load_partial_comp_unit (per_cu);
18924
18925       pd = per_cu->cu->find_partial_die (sect_off);
18926     }
18927
18928   if (pd == NULL)
18929     internal_error (__FILE__, __LINE__,
18930                     _("could not find partial DIE %s "
18931                       "in cache [from module %s]\n"),
18932                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18933   return { per_cu->cu, pd };
18934 }
18935
18936 /* See if we can figure out if the class lives in a namespace.  We do
18937    this by looking for a member function; its demangled name will
18938    contain namespace info, if there is any.  */
18939
18940 static void
18941 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18942                                   struct dwarf2_cu *cu)
18943 {
18944   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18945      what template types look like, because the demangler
18946      frequently doesn't give the same name as the debug info.  We
18947      could fix this by only using the demangled name to get the
18948      prefix (but see comment in read_structure_type).  */
18949
18950   struct partial_die_info *real_pdi;
18951   struct partial_die_info *child_pdi;
18952
18953   /* If this DIE (this DIE's specification, if any) has a parent, then
18954      we should not do this.  We'll prepend the parent's fully qualified
18955      name when we create the partial symbol.  */
18956
18957   real_pdi = struct_pdi;
18958   while (real_pdi->has_specification)
18959     {
18960       auto res = find_partial_die (real_pdi->spec_offset,
18961                                    real_pdi->spec_is_dwz, cu);
18962       real_pdi = res.pdi;
18963       cu = res.cu;
18964     }
18965
18966   if (real_pdi->die_parent != NULL)
18967     return;
18968
18969   for (child_pdi = struct_pdi->die_child;
18970        child_pdi != NULL;
18971        child_pdi = child_pdi->die_sibling)
18972     {
18973       if (child_pdi->tag == DW_TAG_subprogram
18974           && child_pdi->linkage_name != NULL)
18975         {
18976           char *actual_class_name
18977             = language_class_name_from_physname (cu->language_defn,
18978                                                  child_pdi->linkage_name);
18979           if (actual_class_name != NULL)
18980             {
18981               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18982               struct_pdi->name
18983                 = ((const char *)
18984                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18985                                   actual_class_name,
18986                                   strlen (actual_class_name)));
18987               xfree (actual_class_name);
18988             }
18989           break;
18990         }
18991     }
18992 }
18993
18994 void
18995 partial_die_info::fixup (struct dwarf2_cu *cu)
18996 {
18997   /* Once we've fixed up a die, there's no point in doing so again.
18998      This also avoids a memory leak if we were to call
18999      guess_partial_die_structure_name multiple times.  */
19000   if (fixup_called)
19001     return;
19002
19003   /* If we found a reference attribute and the DIE has no name, try
19004      to find a name in the referred to DIE.  */
19005
19006   if (name == NULL && has_specification)
19007     {
19008       struct partial_die_info *spec_die;
19009
19010       auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
19011       spec_die = res.pdi;
19012       cu = res.cu;
19013
19014       spec_die->fixup (cu);
19015
19016       if (spec_die->name)
19017         {
19018           name = spec_die->name;
19019
19020           /* Copy DW_AT_external attribute if it is set.  */
19021           if (spec_die->is_external)
19022             is_external = spec_die->is_external;
19023         }
19024     }
19025
19026   /* Set default names for some unnamed DIEs.  */
19027
19028   if (name == NULL && tag == DW_TAG_namespace)
19029     name = CP_ANONYMOUS_NAMESPACE_STR;
19030
19031   /* If there is no parent die to provide a namespace, and there are
19032      children, see if we can determine the namespace from their linkage
19033      name.  */
19034   if (cu->language == language_cplus
19035       && !VEC_empty (dwarf2_section_info_def,
19036                      cu->per_cu->dwarf2_per_objfile->types)
19037       && die_parent == NULL
19038       && has_children
19039       && (tag == DW_TAG_class_type
19040           || tag == DW_TAG_structure_type
19041           || tag == DW_TAG_union_type))
19042     guess_partial_die_structure_name (this, cu);
19043
19044   /* GCC might emit a nameless struct or union that has a linkage
19045      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19046   if (name == NULL
19047       && (tag == DW_TAG_class_type
19048           || tag == DW_TAG_interface_type
19049           || tag == DW_TAG_structure_type
19050           || tag == DW_TAG_union_type)
19051       && linkage_name != NULL)
19052     {
19053       char *demangled;
19054
19055       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
19056       if (demangled)
19057         {
19058           const char *base;
19059
19060           /* Strip any leading namespaces/classes, keep only the base name.
19061              DW_AT_name for named DIEs does not contain the prefixes.  */
19062           base = strrchr (demangled, ':');
19063           if (base && base > demangled && base[-1] == ':')
19064             base++;
19065           else
19066             base = demangled;
19067
19068           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19069           name
19070             = ((const char *)
19071                obstack_copy0 (&objfile->per_bfd->storage_obstack,
19072                               base, strlen (base)));
19073           xfree (demangled);
19074         }
19075     }
19076
19077   fixup_called = 1;
19078 }
19079
19080 /* Read an attribute value described by an attribute form.  */
19081
19082 static const gdb_byte *
19083 read_attribute_value (const struct die_reader_specs *reader,
19084                       struct attribute *attr, unsigned form,
19085                       LONGEST implicit_const, const gdb_byte *info_ptr)
19086 {
19087   struct dwarf2_cu *cu = reader->cu;
19088   struct dwarf2_per_objfile *dwarf2_per_objfile
19089     = cu->per_cu->dwarf2_per_objfile;
19090   struct objfile *objfile = dwarf2_per_objfile->objfile;
19091   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19092   bfd *abfd = reader->abfd;
19093   struct comp_unit_head *cu_header = &cu->header;
19094   unsigned int bytes_read;
19095   struct dwarf_block *blk;
19096
19097   attr->form = (enum dwarf_form) form;
19098   switch (form)
19099     {
19100     case DW_FORM_ref_addr:
19101       if (cu->header.version == 2)
19102         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19103       else
19104         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19105                                        &cu->header, &bytes_read);
19106       info_ptr += bytes_read;
19107       break;
19108     case DW_FORM_GNU_ref_alt:
19109       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19110       info_ptr += bytes_read;
19111       break;
19112     case DW_FORM_addr:
19113       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19114       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19115       info_ptr += bytes_read;
19116       break;
19117     case DW_FORM_block2:
19118       blk = dwarf_alloc_block (cu);
19119       blk->size = read_2_bytes (abfd, info_ptr);
19120       info_ptr += 2;
19121       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19122       info_ptr += blk->size;
19123       DW_BLOCK (attr) = blk;
19124       break;
19125     case DW_FORM_block4:
19126       blk = dwarf_alloc_block (cu);
19127       blk->size = read_4_bytes (abfd, info_ptr);
19128       info_ptr += 4;
19129       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19130       info_ptr += blk->size;
19131       DW_BLOCK (attr) = blk;
19132       break;
19133     case DW_FORM_data2:
19134       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19135       info_ptr += 2;
19136       break;
19137     case DW_FORM_data4:
19138       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19139       info_ptr += 4;
19140       break;
19141     case DW_FORM_data8:
19142       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19143       info_ptr += 8;
19144       break;
19145     case DW_FORM_data16:
19146       blk = dwarf_alloc_block (cu);
19147       blk->size = 16;
19148       blk->data = read_n_bytes (abfd, info_ptr, 16);
19149       info_ptr += 16;
19150       DW_BLOCK (attr) = blk;
19151       break;
19152     case DW_FORM_sec_offset:
19153       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19154       info_ptr += bytes_read;
19155       break;
19156     case DW_FORM_string:
19157       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19158       DW_STRING_IS_CANONICAL (attr) = 0;
19159       info_ptr += bytes_read;
19160       break;
19161     case DW_FORM_strp:
19162       if (!cu->per_cu->is_dwz)
19163         {
19164           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19165                                                    abfd, info_ptr, cu_header,
19166                                                    &bytes_read);
19167           DW_STRING_IS_CANONICAL (attr) = 0;
19168           info_ptr += bytes_read;
19169           break;
19170         }
19171       /* FALLTHROUGH */
19172     case DW_FORM_line_strp:
19173       if (!cu->per_cu->is_dwz)
19174         {
19175           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19176                                                         abfd, info_ptr,
19177                                                         cu_header, &bytes_read);
19178           DW_STRING_IS_CANONICAL (attr) = 0;
19179           info_ptr += bytes_read;
19180           break;
19181         }
19182       /* FALLTHROUGH */
19183     case DW_FORM_GNU_strp_alt:
19184       {
19185         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19186         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19187                                           &bytes_read);
19188
19189         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19190                                                           dwz, str_offset);
19191         DW_STRING_IS_CANONICAL (attr) = 0;
19192         info_ptr += bytes_read;
19193       }
19194       break;
19195     case DW_FORM_exprloc:
19196     case DW_FORM_block:
19197       blk = dwarf_alloc_block (cu);
19198       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19199       info_ptr += bytes_read;
19200       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19201       info_ptr += blk->size;
19202       DW_BLOCK (attr) = blk;
19203       break;
19204     case DW_FORM_block1:
19205       blk = dwarf_alloc_block (cu);
19206       blk->size = read_1_byte (abfd, info_ptr);
19207       info_ptr += 1;
19208       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19209       info_ptr += blk->size;
19210       DW_BLOCK (attr) = blk;
19211       break;
19212     case DW_FORM_data1:
19213       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19214       info_ptr += 1;
19215       break;
19216     case DW_FORM_flag:
19217       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19218       info_ptr += 1;
19219       break;
19220     case DW_FORM_flag_present:
19221       DW_UNSND (attr) = 1;
19222       break;
19223     case DW_FORM_sdata:
19224       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19225       info_ptr += bytes_read;
19226       break;
19227     case DW_FORM_udata:
19228       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19229       info_ptr += bytes_read;
19230       break;
19231     case DW_FORM_ref1:
19232       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19233                          + read_1_byte (abfd, info_ptr));
19234       info_ptr += 1;
19235       break;
19236     case DW_FORM_ref2:
19237       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19238                          + read_2_bytes (abfd, info_ptr));
19239       info_ptr += 2;
19240       break;
19241     case DW_FORM_ref4:
19242       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19243                          + read_4_bytes (abfd, info_ptr));
19244       info_ptr += 4;
19245       break;
19246     case DW_FORM_ref8:
19247       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19248                          + read_8_bytes (abfd, info_ptr));
19249       info_ptr += 8;
19250       break;
19251     case DW_FORM_ref_sig8:
19252       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19253       info_ptr += 8;
19254       break;
19255     case DW_FORM_ref_udata:
19256       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19257                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19258       info_ptr += bytes_read;
19259       break;
19260     case DW_FORM_indirect:
19261       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19262       info_ptr += bytes_read;
19263       if (form == DW_FORM_implicit_const)
19264         {
19265           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19266           info_ptr += bytes_read;
19267         }
19268       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19269                                        info_ptr);
19270       break;
19271     case DW_FORM_implicit_const:
19272       DW_SND (attr) = implicit_const;
19273       break;
19274     case DW_FORM_addrx:
19275     case DW_FORM_GNU_addr_index:
19276       if (reader->dwo_file == NULL)
19277         {
19278           /* For now flag a hard error.
19279              Later we can turn this into a complaint.  */
19280           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19281                  dwarf_form_name (form),
19282                  bfd_get_filename (abfd));
19283         }
19284       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19285       info_ptr += bytes_read;
19286       break;
19287     case DW_FORM_strx:
19288     case DW_FORM_strx1:
19289     case DW_FORM_strx2:
19290     case DW_FORM_strx3:
19291     case DW_FORM_strx4:
19292     case DW_FORM_GNU_str_index:
19293       if (reader->dwo_file == NULL)
19294         {
19295           /* For now flag a hard error.
19296              Later we can turn this into a complaint if warranted.  */
19297           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19298                  dwarf_form_name (form),
19299                  bfd_get_filename (abfd));
19300         }
19301       {
19302         ULONGEST str_index;
19303         if (form == DW_FORM_strx1)
19304           {
19305             str_index = read_1_byte (abfd, info_ptr);
19306             info_ptr += 1;
19307           }
19308         else if (form == DW_FORM_strx2)
19309           {
19310             str_index = read_2_bytes (abfd, info_ptr);
19311             info_ptr += 2;
19312           }
19313         else if (form == DW_FORM_strx3)
19314           {
19315             str_index = read_3_bytes (abfd, info_ptr);
19316             info_ptr += 3;
19317           }
19318         else if (form == DW_FORM_strx4)
19319           {
19320             str_index = read_4_bytes (abfd, info_ptr);
19321             info_ptr += 4;
19322           }
19323         else
19324           {
19325             str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19326             info_ptr += bytes_read;
19327           }
19328         DW_STRING (attr) = read_str_index (reader, str_index);
19329         DW_STRING_IS_CANONICAL (attr) = 0;
19330       }
19331       break;
19332     default:
19333       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19334              dwarf_form_name (form),
19335              bfd_get_filename (abfd));
19336     }
19337
19338   /* Super hack.  */
19339   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19340     attr->form = DW_FORM_GNU_ref_alt;
19341
19342   /* We have seen instances where the compiler tried to emit a byte
19343      size attribute of -1 which ended up being encoded as an unsigned
19344      0xffffffff.  Although 0xffffffff is technically a valid size value,
19345      an object of this size seems pretty unlikely so we can relatively
19346      safely treat these cases as if the size attribute was invalid and
19347      treat them as zero by default.  */
19348   if (attr->name == DW_AT_byte_size
19349       && form == DW_FORM_data4
19350       && DW_UNSND (attr) >= 0xffffffff)
19351     {
19352       complaint
19353         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19354          hex_string (DW_UNSND (attr)));
19355       DW_UNSND (attr) = 0;
19356     }
19357
19358   return info_ptr;
19359 }
19360
19361 /* Read an attribute described by an abbreviated attribute.  */
19362
19363 static const gdb_byte *
19364 read_attribute (const struct die_reader_specs *reader,
19365                 struct attribute *attr, struct attr_abbrev *abbrev,
19366                 const gdb_byte *info_ptr)
19367 {
19368   attr->name = abbrev->name;
19369   return read_attribute_value (reader, attr, abbrev->form,
19370                                abbrev->implicit_const, info_ptr);
19371 }
19372
19373 /* Read dwarf information from a buffer.  */
19374
19375 static unsigned int
19376 read_1_byte (bfd *abfd, const gdb_byte *buf)
19377 {
19378   return bfd_get_8 (abfd, buf);
19379 }
19380
19381 static int
19382 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19383 {
19384   return bfd_get_signed_8 (abfd, buf);
19385 }
19386
19387 static unsigned int
19388 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19389 {
19390   return bfd_get_16 (abfd, buf);
19391 }
19392
19393 static int
19394 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19395 {
19396   return bfd_get_signed_16 (abfd, buf);
19397 }
19398
19399 static unsigned int
19400 read_3_bytes (bfd *abfd, const gdb_byte *buf)
19401 {
19402   unsigned int result = 0;
19403   for (int i = 0; i < 3; ++i)
19404     {
19405       unsigned char byte = bfd_get_8 (abfd, buf);
19406       buf++;
19407       result |= ((unsigned int) byte << (i * 8));
19408     }
19409   return result;
19410 }
19411
19412 static unsigned int
19413 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19414 {
19415   return bfd_get_32 (abfd, buf);
19416 }
19417
19418 static int
19419 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19420 {
19421   return bfd_get_signed_32 (abfd, buf);
19422 }
19423
19424 static ULONGEST
19425 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19426 {
19427   return bfd_get_64 (abfd, buf);
19428 }
19429
19430 static CORE_ADDR
19431 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19432               unsigned int *bytes_read)
19433 {
19434   struct comp_unit_head *cu_header = &cu->header;
19435   CORE_ADDR retval = 0;
19436
19437   if (cu_header->signed_addr_p)
19438     {
19439       switch (cu_header->addr_size)
19440         {
19441         case 2:
19442           retval = bfd_get_signed_16 (abfd, buf);
19443           break;
19444         case 4:
19445           retval = bfd_get_signed_32 (abfd, buf);
19446           break;
19447         case 8:
19448           retval = bfd_get_signed_64 (abfd, buf);
19449           break;
19450         default:
19451           internal_error (__FILE__, __LINE__,
19452                           _("read_address: bad switch, signed [in module %s]"),
19453                           bfd_get_filename (abfd));
19454         }
19455     }
19456   else
19457     {
19458       switch (cu_header->addr_size)
19459         {
19460         case 2:
19461           retval = bfd_get_16 (abfd, buf);
19462           break;
19463         case 4:
19464           retval = bfd_get_32 (abfd, buf);
19465           break;
19466         case 8:
19467           retval = bfd_get_64 (abfd, buf);
19468           break;
19469         default:
19470           internal_error (__FILE__, __LINE__,
19471                           _("read_address: bad switch, "
19472                             "unsigned [in module %s]"),
19473                           bfd_get_filename (abfd));
19474         }
19475     }
19476
19477   *bytes_read = cu_header->addr_size;
19478   return retval;
19479 }
19480
19481 /* Read the initial length from a section.  The (draft) DWARF 3
19482    specification allows the initial length to take up either 4 bytes
19483    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19484    bytes describe the length and all offsets will be 8 bytes in length
19485    instead of 4.
19486
19487    An older, non-standard 64-bit format is also handled by this
19488    function.  The older format in question stores the initial length
19489    as an 8-byte quantity without an escape value.  Lengths greater
19490    than 2^32 aren't very common which means that the initial 4 bytes
19491    is almost always zero.  Since a length value of zero doesn't make
19492    sense for the 32-bit format, this initial zero can be considered to
19493    be an escape value which indicates the presence of the older 64-bit
19494    format.  As written, the code can't detect (old format) lengths
19495    greater than 4GB.  If it becomes necessary to handle lengths
19496    somewhat larger than 4GB, we could allow other small values (such
19497    as the non-sensical values of 1, 2, and 3) to also be used as
19498    escape values indicating the presence of the old format.
19499
19500    The value returned via bytes_read should be used to increment the
19501    relevant pointer after calling read_initial_length().
19502
19503    [ Note:  read_initial_length() and read_offset() are based on the
19504      document entitled "DWARF Debugging Information Format", revision
19505      3, draft 8, dated November 19, 2001.  This document was obtained
19506      from:
19507
19508         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19509
19510      This document is only a draft and is subject to change.  (So beware.)
19511
19512      Details regarding the older, non-standard 64-bit format were
19513      determined empirically by examining 64-bit ELF files produced by
19514      the SGI toolchain on an IRIX 6.5 machine.
19515
19516      - Kevin, July 16, 2002
19517    ] */
19518
19519 static LONGEST
19520 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19521 {
19522   LONGEST length = bfd_get_32 (abfd, buf);
19523
19524   if (length == 0xffffffff)
19525     {
19526       length = bfd_get_64 (abfd, buf + 4);
19527       *bytes_read = 12;
19528     }
19529   else if (length == 0)
19530     {
19531       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19532       length = bfd_get_64 (abfd, buf);
19533       *bytes_read = 8;
19534     }
19535   else
19536     {
19537       *bytes_read = 4;
19538     }
19539
19540   return length;
19541 }
19542
19543 /* Cover function for read_initial_length.
19544    Returns the length of the object at BUF, and stores the size of the
19545    initial length in *BYTES_READ and stores the size that offsets will be in
19546    *OFFSET_SIZE.
19547    If the initial length size is not equivalent to that specified in
19548    CU_HEADER then issue a complaint.
19549    This is useful when reading non-comp-unit headers.  */
19550
19551 static LONGEST
19552 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19553                                         const struct comp_unit_head *cu_header,
19554                                         unsigned int *bytes_read,
19555                                         unsigned int *offset_size)
19556 {
19557   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19558
19559   gdb_assert (cu_header->initial_length_size == 4
19560               || cu_header->initial_length_size == 8
19561               || cu_header->initial_length_size == 12);
19562
19563   if (cu_header->initial_length_size != *bytes_read)
19564     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19565
19566   *offset_size = (*bytes_read == 4) ? 4 : 8;
19567   return length;
19568 }
19569
19570 /* Read an offset from the data stream.  The size of the offset is
19571    given by cu_header->offset_size.  */
19572
19573 static LONGEST
19574 read_offset (bfd *abfd, const gdb_byte *buf,
19575              const struct comp_unit_head *cu_header,
19576              unsigned int *bytes_read)
19577 {
19578   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19579
19580   *bytes_read = cu_header->offset_size;
19581   return offset;
19582 }
19583
19584 /* Read an offset from the data stream.  */
19585
19586 static LONGEST
19587 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19588 {
19589   LONGEST retval = 0;
19590
19591   switch (offset_size)
19592     {
19593     case 4:
19594       retval = bfd_get_32 (abfd, buf);
19595       break;
19596     case 8:
19597       retval = bfd_get_64 (abfd, buf);
19598       break;
19599     default:
19600       internal_error (__FILE__, __LINE__,
19601                       _("read_offset_1: bad switch [in module %s]"),
19602                       bfd_get_filename (abfd));
19603     }
19604
19605   return retval;
19606 }
19607
19608 static const gdb_byte *
19609 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19610 {
19611   /* If the size of a host char is 8 bits, we can return a pointer
19612      to the buffer, otherwise we have to copy the data to a buffer
19613      allocated on the temporary obstack.  */
19614   gdb_assert (HOST_CHAR_BIT == 8);
19615   return buf;
19616 }
19617
19618 static const char *
19619 read_direct_string (bfd *abfd, const gdb_byte *buf,
19620                     unsigned int *bytes_read_ptr)
19621 {
19622   /* If the size of a host char is 8 bits, we can return a pointer
19623      to the string, otherwise we have to copy the string to a buffer
19624      allocated on the temporary obstack.  */
19625   gdb_assert (HOST_CHAR_BIT == 8);
19626   if (*buf == '\0')
19627     {
19628       *bytes_read_ptr = 1;
19629       return NULL;
19630     }
19631   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19632   return (const char *) buf;
19633 }
19634
19635 /* Return pointer to string at section SECT offset STR_OFFSET with error
19636    reporting strings FORM_NAME and SECT_NAME.  */
19637
19638 static const char *
19639 read_indirect_string_at_offset_from (struct objfile *objfile,
19640                                      bfd *abfd, LONGEST str_offset,
19641                                      struct dwarf2_section_info *sect,
19642                                      const char *form_name,
19643                                      const char *sect_name)
19644 {
19645   dwarf2_read_section (objfile, sect);
19646   if (sect->buffer == NULL)
19647     error (_("%s used without %s section [in module %s]"),
19648            form_name, sect_name, bfd_get_filename (abfd));
19649   if (str_offset >= sect->size)
19650     error (_("%s pointing outside of %s section [in module %s]"),
19651            form_name, sect_name, bfd_get_filename (abfd));
19652   gdb_assert (HOST_CHAR_BIT == 8);
19653   if (sect->buffer[str_offset] == '\0')
19654     return NULL;
19655   return (const char *) (sect->buffer + str_offset);
19656 }
19657
19658 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19659
19660 static const char *
19661 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19662                                 bfd *abfd, LONGEST str_offset)
19663 {
19664   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19665                                               abfd, str_offset,
19666                                               &dwarf2_per_objfile->str,
19667                                               "DW_FORM_strp", ".debug_str");
19668 }
19669
19670 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19671
19672 static const char *
19673 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19674                                      bfd *abfd, LONGEST str_offset)
19675 {
19676   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19677                                               abfd, str_offset,
19678                                               &dwarf2_per_objfile->line_str,
19679                                               "DW_FORM_line_strp",
19680                                               ".debug_line_str");
19681 }
19682
19683 /* Read a string at offset STR_OFFSET in the .debug_str section from
19684    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19685    the string consists of a single NUL byte, return NULL; otherwise
19686    return a pointer to the string.  */
19687
19688 static const char *
19689 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19690                                LONGEST str_offset)
19691 {
19692   dwarf2_read_section (objfile, &dwz->str);
19693
19694   if (dwz->str.buffer == NULL)
19695     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19696              "section [in module %s]"),
19697            bfd_get_filename (dwz->dwz_bfd));
19698   if (str_offset >= dwz->str.size)
19699     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19700              ".debug_str section [in module %s]"),
19701            bfd_get_filename (dwz->dwz_bfd));
19702   gdb_assert (HOST_CHAR_BIT == 8);
19703   if (dwz->str.buffer[str_offset] == '\0')
19704     return NULL;
19705   return (const char *) (dwz->str.buffer + str_offset);
19706 }
19707
19708 /* Return pointer to string at .debug_str offset as read from BUF.
19709    BUF is assumed to be in a compilation unit described by CU_HEADER.
19710    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19711
19712 static const char *
19713 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19714                       const gdb_byte *buf,
19715                       const struct comp_unit_head *cu_header,
19716                       unsigned int *bytes_read_ptr)
19717 {
19718   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19719
19720   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19721 }
19722
19723 /* Return pointer to string at .debug_line_str offset as read from BUF.
19724    BUF is assumed to be in a compilation unit described by CU_HEADER.
19725    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19726
19727 static const char *
19728 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19729                            bfd *abfd, const gdb_byte *buf,
19730                            const struct comp_unit_head *cu_header,
19731                            unsigned int *bytes_read_ptr)
19732 {
19733   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19734
19735   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19736                                               str_offset);
19737 }
19738
19739 ULONGEST
19740 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19741                           unsigned int *bytes_read_ptr)
19742 {
19743   ULONGEST result;
19744   unsigned int num_read;
19745   int shift;
19746   unsigned char byte;
19747
19748   result = 0;
19749   shift = 0;
19750   num_read = 0;
19751   while (1)
19752     {
19753       byte = bfd_get_8 (abfd, buf);
19754       buf++;
19755       num_read++;
19756       result |= ((ULONGEST) (byte & 127) << shift);
19757       if ((byte & 128) == 0)
19758         {
19759           break;
19760         }
19761       shift += 7;
19762     }
19763   *bytes_read_ptr = num_read;
19764   return result;
19765 }
19766
19767 static LONGEST
19768 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19769                     unsigned int *bytes_read_ptr)
19770 {
19771   ULONGEST result;
19772   int shift, num_read;
19773   unsigned char byte;
19774
19775   result = 0;
19776   shift = 0;
19777   num_read = 0;
19778   while (1)
19779     {
19780       byte = bfd_get_8 (abfd, buf);
19781       buf++;
19782       num_read++;
19783       result |= ((ULONGEST) (byte & 127) << shift);
19784       shift += 7;
19785       if ((byte & 128) == 0)
19786         {
19787           break;
19788         }
19789     }
19790   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19791     result |= -(((ULONGEST) 1) << shift);
19792   *bytes_read_ptr = num_read;
19793   return result;
19794 }
19795
19796 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19797    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19798    ADDR_SIZE is the size of addresses from the CU header.  */
19799
19800 static CORE_ADDR
19801 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19802                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19803 {
19804   struct objfile *objfile = dwarf2_per_objfile->objfile;
19805   bfd *abfd = objfile->obfd;
19806   const gdb_byte *info_ptr;
19807
19808   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19809   if (dwarf2_per_objfile->addr.buffer == NULL)
19810     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19811            objfile_name (objfile));
19812   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19813     error (_("DW_FORM_addr_index pointing outside of "
19814              ".debug_addr section [in module %s]"),
19815            objfile_name (objfile));
19816   info_ptr = (dwarf2_per_objfile->addr.buffer
19817               + addr_base + addr_index * addr_size);
19818   if (addr_size == 4)
19819     return bfd_get_32 (abfd, info_ptr);
19820   else
19821     return bfd_get_64 (abfd, info_ptr);
19822 }
19823
19824 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19825
19826 static CORE_ADDR
19827 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19828 {
19829   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19830                             cu->addr_base, cu->header.addr_size);
19831 }
19832
19833 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19834
19835 static CORE_ADDR
19836 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19837                              unsigned int *bytes_read)
19838 {
19839   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19840   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19841
19842   return read_addr_index (cu, addr_index);
19843 }
19844
19845 /* Data structure to pass results from dwarf2_read_addr_index_reader
19846    back to dwarf2_read_addr_index.  */
19847
19848 struct dwarf2_read_addr_index_data
19849 {
19850   ULONGEST addr_base;
19851   int addr_size;
19852 };
19853
19854 /* die_reader_func for dwarf2_read_addr_index.  */
19855
19856 static void
19857 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19858                                const gdb_byte *info_ptr,
19859                                struct die_info *comp_unit_die,
19860                                int has_children,
19861                                void *data)
19862 {
19863   struct dwarf2_cu *cu = reader->cu;
19864   struct dwarf2_read_addr_index_data *aidata =
19865     (struct dwarf2_read_addr_index_data *) data;
19866
19867   aidata->addr_base = cu->addr_base;
19868   aidata->addr_size = cu->header.addr_size;
19869 }
19870
19871 /* Given an index in .debug_addr, fetch the value.
19872    NOTE: This can be called during dwarf expression evaluation,
19873    long after the debug information has been read, and thus per_cu->cu
19874    may no longer exist.  */
19875
19876 CORE_ADDR
19877 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19878                         unsigned int addr_index)
19879 {
19880   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19881   struct dwarf2_cu *cu = per_cu->cu;
19882   ULONGEST addr_base;
19883   int addr_size;
19884
19885   /* We need addr_base and addr_size.
19886      If we don't have PER_CU->cu, we have to get it.
19887      Nasty, but the alternative is storing the needed info in PER_CU,
19888      which at this point doesn't seem justified: it's not clear how frequently
19889      it would get used and it would increase the size of every PER_CU.
19890      Entry points like dwarf2_per_cu_addr_size do a similar thing
19891      so we're not in uncharted territory here.
19892      Alas we need to be a bit more complicated as addr_base is contained
19893      in the DIE.
19894
19895      We don't need to read the entire CU(/TU).
19896      We just need the header and top level die.
19897
19898      IWBN to use the aging mechanism to let us lazily later discard the CU.
19899      For now we skip this optimization.  */
19900
19901   if (cu != NULL)
19902     {
19903       addr_base = cu->addr_base;
19904       addr_size = cu->header.addr_size;
19905     }
19906   else
19907     {
19908       struct dwarf2_read_addr_index_data aidata;
19909
19910       /* Note: We can't use init_cutu_and_read_dies_simple here,
19911          we need addr_base.  */
19912       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19913                                dwarf2_read_addr_index_reader, &aidata);
19914       addr_base = aidata.addr_base;
19915       addr_size = aidata.addr_size;
19916     }
19917
19918   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19919                             addr_size);
19920 }
19921
19922 /* Given a DW_FORM_GNU_str_index or DW_FORM_strx, fetch the string.
19923    This is only used by the Fission support.  */
19924
19925 static const char *
19926 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19927 {
19928   struct dwarf2_cu *cu = reader->cu;
19929   struct dwarf2_per_objfile *dwarf2_per_objfile
19930     = cu->per_cu->dwarf2_per_objfile;
19931   struct objfile *objfile = dwarf2_per_objfile->objfile;
19932   const char *objf_name = objfile_name (objfile);
19933   bfd *abfd = objfile->obfd;
19934   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19935   struct dwarf2_section_info *str_offsets_section =
19936     &reader->dwo_file->sections.str_offsets;
19937   const gdb_byte *info_ptr;
19938   ULONGEST str_offset;
19939   static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
19940
19941   dwarf2_read_section (objfile, str_section);
19942   dwarf2_read_section (objfile, str_offsets_section);
19943   if (str_section->buffer == NULL)
19944     error (_("%s used without .debug_str.dwo section"
19945              " in CU at offset %s [in module %s]"),
19946            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19947   if (str_offsets_section->buffer == NULL)
19948     error (_("%s used without .debug_str_offsets.dwo section"
19949              " in CU at offset %s [in module %s]"),
19950            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19951   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19952     error (_("%s pointing outside of .debug_str_offsets.dwo"
19953              " section in CU at offset %s [in module %s]"),
19954            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19955   info_ptr = (str_offsets_section->buffer
19956               + str_index * cu->header.offset_size);
19957   if (cu->header.offset_size == 4)
19958     str_offset = bfd_get_32 (abfd, info_ptr);
19959   else
19960     str_offset = bfd_get_64 (abfd, info_ptr);
19961   if (str_offset >= str_section->size)
19962     error (_("Offset from %s pointing outside of"
19963              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19964            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19965   return (const char *) (str_section->buffer + str_offset);
19966 }
19967
19968 /* Return the length of an LEB128 number in BUF.  */
19969
19970 static int
19971 leb128_size (const gdb_byte *buf)
19972 {
19973   const gdb_byte *begin = buf;
19974   gdb_byte byte;
19975
19976   while (1)
19977     {
19978       byte = *buf++;
19979       if ((byte & 128) == 0)
19980         return buf - begin;
19981     }
19982 }
19983
19984 static void
19985 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19986 {
19987   switch (lang)
19988     {
19989     case DW_LANG_C89:
19990     case DW_LANG_C99:
19991     case DW_LANG_C11:
19992     case DW_LANG_C:
19993     case DW_LANG_UPC:
19994       cu->language = language_c;
19995       break;
19996     case DW_LANG_Java:
19997     case DW_LANG_C_plus_plus:
19998     case DW_LANG_C_plus_plus_11:
19999     case DW_LANG_C_plus_plus_14:
20000       cu->language = language_cplus;
20001       break;
20002     case DW_LANG_D:
20003       cu->language = language_d;
20004       break;
20005     case DW_LANG_Fortran77:
20006     case DW_LANG_Fortran90:
20007     case DW_LANG_Fortran95:
20008     case DW_LANG_Fortran03:
20009     case DW_LANG_Fortran08:
20010       cu->language = language_fortran;
20011       break;
20012     case DW_LANG_Go:
20013       cu->language = language_go;
20014       break;
20015     case DW_LANG_Mips_Assembler:
20016       cu->language = language_asm;
20017       break;
20018     case DW_LANG_Ada83:
20019     case DW_LANG_Ada95:
20020       cu->language = language_ada;
20021       break;
20022     case DW_LANG_Modula2:
20023       cu->language = language_m2;
20024       break;
20025     case DW_LANG_Pascal83:
20026       cu->language = language_pascal;
20027       break;
20028     case DW_LANG_ObjC:
20029       cu->language = language_objc;
20030       break;
20031     case DW_LANG_Rust:
20032     case DW_LANG_Rust_old:
20033       cu->language = language_rust;
20034       break;
20035     case DW_LANG_Cobol74:
20036     case DW_LANG_Cobol85:
20037     default:
20038       cu->language = language_minimal;
20039       break;
20040     }
20041   cu->language_defn = language_def (cu->language);
20042 }
20043
20044 /* Return the named attribute or NULL if not there.  */
20045
20046 static struct attribute *
20047 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20048 {
20049   for (;;)
20050     {
20051       unsigned int i;
20052       struct attribute *spec = NULL;
20053
20054       for (i = 0; i < die->num_attrs; ++i)
20055         {
20056           if (die->attrs[i].name == name)
20057             return &die->attrs[i];
20058           if (die->attrs[i].name == DW_AT_specification
20059               || die->attrs[i].name == DW_AT_abstract_origin)
20060             spec = &die->attrs[i];
20061         }
20062
20063       if (!spec)
20064         break;
20065
20066       die = follow_die_ref (die, spec, &cu);
20067     }
20068
20069   return NULL;
20070 }
20071
20072 /* Return the named attribute or NULL if not there,
20073    but do not follow DW_AT_specification, etc.
20074    This is for use in contexts where we're reading .debug_types dies.
20075    Following DW_AT_specification, DW_AT_abstract_origin will take us
20076    back up the chain, and we want to go down.  */
20077
20078 static struct attribute *
20079 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20080 {
20081   unsigned int i;
20082
20083   for (i = 0; i < die->num_attrs; ++i)
20084     if (die->attrs[i].name == name)
20085       return &die->attrs[i];
20086
20087   return NULL;
20088 }
20089
20090 /* Return the string associated with a string-typed attribute, or NULL if it
20091    is either not found or is of an incorrect type.  */
20092
20093 static const char *
20094 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20095 {
20096   struct attribute *attr;
20097   const char *str = NULL;
20098
20099   attr = dwarf2_attr (die, name, cu);
20100
20101   if (attr != NULL)
20102     {
20103       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20104           || attr->form == DW_FORM_string
20105           || attr->form == DW_FORM_strx
20106           || attr->form == DW_FORM_GNU_str_index
20107           || attr->form == DW_FORM_GNU_strp_alt)
20108         str = DW_STRING (attr);
20109       else
20110         complaint (_("string type expected for attribute %s for "
20111                      "DIE at %s in module %s"),
20112                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
20113                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20114     }
20115
20116   return str;
20117 }
20118
20119 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20120    and holds a non-zero value.  This function should only be used for
20121    DW_FORM_flag or DW_FORM_flag_present attributes.  */
20122
20123 static int
20124 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20125 {
20126   struct attribute *attr = dwarf2_attr (die, name, cu);
20127
20128   return (attr && DW_UNSND (attr));
20129 }
20130
20131 static int
20132 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20133 {
20134   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20135      which value is non-zero.  However, we have to be careful with
20136      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20137      (via dwarf2_flag_true_p) follows this attribute.  So we may
20138      end up accidently finding a declaration attribute that belongs
20139      to a different DIE referenced by the specification attribute,
20140      even though the given DIE does not have a declaration attribute.  */
20141   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20142           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20143 }
20144
20145 /* Return the die giving the specification for DIE, if there is
20146    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20147    containing the return value on output.  If there is no
20148    specification, but there is an abstract origin, that is
20149    returned.  */
20150
20151 static struct die_info *
20152 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20153 {
20154   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20155                                              *spec_cu);
20156
20157   if (spec_attr == NULL)
20158     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20159
20160   if (spec_attr == NULL)
20161     return NULL;
20162   else
20163     return follow_die_ref (die, spec_attr, spec_cu);
20164 }
20165
20166 /* Stub for free_line_header to match void * callback types.  */
20167
20168 static void
20169 free_line_header_voidp (void *arg)
20170 {
20171   struct line_header *lh = (struct line_header *) arg;
20172
20173   delete lh;
20174 }
20175
20176 void
20177 line_header::add_include_dir (const char *include_dir)
20178 {
20179   if (dwarf_line_debug >= 2)
20180     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20181                         include_dirs.size () + 1, include_dir);
20182
20183   include_dirs.push_back (include_dir);
20184 }
20185
20186 void
20187 line_header::add_file_name (const char *name,
20188                             dir_index d_index,
20189                             unsigned int mod_time,
20190                             unsigned int length)
20191 {
20192   if (dwarf_line_debug >= 2)
20193     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20194                         (unsigned) file_names.size () + 1, name);
20195
20196   file_names.emplace_back (name, d_index, mod_time, length);
20197 }
20198
20199 /* A convenience function to find the proper .debug_line section for a CU.  */
20200
20201 static struct dwarf2_section_info *
20202 get_debug_line_section (struct dwarf2_cu *cu)
20203 {
20204   struct dwarf2_section_info *section;
20205   struct dwarf2_per_objfile *dwarf2_per_objfile
20206     = cu->per_cu->dwarf2_per_objfile;
20207
20208   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20209      DWO file.  */
20210   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20211     section = &cu->dwo_unit->dwo_file->sections.line;
20212   else if (cu->per_cu->is_dwz)
20213     {
20214       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20215
20216       section = &dwz->line;
20217     }
20218   else
20219     section = &dwarf2_per_objfile->line;
20220
20221   return section;
20222 }
20223
20224 /* Read directory or file name entry format, starting with byte of
20225    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20226    entries count and the entries themselves in the described entry
20227    format.  */
20228
20229 static void
20230 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20231                         bfd *abfd, const gdb_byte **bufp,
20232                         struct line_header *lh,
20233                         const struct comp_unit_head *cu_header,
20234                         void (*callback) (struct line_header *lh,
20235                                           const char *name,
20236                                           dir_index d_index,
20237                                           unsigned int mod_time,
20238                                           unsigned int length))
20239 {
20240   gdb_byte format_count, formati;
20241   ULONGEST data_count, datai;
20242   const gdb_byte *buf = *bufp;
20243   const gdb_byte *format_header_data;
20244   unsigned int bytes_read;
20245
20246   format_count = read_1_byte (abfd, buf);
20247   buf += 1;
20248   format_header_data = buf;
20249   for (formati = 0; formati < format_count; formati++)
20250     {
20251       read_unsigned_leb128 (abfd, buf, &bytes_read);
20252       buf += bytes_read;
20253       read_unsigned_leb128 (abfd, buf, &bytes_read);
20254       buf += bytes_read;
20255     }
20256
20257   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20258   buf += bytes_read;
20259   for (datai = 0; datai < data_count; datai++)
20260     {
20261       const gdb_byte *format = format_header_data;
20262       struct file_entry fe;
20263
20264       for (formati = 0; formati < format_count; formati++)
20265         {
20266           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20267           format += bytes_read;
20268
20269           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20270           format += bytes_read;
20271
20272           gdb::optional<const char *> string;
20273           gdb::optional<unsigned int> uint;
20274
20275           switch (form)
20276             {
20277             case DW_FORM_string:
20278               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20279               buf += bytes_read;
20280               break;
20281
20282             case DW_FORM_line_strp:
20283               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20284                                                          abfd, buf,
20285                                                          cu_header,
20286                                                          &bytes_read));
20287               buf += bytes_read;
20288               break;
20289
20290             case DW_FORM_data1:
20291               uint.emplace (read_1_byte (abfd, buf));
20292               buf += 1;
20293               break;
20294
20295             case DW_FORM_data2:
20296               uint.emplace (read_2_bytes (abfd, buf));
20297               buf += 2;
20298               break;
20299
20300             case DW_FORM_data4:
20301               uint.emplace (read_4_bytes (abfd, buf));
20302               buf += 4;
20303               break;
20304
20305             case DW_FORM_data8:
20306               uint.emplace (read_8_bytes (abfd, buf));
20307               buf += 8;
20308               break;
20309
20310             case DW_FORM_udata:
20311               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20312               buf += bytes_read;
20313               break;
20314
20315             case DW_FORM_block:
20316               /* It is valid only for DW_LNCT_timestamp which is ignored by
20317                  current GDB.  */
20318               break;
20319             }
20320
20321           switch (content_type)
20322             {
20323             case DW_LNCT_path:
20324               if (string.has_value ())
20325                 fe.name = *string;
20326               break;
20327             case DW_LNCT_directory_index:
20328               if (uint.has_value ())
20329                 fe.d_index = (dir_index) *uint;
20330               break;
20331             case DW_LNCT_timestamp:
20332               if (uint.has_value ())
20333                 fe.mod_time = *uint;
20334               break;
20335             case DW_LNCT_size:
20336               if (uint.has_value ())
20337                 fe.length = *uint;
20338               break;
20339             case DW_LNCT_MD5:
20340               break;
20341             default:
20342               complaint (_("Unknown format content type %s"),
20343                          pulongest (content_type));
20344             }
20345         }
20346
20347       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20348     }
20349
20350   *bufp = buf;
20351 }
20352
20353 /* Read the statement program header starting at OFFSET in
20354    .debug_line, or .debug_line.dwo.  Return a pointer
20355    to a struct line_header, allocated using xmalloc.
20356    Returns NULL if there is a problem reading the header, e.g., if it
20357    has a version we don't understand.
20358
20359    NOTE: the strings in the include directory and file name tables of
20360    the returned object point into the dwarf line section buffer,
20361    and must not be freed.  */
20362
20363 static line_header_up
20364 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20365 {
20366   const gdb_byte *line_ptr;
20367   unsigned int bytes_read, offset_size;
20368   int i;
20369   const char *cur_dir, *cur_file;
20370   struct dwarf2_section_info *section;
20371   bfd *abfd;
20372   struct dwarf2_per_objfile *dwarf2_per_objfile
20373     = cu->per_cu->dwarf2_per_objfile;
20374
20375   section = get_debug_line_section (cu);
20376   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20377   if (section->buffer == NULL)
20378     {
20379       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20380         complaint (_("missing .debug_line.dwo section"));
20381       else
20382         complaint (_("missing .debug_line section"));
20383       return 0;
20384     }
20385
20386   /* We can't do this until we know the section is non-empty.
20387      Only then do we know we have such a section.  */
20388   abfd = get_section_bfd_owner (section);
20389
20390   /* Make sure that at least there's room for the total_length field.
20391      That could be 12 bytes long, but we're just going to fudge that.  */
20392   if (to_underlying (sect_off) + 4 >= section->size)
20393     {
20394       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20395       return 0;
20396     }
20397
20398   line_header_up lh (new line_header ());
20399
20400   lh->sect_off = sect_off;
20401   lh->offset_in_dwz = cu->per_cu->is_dwz;
20402
20403   line_ptr = section->buffer + to_underlying (sect_off);
20404
20405   /* Read in the header.  */
20406   lh->total_length =
20407     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20408                                             &bytes_read, &offset_size);
20409   line_ptr += bytes_read;
20410   if (line_ptr + lh->total_length > (section->buffer + section->size))
20411     {
20412       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20413       return 0;
20414     }
20415   lh->statement_program_end = line_ptr + lh->total_length;
20416   lh->version = read_2_bytes (abfd, line_ptr);
20417   line_ptr += 2;
20418   if (lh->version > 5)
20419     {
20420       /* This is a version we don't understand.  The format could have
20421          changed in ways we don't handle properly so just punt.  */
20422       complaint (_("unsupported version in .debug_line section"));
20423       return NULL;
20424     }
20425   if (lh->version >= 5)
20426     {
20427       gdb_byte segment_selector_size;
20428
20429       /* Skip address size.  */
20430       read_1_byte (abfd, line_ptr);
20431       line_ptr += 1;
20432
20433       segment_selector_size = read_1_byte (abfd, line_ptr);
20434       line_ptr += 1;
20435       if (segment_selector_size != 0)
20436         {
20437           complaint (_("unsupported segment selector size %u "
20438                        "in .debug_line section"),
20439                      segment_selector_size);
20440           return NULL;
20441         }
20442     }
20443   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20444   line_ptr += offset_size;
20445   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20446   line_ptr += 1;
20447   if (lh->version >= 4)
20448     {
20449       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20450       line_ptr += 1;
20451     }
20452   else
20453     lh->maximum_ops_per_instruction = 1;
20454
20455   if (lh->maximum_ops_per_instruction == 0)
20456     {
20457       lh->maximum_ops_per_instruction = 1;
20458       complaint (_("invalid maximum_ops_per_instruction "
20459                    "in `.debug_line' section"));
20460     }
20461
20462   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20463   line_ptr += 1;
20464   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20465   line_ptr += 1;
20466   lh->line_range = read_1_byte (abfd, line_ptr);
20467   line_ptr += 1;
20468   lh->opcode_base = read_1_byte (abfd, line_ptr);
20469   line_ptr += 1;
20470   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20471
20472   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20473   for (i = 1; i < lh->opcode_base; ++i)
20474     {
20475       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20476       line_ptr += 1;
20477     }
20478
20479   if (lh->version >= 5)
20480     {
20481       /* Read directory table.  */
20482       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20483                               &cu->header,
20484                               [] (struct line_header *header, const char *name,
20485                                   dir_index d_index, unsigned int mod_time,
20486                                   unsigned int length)
20487         {
20488           header->add_include_dir (name);
20489         });
20490
20491       /* Read file name table.  */
20492       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20493                               &cu->header,
20494                               [] (struct line_header *header, const char *name,
20495                                   dir_index d_index, unsigned int mod_time,
20496                                   unsigned int length)
20497         {
20498           header->add_file_name (name, d_index, mod_time, length);
20499         });
20500     }
20501   else
20502     {
20503       /* Read directory table.  */
20504       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20505         {
20506           line_ptr += bytes_read;
20507           lh->add_include_dir (cur_dir);
20508         }
20509       line_ptr += bytes_read;
20510
20511       /* Read file name table.  */
20512       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20513         {
20514           unsigned int mod_time, length;
20515           dir_index d_index;
20516
20517           line_ptr += bytes_read;
20518           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20519           line_ptr += bytes_read;
20520           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20521           line_ptr += bytes_read;
20522           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20523           line_ptr += bytes_read;
20524
20525           lh->add_file_name (cur_file, d_index, mod_time, length);
20526         }
20527       line_ptr += bytes_read;
20528     }
20529   lh->statement_program_start = line_ptr;
20530
20531   if (line_ptr > (section->buffer + section->size))
20532     complaint (_("line number info header doesn't "
20533                  "fit in `.debug_line' section"));
20534
20535   return lh;
20536 }
20537
20538 /* Subroutine of dwarf_decode_lines to simplify it.
20539    Return the file name of the psymtab for included file FILE_INDEX
20540    in line header LH of PST.
20541    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20542    If space for the result is malloc'd, *NAME_HOLDER will be set.
20543    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20544
20545 static const char *
20546 psymtab_include_file_name (const struct line_header *lh, int file_index,
20547                            const struct partial_symtab *pst,
20548                            const char *comp_dir,
20549                            gdb::unique_xmalloc_ptr<char> *name_holder)
20550 {
20551   const file_entry &fe = lh->file_names[file_index];
20552   const char *include_name = fe.name;
20553   const char *include_name_to_compare = include_name;
20554   const char *pst_filename;
20555   int file_is_pst;
20556
20557   const char *dir_name = fe.include_dir (lh);
20558
20559   gdb::unique_xmalloc_ptr<char> hold_compare;
20560   if (!IS_ABSOLUTE_PATH (include_name)
20561       && (dir_name != NULL || comp_dir != NULL))
20562     {
20563       /* Avoid creating a duplicate psymtab for PST.
20564          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20565          Before we do the comparison, however, we need to account
20566          for DIR_NAME and COMP_DIR.
20567          First prepend dir_name (if non-NULL).  If we still don't
20568          have an absolute path prepend comp_dir (if non-NULL).
20569          However, the directory we record in the include-file's
20570          psymtab does not contain COMP_DIR (to match the
20571          corresponding symtab(s)).
20572
20573          Example:
20574
20575          bash$ cd /tmp
20576          bash$ gcc -g ./hello.c
20577          include_name = "hello.c"
20578          dir_name = "."
20579          DW_AT_comp_dir = comp_dir = "/tmp"
20580          DW_AT_name = "./hello.c"
20581
20582       */
20583
20584       if (dir_name != NULL)
20585         {
20586           name_holder->reset (concat (dir_name, SLASH_STRING,
20587                                       include_name, (char *) NULL));
20588           include_name = name_holder->get ();
20589           include_name_to_compare = include_name;
20590         }
20591       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20592         {
20593           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20594                                       include_name, (char *) NULL));
20595           include_name_to_compare = hold_compare.get ();
20596         }
20597     }
20598
20599   pst_filename = pst->filename;
20600   gdb::unique_xmalloc_ptr<char> copied_name;
20601   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20602     {
20603       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20604                                  pst_filename, (char *) NULL));
20605       pst_filename = copied_name.get ();
20606     }
20607
20608   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20609
20610   if (file_is_pst)
20611     return NULL;
20612   return include_name;
20613 }
20614
20615 /* State machine to track the state of the line number program.  */
20616
20617 class lnp_state_machine
20618 {
20619 public:
20620   /* Initialize a machine state for the start of a line number
20621      program.  */
20622   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20623                      bool record_lines_p);
20624
20625   file_entry *current_file ()
20626   {
20627     /* lh->file_names is 0-based, but the file name numbers in the
20628        statement program are 1-based.  */
20629     return m_line_header->file_name_at (m_file);
20630   }
20631
20632   /* Record the line in the state machine.  END_SEQUENCE is true if
20633      we're processing the end of a sequence.  */
20634   void record_line (bool end_sequence);
20635
20636   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20637      nop-out rest of the lines in this sequence.  */
20638   void check_line_address (struct dwarf2_cu *cu,
20639                            const gdb_byte *line_ptr,
20640                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20641
20642   void handle_set_discriminator (unsigned int discriminator)
20643   {
20644     m_discriminator = discriminator;
20645     m_line_has_non_zero_discriminator |= discriminator != 0;
20646   }
20647
20648   /* Handle DW_LNE_set_address.  */
20649   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20650   {
20651     m_op_index = 0;
20652     address += baseaddr;
20653     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20654   }
20655
20656   /* Handle DW_LNS_advance_pc.  */
20657   void handle_advance_pc (CORE_ADDR adjust);
20658
20659   /* Handle a special opcode.  */
20660   void handle_special_opcode (unsigned char op_code);
20661
20662   /* Handle DW_LNS_advance_line.  */
20663   void handle_advance_line (int line_delta)
20664   {
20665     advance_line (line_delta);
20666   }
20667
20668   /* Handle DW_LNS_set_file.  */
20669   void handle_set_file (file_name_index file);
20670
20671   /* Handle DW_LNS_negate_stmt.  */
20672   void handle_negate_stmt ()
20673   {
20674     m_is_stmt = !m_is_stmt;
20675   }
20676
20677   /* Handle DW_LNS_const_add_pc.  */
20678   void handle_const_add_pc ();
20679
20680   /* Handle DW_LNS_fixed_advance_pc.  */
20681   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20682   {
20683     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20684     m_op_index = 0;
20685   }
20686
20687   /* Handle DW_LNS_copy.  */
20688   void handle_copy ()
20689   {
20690     record_line (false);
20691     m_discriminator = 0;
20692   }
20693
20694   /* Handle DW_LNE_end_sequence.  */
20695   void handle_end_sequence ()
20696   {
20697     m_currently_recording_lines = true;
20698   }
20699
20700 private:
20701   /* Advance the line by LINE_DELTA.  */
20702   void advance_line (int line_delta)
20703   {
20704     m_line += line_delta;
20705
20706     if (line_delta != 0)
20707       m_line_has_non_zero_discriminator = m_discriminator != 0;
20708   }
20709
20710   struct dwarf2_cu *m_cu;
20711
20712   gdbarch *m_gdbarch;
20713
20714   /* True if we're recording lines.
20715      Otherwise we're building partial symtabs and are just interested in
20716      finding include files mentioned by the line number program.  */
20717   bool m_record_lines_p;
20718
20719   /* The line number header.  */
20720   line_header *m_line_header;
20721
20722   /* These are part of the standard DWARF line number state machine,
20723      and initialized according to the DWARF spec.  */
20724
20725   unsigned char m_op_index = 0;
20726   /* The line table index (1-based) of the current file.  */
20727   file_name_index m_file = (file_name_index) 1;
20728   unsigned int m_line = 1;
20729
20730   /* These are initialized in the constructor.  */
20731
20732   CORE_ADDR m_address;
20733   bool m_is_stmt;
20734   unsigned int m_discriminator;
20735
20736   /* Additional bits of state we need to track.  */
20737
20738   /* The last file that we called dwarf2_start_subfile for.
20739      This is only used for TLLs.  */
20740   unsigned int m_last_file = 0;
20741   /* The last file a line number was recorded for.  */
20742   struct subfile *m_last_subfile = NULL;
20743
20744   /* When true, record the lines we decode.  */
20745   bool m_currently_recording_lines = false;
20746
20747   /* The last line number that was recorded, used to coalesce
20748      consecutive entries for the same line.  This can happen, for
20749      example, when discriminators are present.  PR 17276.  */
20750   unsigned int m_last_line = 0;
20751   bool m_line_has_non_zero_discriminator = false;
20752 };
20753
20754 void
20755 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20756 {
20757   CORE_ADDR addr_adj = (((m_op_index + adjust)
20758                          / m_line_header->maximum_ops_per_instruction)
20759                         * m_line_header->minimum_instruction_length);
20760   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20761   m_op_index = ((m_op_index + adjust)
20762                 % m_line_header->maximum_ops_per_instruction);
20763 }
20764
20765 void
20766 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20767 {
20768   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20769   CORE_ADDR addr_adj = (((m_op_index
20770                           + (adj_opcode / m_line_header->line_range))
20771                          / m_line_header->maximum_ops_per_instruction)
20772                         * m_line_header->minimum_instruction_length);
20773   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20774   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20775                 % m_line_header->maximum_ops_per_instruction);
20776
20777   int line_delta = (m_line_header->line_base
20778                     + (adj_opcode % m_line_header->line_range));
20779   advance_line (line_delta);
20780   record_line (false);
20781   m_discriminator = 0;
20782 }
20783
20784 void
20785 lnp_state_machine::handle_set_file (file_name_index file)
20786 {
20787   m_file = file;
20788
20789   const file_entry *fe = current_file ();
20790   if (fe == NULL)
20791     dwarf2_debug_line_missing_file_complaint ();
20792   else if (m_record_lines_p)
20793     {
20794       const char *dir = fe->include_dir (m_line_header);
20795
20796       m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20797       m_line_has_non_zero_discriminator = m_discriminator != 0;
20798       dwarf2_start_subfile (m_cu, fe->name, dir);
20799     }
20800 }
20801
20802 void
20803 lnp_state_machine::handle_const_add_pc ()
20804 {
20805   CORE_ADDR adjust
20806     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20807
20808   CORE_ADDR addr_adj
20809     = (((m_op_index + adjust)
20810         / m_line_header->maximum_ops_per_instruction)
20811        * m_line_header->minimum_instruction_length);
20812
20813   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20814   m_op_index = ((m_op_index + adjust)
20815                 % m_line_header->maximum_ops_per_instruction);
20816 }
20817
20818 /* Return non-zero if we should add LINE to the line number table.
20819    LINE is the line to add, LAST_LINE is the last line that was added,
20820    LAST_SUBFILE is the subfile for LAST_LINE.
20821    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20822    had a non-zero discriminator.
20823
20824    We have to be careful in the presence of discriminators.
20825    E.g., for this line:
20826
20827      for (i = 0; i < 100000; i++);
20828
20829    clang can emit four line number entries for that one line,
20830    each with a different discriminator.
20831    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20832
20833    However, we want gdb to coalesce all four entries into one.
20834    Otherwise the user could stepi into the middle of the line and
20835    gdb would get confused about whether the pc really was in the
20836    middle of the line.
20837
20838    Things are further complicated by the fact that two consecutive
20839    line number entries for the same line is a heuristic used by gcc
20840    to denote the end of the prologue.  So we can't just discard duplicate
20841    entries, we have to be selective about it.  The heuristic we use is
20842    that we only collapse consecutive entries for the same line if at least
20843    one of those entries has a non-zero discriminator.  PR 17276.
20844
20845    Note: Addresses in the line number state machine can never go backwards
20846    within one sequence, thus this coalescing is ok.  */
20847
20848 static int
20849 dwarf_record_line_p (struct dwarf2_cu *cu,
20850                      unsigned int line, unsigned int last_line,
20851                      int line_has_non_zero_discriminator,
20852                      struct subfile *last_subfile)
20853 {
20854   if (cu->get_builder ()->get_current_subfile () != last_subfile)
20855     return 1;
20856   if (line != last_line)
20857     return 1;
20858   /* Same line for the same file that we've seen already.
20859      As a last check, for pr 17276, only record the line if the line
20860      has never had a non-zero discriminator.  */
20861   if (!line_has_non_zero_discriminator)
20862     return 1;
20863   return 0;
20864 }
20865
20866 /* Use the CU's builder to record line number LINE beginning at
20867    address ADDRESS in the line table of subfile SUBFILE.  */
20868
20869 static void
20870 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20871                      unsigned int line, CORE_ADDR address,
20872                      struct dwarf2_cu *cu)
20873 {
20874   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20875
20876   if (dwarf_line_debug)
20877     {
20878       fprintf_unfiltered (gdb_stdlog,
20879                           "Recording line %u, file %s, address %s\n",
20880                           line, lbasename (subfile->name),
20881                           paddress (gdbarch, address));
20882     }
20883
20884   if (cu != nullptr)
20885     cu->get_builder ()->record_line (subfile, line, addr);
20886 }
20887
20888 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20889    Mark the end of a set of line number records.
20890    The arguments are the same as for dwarf_record_line_1.
20891    If SUBFILE is NULL the request is ignored.  */
20892
20893 static void
20894 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20895                    CORE_ADDR address, struct dwarf2_cu *cu)
20896 {
20897   if (subfile == NULL)
20898     return;
20899
20900   if (dwarf_line_debug)
20901     {
20902       fprintf_unfiltered (gdb_stdlog,
20903                           "Finishing current line, file %s, address %s\n",
20904                           lbasename (subfile->name),
20905                           paddress (gdbarch, address));
20906     }
20907
20908   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20909 }
20910
20911 void
20912 lnp_state_machine::record_line (bool end_sequence)
20913 {
20914   if (dwarf_line_debug)
20915     {
20916       fprintf_unfiltered (gdb_stdlog,
20917                           "Processing actual line %u: file %u,"
20918                           " address %s, is_stmt %u, discrim %u\n",
20919                           m_line, to_underlying (m_file),
20920                           paddress (m_gdbarch, m_address),
20921                           m_is_stmt, m_discriminator);
20922     }
20923
20924   file_entry *fe = current_file ();
20925
20926   if (fe == NULL)
20927     dwarf2_debug_line_missing_file_complaint ();
20928   /* For now we ignore lines not starting on an instruction boundary.
20929      But not when processing end_sequence for compatibility with the
20930      previous version of the code.  */
20931   else if (m_op_index == 0 || end_sequence)
20932     {
20933       fe->included_p = 1;
20934       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20935         {
20936           if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
20937               || end_sequence)
20938             {
20939               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20940                                  m_currently_recording_lines ? m_cu : nullptr);
20941             }
20942
20943           if (!end_sequence)
20944             {
20945               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20946                                        m_line_has_non_zero_discriminator,
20947                                        m_last_subfile))
20948                 {
20949                   buildsym_compunit *builder = m_cu->get_builder ();
20950                   dwarf_record_line_1 (m_gdbarch,
20951                                        builder->get_current_subfile (),
20952                                        m_line, m_address,
20953                                        m_currently_recording_lines ? m_cu : nullptr);
20954                 }
20955               m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20956               m_last_line = m_line;
20957             }
20958         }
20959     }
20960 }
20961
20962 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20963                                       line_header *lh, bool record_lines_p)
20964 {
20965   m_cu = cu;
20966   m_gdbarch = arch;
20967   m_record_lines_p = record_lines_p;
20968   m_line_header = lh;
20969
20970   m_currently_recording_lines = true;
20971
20972   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20973      was a line entry for it so that the backend has a chance to adjust it
20974      and also record it in case it needs it.  This is currently used by MIPS
20975      code, cf. `mips_adjust_dwarf2_line'.  */
20976   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20977   m_is_stmt = lh->default_is_stmt;
20978   m_discriminator = 0;
20979 }
20980
20981 void
20982 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20983                                        const gdb_byte *line_ptr,
20984                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20985 {
20986   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20987      the pc range of the CU.  However, we restrict the test to only ADDRESS
20988      values of zero to preserve GDB's previous behaviour which is to handle
20989      the specific case of a function being GC'd by the linker.  */
20990
20991   if (address == 0 && address < unrelocated_lowpc)
20992     {
20993       /* This line table is for a function which has been
20994          GCd by the linker.  Ignore it.  PR gdb/12528 */
20995
20996       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20997       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20998
20999       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
21000                  line_offset, objfile_name (objfile));
21001       m_currently_recording_lines = false;
21002       /* Note: m_currently_recording_lines is left as false until we see
21003          DW_LNE_end_sequence.  */
21004     }
21005 }
21006
21007 /* Subroutine of dwarf_decode_lines to simplify it.
21008    Process the line number information in LH.
21009    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
21010    program in order to set included_p for every referenced header.  */
21011
21012 static void
21013 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
21014                       const int decode_for_pst_p, CORE_ADDR lowpc)
21015 {
21016   const gdb_byte *line_ptr, *extended_end;
21017   const gdb_byte *line_end;
21018   unsigned int bytes_read, extended_len;
21019   unsigned char op_code, extended_op;
21020   CORE_ADDR baseaddr;
21021   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21022   bfd *abfd = objfile->obfd;
21023   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21024   /* True if we're recording line info (as opposed to building partial
21025      symtabs and just interested in finding include files mentioned by
21026      the line number program).  */
21027   bool record_lines_p = !decode_for_pst_p;
21028
21029   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21030
21031   line_ptr = lh->statement_program_start;
21032   line_end = lh->statement_program_end;
21033
21034   /* Read the statement sequences until there's nothing left.  */
21035   while (line_ptr < line_end)
21036     {
21037       /* The DWARF line number program state machine.  Reset the state
21038          machine at the start of each sequence.  */
21039       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21040       bool end_sequence = false;
21041
21042       if (record_lines_p)
21043         {
21044           /* Start a subfile for the current file of the state
21045              machine.  */
21046           const file_entry *fe = state_machine.current_file ();
21047
21048           if (fe != NULL)
21049             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21050         }
21051
21052       /* Decode the table.  */
21053       while (line_ptr < line_end && !end_sequence)
21054         {
21055           op_code = read_1_byte (abfd, line_ptr);
21056           line_ptr += 1;
21057
21058           if (op_code >= lh->opcode_base)
21059             {
21060               /* Special opcode.  */
21061               state_machine.handle_special_opcode (op_code);
21062             }
21063           else switch (op_code)
21064             {
21065             case DW_LNS_extended_op:
21066               extended_len = read_unsigned_leb128 (abfd, line_ptr,
21067                                                    &bytes_read);
21068               line_ptr += bytes_read;
21069               extended_end = line_ptr + extended_len;
21070               extended_op = read_1_byte (abfd, line_ptr);
21071               line_ptr += 1;
21072               switch (extended_op)
21073                 {
21074                 case DW_LNE_end_sequence:
21075                   state_machine.handle_end_sequence ();
21076                   end_sequence = true;
21077                   break;
21078                 case DW_LNE_set_address:
21079                   {
21080                     CORE_ADDR address
21081                       = read_address (abfd, line_ptr, cu, &bytes_read);
21082                     line_ptr += bytes_read;
21083
21084                     state_machine.check_line_address (cu, line_ptr,
21085                                                       lowpc - baseaddr, address);
21086                     state_machine.handle_set_address (baseaddr, address);
21087                   }
21088                   break;
21089                 case DW_LNE_define_file:
21090                   {
21091                     const char *cur_file;
21092                     unsigned int mod_time, length;
21093                     dir_index dindex;
21094
21095                     cur_file = read_direct_string (abfd, line_ptr,
21096                                                    &bytes_read);
21097                     line_ptr += bytes_read;
21098                     dindex = (dir_index)
21099                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21100                     line_ptr += bytes_read;
21101                     mod_time =
21102                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21103                     line_ptr += bytes_read;
21104                     length =
21105                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21106                     line_ptr += bytes_read;
21107                     lh->add_file_name (cur_file, dindex, mod_time, length);
21108                   }
21109                   break;
21110                 case DW_LNE_set_discriminator:
21111                   {
21112                     /* The discriminator is not interesting to the
21113                        debugger; just ignore it.  We still need to
21114                        check its value though:
21115                        if there are consecutive entries for the same
21116                        (non-prologue) line we want to coalesce them.
21117                        PR 17276.  */
21118                     unsigned int discr
21119                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21120                     line_ptr += bytes_read;
21121
21122                     state_machine.handle_set_discriminator (discr);
21123                   }
21124                   break;
21125                 default:
21126                   complaint (_("mangled .debug_line section"));
21127                   return;
21128                 }
21129               /* Make sure that we parsed the extended op correctly.  If e.g.
21130                  we expected a different address size than the producer used,
21131                  we may have read the wrong number of bytes.  */
21132               if (line_ptr != extended_end)
21133                 {
21134                   complaint (_("mangled .debug_line section"));
21135                   return;
21136                 }
21137               break;
21138             case DW_LNS_copy:
21139               state_machine.handle_copy ();
21140               break;
21141             case DW_LNS_advance_pc:
21142               {
21143                 CORE_ADDR adjust
21144                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21145                 line_ptr += bytes_read;
21146
21147                 state_machine.handle_advance_pc (adjust);
21148               }
21149               break;
21150             case DW_LNS_advance_line:
21151               {
21152                 int line_delta
21153                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21154                 line_ptr += bytes_read;
21155
21156                 state_machine.handle_advance_line (line_delta);
21157               }
21158               break;
21159             case DW_LNS_set_file:
21160               {
21161                 file_name_index file
21162                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21163                                                             &bytes_read);
21164                 line_ptr += bytes_read;
21165
21166                 state_machine.handle_set_file (file);
21167               }
21168               break;
21169             case DW_LNS_set_column:
21170               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21171               line_ptr += bytes_read;
21172               break;
21173             case DW_LNS_negate_stmt:
21174               state_machine.handle_negate_stmt ();
21175               break;
21176             case DW_LNS_set_basic_block:
21177               break;
21178             /* Add to the address register of the state machine the
21179                address increment value corresponding to special opcode
21180                255.  I.e., this value is scaled by the minimum
21181                instruction length since special opcode 255 would have
21182                scaled the increment.  */
21183             case DW_LNS_const_add_pc:
21184               state_machine.handle_const_add_pc ();
21185               break;
21186             case DW_LNS_fixed_advance_pc:
21187               {
21188                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21189                 line_ptr += 2;
21190
21191                 state_machine.handle_fixed_advance_pc (addr_adj);
21192               }
21193               break;
21194             default:
21195               {
21196                 /* Unknown standard opcode, ignore it.  */
21197                 int i;
21198
21199                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21200                   {
21201                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21202                     line_ptr += bytes_read;
21203                   }
21204               }
21205             }
21206         }
21207
21208       if (!end_sequence)
21209         dwarf2_debug_line_missing_end_sequence_complaint ();
21210
21211       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21212          in which case we still finish recording the last line).  */
21213       state_machine.record_line (true);
21214     }
21215 }
21216
21217 /* Decode the Line Number Program (LNP) for the given line_header
21218    structure and CU.  The actual information extracted and the type
21219    of structures created from the LNP depends on the value of PST.
21220
21221    1. If PST is NULL, then this procedure uses the data from the program
21222       to create all necessary symbol tables, and their linetables.
21223
21224    2. If PST is not NULL, this procedure reads the program to determine
21225       the list of files included by the unit represented by PST, and
21226       builds all the associated partial symbol tables.
21227
21228    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21229    It is used for relative paths in the line table.
21230    NOTE: When processing partial symtabs (pst != NULL),
21231    comp_dir == pst->dirname.
21232
21233    NOTE: It is important that psymtabs have the same file name (via strcmp)
21234    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21235    symtab we don't use it in the name of the psymtabs we create.
21236    E.g. expand_line_sal requires this when finding psymtabs to expand.
21237    A good testcase for this is mb-inline.exp.
21238
21239    LOWPC is the lowest address in CU (or 0 if not known).
21240
21241    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21242    for its PC<->lines mapping information.  Otherwise only the filename
21243    table is read in.  */
21244
21245 static void
21246 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21247                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21248                     CORE_ADDR lowpc, int decode_mapping)
21249 {
21250   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21251   const int decode_for_pst_p = (pst != NULL);
21252
21253   if (decode_mapping)
21254     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21255
21256   if (decode_for_pst_p)
21257     {
21258       int file_index;
21259
21260       /* Now that we're done scanning the Line Header Program, we can
21261          create the psymtab of each included file.  */
21262       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21263         if (lh->file_names[file_index].included_p == 1)
21264           {
21265             gdb::unique_xmalloc_ptr<char> name_holder;
21266             const char *include_name =
21267               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21268                                          &name_holder);
21269             if (include_name != NULL)
21270               dwarf2_create_include_psymtab (include_name, pst, objfile);
21271           }
21272     }
21273   else
21274     {
21275       /* Make sure a symtab is created for every file, even files
21276          which contain only variables (i.e. no code with associated
21277          line numbers).  */
21278       buildsym_compunit *builder = cu->get_builder ();
21279       struct compunit_symtab *cust = builder->get_compunit_symtab ();
21280       int i;
21281
21282       for (i = 0; i < lh->file_names.size (); i++)
21283         {
21284           file_entry &fe = lh->file_names[i];
21285
21286           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21287
21288           if (builder->get_current_subfile ()->symtab == NULL)
21289             {
21290               builder->get_current_subfile ()->symtab
21291                 = allocate_symtab (cust,
21292                                    builder->get_current_subfile ()->name);
21293             }
21294           fe.symtab = builder->get_current_subfile ()->symtab;
21295         }
21296     }
21297 }
21298
21299 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21300    DIRNAME the name of the source directory which contains FILENAME
21301    or NULL if not known.
21302    This routine tries to keep line numbers from identical absolute and
21303    relative file names in a common subfile.
21304
21305    Using the `list' example from the GDB testsuite, which resides in
21306    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21307    of /srcdir/list0.c yields the following debugging information for list0.c:
21308
21309    DW_AT_name:          /srcdir/list0.c
21310    DW_AT_comp_dir:      /compdir
21311    files.files[0].name: list0.h
21312    files.files[0].dir:  /srcdir
21313    files.files[1].name: list0.c
21314    files.files[1].dir:  /srcdir
21315
21316    The line number information for list0.c has to end up in a single
21317    subfile, so that `break /srcdir/list0.c:1' works as expected.
21318    start_subfile will ensure that this happens provided that we pass the
21319    concatenation of files.files[1].dir and files.files[1].name as the
21320    subfile's name.  */
21321
21322 static void
21323 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21324                       const char *dirname)
21325 {
21326   char *copy = NULL;
21327
21328   /* In order not to lose the line information directory,
21329      we concatenate it to the filename when it makes sense.
21330      Note that the Dwarf3 standard says (speaking of filenames in line
21331      information): ``The directory index is ignored for file names
21332      that represent full path names''.  Thus ignoring dirname in the
21333      `else' branch below isn't an issue.  */
21334
21335   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21336     {
21337       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21338       filename = copy;
21339     }
21340
21341   cu->get_builder ()->start_subfile (filename);
21342
21343   if (copy != NULL)
21344     xfree (copy);
21345 }
21346
21347 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21348    buildsym_compunit constructor.  */
21349
21350 struct compunit_symtab *
21351 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21352                          CORE_ADDR low_pc)
21353 {
21354   gdb_assert (m_builder == nullptr);
21355
21356   m_builder.reset (new struct buildsym_compunit
21357                    (per_cu->dwarf2_per_objfile->objfile,
21358                     name, comp_dir, language, low_pc));
21359
21360   list_in_scope = get_builder ()->get_file_symbols ();
21361
21362   get_builder ()->record_debugformat ("DWARF 2");
21363   get_builder ()->record_producer (producer);
21364
21365   processing_has_namespace_info = false;
21366
21367   return get_builder ()->get_compunit_symtab ();
21368 }
21369
21370 static void
21371 var_decode_location (struct attribute *attr, struct symbol *sym,
21372                      struct dwarf2_cu *cu)
21373 {
21374   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21375   struct comp_unit_head *cu_header = &cu->header;
21376
21377   /* NOTE drow/2003-01-30: There used to be a comment and some special
21378      code here to turn a symbol with DW_AT_external and a
21379      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21380      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21381      with some versions of binutils) where shared libraries could have
21382      relocations against symbols in their debug information - the
21383      minimal symbol would have the right address, but the debug info
21384      would not.  It's no longer necessary, because we will explicitly
21385      apply relocations when we read in the debug information now.  */
21386
21387   /* A DW_AT_location attribute with no contents indicates that a
21388      variable has been optimized away.  */
21389   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21390     {
21391       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21392       return;
21393     }
21394
21395   /* Handle one degenerate form of location expression specially, to
21396      preserve GDB's previous behavior when section offsets are
21397      specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
21398      DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
21399
21400   if (attr_form_is_block (attr)
21401       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21402            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21403           || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21404                || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
21405               && (DW_BLOCK (attr)->size
21406                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21407     {
21408       unsigned int dummy;
21409
21410       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21411         SYMBOL_VALUE_ADDRESS (sym) =
21412           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21413       else
21414         SYMBOL_VALUE_ADDRESS (sym) =
21415           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21416       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21417       fixup_symbol_section (sym, objfile);
21418       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21419                                               SYMBOL_SECTION (sym));
21420       return;
21421     }
21422
21423   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21424      expression evaluator, and use LOC_COMPUTED only when necessary
21425      (i.e. when the value of a register or memory location is
21426      referenced, or a thread-local block, etc.).  Then again, it might
21427      not be worthwhile.  I'm assuming that it isn't unless performance
21428      or memory numbers show me otherwise.  */
21429
21430   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21431
21432   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21433     cu->has_loclist = true;
21434 }
21435
21436 /* Given a pointer to a DWARF information entry, figure out if we need
21437    to make a symbol table entry for it, and if so, create a new entry
21438    and return a pointer to it.
21439    If TYPE is NULL, determine symbol type from the die, otherwise
21440    used the passed type.
21441    If SPACE is not NULL, use it to hold the new symbol.  If it is
21442    NULL, allocate a new symbol on the objfile's obstack.  */
21443
21444 static struct symbol *
21445 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21446             struct symbol *space)
21447 {
21448   struct dwarf2_per_objfile *dwarf2_per_objfile
21449     = cu->per_cu->dwarf2_per_objfile;
21450   struct objfile *objfile = dwarf2_per_objfile->objfile;
21451   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21452   struct symbol *sym = NULL;
21453   const char *name;
21454   struct attribute *attr = NULL;
21455   struct attribute *attr2 = NULL;
21456   CORE_ADDR baseaddr;
21457   struct pending **list_to_add = NULL;
21458
21459   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21460
21461   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21462
21463   name = dwarf2_name (die, cu);
21464   if (name)
21465     {
21466       const char *linkagename;
21467       int suppress_add = 0;
21468
21469       if (space)
21470         sym = space;
21471       else
21472         sym = allocate_symbol (objfile);
21473       OBJSTAT (objfile, n_syms++);
21474
21475       /* Cache this symbol's name and the name's demangled form (if any).  */
21476       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21477       linkagename = dwarf2_physname (name, die, cu);
21478       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21479
21480       /* Fortran does not have mangling standard and the mangling does differ
21481          between gfortran, iFort etc.  */
21482       if (cu->language == language_fortran
21483           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21484         symbol_set_demangled_name (&(sym->ginfo),
21485                                    dwarf2_full_name (name, die, cu),
21486                                    NULL);
21487
21488       /* Default assumptions.
21489          Use the passed type or decode it from the die.  */
21490       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21491       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21492       if (type != NULL)
21493         SYMBOL_TYPE (sym) = type;
21494       else
21495         SYMBOL_TYPE (sym) = die_type (die, cu);
21496       attr = dwarf2_attr (die,
21497                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21498                           cu);
21499       if (attr)
21500         {
21501           SYMBOL_LINE (sym) = DW_UNSND (attr);
21502         }
21503
21504       attr = dwarf2_attr (die,
21505                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21506                           cu);
21507       if (attr)
21508         {
21509           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21510           struct file_entry *fe;
21511
21512           if (cu->line_header != NULL)
21513             fe = cu->line_header->file_name_at (file_index);
21514           else
21515             fe = NULL;
21516
21517           if (fe == NULL)
21518             complaint (_("file index out of range"));
21519           else
21520             symbol_set_symtab (sym, fe->symtab);
21521         }
21522
21523       switch (die->tag)
21524         {
21525         case DW_TAG_label:
21526           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21527           if (attr)
21528             {
21529               CORE_ADDR addr;
21530
21531               addr = attr_value_as_address (attr);
21532               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21533               SYMBOL_VALUE_ADDRESS (sym) = addr;
21534             }
21535           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21536           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21537           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21538           add_symbol_to_list (sym, cu->list_in_scope);
21539           break;
21540         case DW_TAG_subprogram:
21541           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21542              finish_block.  */
21543           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21544           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21545           if ((attr2 && (DW_UNSND (attr2) != 0))
21546               || cu->language == language_ada)
21547             {
21548               /* Subprograms marked external are stored as a global symbol.
21549                  Ada subprograms, whether marked external or not, are always
21550                  stored as a global symbol, because we want to be able to
21551                  access them globally.  For instance, we want to be able
21552                  to break on a nested subprogram without having to
21553                  specify the context.  */
21554               list_to_add = cu->get_builder ()->get_global_symbols ();
21555             }
21556           else
21557             {
21558               list_to_add = cu->list_in_scope;
21559             }
21560           break;
21561         case DW_TAG_inlined_subroutine:
21562           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21563              finish_block.  */
21564           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21565           SYMBOL_INLINED (sym) = 1;
21566           list_to_add = cu->list_in_scope;
21567           break;
21568         case DW_TAG_template_value_param:
21569           suppress_add = 1;
21570           /* Fall through.  */
21571         case DW_TAG_constant:
21572         case DW_TAG_variable:
21573         case DW_TAG_member:
21574           /* Compilation with minimal debug info may result in
21575              variables with missing type entries.  Change the
21576              misleading `void' type to something sensible.  */
21577           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21578             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21579
21580           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21581           /* In the case of DW_TAG_member, we should only be called for
21582              static const members.  */
21583           if (die->tag == DW_TAG_member)
21584             {
21585               /* dwarf2_add_field uses die_is_declaration,
21586                  so we do the same.  */
21587               gdb_assert (die_is_declaration (die, cu));
21588               gdb_assert (attr);
21589             }
21590           if (attr)
21591             {
21592               dwarf2_const_value (attr, sym, cu);
21593               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21594               if (!suppress_add)
21595                 {
21596                   if (attr2 && (DW_UNSND (attr2) != 0))
21597                     list_to_add = cu->get_builder ()->get_global_symbols ();
21598                   else
21599                     list_to_add = cu->list_in_scope;
21600                 }
21601               break;
21602             }
21603           attr = dwarf2_attr (die, DW_AT_location, cu);
21604           if (attr)
21605             {
21606               var_decode_location (attr, sym, cu);
21607               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21608
21609               /* Fortran explicitly imports any global symbols to the local
21610                  scope by DW_TAG_common_block.  */
21611               if (cu->language == language_fortran && die->parent
21612                   && die->parent->tag == DW_TAG_common_block)
21613                 attr2 = NULL;
21614
21615               if (SYMBOL_CLASS (sym) == LOC_STATIC
21616                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21617                   && !dwarf2_per_objfile->has_section_at_zero)
21618                 {
21619                   /* When a static variable is eliminated by the linker,
21620                      the corresponding debug information is not stripped
21621                      out, but the variable address is set to null;
21622                      do not add such variables into symbol table.  */
21623                 }
21624               else if (attr2 && (DW_UNSND (attr2) != 0))
21625                 {
21626                   /* Workaround gfortran PR debug/40040 - it uses
21627                      DW_AT_location for variables in -fPIC libraries which may
21628                      get overriden by other libraries/executable and get
21629                      a different address.  Resolve it by the minimal symbol
21630                      which may come from inferior's executable using copy
21631                      relocation.  Make this workaround only for gfortran as for
21632                      other compilers GDB cannot guess the minimal symbol
21633                      Fortran mangling kind.  */
21634                   if (cu->language == language_fortran && die->parent
21635                       && die->parent->tag == DW_TAG_module
21636                       && cu->producer
21637                       && startswith (cu->producer, "GNU Fortran"))
21638                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21639
21640                   /* A variable with DW_AT_external is never static,
21641                      but it may be block-scoped.  */
21642                   list_to_add
21643                     = ((cu->list_in_scope
21644                         == cu->get_builder ()->get_file_symbols ())
21645                        ? cu->get_builder ()->get_global_symbols ()
21646                        : cu->list_in_scope);
21647                 }
21648               else
21649                 list_to_add = cu->list_in_scope;
21650             }
21651           else
21652             {
21653               /* We do not know the address of this symbol.
21654                  If it is an external symbol and we have type information
21655                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21656                  The address of the variable will then be determined from
21657                  the minimal symbol table whenever the variable is
21658                  referenced.  */
21659               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21660
21661               /* Fortran explicitly imports any global symbols to the local
21662                  scope by DW_TAG_common_block.  */
21663               if (cu->language == language_fortran && die->parent
21664                   && die->parent->tag == DW_TAG_common_block)
21665                 {
21666                   /* SYMBOL_CLASS doesn't matter here because
21667                      read_common_block is going to reset it.  */
21668                   if (!suppress_add)
21669                     list_to_add = cu->list_in_scope;
21670                 }
21671               else if (attr2 && (DW_UNSND (attr2) != 0)
21672                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21673                 {
21674                   /* A variable with DW_AT_external is never static, but it
21675                      may be block-scoped.  */
21676                   list_to_add
21677                     = ((cu->list_in_scope
21678                         == cu->get_builder ()->get_file_symbols ())
21679                        ? cu->get_builder ()->get_global_symbols ()
21680                        : cu->list_in_scope);
21681
21682                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21683                 }
21684               else if (!die_is_declaration (die, cu))
21685                 {
21686                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21687                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21688                   if (!suppress_add)
21689                     list_to_add = cu->list_in_scope;
21690                 }
21691             }
21692           break;
21693         case DW_TAG_formal_parameter:
21694           {
21695             /* If we are inside a function, mark this as an argument.  If
21696                not, we might be looking at an argument to an inlined function
21697                when we do not have enough information to show inlined frames;
21698                pretend it's a local variable in that case so that the user can
21699                still see it.  */
21700             struct context_stack *curr
21701               = cu->get_builder ()->get_current_context_stack ();
21702             if (curr != nullptr && curr->name != nullptr)
21703               SYMBOL_IS_ARGUMENT (sym) = 1;
21704             attr = dwarf2_attr (die, DW_AT_location, cu);
21705             if (attr)
21706               {
21707                 var_decode_location (attr, sym, cu);
21708               }
21709             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21710             if (attr)
21711               {
21712                 dwarf2_const_value (attr, sym, cu);
21713               }
21714
21715             list_to_add = cu->list_in_scope;
21716           }
21717           break;
21718         case DW_TAG_unspecified_parameters:
21719           /* From varargs functions; gdb doesn't seem to have any
21720              interest in this information, so just ignore it for now.
21721              (FIXME?) */
21722           break;
21723         case DW_TAG_template_type_param:
21724           suppress_add = 1;
21725           /* Fall through.  */
21726         case DW_TAG_class_type:
21727         case DW_TAG_interface_type:
21728         case DW_TAG_structure_type:
21729         case DW_TAG_union_type:
21730         case DW_TAG_set_type:
21731         case DW_TAG_enumeration_type:
21732           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21733           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21734
21735           {
21736             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21737                really ever be static objects: otherwise, if you try
21738                to, say, break of a class's method and you're in a file
21739                which doesn't mention that class, it won't work unless
21740                the check for all static symbols in lookup_symbol_aux
21741                saves you.  See the OtherFileClass tests in
21742                gdb.c++/namespace.exp.  */
21743
21744             if (!suppress_add)
21745               {
21746                 buildsym_compunit *builder = cu->get_builder ();
21747                 list_to_add
21748                   = (cu->list_in_scope == builder->get_file_symbols ()
21749                      && cu->language == language_cplus
21750                      ? builder->get_global_symbols ()
21751                      : cu->list_in_scope);
21752
21753                 /* The semantics of C++ state that "struct foo {
21754                    ... }" also defines a typedef for "foo".  */
21755                 if (cu->language == language_cplus
21756                     || cu->language == language_ada
21757                     || cu->language == language_d
21758                     || cu->language == language_rust)
21759                   {
21760                     /* The symbol's name is already allocated along
21761                        with this objfile, so we don't need to
21762                        duplicate it for the type.  */
21763                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21764                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21765                   }
21766               }
21767           }
21768           break;
21769         case DW_TAG_typedef:
21770           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21771           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21772           list_to_add = cu->list_in_scope;
21773           break;
21774         case DW_TAG_base_type:
21775         case DW_TAG_subrange_type:
21776           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21777           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21778           list_to_add = cu->list_in_scope;
21779           break;
21780         case DW_TAG_enumerator:
21781           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21782           if (attr)
21783             {
21784               dwarf2_const_value (attr, sym, cu);
21785             }
21786           {
21787             /* NOTE: carlton/2003-11-10: See comment above in the
21788                DW_TAG_class_type, etc. block.  */
21789
21790             list_to_add
21791               = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21792                  && cu->language == language_cplus
21793                  ? cu->get_builder ()->get_global_symbols ()
21794                  : cu->list_in_scope);
21795           }
21796           break;
21797         case DW_TAG_imported_declaration:
21798         case DW_TAG_namespace:
21799           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21800           list_to_add = cu->get_builder ()->get_global_symbols ();
21801           break;
21802         case DW_TAG_module:
21803           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21804           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21805           list_to_add = cu->get_builder ()->get_global_symbols ();
21806           break;
21807         case DW_TAG_common_block:
21808           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21809           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21810           add_symbol_to_list (sym, cu->list_in_scope);
21811           break;
21812         default:
21813           /* Not a tag we recognize.  Hopefully we aren't processing
21814              trash data, but since we must specifically ignore things
21815              we don't recognize, there is nothing else we should do at
21816              this point.  */
21817           complaint (_("unsupported tag: '%s'"),
21818                      dwarf_tag_name (die->tag));
21819           break;
21820         }
21821
21822       if (suppress_add)
21823         {
21824           sym->hash_next = objfile->template_symbols;
21825           objfile->template_symbols = sym;
21826           list_to_add = NULL;
21827         }
21828
21829       if (list_to_add != NULL)
21830         add_symbol_to_list (sym, list_to_add);
21831
21832       /* For the benefit of old versions of GCC, check for anonymous
21833          namespaces based on the demangled name.  */
21834       if (!cu->processing_has_namespace_info
21835           && cu->language == language_cplus)
21836         cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21837     }
21838   return (sym);
21839 }
21840
21841 /* Given an attr with a DW_FORM_dataN value in host byte order,
21842    zero-extend it as appropriate for the symbol's type.  The DWARF
21843    standard (v4) is not entirely clear about the meaning of using
21844    DW_FORM_dataN for a constant with a signed type, where the type is
21845    wider than the data.  The conclusion of a discussion on the DWARF
21846    list was that this is unspecified.  We choose to always zero-extend
21847    because that is the interpretation long in use by GCC.  */
21848
21849 static gdb_byte *
21850 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21851                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21852 {
21853   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21854   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21855                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21856   LONGEST l = DW_UNSND (attr);
21857
21858   if (bits < sizeof (*value) * 8)
21859     {
21860       l &= ((LONGEST) 1 << bits) - 1;
21861       *value = l;
21862     }
21863   else if (bits == sizeof (*value) * 8)
21864     *value = l;
21865   else
21866     {
21867       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21868       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21869       return bytes;
21870     }
21871
21872   return NULL;
21873 }
21874
21875 /* Read a constant value from an attribute.  Either set *VALUE, or if
21876    the value does not fit in *VALUE, set *BYTES - either already
21877    allocated on the objfile obstack, or newly allocated on OBSTACK,
21878    or, set *BATON, if we translated the constant to a location
21879    expression.  */
21880
21881 static void
21882 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21883                          const char *name, struct obstack *obstack,
21884                          struct dwarf2_cu *cu,
21885                          LONGEST *value, const gdb_byte **bytes,
21886                          struct dwarf2_locexpr_baton **baton)
21887 {
21888   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21889   struct comp_unit_head *cu_header = &cu->header;
21890   struct dwarf_block *blk;
21891   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21892                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21893
21894   *value = 0;
21895   *bytes = NULL;
21896   *baton = NULL;
21897
21898   switch (attr->form)
21899     {
21900     case DW_FORM_addr:
21901     case DW_FORM_addrx:
21902     case DW_FORM_GNU_addr_index:
21903       {
21904         gdb_byte *data;
21905
21906         if (TYPE_LENGTH (type) != cu_header->addr_size)
21907           dwarf2_const_value_length_mismatch_complaint (name,
21908                                                         cu_header->addr_size,
21909                                                         TYPE_LENGTH (type));
21910         /* Symbols of this form are reasonably rare, so we just
21911            piggyback on the existing location code rather than writing
21912            a new implementation of symbol_computed_ops.  */
21913         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21914         (*baton)->per_cu = cu->per_cu;
21915         gdb_assert ((*baton)->per_cu);
21916
21917         (*baton)->size = 2 + cu_header->addr_size;
21918         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21919         (*baton)->data = data;
21920
21921         data[0] = DW_OP_addr;
21922         store_unsigned_integer (&data[1], cu_header->addr_size,
21923                                 byte_order, DW_ADDR (attr));
21924         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21925       }
21926       break;
21927     case DW_FORM_string:
21928     case DW_FORM_strp:
21929     case DW_FORM_strx:
21930     case DW_FORM_GNU_str_index:
21931     case DW_FORM_GNU_strp_alt:
21932       /* DW_STRING is already allocated on the objfile obstack, point
21933          directly to it.  */
21934       *bytes = (const gdb_byte *) DW_STRING (attr);
21935       break;
21936     case DW_FORM_block1:
21937     case DW_FORM_block2:
21938     case DW_FORM_block4:
21939     case DW_FORM_block:
21940     case DW_FORM_exprloc:
21941     case DW_FORM_data16:
21942       blk = DW_BLOCK (attr);
21943       if (TYPE_LENGTH (type) != blk->size)
21944         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21945                                                       TYPE_LENGTH (type));
21946       *bytes = blk->data;
21947       break;
21948
21949       /* The DW_AT_const_value attributes are supposed to carry the
21950          symbol's value "represented as it would be on the target
21951          architecture."  By the time we get here, it's already been
21952          converted to host endianness, so we just need to sign- or
21953          zero-extend it as appropriate.  */
21954     case DW_FORM_data1:
21955       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21956       break;
21957     case DW_FORM_data2:
21958       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21959       break;
21960     case DW_FORM_data4:
21961       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21962       break;
21963     case DW_FORM_data8:
21964       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21965       break;
21966
21967     case DW_FORM_sdata:
21968     case DW_FORM_implicit_const:
21969       *value = DW_SND (attr);
21970       break;
21971
21972     case DW_FORM_udata:
21973       *value = DW_UNSND (attr);
21974       break;
21975
21976     default:
21977       complaint (_("unsupported const value attribute form: '%s'"),
21978                  dwarf_form_name (attr->form));
21979       *value = 0;
21980       break;
21981     }
21982 }
21983
21984
21985 /* Copy constant value from an attribute to a symbol.  */
21986
21987 static void
21988 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21989                     struct dwarf2_cu *cu)
21990 {
21991   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21992   LONGEST value;
21993   const gdb_byte *bytes;
21994   struct dwarf2_locexpr_baton *baton;
21995
21996   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21997                            SYMBOL_PRINT_NAME (sym),
21998                            &objfile->objfile_obstack, cu,
21999                            &value, &bytes, &baton);
22000
22001   if (baton != NULL)
22002     {
22003       SYMBOL_LOCATION_BATON (sym) = baton;
22004       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
22005     }
22006   else if (bytes != NULL)
22007      {
22008       SYMBOL_VALUE_BYTES (sym) = bytes;
22009       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
22010     }
22011   else
22012     {
22013       SYMBOL_VALUE (sym) = value;
22014       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
22015     }
22016 }
22017
22018 /* Return the type of the die in question using its DW_AT_type attribute.  */
22019
22020 static struct type *
22021 die_type (struct die_info *die, struct dwarf2_cu *cu)
22022 {
22023   struct attribute *type_attr;
22024
22025   type_attr = dwarf2_attr (die, DW_AT_type, cu);
22026   if (!type_attr)
22027     {
22028       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22029       /* A missing DW_AT_type represents a void type.  */
22030       return objfile_type (objfile)->builtin_void;
22031     }
22032
22033   return lookup_die_type (die, type_attr, cu);
22034 }
22035
22036 /* True iff CU's producer generates GNAT Ada auxiliary information
22037    that allows to find parallel types through that information instead
22038    of having to do expensive parallel lookups by type name.  */
22039
22040 static int
22041 need_gnat_info (struct dwarf2_cu *cu)
22042 {
22043   /* Assume that the Ada compiler was GNAT, which always produces
22044      the auxiliary information.  */
22045   return (cu->language == language_ada);
22046 }
22047
22048 /* Return the auxiliary type of the die in question using its
22049    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
22050    attribute is not present.  */
22051
22052 static struct type *
22053 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22054 {
22055   struct attribute *type_attr;
22056
22057   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22058   if (!type_attr)
22059     return NULL;
22060
22061   return lookup_die_type (die, type_attr, cu);
22062 }
22063
22064 /* If DIE has a descriptive_type attribute, then set the TYPE's
22065    descriptive type accordingly.  */
22066
22067 static void
22068 set_descriptive_type (struct type *type, struct die_info *die,
22069                       struct dwarf2_cu *cu)
22070 {
22071   struct type *descriptive_type = die_descriptive_type (die, cu);
22072
22073   if (descriptive_type)
22074     {
22075       ALLOCATE_GNAT_AUX_TYPE (type);
22076       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22077     }
22078 }
22079
22080 /* Return the containing type of the die in question using its
22081    DW_AT_containing_type attribute.  */
22082
22083 static struct type *
22084 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22085 {
22086   struct attribute *type_attr;
22087   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22088
22089   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22090   if (!type_attr)
22091     error (_("Dwarf Error: Problem turning containing type into gdb type "
22092              "[in module %s]"), objfile_name (objfile));
22093
22094   return lookup_die_type (die, type_attr, cu);
22095 }
22096
22097 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
22098
22099 static struct type *
22100 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22101 {
22102   struct dwarf2_per_objfile *dwarf2_per_objfile
22103     = cu->per_cu->dwarf2_per_objfile;
22104   struct objfile *objfile = dwarf2_per_objfile->objfile;
22105   char *saved;
22106
22107   std::string message
22108     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22109                      objfile_name (objfile),
22110                      sect_offset_str (cu->header.sect_off),
22111                      sect_offset_str (die->sect_off));
22112   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22113                                   message.c_str (), message.length ());
22114
22115   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22116 }
22117
22118 /* Look up the type of DIE in CU using its type attribute ATTR.
22119    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22120    DW_AT_containing_type.
22121    If there is no type substitute an error marker.  */
22122
22123 static struct type *
22124 lookup_die_type (struct die_info *die, const struct attribute *attr,
22125                  struct dwarf2_cu *cu)
22126 {
22127   struct dwarf2_per_objfile *dwarf2_per_objfile
22128     = cu->per_cu->dwarf2_per_objfile;
22129   struct objfile *objfile = dwarf2_per_objfile->objfile;
22130   struct type *this_type;
22131
22132   gdb_assert (attr->name == DW_AT_type
22133               || attr->name == DW_AT_GNAT_descriptive_type
22134               || attr->name == DW_AT_containing_type);
22135
22136   /* First see if we have it cached.  */
22137
22138   if (attr->form == DW_FORM_GNU_ref_alt)
22139     {
22140       struct dwarf2_per_cu_data *per_cu;
22141       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22142
22143       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22144                                                  dwarf2_per_objfile);
22145       this_type = get_die_type_at_offset (sect_off, per_cu);
22146     }
22147   else if (attr_form_is_ref (attr))
22148     {
22149       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22150
22151       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22152     }
22153   else if (attr->form == DW_FORM_ref_sig8)
22154     {
22155       ULONGEST signature = DW_SIGNATURE (attr);
22156
22157       return get_signatured_type (die, signature, cu);
22158     }
22159   else
22160     {
22161       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22162                    " at %s [in module %s]"),
22163                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22164                  objfile_name (objfile));
22165       return build_error_marker_type (cu, die);
22166     }
22167
22168   /* If not cached we need to read it in.  */
22169
22170   if (this_type == NULL)
22171     {
22172       struct die_info *type_die = NULL;
22173       struct dwarf2_cu *type_cu = cu;
22174
22175       if (attr_form_is_ref (attr))
22176         type_die = follow_die_ref (die, attr, &type_cu);
22177       if (type_die == NULL)
22178         return build_error_marker_type (cu, die);
22179       /* If we find the type now, it's probably because the type came
22180          from an inter-CU reference and the type's CU got expanded before
22181          ours.  */
22182       this_type = read_type_die (type_die, type_cu);
22183     }
22184
22185   /* If we still don't have a type use an error marker.  */
22186
22187   if (this_type == NULL)
22188     return build_error_marker_type (cu, die);
22189
22190   return this_type;
22191 }
22192
22193 /* Return the type in DIE, CU.
22194    Returns NULL for invalid types.
22195
22196    This first does a lookup in die_type_hash,
22197    and only reads the die in if necessary.
22198
22199    NOTE: This can be called when reading in partial or full symbols.  */
22200
22201 static struct type *
22202 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22203 {
22204   struct type *this_type;
22205
22206   this_type = get_die_type (die, cu);
22207   if (this_type)
22208     return this_type;
22209
22210   return read_type_die_1 (die, cu);
22211 }
22212
22213 /* Read the type in DIE, CU.
22214    Returns NULL for invalid types.  */
22215
22216 static struct type *
22217 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22218 {
22219   struct type *this_type = NULL;
22220
22221   switch (die->tag)
22222     {
22223     case DW_TAG_class_type:
22224     case DW_TAG_interface_type:
22225     case DW_TAG_structure_type:
22226     case DW_TAG_union_type:
22227       this_type = read_structure_type (die, cu);
22228       break;
22229     case DW_TAG_enumeration_type:
22230       this_type = read_enumeration_type (die, cu);
22231       break;
22232     case DW_TAG_subprogram:
22233     case DW_TAG_subroutine_type:
22234     case DW_TAG_inlined_subroutine:
22235       this_type = read_subroutine_type (die, cu);
22236       break;
22237     case DW_TAG_array_type:
22238       this_type = read_array_type (die, cu);
22239       break;
22240     case DW_TAG_set_type:
22241       this_type = read_set_type (die, cu);
22242       break;
22243     case DW_TAG_pointer_type:
22244       this_type = read_tag_pointer_type (die, cu);
22245       break;
22246     case DW_TAG_ptr_to_member_type:
22247       this_type = read_tag_ptr_to_member_type (die, cu);
22248       break;
22249     case DW_TAG_reference_type:
22250       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22251       break;
22252     case DW_TAG_rvalue_reference_type:
22253       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22254       break;
22255     case DW_TAG_const_type:
22256       this_type = read_tag_const_type (die, cu);
22257       break;
22258     case DW_TAG_volatile_type:
22259       this_type = read_tag_volatile_type (die, cu);
22260       break;
22261     case DW_TAG_restrict_type:
22262       this_type = read_tag_restrict_type (die, cu);
22263       break;
22264     case DW_TAG_string_type:
22265       this_type = read_tag_string_type (die, cu);
22266       break;
22267     case DW_TAG_typedef:
22268       this_type = read_typedef (die, cu);
22269       break;
22270     case DW_TAG_subrange_type:
22271       this_type = read_subrange_type (die, cu);
22272       break;
22273     case DW_TAG_base_type:
22274       this_type = read_base_type (die, cu);
22275       break;
22276     case DW_TAG_unspecified_type:
22277       this_type = read_unspecified_type (die, cu);
22278       break;
22279     case DW_TAG_namespace:
22280       this_type = read_namespace_type (die, cu);
22281       break;
22282     case DW_TAG_module:
22283       this_type = read_module_type (die, cu);
22284       break;
22285     case DW_TAG_atomic_type:
22286       this_type = read_tag_atomic_type (die, cu);
22287       break;
22288     default:
22289       complaint (_("unexpected tag in read_type_die: '%s'"),
22290                  dwarf_tag_name (die->tag));
22291       break;
22292     }
22293
22294   return this_type;
22295 }
22296
22297 /* See if we can figure out if the class lives in a namespace.  We do
22298    this by looking for a member function; its demangled name will
22299    contain namespace info, if there is any.
22300    Return the computed name or NULL.
22301    Space for the result is allocated on the objfile's obstack.
22302    This is the full-die version of guess_partial_die_structure_name.
22303    In this case we know DIE has no useful parent.  */
22304
22305 static char *
22306 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22307 {
22308   struct die_info *spec_die;
22309   struct dwarf2_cu *spec_cu;
22310   struct die_info *child;
22311   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22312
22313   spec_cu = cu;
22314   spec_die = die_specification (die, &spec_cu);
22315   if (spec_die != NULL)
22316     {
22317       die = spec_die;
22318       cu = spec_cu;
22319     }
22320
22321   for (child = die->child;
22322        child != NULL;
22323        child = child->sibling)
22324     {
22325       if (child->tag == DW_TAG_subprogram)
22326         {
22327           const char *linkage_name = dw2_linkage_name (child, cu);
22328
22329           if (linkage_name != NULL)
22330             {
22331               char *actual_name
22332                 = language_class_name_from_physname (cu->language_defn,
22333                                                      linkage_name);
22334               char *name = NULL;
22335
22336               if (actual_name != NULL)
22337                 {
22338                   const char *die_name = dwarf2_name (die, cu);
22339
22340                   if (die_name != NULL
22341                       && strcmp (die_name, actual_name) != 0)
22342                     {
22343                       /* Strip off the class name from the full name.
22344                          We want the prefix.  */
22345                       int die_name_len = strlen (die_name);
22346                       int actual_name_len = strlen (actual_name);
22347
22348                       /* Test for '::' as a sanity check.  */
22349                       if (actual_name_len > die_name_len + 2
22350                           && actual_name[actual_name_len
22351                                          - die_name_len - 1] == ':')
22352                         name = (char *) obstack_copy0 (
22353                           &objfile->per_bfd->storage_obstack,
22354                           actual_name, actual_name_len - die_name_len - 2);
22355                     }
22356                 }
22357               xfree (actual_name);
22358               return name;
22359             }
22360         }
22361     }
22362
22363   return NULL;
22364 }
22365
22366 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22367    prefix part in such case.  See
22368    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22369
22370 static const char *
22371 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22372 {
22373   struct attribute *attr;
22374   const char *base;
22375
22376   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22377       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22378     return NULL;
22379
22380   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22381     return NULL;
22382
22383   attr = dw2_linkage_name_attr (die, cu);
22384   if (attr == NULL || DW_STRING (attr) == NULL)
22385     return NULL;
22386
22387   /* dwarf2_name had to be already called.  */
22388   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22389
22390   /* Strip the base name, keep any leading namespaces/classes.  */
22391   base = strrchr (DW_STRING (attr), ':');
22392   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22393     return "";
22394
22395   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22396   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22397                                  DW_STRING (attr),
22398                                  &base[-1] - DW_STRING (attr));
22399 }
22400
22401 /* Return the name of the namespace/class that DIE is defined within,
22402    or "" if we can't tell.  The caller should not xfree the result.
22403
22404    For example, if we're within the method foo() in the following
22405    code:
22406
22407    namespace N {
22408      class C {
22409        void foo () {
22410        }
22411      };
22412    }
22413
22414    then determine_prefix on foo's die will return "N::C".  */
22415
22416 static const char *
22417 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22418 {
22419   struct dwarf2_per_objfile *dwarf2_per_objfile
22420     = cu->per_cu->dwarf2_per_objfile;
22421   struct die_info *parent, *spec_die;
22422   struct dwarf2_cu *spec_cu;
22423   struct type *parent_type;
22424   const char *retval;
22425
22426   if (cu->language != language_cplus
22427       && cu->language != language_fortran && cu->language != language_d
22428       && cu->language != language_rust)
22429     return "";
22430
22431   retval = anonymous_struct_prefix (die, cu);
22432   if (retval)
22433     return retval;
22434
22435   /* We have to be careful in the presence of DW_AT_specification.
22436      For example, with GCC 3.4, given the code
22437
22438      namespace N {
22439        void foo() {
22440          // Definition of N::foo.
22441        }
22442      }
22443
22444      then we'll have a tree of DIEs like this:
22445
22446      1: DW_TAG_compile_unit
22447        2: DW_TAG_namespace        // N
22448          3: DW_TAG_subprogram     // declaration of N::foo
22449        4: DW_TAG_subprogram       // definition of N::foo
22450             DW_AT_specification   // refers to die #3
22451
22452      Thus, when processing die #4, we have to pretend that we're in
22453      the context of its DW_AT_specification, namely the contex of die
22454      #3.  */
22455   spec_cu = cu;
22456   spec_die = die_specification (die, &spec_cu);
22457   if (spec_die == NULL)
22458     parent = die->parent;
22459   else
22460     {
22461       parent = spec_die->parent;
22462       cu = spec_cu;
22463     }
22464
22465   if (parent == NULL)
22466     return "";
22467   else if (parent->building_fullname)
22468     {
22469       const char *name;
22470       const char *parent_name;
22471
22472       /* It has been seen on RealView 2.2 built binaries,
22473          DW_TAG_template_type_param types actually _defined_ as
22474          children of the parent class:
22475
22476          enum E {};
22477          template class <class Enum> Class{};
22478          Class<enum E> class_e;
22479
22480          1: DW_TAG_class_type (Class)
22481            2: DW_TAG_enumeration_type (E)
22482              3: DW_TAG_enumerator (enum1:0)
22483              3: DW_TAG_enumerator (enum2:1)
22484              ...
22485            2: DW_TAG_template_type_param
22486               DW_AT_type  DW_FORM_ref_udata (E)
22487
22488          Besides being broken debug info, it can put GDB into an
22489          infinite loop.  Consider:
22490
22491          When we're building the full name for Class<E>, we'll start
22492          at Class, and go look over its template type parameters,
22493          finding E.  We'll then try to build the full name of E, and
22494          reach here.  We're now trying to build the full name of E,
22495          and look over the parent DIE for containing scope.  In the
22496          broken case, if we followed the parent DIE of E, we'd again
22497          find Class, and once again go look at its template type
22498          arguments, etc., etc.  Simply don't consider such parent die
22499          as source-level parent of this die (it can't be, the language
22500          doesn't allow it), and break the loop here.  */
22501       name = dwarf2_name (die, cu);
22502       parent_name = dwarf2_name (parent, cu);
22503       complaint (_("template param type '%s' defined within parent '%s'"),
22504                  name ? name : "<unknown>",
22505                  parent_name ? parent_name : "<unknown>");
22506       return "";
22507     }
22508   else
22509     switch (parent->tag)
22510       {
22511       case DW_TAG_namespace:
22512         parent_type = read_type_die (parent, cu);
22513         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22514            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22515            Work around this problem here.  */
22516         if (cu->language == language_cplus
22517             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22518           return "";
22519         /* We give a name to even anonymous namespaces.  */
22520         return TYPE_NAME (parent_type);
22521       case DW_TAG_class_type:
22522       case DW_TAG_interface_type:
22523       case DW_TAG_structure_type:
22524       case DW_TAG_union_type:
22525       case DW_TAG_module:
22526         parent_type = read_type_die (parent, cu);
22527         if (TYPE_NAME (parent_type) != NULL)
22528           return TYPE_NAME (parent_type);
22529         else
22530           /* An anonymous structure is only allowed non-static data
22531              members; no typedefs, no member functions, et cetera.
22532              So it does not need a prefix.  */
22533           return "";
22534       case DW_TAG_compile_unit:
22535       case DW_TAG_partial_unit:
22536         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22537         if (cu->language == language_cplus
22538             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22539             && die->child != NULL
22540             && (die->tag == DW_TAG_class_type
22541                 || die->tag == DW_TAG_structure_type
22542                 || die->tag == DW_TAG_union_type))
22543           {
22544             char *name = guess_full_die_structure_name (die, cu);
22545             if (name != NULL)
22546               return name;
22547           }
22548         return "";
22549       case DW_TAG_enumeration_type:
22550         parent_type = read_type_die (parent, cu);
22551         if (TYPE_DECLARED_CLASS (parent_type))
22552           {
22553             if (TYPE_NAME (parent_type) != NULL)
22554               return TYPE_NAME (parent_type);
22555             return "";
22556           }
22557         /* Fall through.  */
22558       default:
22559         return determine_prefix (parent, cu);
22560       }
22561 }
22562
22563 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22564    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22565    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22566    an obconcat, otherwise allocate storage for the result.  The CU argument is
22567    used to determine the language and hence, the appropriate separator.  */
22568
22569 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22570
22571 static char *
22572 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22573                  int physname, struct dwarf2_cu *cu)
22574 {
22575   const char *lead = "";
22576   const char *sep;
22577
22578   if (suffix == NULL || suffix[0] == '\0'
22579       || prefix == NULL || prefix[0] == '\0')
22580     sep = "";
22581   else if (cu->language == language_d)
22582     {
22583       /* For D, the 'main' function could be defined in any module, but it
22584          should never be prefixed.  */
22585       if (strcmp (suffix, "D main") == 0)
22586         {
22587           prefix = "";
22588           sep = "";
22589         }
22590       else
22591         sep = ".";
22592     }
22593   else if (cu->language == language_fortran && physname)
22594     {
22595       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22596          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22597
22598       lead = "__";
22599       sep = "_MOD_";
22600     }
22601   else
22602     sep = "::";
22603
22604   if (prefix == NULL)
22605     prefix = "";
22606   if (suffix == NULL)
22607     suffix = "";
22608
22609   if (obs == NULL)
22610     {
22611       char *retval
22612         = ((char *)
22613            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22614
22615       strcpy (retval, lead);
22616       strcat (retval, prefix);
22617       strcat (retval, sep);
22618       strcat (retval, suffix);
22619       return retval;
22620     }
22621   else
22622     {
22623       /* We have an obstack.  */
22624       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22625     }
22626 }
22627
22628 /* Return sibling of die, NULL if no sibling.  */
22629
22630 static struct die_info *
22631 sibling_die (struct die_info *die)
22632 {
22633   return die->sibling;
22634 }
22635
22636 /* Get name of a die, return NULL if not found.  */
22637
22638 static const char *
22639 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22640                           struct obstack *obstack)
22641 {
22642   if (name && cu->language == language_cplus)
22643     {
22644       std::string canon_name = cp_canonicalize_string (name);
22645
22646       if (!canon_name.empty ())
22647         {
22648           if (canon_name != name)
22649             name = (const char *) obstack_copy0 (obstack,
22650                                                  canon_name.c_str (),
22651                                                  canon_name.length ());
22652         }
22653     }
22654
22655   return name;
22656 }
22657
22658 /* Get name of a die, return NULL if not found.
22659    Anonymous namespaces are converted to their magic string.  */
22660
22661 static const char *
22662 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22663 {
22664   struct attribute *attr;
22665   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22666
22667   attr = dwarf2_attr (die, DW_AT_name, cu);
22668   if ((!attr || !DW_STRING (attr))
22669       && die->tag != DW_TAG_namespace
22670       && die->tag != DW_TAG_class_type
22671       && die->tag != DW_TAG_interface_type
22672       && die->tag != DW_TAG_structure_type
22673       && die->tag != DW_TAG_union_type)
22674     return NULL;
22675
22676   switch (die->tag)
22677     {
22678     case DW_TAG_compile_unit:
22679     case DW_TAG_partial_unit:
22680       /* Compilation units have a DW_AT_name that is a filename, not
22681          a source language identifier.  */
22682     case DW_TAG_enumeration_type:
22683     case DW_TAG_enumerator:
22684       /* These tags always have simple identifiers already; no need
22685          to canonicalize them.  */
22686       return DW_STRING (attr);
22687
22688     case DW_TAG_namespace:
22689       if (attr != NULL && DW_STRING (attr) != NULL)
22690         return DW_STRING (attr);
22691       return CP_ANONYMOUS_NAMESPACE_STR;
22692
22693     case DW_TAG_class_type:
22694     case DW_TAG_interface_type:
22695     case DW_TAG_structure_type:
22696     case DW_TAG_union_type:
22697       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22698          structures or unions.  These were of the form "._%d" in GCC 4.1,
22699          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22700          and GCC 4.4.  We work around this problem by ignoring these.  */
22701       if (attr && DW_STRING (attr)
22702           && (startswith (DW_STRING (attr), "._")
22703               || startswith (DW_STRING (attr), "<anonymous")))
22704         return NULL;
22705
22706       /* GCC might emit a nameless typedef that has a linkage name.  See
22707          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22708       if (!attr || DW_STRING (attr) == NULL)
22709         {
22710           char *demangled = NULL;
22711
22712           attr = dw2_linkage_name_attr (die, cu);
22713           if (attr == NULL || DW_STRING (attr) == NULL)
22714             return NULL;
22715
22716           /* Avoid demangling DW_STRING (attr) the second time on a second
22717              call for the same DIE.  */
22718           if (!DW_STRING_IS_CANONICAL (attr))
22719             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22720
22721           if (demangled)
22722             {
22723               const char *base;
22724
22725               /* FIXME: we already did this for the partial symbol... */
22726               DW_STRING (attr)
22727                 = ((const char *)
22728                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22729                                   demangled, strlen (demangled)));
22730               DW_STRING_IS_CANONICAL (attr) = 1;
22731               xfree (demangled);
22732
22733               /* Strip any leading namespaces/classes, keep only the base name.
22734                  DW_AT_name for named DIEs does not contain the prefixes.  */
22735               base = strrchr (DW_STRING (attr), ':');
22736               if (base && base > DW_STRING (attr) && base[-1] == ':')
22737                 return &base[1];
22738               else
22739                 return DW_STRING (attr);
22740             }
22741         }
22742       break;
22743
22744     default:
22745       break;
22746     }
22747
22748   if (!DW_STRING_IS_CANONICAL (attr))
22749     {
22750       DW_STRING (attr)
22751         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22752                                     &objfile->per_bfd->storage_obstack);
22753       DW_STRING_IS_CANONICAL (attr) = 1;
22754     }
22755   return DW_STRING (attr);
22756 }
22757
22758 /* Return the die that this die in an extension of, or NULL if there
22759    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22760    containing the return value on output.  */
22761
22762 static struct die_info *
22763 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22764 {
22765   struct attribute *attr;
22766
22767   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22768   if (attr == NULL)
22769     return NULL;
22770
22771   return follow_die_ref (die, attr, ext_cu);
22772 }
22773
22774 /* A convenience function that returns an "unknown" DWARF name,
22775    including the value of V.  STR is the name of the entity being
22776    printed, e.g., "TAG".  */
22777
22778 static const char *
22779 dwarf_unknown (const char *str, unsigned v)
22780 {
22781   char *cell = get_print_cell ();
22782   xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
22783   return cell;
22784 }
22785
22786 /* Convert a DIE tag into its string name.  */
22787
22788 static const char *
22789 dwarf_tag_name (unsigned tag)
22790 {
22791   const char *name = get_DW_TAG_name (tag);
22792
22793   if (name == NULL)
22794     return dwarf_unknown ("TAG", tag);
22795
22796   return name;
22797 }
22798
22799 /* Convert a DWARF attribute code into its string name.  */
22800
22801 static const char *
22802 dwarf_attr_name (unsigned attr)
22803 {
22804   const char *name;
22805
22806 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22807   if (attr == DW_AT_MIPS_fde)
22808     return "DW_AT_MIPS_fde";
22809 #else
22810   if (attr == DW_AT_HP_block_index)
22811     return "DW_AT_HP_block_index";
22812 #endif
22813
22814   name = get_DW_AT_name (attr);
22815
22816   if (name == NULL)
22817     return dwarf_unknown ("AT", attr);
22818
22819   return name;
22820 }
22821
22822 /* Convert a DWARF value form code into its string name.  */
22823
22824 static const char *
22825 dwarf_form_name (unsigned form)
22826 {
22827   const char *name = get_DW_FORM_name (form);
22828
22829   if (name == NULL)
22830     return dwarf_unknown ("FORM", form);
22831
22832   return name;
22833 }
22834
22835 static const char *
22836 dwarf_bool_name (unsigned mybool)
22837 {
22838   if (mybool)
22839     return "TRUE";
22840   else
22841     return "FALSE";
22842 }
22843
22844 /* Convert a DWARF type code into its string name.  */
22845
22846 static const char *
22847 dwarf_type_encoding_name (unsigned enc)
22848 {
22849   const char *name = get_DW_ATE_name (enc);
22850
22851   if (name == NULL)
22852     return dwarf_unknown ("ATE", enc);
22853
22854   return name;
22855 }
22856
22857 static void
22858 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22859 {
22860   unsigned int i;
22861
22862   print_spaces (indent, f);
22863   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22864                       dwarf_tag_name (die->tag), die->abbrev,
22865                       sect_offset_str (die->sect_off));
22866
22867   if (die->parent != NULL)
22868     {
22869       print_spaces (indent, f);
22870       fprintf_unfiltered (f, "  parent at offset: %s\n",
22871                           sect_offset_str (die->parent->sect_off));
22872     }
22873
22874   print_spaces (indent, f);
22875   fprintf_unfiltered (f, "  has children: %s\n",
22876            dwarf_bool_name (die->child != NULL));
22877
22878   print_spaces (indent, f);
22879   fprintf_unfiltered (f, "  attributes:\n");
22880
22881   for (i = 0; i < die->num_attrs; ++i)
22882     {
22883       print_spaces (indent, f);
22884       fprintf_unfiltered (f, "    %s (%s) ",
22885                dwarf_attr_name (die->attrs[i].name),
22886                dwarf_form_name (die->attrs[i].form));
22887
22888       switch (die->attrs[i].form)
22889         {
22890         case DW_FORM_addr:
22891         case DW_FORM_addrx:
22892         case DW_FORM_GNU_addr_index:
22893           fprintf_unfiltered (f, "address: ");
22894           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22895           break;
22896         case DW_FORM_block2:
22897         case DW_FORM_block4:
22898         case DW_FORM_block:
22899         case DW_FORM_block1:
22900           fprintf_unfiltered (f, "block: size %s",
22901                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22902           break;
22903         case DW_FORM_exprloc:
22904           fprintf_unfiltered (f, "expression: size %s",
22905                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22906           break;
22907         case DW_FORM_data16:
22908           fprintf_unfiltered (f, "constant of 16 bytes");
22909           break;
22910         case DW_FORM_ref_addr:
22911           fprintf_unfiltered (f, "ref address: ");
22912           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22913           break;
22914         case DW_FORM_GNU_ref_alt:
22915           fprintf_unfiltered (f, "alt ref address: ");
22916           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22917           break;
22918         case DW_FORM_ref1:
22919         case DW_FORM_ref2:
22920         case DW_FORM_ref4:
22921         case DW_FORM_ref8:
22922         case DW_FORM_ref_udata:
22923           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22924                               (long) (DW_UNSND (&die->attrs[i])));
22925           break;
22926         case DW_FORM_data1:
22927         case DW_FORM_data2:
22928         case DW_FORM_data4:
22929         case DW_FORM_data8:
22930         case DW_FORM_udata:
22931         case DW_FORM_sdata:
22932           fprintf_unfiltered (f, "constant: %s",
22933                               pulongest (DW_UNSND (&die->attrs[i])));
22934           break;
22935         case DW_FORM_sec_offset:
22936           fprintf_unfiltered (f, "section offset: %s",
22937                               pulongest (DW_UNSND (&die->attrs[i])));
22938           break;
22939         case DW_FORM_ref_sig8:
22940           fprintf_unfiltered (f, "signature: %s",
22941                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22942           break;
22943         case DW_FORM_string:
22944         case DW_FORM_strp:
22945         case DW_FORM_line_strp:
22946         case DW_FORM_strx:
22947         case DW_FORM_GNU_str_index:
22948         case DW_FORM_GNU_strp_alt:
22949           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22950                    DW_STRING (&die->attrs[i])
22951                    ? DW_STRING (&die->attrs[i]) : "",
22952                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22953           break;
22954         case DW_FORM_flag:
22955           if (DW_UNSND (&die->attrs[i]))
22956             fprintf_unfiltered (f, "flag: TRUE");
22957           else
22958             fprintf_unfiltered (f, "flag: FALSE");
22959           break;
22960         case DW_FORM_flag_present:
22961           fprintf_unfiltered (f, "flag: TRUE");
22962           break;
22963         case DW_FORM_indirect:
22964           /* The reader will have reduced the indirect form to
22965              the "base form" so this form should not occur.  */
22966           fprintf_unfiltered (f, 
22967                               "unexpected attribute form: DW_FORM_indirect");
22968           break;
22969         case DW_FORM_implicit_const:
22970           fprintf_unfiltered (f, "constant: %s",
22971                               plongest (DW_SND (&die->attrs[i])));
22972           break;
22973         default:
22974           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22975                    die->attrs[i].form);
22976           break;
22977         }
22978       fprintf_unfiltered (f, "\n");
22979     }
22980 }
22981
22982 static void
22983 dump_die_for_error (struct die_info *die)
22984 {
22985   dump_die_shallow (gdb_stderr, 0, die);
22986 }
22987
22988 static void
22989 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22990 {
22991   int indent = level * 4;
22992
22993   gdb_assert (die != NULL);
22994
22995   if (level >= max_level)
22996     return;
22997
22998   dump_die_shallow (f, indent, die);
22999
23000   if (die->child != NULL)
23001     {
23002       print_spaces (indent, f);
23003       fprintf_unfiltered (f, "  Children:");
23004       if (level + 1 < max_level)
23005         {
23006           fprintf_unfiltered (f, "\n");
23007           dump_die_1 (f, level + 1, max_level, die->child);
23008         }
23009       else
23010         {
23011           fprintf_unfiltered (f,
23012                               " [not printed, max nesting level reached]\n");
23013         }
23014     }
23015
23016   if (die->sibling != NULL && level > 0)
23017     {
23018       dump_die_1 (f, level, max_level, die->sibling);
23019     }
23020 }
23021
23022 /* This is called from the pdie macro in gdbinit.in.
23023    It's not static so gcc will keep a copy callable from gdb.  */
23024
23025 void
23026 dump_die (struct die_info *die, int max_level)
23027 {
23028   dump_die_1 (gdb_stdlog, 0, max_level, die);
23029 }
23030
23031 static void
23032 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
23033 {
23034   void **slot;
23035
23036   slot = htab_find_slot_with_hash (cu->die_hash, die,
23037                                    to_underlying (die->sect_off),
23038                                    INSERT);
23039
23040   *slot = die;
23041 }
23042
23043 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
23044    required kind.  */
23045
23046 static sect_offset
23047 dwarf2_get_ref_die_offset (const struct attribute *attr)
23048 {
23049   if (attr_form_is_ref (attr))
23050     return (sect_offset) DW_UNSND (attr);
23051
23052   complaint (_("unsupported die ref attribute form: '%s'"),
23053              dwarf_form_name (attr->form));
23054   return {};
23055 }
23056
23057 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
23058  * the value held by the attribute is not constant.  */
23059
23060 static LONGEST
23061 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
23062 {
23063   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
23064     return DW_SND (attr);
23065   else if (attr->form == DW_FORM_udata
23066            || attr->form == DW_FORM_data1
23067            || attr->form == DW_FORM_data2
23068            || attr->form == DW_FORM_data4
23069            || attr->form == DW_FORM_data8)
23070     return DW_UNSND (attr);
23071   else
23072     {
23073       /* For DW_FORM_data16 see attr_form_is_constant.  */
23074       complaint (_("Attribute value is not a constant (%s)"),
23075                  dwarf_form_name (attr->form));
23076       return default_value;
23077     }
23078 }
23079
23080 /* Follow reference or signature attribute ATTR of SRC_DIE.
23081    On entry *REF_CU is the CU of SRC_DIE.
23082    On exit *REF_CU is the CU of the result.  */
23083
23084 static struct die_info *
23085 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23086                        struct dwarf2_cu **ref_cu)
23087 {
23088   struct die_info *die;
23089
23090   if (attr_form_is_ref (attr))
23091     die = follow_die_ref (src_die, attr, ref_cu);
23092   else if (attr->form == DW_FORM_ref_sig8)
23093     die = follow_die_sig (src_die, attr, ref_cu);
23094   else
23095     {
23096       dump_die_for_error (src_die);
23097       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23098              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23099     }
23100
23101   return die;
23102 }
23103
23104 /* Follow reference OFFSET.
23105    On entry *REF_CU is the CU of the source die referencing OFFSET.
23106    On exit *REF_CU is the CU of the result.
23107    Returns NULL if OFFSET is invalid.  */
23108
23109 static struct die_info *
23110 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23111                    struct dwarf2_cu **ref_cu)
23112 {
23113   struct die_info temp_die;
23114   struct dwarf2_cu *target_cu, *cu = *ref_cu;
23115   struct dwarf2_per_objfile *dwarf2_per_objfile
23116     = cu->per_cu->dwarf2_per_objfile;
23117
23118   gdb_assert (cu->per_cu != NULL);
23119
23120   target_cu = cu;
23121
23122   if (cu->per_cu->is_debug_types)
23123     {
23124       /* .debug_types CUs cannot reference anything outside their CU.
23125          If they need to, they have to reference a signatured type via
23126          DW_FORM_ref_sig8.  */
23127       if (!offset_in_cu_p (&cu->header, sect_off))
23128         return NULL;
23129     }
23130   else if (offset_in_dwz != cu->per_cu->is_dwz
23131            || !offset_in_cu_p (&cu->header, sect_off))
23132     {
23133       struct dwarf2_per_cu_data *per_cu;
23134
23135       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23136                                                  dwarf2_per_objfile);
23137
23138       /* If necessary, add it to the queue and load its DIEs.  */
23139       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23140         load_full_comp_unit (per_cu, false, cu->language);
23141
23142       target_cu = per_cu->cu;
23143     }
23144   else if (cu->dies == NULL)
23145     {
23146       /* We're loading full DIEs during partial symbol reading.  */
23147       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23148       load_full_comp_unit (cu->per_cu, false, language_minimal);
23149     }
23150
23151   *ref_cu = target_cu;
23152   temp_die.sect_off = sect_off;
23153
23154   if (target_cu != cu)
23155     target_cu->ancestor = cu;
23156
23157   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23158                                                   &temp_die,
23159                                                   to_underlying (sect_off));
23160 }
23161
23162 /* Follow reference attribute ATTR of SRC_DIE.
23163    On entry *REF_CU is the CU of SRC_DIE.
23164    On exit *REF_CU is the CU of the result.  */
23165
23166 static struct die_info *
23167 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23168                 struct dwarf2_cu **ref_cu)
23169 {
23170   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23171   struct dwarf2_cu *cu = *ref_cu;
23172   struct die_info *die;
23173
23174   die = follow_die_offset (sect_off,
23175                            (attr->form == DW_FORM_GNU_ref_alt
23176                             || cu->per_cu->is_dwz),
23177                            ref_cu);
23178   if (!die)
23179     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23180            "at %s [in module %s]"),
23181            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23182            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23183
23184   return die;
23185 }
23186
23187 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23188    Returned value is intended for DW_OP_call*.  Returned
23189    dwarf2_locexpr_baton->data has lifetime of
23190    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23191
23192 struct dwarf2_locexpr_baton
23193 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23194                                struct dwarf2_per_cu_data *per_cu,
23195                                CORE_ADDR (*get_frame_pc) (void *baton),
23196                                void *baton, bool resolve_abstract_p)
23197 {
23198   struct dwarf2_cu *cu;
23199   struct die_info *die;
23200   struct attribute *attr;
23201   struct dwarf2_locexpr_baton retval;
23202   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23203   struct objfile *objfile = dwarf2_per_objfile->objfile;
23204
23205   if (per_cu->cu == NULL)
23206     load_cu (per_cu, false);
23207   cu = per_cu->cu;
23208   if (cu == NULL)
23209     {
23210       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23211          Instead just throw an error, not much else we can do.  */
23212       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23213              sect_offset_str (sect_off), objfile_name (objfile));
23214     }
23215
23216   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23217   if (!die)
23218     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23219            sect_offset_str (sect_off), objfile_name (objfile));
23220
23221   attr = dwarf2_attr (die, DW_AT_location, cu);
23222   if (!attr && resolve_abstract_p
23223       && (dwarf2_per_objfile->abstract_to_concrete.find (die->sect_off)
23224           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23225     {
23226       CORE_ADDR pc = (*get_frame_pc) (baton);
23227
23228       for (const auto &cand_off
23229              : dwarf2_per_objfile->abstract_to_concrete[die->sect_off])
23230         {
23231           struct dwarf2_cu *cand_cu = cu;
23232           struct die_info *cand
23233             = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
23234           if (!cand
23235               || !cand->parent
23236               || cand->parent->tag != DW_TAG_subprogram)
23237             continue;
23238
23239           CORE_ADDR pc_low, pc_high;
23240           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23241           if (pc_low == ((CORE_ADDR) -1)
23242               || !(pc_low <= pc && pc < pc_high))
23243             continue;
23244
23245           die = cand;
23246           attr = dwarf2_attr (die, DW_AT_location, cu);
23247           break;
23248         }
23249     }
23250
23251   if (!attr)
23252     {
23253       /* DWARF: "If there is no such attribute, then there is no effect.".
23254          DATA is ignored if SIZE is 0.  */
23255
23256       retval.data = NULL;
23257       retval.size = 0;
23258     }
23259   else if (attr_form_is_section_offset (attr))
23260     {
23261       struct dwarf2_loclist_baton loclist_baton;
23262       CORE_ADDR pc = (*get_frame_pc) (baton);
23263       size_t size;
23264
23265       fill_in_loclist_baton (cu, &loclist_baton, attr);
23266
23267       retval.data = dwarf2_find_location_expression (&loclist_baton,
23268                                                      &size, pc);
23269       retval.size = size;
23270     }
23271   else
23272     {
23273       if (!attr_form_is_block (attr))
23274         error (_("Dwarf Error: DIE at %s referenced in module %s "
23275                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23276                sect_offset_str (sect_off), objfile_name (objfile));
23277
23278       retval.data = DW_BLOCK (attr)->data;
23279       retval.size = DW_BLOCK (attr)->size;
23280     }
23281   retval.per_cu = cu->per_cu;
23282
23283   age_cached_comp_units (dwarf2_per_objfile);
23284
23285   return retval;
23286 }
23287
23288 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23289    offset.  */
23290
23291 struct dwarf2_locexpr_baton
23292 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23293                              struct dwarf2_per_cu_data *per_cu,
23294                              CORE_ADDR (*get_frame_pc) (void *baton),
23295                              void *baton)
23296 {
23297   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23298
23299   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23300 }
23301
23302 /* Write a constant of a given type as target-ordered bytes into
23303    OBSTACK.  */
23304
23305 static const gdb_byte *
23306 write_constant_as_bytes (struct obstack *obstack,
23307                          enum bfd_endian byte_order,
23308                          struct type *type,
23309                          ULONGEST value,
23310                          LONGEST *len)
23311 {
23312   gdb_byte *result;
23313
23314   *len = TYPE_LENGTH (type);
23315   result = (gdb_byte *) obstack_alloc (obstack, *len);
23316   store_unsigned_integer (result, *len, byte_order, value);
23317
23318   return result;
23319 }
23320
23321 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23322    pointer to the constant bytes and set LEN to the length of the
23323    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23324    does not have a DW_AT_const_value, return NULL.  */
23325
23326 const gdb_byte *
23327 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23328                              struct dwarf2_per_cu_data *per_cu,
23329                              struct obstack *obstack,
23330                              LONGEST *len)
23331 {
23332   struct dwarf2_cu *cu;
23333   struct die_info *die;
23334   struct attribute *attr;
23335   const gdb_byte *result = NULL;
23336   struct type *type;
23337   LONGEST value;
23338   enum bfd_endian byte_order;
23339   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23340
23341   if (per_cu->cu == NULL)
23342     load_cu (per_cu, false);
23343   cu = per_cu->cu;
23344   if (cu == NULL)
23345     {
23346       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23347          Instead just throw an error, not much else we can do.  */
23348       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23349              sect_offset_str (sect_off), objfile_name (objfile));
23350     }
23351
23352   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23353   if (!die)
23354     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23355            sect_offset_str (sect_off), objfile_name (objfile));
23356
23357   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23358   if (attr == NULL)
23359     return NULL;
23360
23361   byte_order = (bfd_big_endian (objfile->obfd)
23362                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23363
23364   switch (attr->form)
23365     {
23366     case DW_FORM_addr:
23367     case DW_FORM_addrx:
23368     case DW_FORM_GNU_addr_index:
23369       {
23370         gdb_byte *tem;
23371
23372         *len = cu->header.addr_size;
23373         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23374         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23375         result = tem;
23376       }
23377       break;
23378     case DW_FORM_string:
23379     case DW_FORM_strp:
23380     case DW_FORM_strx:
23381     case DW_FORM_GNU_str_index:
23382     case DW_FORM_GNU_strp_alt:
23383       /* DW_STRING is already allocated on the objfile obstack, point
23384          directly to it.  */
23385       result = (const gdb_byte *) DW_STRING (attr);
23386       *len = strlen (DW_STRING (attr));
23387       break;
23388     case DW_FORM_block1:
23389     case DW_FORM_block2:
23390     case DW_FORM_block4:
23391     case DW_FORM_block:
23392     case DW_FORM_exprloc:
23393     case DW_FORM_data16:
23394       result = DW_BLOCK (attr)->data;
23395       *len = DW_BLOCK (attr)->size;
23396       break;
23397
23398       /* The DW_AT_const_value attributes are supposed to carry the
23399          symbol's value "represented as it would be on the target
23400          architecture."  By the time we get here, it's already been
23401          converted to host endianness, so we just need to sign- or
23402          zero-extend it as appropriate.  */
23403     case DW_FORM_data1:
23404       type = die_type (die, cu);
23405       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23406       if (result == NULL)
23407         result = write_constant_as_bytes (obstack, byte_order,
23408                                           type, value, len);
23409       break;
23410     case DW_FORM_data2:
23411       type = die_type (die, cu);
23412       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23413       if (result == NULL)
23414         result = write_constant_as_bytes (obstack, byte_order,
23415                                           type, value, len);
23416       break;
23417     case DW_FORM_data4:
23418       type = die_type (die, cu);
23419       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23420       if (result == NULL)
23421         result = write_constant_as_bytes (obstack, byte_order,
23422                                           type, value, len);
23423       break;
23424     case DW_FORM_data8:
23425       type = die_type (die, cu);
23426       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23427       if (result == NULL)
23428         result = write_constant_as_bytes (obstack, byte_order,
23429                                           type, value, len);
23430       break;
23431
23432     case DW_FORM_sdata:
23433     case DW_FORM_implicit_const:
23434       type = die_type (die, cu);
23435       result = write_constant_as_bytes (obstack, byte_order,
23436                                         type, DW_SND (attr), len);
23437       break;
23438
23439     case DW_FORM_udata:
23440       type = die_type (die, cu);
23441       result = write_constant_as_bytes (obstack, byte_order,
23442                                         type, DW_UNSND (attr), len);
23443       break;
23444
23445     default:
23446       complaint (_("unsupported const value attribute form: '%s'"),
23447                  dwarf_form_name (attr->form));
23448       break;
23449     }
23450
23451   return result;
23452 }
23453
23454 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23455    valid type for this die is found.  */
23456
23457 struct type *
23458 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23459                                 struct dwarf2_per_cu_data *per_cu)
23460 {
23461   struct dwarf2_cu *cu;
23462   struct die_info *die;
23463
23464   if (per_cu->cu == NULL)
23465     load_cu (per_cu, false);
23466   cu = per_cu->cu;
23467   if (!cu)
23468     return NULL;
23469
23470   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23471   if (!die)
23472     return NULL;
23473
23474   return die_type (die, cu);
23475 }
23476
23477 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23478    PER_CU.  */
23479
23480 struct type *
23481 dwarf2_get_die_type (cu_offset die_offset,
23482                      struct dwarf2_per_cu_data *per_cu)
23483 {
23484   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23485   return get_die_type_at_offset (die_offset_sect, per_cu);
23486 }
23487
23488 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23489    On entry *REF_CU is the CU of SRC_DIE.
23490    On exit *REF_CU is the CU of the result.
23491    Returns NULL if the referenced DIE isn't found.  */
23492
23493 static struct die_info *
23494 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23495                   struct dwarf2_cu **ref_cu)
23496 {
23497   struct die_info temp_die;
23498   struct dwarf2_cu *sig_cu, *cu = *ref_cu;
23499   struct die_info *die;
23500
23501   /* While it might be nice to assert sig_type->type == NULL here,
23502      we can get here for DW_AT_imported_declaration where we need
23503      the DIE not the type.  */
23504
23505   /* If necessary, add it to the queue and load its DIEs.  */
23506
23507   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23508     read_signatured_type (sig_type);
23509
23510   sig_cu = sig_type->per_cu.cu;
23511   gdb_assert (sig_cu != NULL);
23512   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23513   temp_die.sect_off = sig_type->type_offset_in_section;
23514   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23515                                                  to_underlying (temp_die.sect_off));
23516   if (die)
23517     {
23518       struct dwarf2_per_objfile *dwarf2_per_objfile
23519         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23520
23521       /* For .gdb_index version 7 keep track of included TUs.
23522          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23523       if (dwarf2_per_objfile->index_table != NULL
23524           && dwarf2_per_objfile->index_table->version <= 7)
23525         {
23526           VEC_safe_push (dwarf2_per_cu_ptr,
23527                          (*ref_cu)->per_cu->imported_symtabs,
23528                          sig_cu->per_cu);
23529         }
23530
23531       *ref_cu = sig_cu;
23532       if (sig_cu != cu)
23533         sig_cu->ancestor = cu;
23534
23535       return die;
23536     }
23537
23538   return NULL;
23539 }
23540
23541 /* Follow signatured type referenced by ATTR in SRC_DIE.
23542    On entry *REF_CU is the CU of SRC_DIE.
23543    On exit *REF_CU is the CU of the result.
23544    The result is the DIE of the type.
23545    If the referenced type cannot be found an error is thrown.  */
23546
23547 static struct die_info *
23548 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23549                 struct dwarf2_cu **ref_cu)
23550 {
23551   ULONGEST signature = DW_SIGNATURE (attr);
23552   struct signatured_type *sig_type;
23553   struct die_info *die;
23554
23555   gdb_assert (attr->form == DW_FORM_ref_sig8);
23556
23557   sig_type = lookup_signatured_type (*ref_cu, signature);
23558   /* sig_type will be NULL if the signatured type is missing from
23559      the debug info.  */
23560   if (sig_type == NULL)
23561     {
23562       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23563                " from DIE at %s [in module %s]"),
23564              hex_string (signature), sect_offset_str (src_die->sect_off),
23565              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23566     }
23567
23568   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23569   if (die == NULL)
23570     {
23571       dump_die_for_error (src_die);
23572       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23573                " from DIE at %s [in module %s]"),
23574              hex_string (signature), sect_offset_str (src_die->sect_off),
23575              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23576     }
23577
23578   return die;
23579 }
23580
23581 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23582    reading in and processing the type unit if necessary.  */
23583
23584 static struct type *
23585 get_signatured_type (struct die_info *die, ULONGEST signature,
23586                      struct dwarf2_cu *cu)
23587 {
23588   struct dwarf2_per_objfile *dwarf2_per_objfile
23589     = cu->per_cu->dwarf2_per_objfile;
23590   struct signatured_type *sig_type;
23591   struct dwarf2_cu *type_cu;
23592   struct die_info *type_die;
23593   struct type *type;
23594
23595   sig_type = lookup_signatured_type (cu, signature);
23596   /* sig_type will be NULL if the signatured type is missing from
23597      the debug info.  */
23598   if (sig_type == NULL)
23599     {
23600       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23601                    " from DIE at %s [in module %s]"),
23602                  hex_string (signature), sect_offset_str (die->sect_off),
23603                  objfile_name (dwarf2_per_objfile->objfile));
23604       return build_error_marker_type (cu, die);
23605     }
23606
23607   /* If we already know the type we're done.  */
23608   if (sig_type->type != NULL)
23609     return sig_type->type;
23610
23611   type_cu = cu;
23612   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23613   if (type_die != NULL)
23614     {
23615       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23616          is created.  This is important, for example, because for c++ classes
23617          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23618       type = read_type_die (type_die, type_cu);
23619       if (type == NULL)
23620         {
23621           complaint (_("Dwarf Error: Cannot build signatured type %s"
23622                        " referenced from DIE at %s [in module %s]"),
23623                      hex_string (signature), sect_offset_str (die->sect_off),
23624                      objfile_name (dwarf2_per_objfile->objfile));
23625           type = build_error_marker_type (cu, die);
23626         }
23627     }
23628   else
23629     {
23630       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23631                    " from DIE at %s [in module %s]"),
23632                  hex_string (signature), sect_offset_str (die->sect_off),
23633                  objfile_name (dwarf2_per_objfile->objfile));
23634       type = build_error_marker_type (cu, die);
23635     }
23636   sig_type->type = type;
23637
23638   return type;
23639 }
23640
23641 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23642    reading in and processing the type unit if necessary.  */
23643
23644 static struct type *
23645 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23646                           struct dwarf2_cu *cu) /* ARI: editCase function */
23647 {
23648   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23649   if (attr_form_is_ref (attr))
23650     {
23651       struct dwarf2_cu *type_cu = cu;
23652       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23653
23654       return read_type_die (type_die, type_cu);
23655     }
23656   else if (attr->form == DW_FORM_ref_sig8)
23657     {
23658       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23659     }
23660   else
23661     {
23662       struct dwarf2_per_objfile *dwarf2_per_objfile
23663         = cu->per_cu->dwarf2_per_objfile;
23664
23665       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23666                    " at %s [in module %s]"),
23667                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23668                  objfile_name (dwarf2_per_objfile->objfile));
23669       return build_error_marker_type (cu, die);
23670     }
23671 }
23672
23673 /* Load the DIEs associated with type unit PER_CU into memory.  */
23674
23675 static void
23676 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23677 {
23678   struct signatured_type *sig_type;
23679
23680   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23681   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23682
23683   /* We have the per_cu, but we need the signatured_type.
23684      Fortunately this is an easy translation.  */
23685   gdb_assert (per_cu->is_debug_types);
23686   sig_type = (struct signatured_type *) per_cu;
23687
23688   gdb_assert (per_cu->cu == NULL);
23689
23690   read_signatured_type (sig_type);
23691
23692   gdb_assert (per_cu->cu != NULL);
23693 }
23694
23695 /* die_reader_func for read_signatured_type.
23696    This is identical to load_full_comp_unit_reader,
23697    but is kept separate for now.  */
23698
23699 static void
23700 read_signatured_type_reader (const struct die_reader_specs *reader,
23701                              const gdb_byte *info_ptr,
23702                              struct die_info *comp_unit_die,
23703                              int has_children,
23704                              void *data)
23705 {
23706   struct dwarf2_cu *cu = reader->cu;
23707
23708   gdb_assert (cu->die_hash == NULL);
23709   cu->die_hash =
23710     htab_create_alloc_ex (cu->header.length / 12,
23711                           die_hash,
23712                           die_eq,
23713                           NULL,
23714                           &cu->comp_unit_obstack,
23715                           hashtab_obstack_allocate,
23716                           dummy_obstack_deallocate);
23717
23718   if (has_children)
23719     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23720                                                   &info_ptr, comp_unit_die);
23721   cu->dies = comp_unit_die;
23722   /* comp_unit_die is not stored in die_hash, no need.  */
23723
23724   /* We try not to read any attributes in this function, because not
23725      all CUs needed for references have been loaded yet, and symbol
23726      table processing isn't initialized.  But we have to set the CU language,
23727      or we won't be able to build types correctly.
23728      Similarly, if we do not read the producer, we can not apply
23729      producer-specific interpretation.  */
23730   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23731 }
23732
23733 /* Read in a signatured type and build its CU and DIEs.
23734    If the type is a stub for the real type in a DWO file,
23735    read in the real type from the DWO file as well.  */
23736
23737 static void
23738 read_signatured_type (struct signatured_type *sig_type)
23739 {
23740   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23741
23742   gdb_assert (per_cu->is_debug_types);
23743   gdb_assert (per_cu->cu == NULL);
23744
23745   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23746                            read_signatured_type_reader, NULL);
23747   sig_type->per_cu.tu_read = 1;
23748 }
23749
23750 /* Decode simple location descriptions.
23751    Given a pointer to a dwarf block that defines a location, compute
23752    the location and return the value.
23753
23754    NOTE drow/2003-11-18: This function is called in two situations
23755    now: for the address of static or global variables (partial symbols
23756    only) and for offsets into structures which are expected to be
23757    (more or less) constant.  The partial symbol case should go away,
23758    and only the constant case should remain.  That will let this
23759    function complain more accurately.  A few special modes are allowed
23760    without complaint for global variables (for instance, global
23761    register values and thread-local values).
23762
23763    A location description containing no operations indicates that the
23764    object is optimized out.  The return value is 0 for that case.
23765    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23766    callers will only want a very basic result and this can become a
23767    complaint.
23768
23769    Note that stack[0] is unused except as a default error return.  */
23770
23771 static CORE_ADDR
23772 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23773 {
23774   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23775   size_t i;
23776   size_t size = blk->size;
23777   const gdb_byte *data = blk->data;
23778   CORE_ADDR stack[64];
23779   int stacki;
23780   unsigned int bytes_read, unsnd;
23781   gdb_byte op;
23782
23783   i = 0;
23784   stacki = 0;
23785   stack[stacki] = 0;
23786   stack[++stacki] = 0;
23787
23788   while (i < size)
23789     {
23790       op = data[i++];
23791       switch (op)
23792         {
23793         case DW_OP_lit0:
23794         case DW_OP_lit1:
23795         case DW_OP_lit2:
23796         case DW_OP_lit3:
23797         case DW_OP_lit4:
23798         case DW_OP_lit5:
23799         case DW_OP_lit6:
23800         case DW_OP_lit7:
23801         case DW_OP_lit8:
23802         case DW_OP_lit9:
23803         case DW_OP_lit10:
23804         case DW_OP_lit11:
23805         case DW_OP_lit12:
23806         case DW_OP_lit13:
23807         case DW_OP_lit14:
23808         case DW_OP_lit15:
23809         case DW_OP_lit16:
23810         case DW_OP_lit17:
23811         case DW_OP_lit18:
23812         case DW_OP_lit19:
23813         case DW_OP_lit20:
23814         case DW_OP_lit21:
23815         case DW_OP_lit22:
23816         case DW_OP_lit23:
23817         case DW_OP_lit24:
23818         case DW_OP_lit25:
23819         case DW_OP_lit26:
23820         case DW_OP_lit27:
23821         case DW_OP_lit28:
23822         case DW_OP_lit29:
23823         case DW_OP_lit30:
23824         case DW_OP_lit31:
23825           stack[++stacki] = op - DW_OP_lit0;
23826           break;
23827
23828         case DW_OP_reg0:
23829         case DW_OP_reg1:
23830         case DW_OP_reg2:
23831         case DW_OP_reg3:
23832         case DW_OP_reg4:
23833         case DW_OP_reg5:
23834         case DW_OP_reg6:
23835         case DW_OP_reg7:
23836         case DW_OP_reg8:
23837         case DW_OP_reg9:
23838         case DW_OP_reg10:
23839         case DW_OP_reg11:
23840         case DW_OP_reg12:
23841         case DW_OP_reg13:
23842         case DW_OP_reg14:
23843         case DW_OP_reg15:
23844         case DW_OP_reg16:
23845         case DW_OP_reg17:
23846         case DW_OP_reg18:
23847         case DW_OP_reg19:
23848         case DW_OP_reg20:
23849         case DW_OP_reg21:
23850         case DW_OP_reg22:
23851         case DW_OP_reg23:
23852         case DW_OP_reg24:
23853         case DW_OP_reg25:
23854         case DW_OP_reg26:
23855         case DW_OP_reg27:
23856         case DW_OP_reg28:
23857         case DW_OP_reg29:
23858         case DW_OP_reg30:
23859         case DW_OP_reg31:
23860           stack[++stacki] = op - DW_OP_reg0;
23861           if (i < size)
23862             dwarf2_complex_location_expr_complaint ();
23863           break;
23864
23865         case DW_OP_regx:
23866           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23867           i += bytes_read;
23868           stack[++stacki] = unsnd;
23869           if (i < size)
23870             dwarf2_complex_location_expr_complaint ();
23871           break;
23872
23873         case DW_OP_addr:
23874           stack[++stacki] = read_address (objfile->obfd, &data[i],
23875                                           cu, &bytes_read);
23876           i += bytes_read;
23877           break;
23878
23879         case DW_OP_const1u:
23880           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23881           i += 1;
23882           break;
23883
23884         case DW_OP_const1s:
23885           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23886           i += 1;
23887           break;
23888
23889         case DW_OP_const2u:
23890           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23891           i += 2;
23892           break;
23893
23894         case DW_OP_const2s:
23895           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23896           i += 2;
23897           break;
23898
23899         case DW_OP_const4u:
23900           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23901           i += 4;
23902           break;
23903
23904         case DW_OP_const4s:
23905           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23906           i += 4;
23907           break;
23908
23909         case DW_OP_const8u:
23910           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23911           i += 8;
23912           break;
23913
23914         case DW_OP_constu:
23915           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23916                                                   &bytes_read);
23917           i += bytes_read;
23918           break;
23919
23920         case DW_OP_consts:
23921           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23922           i += bytes_read;
23923           break;
23924
23925         case DW_OP_dup:
23926           stack[stacki + 1] = stack[stacki];
23927           stacki++;
23928           break;
23929
23930         case DW_OP_plus:
23931           stack[stacki - 1] += stack[stacki];
23932           stacki--;
23933           break;
23934
23935         case DW_OP_plus_uconst:
23936           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23937                                                  &bytes_read);
23938           i += bytes_read;
23939           break;
23940
23941         case DW_OP_minus:
23942           stack[stacki - 1] -= stack[stacki];
23943           stacki--;
23944           break;
23945
23946         case DW_OP_deref:
23947           /* If we're not the last op, then we definitely can't encode
23948              this using GDB's address_class enum.  This is valid for partial
23949              global symbols, although the variable's address will be bogus
23950              in the psymtab.  */
23951           if (i < size)
23952             dwarf2_complex_location_expr_complaint ();
23953           break;
23954
23955         case DW_OP_GNU_push_tls_address:
23956         case DW_OP_form_tls_address:
23957           /* The top of the stack has the offset from the beginning
23958              of the thread control block at which the variable is located.  */
23959           /* Nothing should follow this operator, so the top of stack would
23960              be returned.  */
23961           /* This is valid for partial global symbols, but the variable's
23962              address will be bogus in the psymtab.  Make it always at least
23963              non-zero to not look as a variable garbage collected by linker
23964              which have DW_OP_addr 0.  */
23965           if (i < size)
23966             dwarf2_complex_location_expr_complaint ();
23967           stack[stacki]++;
23968           break;
23969
23970         case DW_OP_GNU_uninit:
23971           break;
23972
23973         case DW_OP_addrx:
23974         case DW_OP_GNU_addr_index:
23975         case DW_OP_GNU_const_index:
23976           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23977                                                          &bytes_read);
23978           i += bytes_read;
23979           break;
23980
23981         default:
23982           {
23983             const char *name = get_DW_OP_name (op);
23984
23985             if (name)
23986               complaint (_("unsupported stack op: '%s'"),
23987                          name);
23988             else
23989               complaint (_("unsupported stack op: '%02x'"),
23990                          op);
23991           }
23992
23993           return (stack[stacki]);
23994         }
23995
23996       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23997          outside of the allocated space.  Also enforce minimum>0.  */
23998       if (stacki >= ARRAY_SIZE (stack) - 1)
23999         {
24000           complaint (_("location description stack overflow"));
24001           return 0;
24002         }
24003
24004       if (stacki <= 0)
24005         {
24006           complaint (_("location description stack underflow"));
24007           return 0;
24008         }
24009     }
24010   return (stack[stacki]);
24011 }
24012
24013 /* memory allocation interface */
24014
24015 static struct dwarf_block *
24016 dwarf_alloc_block (struct dwarf2_cu *cu)
24017 {
24018   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
24019 }
24020
24021 static struct die_info *
24022 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
24023 {
24024   struct die_info *die;
24025   size_t size = sizeof (struct die_info);
24026
24027   if (num_attrs > 1)
24028     size += (num_attrs - 1) * sizeof (struct attribute);
24029
24030   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
24031   memset (die, 0, sizeof (struct die_info));
24032   return (die);
24033 }
24034
24035 \f
24036 /* Macro support.  */
24037
24038 /* Return file name relative to the compilation directory of file number I in
24039    *LH's file name table.  The result is allocated using xmalloc; the caller is
24040    responsible for freeing it.  */
24041
24042 static char *
24043 file_file_name (int file, struct line_header *lh)
24044 {
24045   /* Is the file number a valid index into the line header's file name
24046      table?  Remember that file numbers start with one, not zero.  */
24047   if (1 <= file && file <= lh->file_names.size ())
24048     {
24049       const file_entry &fe = lh->file_names[file - 1];
24050
24051       if (!IS_ABSOLUTE_PATH (fe.name))
24052         {
24053           const char *dir = fe.include_dir (lh);
24054           if (dir != NULL)
24055             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
24056         }
24057       return xstrdup (fe.name);
24058     }
24059   else
24060     {
24061       /* The compiler produced a bogus file number.  We can at least
24062          record the macro definitions made in the file, even if we
24063          won't be able to find the file by name.  */
24064       char fake_name[80];
24065
24066       xsnprintf (fake_name, sizeof (fake_name),
24067                  "<bad macro file number %d>", file);
24068
24069       complaint (_("bad file number in macro information (%d)"),
24070                  file);
24071
24072       return xstrdup (fake_name);
24073     }
24074 }
24075
24076 /* Return the full name of file number I in *LH's file name table.
24077    Use COMP_DIR as the name of the current directory of the
24078    compilation.  The result is allocated using xmalloc; the caller is
24079    responsible for freeing it.  */
24080 static char *
24081 file_full_name (int file, struct line_header *lh, const char *comp_dir)
24082 {
24083   /* Is the file number a valid index into the line header's file name
24084      table?  Remember that file numbers start with one, not zero.  */
24085   if (1 <= file && file <= lh->file_names.size ())
24086     {
24087       char *relative = file_file_name (file, lh);
24088
24089       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
24090         return relative;
24091       return reconcat (relative, comp_dir, SLASH_STRING,
24092                        relative, (char *) NULL);
24093     }
24094   else
24095     return file_file_name (file, lh);
24096 }
24097
24098
24099 static struct macro_source_file *
24100 macro_start_file (struct dwarf2_cu *cu,
24101                   int file, int line,
24102                   struct macro_source_file *current_file,
24103                   struct line_header *lh)
24104 {
24105   /* File name relative to the compilation directory of this source file.  */
24106   char *file_name = file_file_name (file, lh);
24107
24108   if (! current_file)
24109     {
24110       /* Note: We don't create a macro table for this compilation unit
24111          at all until we actually get a filename.  */
24112       struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
24113
24114       /* If we have no current file, then this must be the start_file
24115          directive for the compilation unit's main source file.  */
24116       current_file = macro_set_main (macro_table, file_name);
24117       macro_define_special (macro_table);
24118     }
24119   else
24120     current_file = macro_include (current_file, line, file_name);
24121
24122   xfree (file_name);
24123
24124   return current_file;
24125 }
24126
24127 static const char *
24128 consume_improper_spaces (const char *p, const char *body)
24129 {
24130   if (*p == ' ')
24131     {
24132       complaint (_("macro definition contains spaces "
24133                    "in formal argument list:\n`%s'"),
24134                  body);
24135
24136       while (*p == ' ')
24137         p++;
24138     }
24139
24140   return p;
24141 }
24142
24143
24144 static void
24145 parse_macro_definition (struct macro_source_file *file, int line,
24146                         const char *body)
24147 {
24148   const char *p;
24149
24150   /* The body string takes one of two forms.  For object-like macro
24151      definitions, it should be:
24152
24153         <macro name> " " <definition>
24154
24155      For function-like macro definitions, it should be:
24156
24157         <macro name> "() " <definition>
24158      or
24159         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24160
24161      Spaces may appear only where explicitly indicated, and in the
24162      <definition>.
24163
24164      The Dwarf 2 spec says that an object-like macro's name is always
24165      followed by a space, but versions of GCC around March 2002 omit
24166      the space when the macro's definition is the empty string.
24167
24168      The Dwarf 2 spec says that there should be no spaces between the
24169      formal arguments in a function-like macro's formal argument list,
24170      but versions of GCC around March 2002 include spaces after the
24171      commas.  */
24172
24173
24174   /* Find the extent of the macro name.  The macro name is terminated
24175      by either a space or null character (for an object-like macro) or
24176      an opening paren (for a function-like macro).  */
24177   for (p = body; *p; p++)
24178     if (*p == ' ' || *p == '(')
24179       break;
24180
24181   if (*p == ' ' || *p == '\0')
24182     {
24183       /* It's an object-like macro.  */
24184       int name_len = p - body;
24185       char *name = savestring (body, name_len);
24186       const char *replacement;
24187
24188       if (*p == ' ')
24189         replacement = body + name_len + 1;
24190       else
24191         {
24192           dwarf2_macro_malformed_definition_complaint (body);
24193           replacement = body + name_len;
24194         }
24195
24196       macro_define_object (file, line, name, replacement);
24197
24198       xfree (name);
24199     }
24200   else if (*p == '(')
24201     {
24202       /* It's a function-like macro.  */
24203       char *name = savestring (body, p - body);
24204       int argc = 0;
24205       int argv_size = 1;
24206       char **argv = XNEWVEC (char *, argv_size);
24207
24208       p++;
24209
24210       p = consume_improper_spaces (p, body);
24211
24212       /* Parse the formal argument list.  */
24213       while (*p && *p != ')')
24214         {
24215           /* Find the extent of the current argument name.  */
24216           const char *arg_start = p;
24217
24218           while (*p && *p != ',' && *p != ')' && *p != ' ')
24219             p++;
24220
24221           if (! *p || p == arg_start)
24222             dwarf2_macro_malformed_definition_complaint (body);
24223           else
24224             {
24225               /* Make sure argv has room for the new argument.  */
24226               if (argc >= argv_size)
24227                 {
24228                   argv_size *= 2;
24229                   argv = XRESIZEVEC (char *, argv, argv_size);
24230                 }
24231
24232               argv[argc++] = savestring (arg_start, p - arg_start);
24233             }
24234
24235           p = consume_improper_spaces (p, body);
24236
24237           /* Consume the comma, if present.  */
24238           if (*p == ',')
24239             {
24240               p++;
24241
24242               p = consume_improper_spaces (p, body);
24243             }
24244         }
24245
24246       if (*p == ')')
24247         {
24248           p++;
24249
24250           if (*p == ' ')
24251             /* Perfectly formed definition, no complaints.  */
24252             macro_define_function (file, line, name,
24253                                    argc, (const char **) argv,
24254                                    p + 1);
24255           else if (*p == '\0')
24256             {
24257               /* Complain, but do define it.  */
24258               dwarf2_macro_malformed_definition_complaint (body);
24259               macro_define_function (file, line, name,
24260                                      argc, (const char **) argv,
24261                                      p);
24262             }
24263           else
24264             /* Just complain.  */
24265             dwarf2_macro_malformed_definition_complaint (body);
24266         }
24267       else
24268         /* Just complain.  */
24269         dwarf2_macro_malformed_definition_complaint (body);
24270
24271       xfree (name);
24272       {
24273         int i;
24274
24275         for (i = 0; i < argc; i++)
24276           xfree (argv[i]);
24277       }
24278       xfree (argv);
24279     }
24280   else
24281     dwarf2_macro_malformed_definition_complaint (body);
24282 }
24283
24284 /* Skip some bytes from BYTES according to the form given in FORM.
24285    Returns the new pointer.  */
24286
24287 static const gdb_byte *
24288 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24289                  enum dwarf_form form,
24290                  unsigned int offset_size,
24291                  struct dwarf2_section_info *section)
24292 {
24293   unsigned int bytes_read;
24294
24295   switch (form)
24296     {
24297     case DW_FORM_data1:
24298     case DW_FORM_flag:
24299       ++bytes;
24300       break;
24301
24302     case DW_FORM_data2:
24303       bytes += 2;
24304       break;
24305
24306     case DW_FORM_data4:
24307       bytes += 4;
24308       break;
24309
24310     case DW_FORM_data8:
24311       bytes += 8;
24312       break;
24313
24314     case DW_FORM_data16:
24315       bytes += 16;
24316       break;
24317
24318     case DW_FORM_string:
24319       read_direct_string (abfd, bytes, &bytes_read);
24320       bytes += bytes_read;
24321       break;
24322
24323     case DW_FORM_sec_offset:
24324     case DW_FORM_strp:
24325     case DW_FORM_GNU_strp_alt:
24326       bytes += offset_size;
24327       break;
24328
24329     case DW_FORM_block:
24330       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24331       bytes += bytes_read;
24332       break;
24333
24334     case DW_FORM_block1:
24335       bytes += 1 + read_1_byte (abfd, bytes);
24336       break;
24337     case DW_FORM_block2:
24338       bytes += 2 + read_2_bytes (abfd, bytes);
24339       break;
24340     case DW_FORM_block4:
24341       bytes += 4 + read_4_bytes (abfd, bytes);
24342       break;
24343
24344     case DW_FORM_addrx:
24345     case DW_FORM_sdata:
24346     case DW_FORM_strx:
24347     case DW_FORM_udata:
24348     case DW_FORM_GNU_addr_index:
24349     case DW_FORM_GNU_str_index:
24350       bytes = gdb_skip_leb128 (bytes, buffer_end);
24351       if (bytes == NULL)
24352         {
24353           dwarf2_section_buffer_overflow_complaint (section);
24354           return NULL;
24355         }
24356       break;
24357
24358     case DW_FORM_implicit_const:
24359       break;
24360
24361     default:
24362       {
24363         complaint (_("invalid form 0x%x in `%s'"),
24364                    form, get_section_name (section));
24365         return NULL;
24366       }
24367     }
24368
24369   return bytes;
24370 }
24371
24372 /* A helper for dwarf_decode_macros that handles skipping an unknown
24373    opcode.  Returns an updated pointer to the macro data buffer; or,
24374    on error, issues a complaint and returns NULL.  */
24375
24376 static const gdb_byte *
24377 skip_unknown_opcode (unsigned int opcode,
24378                      const gdb_byte **opcode_definitions,
24379                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24380                      bfd *abfd,
24381                      unsigned int offset_size,
24382                      struct dwarf2_section_info *section)
24383 {
24384   unsigned int bytes_read, i;
24385   unsigned long arg;
24386   const gdb_byte *defn;
24387
24388   if (opcode_definitions[opcode] == NULL)
24389     {
24390       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24391                  opcode);
24392       return NULL;
24393     }
24394
24395   defn = opcode_definitions[opcode];
24396   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24397   defn += bytes_read;
24398
24399   for (i = 0; i < arg; ++i)
24400     {
24401       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24402                                  (enum dwarf_form) defn[i], offset_size,
24403                                  section);
24404       if (mac_ptr == NULL)
24405         {
24406           /* skip_form_bytes already issued the complaint.  */
24407           return NULL;
24408         }
24409     }
24410
24411   return mac_ptr;
24412 }
24413
24414 /* A helper function which parses the header of a macro section.
24415    If the macro section is the extended (for now called "GNU") type,
24416    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24417    the header, or issues a complaint and returns NULL on error.  */
24418
24419 static const gdb_byte *
24420 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24421                           bfd *abfd,
24422                           const gdb_byte *mac_ptr,
24423                           unsigned int *offset_size,
24424                           int section_is_gnu)
24425 {
24426   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24427
24428   if (section_is_gnu)
24429     {
24430       unsigned int version, flags;
24431
24432       version = read_2_bytes (abfd, mac_ptr);
24433       if (version != 4 && version != 5)
24434         {
24435           complaint (_("unrecognized version `%d' in .debug_macro section"),
24436                      version);
24437           return NULL;
24438         }
24439       mac_ptr += 2;
24440
24441       flags = read_1_byte (abfd, mac_ptr);
24442       ++mac_ptr;
24443       *offset_size = (flags & 1) ? 8 : 4;
24444
24445       if ((flags & 2) != 0)
24446         /* We don't need the line table offset.  */
24447         mac_ptr += *offset_size;
24448
24449       /* Vendor opcode descriptions.  */
24450       if ((flags & 4) != 0)
24451         {
24452           unsigned int i, count;
24453
24454           count = read_1_byte (abfd, mac_ptr);
24455           ++mac_ptr;
24456           for (i = 0; i < count; ++i)
24457             {
24458               unsigned int opcode, bytes_read;
24459               unsigned long arg;
24460
24461               opcode = read_1_byte (abfd, mac_ptr);
24462               ++mac_ptr;
24463               opcode_definitions[opcode] = mac_ptr;
24464               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24465               mac_ptr += bytes_read;
24466               mac_ptr += arg;
24467             }
24468         }
24469     }
24470
24471   return mac_ptr;
24472 }
24473
24474 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24475    including DW_MACRO_import.  */
24476
24477 static void
24478 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24479                           bfd *abfd,
24480                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24481                           struct macro_source_file *current_file,
24482                           struct line_header *lh,
24483                           struct dwarf2_section_info *section,
24484                           int section_is_gnu, int section_is_dwz,
24485                           unsigned int offset_size,
24486                           htab_t include_hash)
24487 {
24488   struct dwarf2_per_objfile *dwarf2_per_objfile
24489     = cu->per_cu->dwarf2_per_objfile;
24490   struct objfile *objfile = dwarf2_per_objfile->objfile;
24491   enum dwarf_macro_record_type macinfo_type;
24492   int at_commandline;
24493   const gdb_byte *opcode_definitions[256];
24494
24495   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24496                                       &offset_size, section_is_gnu);
24497   if (mac_ptr == NULL)
24498     {
24499       /* We already issued a complaint.  */
24500       return;
24501     }
24502
24503   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24504      GDB is still reading the definitions from command line.  First
24505      DW_MACINFO_start_file will need to be ignored as it was already executed
24506      to create CURRENT_FILE for the main source holding also the command line
24507      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24508      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24509
24510   at_commandline = 1;
24511
24512   do
24513     {
24514       /* Do we at least have room for a macinfo type byte?  */
24515       if (mac_ptr >= mac_end)
24516         {
24517           dwarf2_section_buffer_overflow_complaint (section);
24518           break;
24519         }
24520
24521       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24522       mac_ptr++;
24523
24524       /* Note that we rely on the fact that the corresponding GNU and
24525          DWARF constants are the same.  */
24526       DIAGNOSTIC_PUSH
24527       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24528       switch (macinfo_type)
24529         {
24530           /* A zero macinfo type indicates the end of the macro
24531              information.  */
24532         case 0:
24533           break;
24534
24535         case DW_MACRO_define:
24536         case DW_MACRO_undef:
24537         case DW_MACRO_define_strp:
24538         case DW_MACRO_undef_strp:
24539         case DW_MACRO_define_sup:
24540         case DW_MACRO_undef_sup:
24541           {
24542             unsigned int bytes_read;
24543             int line;
24544             const char *body;
24545             int is_define;
24546
24547             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24548             mac_ptr += bytes_read;
24549
24550             if (macinfo_type == DW_MACRO_define
24551                 || macinfo_type == DW_MACRO_undef)
24552               {
24553                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24554                 mac_ptr += bytes_read;
24555               }
24556             else
24557               {
24558                 LONGEST str_offset;
24559
24560                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24561                 mac_ptr += offset_size;
24562
24563                 if (macinfo_type == DW_MACRO_define_sup
24564                     || macinfo_type == DW_MACRO_undef_sup
24565                     || section_is_dwz)
24566                   {
24567                     struct dwz_file *dwz
24568                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24569
24570                     body = read_indirect_string_from_dwz (objfile,
24571                                                           dwz, str_offset);
24572                   }
24573                 else
24574                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24575                                                          abfd, str_offset);
24576               }
24577
24578             is_define = (macinfo_type == DW_MACRO_define
24579                          || macinfo_type == DW_MACRO_define_strp
24580                          || macinfo_type == DW_MACRO_define_sup);
24581             if (! current_file)
24582               {
24583                 /* DWARF violation as no main source is present.  */
24584                 complaint (_("debug info with no main source gives macro %s "
24585                              "on line %d: %s"),
24586                            is_define ? _("definition") : _("undefinition"),
24587                            line, body);
24588                 break;
24589               }
24590             if ((line == 0 && !at_commandline)
24591                 || (line != 0 && at_commandline))
24592               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24593                          at_commandline ? _("command-line") : _("in-file"),
24594                          is_define ? _("definition") : _("undefinition"),
24595                          line == 0 ? _("zero") : _("non-zero"), line, body);
24596
24597             if (body == NULL)
24598               {
24599                 /* Fedora's rpm-build's "debugedit" binary
24600                    corrupted .debug_macro sections.
24601
24602                    For more info, see
24603                    https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
24604                 complaint (_("debug info gives %s invalid macro %s "
24605                              "without body (corrupted?) at line %d "
24606                              "on file %s"),
24607                            at_commandline ? _("command-line") : _("in-file"),
24608                            is_define ? _("definition") : _("undefinition"),
24609                            line, current_file->filename);
24610               }
24611             else if (is_define)
24612               parse_macro_definition (current_file, line, body);
24613             else
24614               {
24615                 gdb_assert (macinfo_type == DW_MACRO_undef
24616                             || macinfo_type == DW_MACRO_undef_strp
24617                             || macinfo_type == DW_MACRO_undef_sup);
24618                 macro_undef (current_file, line, body);
24619               }
24620           }
24621           break;
24622
24623         case DW_MACRO_start_file:
24624           {
24625             unsigned int bytes_read;
24626             int line, file;
24627
24628             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24629             mac_ptr += bytes_read;
24630             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24631             mac_ptr += bytes_read;
24632
24633             if ((line == 0 && !at_commandline)
24634                 || (line != 0 && at_commandline))
24635               complaint (_("debug info gives source %d included "
24636                            "from %s at %s line %d"),
24637                          file, at_commandline ? _("command-line") : _("file"),
24638                          line == 0 ? _("zero") : _("non-zero"), line);
24639
24640             if (at_commandline)
24641               {
24642                 /* This DW_MACRO_start_file was executed in the
24643                    pass one.  */
24644                 at_commandline = 0;
24645               }
24646             else
24647               current_file = macro_start_file (cu, file, line, current_file,
24648                                                lh);
24649           }
24650           break;
24651
24652         case DW_MACRO_end_file:
24653           if (! current_file)
24654             complaint (_("macro debug info has an unmatched "
24655                          "`close_file' directive"));
24656           else
24657             {
24658               current_file = current_file->included_by;
24659               if (! current_file)
24660                 {
24661                   enum dwarf_macro_record_type next_type;
24662
24663                   /* GCC circa March 2002 doesn't produce the zero
24664                      type byte marking the end of the compilation
24665                      unit.  Complain if it's not there, but exit no
24666                      matter what.  */
24667
24668                   /* Do we at least have room for a macinfo type byte?  */
24669                   if (mac_ptr >= mac_end)
24670                     {
24671                       dwarf2_section_buffer_overflow_complaint (section);
24672                       return;
24673                     }
24674
24675                   /* We don't increment mac_ptr here, so this is just
24676                      a look-ahead.  */
24677                   next_type
24678                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24679                                                                   mac_ptr);
24680                   if (next_type != 0)
24681                     complaint (_("no terminating 0-type entry for "
24682                                  "macros in `.debug_macinfo' section"));
24683
24684                   return;
24685                 }
24686             }
24687           break;
24688
24689         case DW_MACRO_import:
24690         case DW_MACRO_import_sup:
24691           {
24692             LONGEST offset;
24693             void **slot;
24694             bfd *include_bfd = abfd;
24695             struct dwarf2_section_info *include_section = section;
24696             const gdb_byte *include_mac_end = mac_end;
24697             int is_dwz = section_is_dwz;
24698             const gdb_byte *new_mac_ptr;
24699
24700             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24701             mac_ptr += offset_size;
24702
24703             if (macinfo_type == DW_MACRO_import_sup)
24704               {
24705                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24706
24707                 dwarf2_read_section (objfile, &dwz->macro);
24708
24709                 include_section = &dwz->macro;
24710                 include_bfd = get_section_bfd_owner (include_section);
24711                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24712                 is_dwz = 1;
24713               }
24714
24715             new_mac_ptr = include_section->buffer + offset;
24716             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24717
24718             if (*slot != NULL)
24719               {
24720                 /* This has actually happened; see
24721                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24722                 complaint (_("recursive DW_MACRO_import in "
24723                              ".debug_macro section"));
24724               }
24725             else
24726               {
24727                 *slot = (void *) new_mac_ptr;
24728
24729                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24730                                           include_mac_end, current_file, lh,
24731                                           section, section_is_gnu, is_dwz,
24732                                           offset_size, include_hash);
24733
24734                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24735               }
24736           }
24737           break;
24738
24739         case DW_MACINFO_vendor_ext:
24740           if (!section_is_gnu)
24741             {
24742               unsigned int bytes_read;
24743
24744               /* This reads the constant, but since we don't recognize
24745                  any vendor extensions, we ignore it.  */
24746               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24747               mac_ptr += bytes_read;
24748               read_direct_string (abfd, mac_ptr, &bytes_read);
24749               mac_ptr += bytes_read;
24750
24751               /* We don't recognize any vendor extensions.  */
24752               break;
24753             }
24754           /* FALLTHROUGH */
24755
24756         default:
24757           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24758                                          mac_ptr, mac_end, abfd, offset_size,
24759                                          section);
24760           if (mac_ptr == NULL)
24761             return;
24762           break;
24763         }
24764       DIAGNOSTIC_POP
24765     } while (macinfo_type != 0);
24766 }
24767
24768 static void
24769 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24770                      int section_is_gnu)
24771 {
24772   struct dwarf2_per_objfile *dwarf2_per_objfile
24773     = cu->per_cu->dwarf2_per_objfile;
24774   struct objfile *objfile = dwarf2_per_objfile->objfile;
24775   struct line_header *lh = cu->line_header;
24776   bfd *abfd;
24777   const gdb_byte *mac_ptr, *mac_end;
24778   struct macro_source_file *current_file = 0;
24779   enum dwarf_macro_record_type macinfo_type;
24780   unsigned int offset_size = cu->header.offset_size;
24781   const gdb_byte *opcode_definitions[256];
24782   void **slot;
24783   struct dwarf2_section_info *section;
24784   const char *section_name;
24785
24786   if (cu->dwo_unit != NULL)
24787     {
24788       if (section_is_gnu)
24789         {
24790           section = &cu->dwo_unit->dwo_file->sections.macro;
24791           section_name = ".debug_macro.dwo";
24792         }
24793       else
24794         {
24795           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24796           section_name = ".debug_macinfo.dwo";
24797         }
24798     }
24799   else
24800     {
24801       if (section_is_gnu)
24802         {
24803           section = &dwarf2_per_objfile->macro;
24804           section_name = ".debug_macro";
24805         }
24806       else
24807         {
24808           section = &dwarf2_per_objfile->macinfo;
24809           section_name = ".debug_macinfo";
24810         }
24811     }
24812
24813   dwarf2_read_section (objfile, section);
24814   if (section->buffer == NULL)
24815     {
24816       complaint (_("missing %s section"), section_name);
24817       return;
24818     }
24819   abfd = get_section_bfd_owner (section);
24820
24821   /* First pass: Find the name of the base filename.
24822      This filename is needed in order to process all macros whose definition
24823      (or undefinition) comes from the command line.  These macros are defined
24824      before the first DW_MACINFO_start_file entry, and yet still need to be
24825      associated to the base file.
24826
24827      To determine the base file name, we scan the macro definitions until we
24828      reach the first DW_MACINFO_start_file entry.  We then initialize
24829      CURRENT_FILE accordingly so that any macro definition found before the
24830      first DW_MACINFO_start_file can still be associated to the base file.  */
24831
24832   mac_ptr = section->buffer + offset;
24833   mac_end = section->buffer + section->size;
24834
24835   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24836                                       &offset_size, section_is_gnu);
24837   if (mac_ptr == NULL)
24838     {
24839       /* We already issued a complaint.  */
24840       return;
24841     }
24842
24843   do
24844     {
24845       /* Do we at least have room for a macinfo type byte?  */
24846       if (mac_ptr >= mac_end)
24847         {
24848           /* Complaint is printed during the second pass as GDB will probably
24849              stop the first pass earlier upon finding
24850              DW_MACINFO_start_file.  */
24851           break;
24852         }
24853
24854       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24855       mac_ptr++;
24856
24857       /* Note that we rely on the fact that the corresponding GNU and
24858          DWARF constants are the same.  */
24859       DIAGNOSTIC_PUSH
24860       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24861       switch (macinfo_type)
24862         {
24863           /* A zero macinfo type indicates the end of the macro
24864              information.  */
24865         case 0:
24866           break;
24867
24868         case DW_MACRO_define:
24869         case DW_MACRO_undef:
24870           /* Only skip the data by MAC_PTR.  */
24871           {
24872             unsigned int bytes_read;
24873
24874             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24875             mac_ptr += bytes_read;
24876             read_direct_string (abfd, mac_ptr, &bytes_read);
24877             mac_ptr += bytes_read;
24878           }
24879           break;
24880
24881         case DW_MACRO_start_file:
24882           {
24883             unsigned int bytes_read;
24884             int line, file;
24885
24886             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24887             mac_ptr += bytes_read;
24888             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24889             mac_ptr += bytes_read;
24890
24891             current_file = macro_start_file (cu, file, line, current_file, lh);
24892           }
24893           break;
24894
24895         case DW_MACRO_end_file:
24896           /* No data to skip by MAC_PTR.  */
24897           break;
24898
24899         case DW_MACRO_define_strp:
24900         case DW_MACRO_undef_strp:
24901         case DW_MACRO_define_sup:
24902         case DW_MACRO_undef_sup:
24903           {
24904             unsigned int bytes_read;
24905
24906             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24907             mac_ptr += bytes_read;
24908             mac_ptr += offset_size;
24909           }
24910           break;
24911
24912         case DW_MACRO_import:
24913         case DW_MACRO_import_sup:
24914           /* Note that, according to the spec, a transparent include
24915              chain cannot call DW_MACRO_start_file.  So, we can just
24916              skip this opcode.  */
24917           mac_ptr += offset_size;
24918           break;
24919
24920         case DW_MACINFO_vendor_ext:
24921           /* Only skip the data by MAC_PTR.  */
24922           if (!section_is_gnu)
24923             {
24924               unsigned int bytes_read;
24925
24926               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24927               mac_ptr += bytes_read;
24928               read_direct_string (abfd, mac_ptr, &bytes_read);
24929               mac_ptr += bytes_read;
24930             }
24931           /* FALLTHROUGH */
24932
24933         default:
24934           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24935                                          mac_ptr, mac_end, abfd, offset_size,
24936                                          section);
24937           if (mac_ptr == NULL)
24938             return;
24939           break;
24940         }
24941       DIAGNOSTIC_POP
24942     } while (macinfo_type != 0 && current_file == NULL);
24943
24944   /* Second pass: Process all entries.
24945
24946      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24947      command-line macro definitions/undefinitions.  This flag is unset when we
24948      reach the first DW_MACINFO_start_file entry.  */
24949
24950   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24951                                            htab_eq_pointer,
24952                                            NULL, xcalloc, xfree));
24953   mac_ptr = section->buffer + offset;
24954   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24955   *slot = (void *) mac_ptr;
24956   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24957                             current_file, lh, section,
24958                             section_is_gnu, 0, offset_size,
24959                             include_hash.get ());
24960 }
24961
24962 /* Check if the attribute's form is a DW_FORM_block*
24963    if so return true else false.  */
24964
24965 static int
24966 attr_form_is_block (const struct attribute *attr)
24967 {
24968   return (attr == NULL ? 0 :
24969       attr->form == DW_FORM_block1
24970       || attr->form == DW_FORM_block2
24971       || attr->form == DW_FORM_block4
24972       || attr->form == DW_FORM_block
24973       || attr->form == DW_FORM_exprloc);
24974 }
24975
24976 /* Return non-zero if ATTR's value is a section offset --- classes
24977    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24978    You may use DW_UNSND (attr) to retrieve such offsets.
24979
24980    Section 7.5.4, "Attribute Encodings", explains that no attribute
24981    may have a value that belongs to more than one of these classes; it
24982    would be ambiguous if we did, because we use the same forms for all
24983    of them.  */
24984
24985 static int
24986 attr_form_is_section_offset (const struct attribute *attr)
24987 {
24988   return (attr->form == DW_FORM_data4
24989           || attr->form == DW_FORM_data8
24990           || attr->form == DW_FORM_sec_offset);
24991 }
24992
24993 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24994    zero otherwise.  When this function returns true, you can apply
24995    dwarf2_get_attr_constant_value to it.
24996
24997    However, note that for some attributes you must check
24998    attr_form_is_section_offset before using this test.  DW_FORM_data4
24999    and DW_FORM_data8 are members of both the constant class, and of
25000    the classes that contain offsets into other debug sections
25001    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
25002    that, if an attribute's can be either a constant or one of the
25003    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
25004    taken as section offsets, not constants.
25005
25006    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
25007    cannot handle that.  */
25008
25009 static int
25010 attr_form_is_constant (const struct attribute *attr)
25011 {
25012   switch (attr->form)
25013     {
25014     case DW_FORM_sdata:
25015     case DW_FORM_udata:
25016     case DW_FORM_data1:
25017     case DW_FORM_data2:
25018     case DW_FORM_data4:
25019     case DW_FORM_data8:
25020     case DW_FORM_implicit_const:
25021       return 1;
25022     default:
25023       return 0;
25024     }
25025 }
25026
25027
25028 /* DW_ADDR is always stored already as sect_offset; despite for the forms
25029    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
25030
25031 static int
25032 attr_form_is_ref (const struct attribute *attr)
25033 {
25034   switch (attr->form)
25035     {
25036     case DW_FORM_ref_addr:
25037     case DW_FORM_ref1:
25038     case DW_FORM_ref2:
25039     case DW_FORM_ref4:
25040     case DW_FORM_ref8:
25041     case DW_FORM_ref_udata:
25042     case DW_FORM_GNU_ref_alt:
25043       return 1;
25044     default:
25045       return 0;
25046     }
25047 }
25048
25049 /* Return the .debug_loc section to use for CU.
25050    For DWO files use .debug_loc.dwo.  */
25051
25052 static struct dwarf2_section_info *
25053 cu_debug_loc_section (struct dwarf2_cu *cu)
25054 {
25055   struct dwarf2_per_objfile *dwarf2_per_objfile
25056     = cu->per_cu->dwarf2_per_objfile;
25057
25058   if (cu->dwo_unit)
25059     {
25060       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
25061       
25062       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
25063     }
25064   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
25065                                   : &dwarf2_per_objfile->loc);
25066 }
25067
25068 /* A helper function that fills in a dwarf2_loclist_baton.  */
25069
25070 static void
25071 fill_in_loclist_baton (struct dwarf2_cu *cu,
25072                        struct dwarf2_loclist_baton *baton,
25073                        const struct attribute *attr)
25074 {
25075   struct dwarf2_per_objfile *dwarf2_per_objfile
25076     = cu->per_cu->dwarf2_per_objfile;
25077   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25078
25079   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
25080
25081   baton->per_cu = cu->per_cu;
25082   gdb_assert (baton->per_cu);
25083   /* We don't know how long the location list is, but make sure we
25084      don't run off the edge of the section.  */
25085   baton->size = section->size - DW_UNSND (attr);
25086   baton->data = section->buffer + DW_UNSND (attr);
25087   baton->base_address = cu->base_address;
25088   baton->from_dwo = cu->dwo_unit != NULL;
25089 }
25090
25091 static void
25092 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
25093                              struct dwarf2_cu *cu, int is_block)
25094 {
25095   struct dwarf2_per_objfile *dwarf2_per_objfile
25096     = cu->per_cu->dwarf2_per_objfile;
25097   struct objfile *objfile = dwarf2_per_objfile->objfile;
25098   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25099
25100   if (attr_form_is_section_offset (attr)
25101       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
25102          the section.  If so, fall through to the complaint in the
25103          other branch.  */
25104       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
25105     {
25106       struct dwarf2_loclist_baton *baton;
25107
25108       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25109
25110       fill_in_loclist_baton (cu, baton, attr);
25111
25112       if (cu->base_known == 0)
25113         complaint (_("Location list used without "
25114                      "specifying the CU base address."));
25115
25116       SYMBOL_ACLASS_INDEX (sym) = (is_block
25117                                    ? dwarf2_loclist_block_index
25118                                    : dwarf2_loclist_index);
25119       SYMBOL_LOCATION_BATON (sym) = baton;
25120     }
25121   else
25122     {
25123       struct dwarf2_locexpr_baton *baton;
25124
25125       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25126       baton->per_cu = cu->per_cu;
25127       gdb_assert (baton->per_cu);
25128
25129       if (attr_form_is_block (attr))
25130         {
25131           /* Note that we're just copying the block's data pointer
25132              here, not the actual data.  We're still pointing into the
25133              info_buffer for SYM's objfile; right now we never release
25134              that buffer, but when we do clean up properly this may
25135              need to change.  */
25136           baton->size = DW_BLOCK (attr)->size;
25137           baton->data = DW_BLOCK (attr)->data;
25138         }
25139       else
25140         {
25141           dwarf2_invalid_attrib_class_complaint ("location description",
25142                                                  SYMBOL_NATURAL_NAME (sym));
25143           baton->size = 0;
25144         }
25145
25146       SYMBOL_ACLASS_INDEX (sym) = (is_block
25147                                    ? dwarf2_locexpr_block_index
25148                                    : dwarf2_locexpr_index);
25149       SYMBOL_LOCATION_BATON (sym) = baton;
25150     }
25151 }
25152
25153 /* Return the OBJFILE associated with the compilation unit CU.  If CU
25154    came from a separate debuginfo file, then the master objfile is
25155    returned.  */
25156
25157 struct objfile *
25158 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25159 {
25160   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25161
25162   /* Return the master objfile, so that we can report and look up the
25163      correct file containing this variable.  */
25164   if (objfile->separate_debug_objfile_backlink)
25165     objfile = objfile->separate_debug_objfile_backlink;
25166
25167   return objfile;
25168 }
25169
25170 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25171    (CU_HEADERP is unused in such case) or prepare a temporary copy at
25172    CU_HEADERP first.  */
25173
25174 static const struct comp_unit_head *
25175 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25176                        struct dwarf2_per_cu_data *per_cu)
25177 {
25178   const gdb_byte *info_ptr;
25179
25180   if (per_cu->cu)
25181     return &per_cu->cu->header;
25182
25183   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25184
25185   memset (cu_headerp, 0, sizeof (*cu_headerp));
25186   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25187                        rcuh_kind::COMPILE);
25188
25189   return cu_headerp;
25190 }
25191
25192 /* Return the address size given in the compilation unit header for CU.  */
25193
25194 int
25195 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25196 {
25197   struct comp_unit_head cu_header_local;
25198   const struct comp_unit_head *cu_headerp;
25199
25200   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25201
25202   return cu_headerp->addr_size;
25203 }
25204
25205 /* Return the offset size given in the compilation unit header for CU.  */
25206
25207 int
25208 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25209 {
25210   struct comp_unit_head cu_header_local;
25211   const struct comp_unit_head *cu_headerp;
25212
25213   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25214
25215   return cu_headerp->offset_size;
25216 }
25217
25218 /* See its dwarf2loc.h declaration.  */
25219
25220 int
25221 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25222 {
25223   struct comp_unit_head cu_header_local;
25224   const struct comp_unit_head *cu_headerp;
25225
25226   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25227
25228   if (cu_headerp->version == 2)
25229     return cu_headerp->addr_size;
25230   else
25231     return cu_headerp->offset_size;
25232 }
25233
25234 /* Return the text offset of the CU.  The returned offset comes from
25235    this CU's objfile.  If this objfile came from a separate debuginfo
25236    file, then the offset may be different from the corresponding
25237    offset in the parent objfile.  */
25238
25239 CORE_ADDR
25240 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25241 {
25242   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25243
25244   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25245 }
25246
25247 /* Return DWARF version number of PER_CU.  */
25248
25249 short
25250 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25251 {
25252   return per_cu->dwarf_version;
25253 }
25254
25255 /* Locate the .debug_info compilation unit from CU's objfile which contains
25256    the DIE at OFFSET.  Raises an error on failure.  */
25257
25258 static struct dwarf2_per_cu_data *
25259 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25260                                   unsigned int offset_in_dwz,
25261                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25262 {
25263   struct dwarf2_per_cu_data *this_cu;
25264   int low, high;
25265
25266   low = 0;
25267   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25268   while (high > low)
25269     {
25270       struct dwarf2_per_cu_data *mid_cu;
25271       int mid = low + (high - low) / 2;
25272
25273       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25274       if (mid_cu->is_dwz > offset_in_dwz
25275           || (mid_cu->is_dwz == offset_in_dwz
25276               && mid_cu->sect_off + mid_cu->length >= sect_off))
25277         high = mid;
25278       else
25279         low = mid + 1;
25280     }
25281   gdb_assert (low == high);
25282   this_cu = dwarf2_per_objfile->all_comp_units[low];
25283   if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
25284     {
25285       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25286         error (_("Dwarf Error: could not find partial DIE containing "
25287                "offset %s [in module %s]"),
25288                sect_offset_str (sect_off),
25289                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25290
25291       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25292                   <= sect_off);
25293       return dwarf2_per_objfile->all_comp_units[low-1];
25294     }
25295   else
25296     {
25297       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25298           && sect_off >= this_cu->sect_off + this_cu->length)
25299         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25300       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25301       return this_cu;
25302     }
25303 }
25304
25305 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25306
25307 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25308   : per_cu (per_cu_),
25309     mark (false),
25310     has_loclist (false),
25311     checked_producer (false),
25312     producer_is_gxx_lt_4_6 (false),
25313     producer_is_gcc_lt_4_3 (false),
25314     producer_is_icc (false),
25315     producer_is_icc_lt_14 (false),
25316     producer_is_codewarrior (false),
25317     processing_has_namespace_info (false)
25318 {
25319   per_cu->cu = this;
25320 }
25321
25322 /* Destroy a dwarf2_cu.  */
25323
25324 dwarf2_cu::~dwarf2_cu ()
25325 {
25326   per_cu->cu = NULL;
25327 }
25328
25329 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25330
25331 static void
25332 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25333                        enum language pretend_language)
25334 {
25335   struct attribute *attr;
25336
25337   /* Set the language we're debugging.  */
25338   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25339   if (attr)
25340     set_cu_language (DW_UNSND (attr), cu);
25341   else
25342     {
25343       cu->language = pretend_language;
25344       cu->language_defn = language_def (cu->language);
25345     }
25346
25347   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25348 }
25349
25350 /* Increase the age counter on each cached compilation unit, and free
25351    any that are too old.  */
25352
25353 static void
25354 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25355 {
25356   struct dwarf2_per_cu_data *per_cu, **last_chain;
25357
25358   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25359   per_cu = dwarf2_per_objfile->read_in_chain;
25360   while (per_cu != NULL)
25361     {
25362       per_cu->cu->last_used ++;
25363       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25364         dwarf2_mark (per_cu->cu);
25365       per_cu = per_cu->cu->read_in_chain;
25366     }
25367
25368   per_cu = dwarf2_per_objfile->read_in_chain;
25369   last_chain = &dwarf2_per_objfile->read_in_chain;
25370   while (per_cu != NULL)
25371     {
25372       struct dwarf2_per_cu_data *next_cu;
25373
25374       next_cu = per_cu->cu->read_in_chain;
25375
25376       if (!per_cu->cu->mark)
25377         {
25378           delete per_cu->cu;
25379           *last_chain = next_cu;
25380         }
25381       else
25382         last_chain = &per_cu->cu->read_in_chain;
25383
25384       per_cu = next_cu;
25385     }
25386 }
25387
25388 /* Remove a single compilation unit from the cache.  */
25389
25390 static void
25391 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25392 {
25393   struct dwarf2_per_cu_data *per_cu, **last_chain;
25394   struct dwarf2_per_objfile *dwarf2_per_objfile
25395     = target_per_cu->dwarf2_per_objfile;
25396
25397   per_cu = dwarf2_per_objfile->read_in_chain;
25398   last_chain = &dwarf2_per_objfile->read_in_chain;
25399   while (per_cu != NULL)
25400     {
25401       struct dwarf2_per_cu_data *next_cu;
25402
25403       next_cu = per_cu->cu->read_in_chain;
25404
25405       if (per_cu == target_per_cu)
25406         {
25407           delete per_cu->cu;
25408           per_cu->cu = NULL;
25409           *last_chain = next_cu;
25410           break;
25411         }
25412       else
25413         last_chain = &per_cu->cu->read_in_chain;
25414
25415       per_cu = next_cu;
25416     }
25417 }
25418
25419 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25420    We store these in a hash table separate from the DIEs, and preserve them
25421    when the DIEs are flushed out of cache.
25422
25423    The CU "per_cu" pointer is needed because offset alone is not enough to
25424    uniquely identify the type.  A file may have multiple .debug_types sections,
25425    or the type may come from a DWO file.  Furthermore, while it's more logical
25426    to use per_cu->section+offset, with Fission the section with the data is in
25427    the DWO file but we don't know that section at the point we need it.
25428    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25429    because we can enter the lookup routine, get_die_type_at_offset, from
25430    outside this file, and thus won't necessarily have PER_CU->cu.
25431    Fortunately, PER_CU is stable for the life of the objfile.  */
25432
25433 struct dwarf2_per_cu_offset_and_type
25434 {
25435   const struct dwarf2_per_cu_data *per_cu;
25436   sect_offset sect_off;
25437   struct type *type;
25438 };
25439
25440 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25441
25442 static hashval_t
25443 per_cu_offset_and_type_hash (const void *item)
25444 {
25445   const struct dwarf2_per_cu_offset_and_type *ofs
25446     = (const struct dwarf2_per_cu_offset_and_type *) item;
25447
25448   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25449 }
25450
25451 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25452
25453 static int
25454 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25455 {
25456   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25457     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25458   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25459     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25460
25461   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25462           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25463 }
25464
25465 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25466    table if necessary.  For convenience, return TYPE.
25467
25468    The DIEs reading must have careful ordering to:
25469     * Not cause infite loops trying to read in DIEs as a prerequisite for
25470       reading current DIE.
25471     * Not trying to dereference contents of still incompletely read in types
25472       while reading in other DIEs.
25473     * Enable referencing still incompletely read in types just by a pointer to
25474       the type without accessing its fields.
25475
25476    Therefore caller should follow these rules:
25477      * Try to fetch any prerequisite types we may need to build this DIE type
25478        before building the type and calling set_die_type.
25479      * After building type call set_die_type for current DIE as soon as
25480        possible before fetching more types to complete the current type.
25481      * Make the type as complete as possible before fetching more types.  */
25482
25483 static struct type *
25484 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25485 {
25486   struct dwarf2_per_objfile *dwarf2_per_objfile
25487     = cu->per_cu->dwarf2_per_objfile;
25488   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25489   struct objfile *objfile = dwarf2_per_objfile->objfile;
25490   struct attribute *attr;
25491   struct dynamic_prop prop;
25492
25493   /* For Ada types, make sure that the gnat-specific data is always
25494      initialized (if not already set).  There are a few types where
25495      we should not be doing so, because the type-specific area is
25496      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25497      where the type-specific area is used to store the floatformat).
25498      But this is not a problem, because the gnat-specific information
25499      is actually not needed for these types.  */
25500   if (need_gnat_info (cu)
25501       && TYPE_CODE (type) != TYPE_CODE_FUNC
25502       && TYPE_CODE (type) != TYPE_CODE_FLT
25503       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25504       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25505       && TYPE_CODE (type) != TYPE_CODE_METHOD
25506       && !HAVE_GNAT_AUX_INFO (type))
25507     INIT_GNAT_SPECIFIC (type);
25508
25509   /* Read DW_AT_allocated and set in type.  */
25510   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25511   if (attr_form_is_block (attr))
25512     {
25513       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25514         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25515     }
25516   else if (attr != NULL)
25517     {
25518       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25519                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25520                  sect_offset_str (die->sect_off));
25521     }
25522
25523   /* Read DW_AT_associated and set in type.  */
25524   attr = dwarf2_attr (die, DW_AT_associated, cu);
25525   if (attr_form_is_block (attr))
25526     {
25527       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25528         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25529     }
25530   else if (attr != NULL)
25531     {
25532       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25533                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25534                  sect_offset_str (die->sect_off));
25535     }
25536
25537   /* Read DW_AT_data_location and set in type.  */
25538   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25539   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25540     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25541
25542   if (dwarf2_per_objfile->die_type_hash == NULL)
25543     {
25544       dwarf2_per_objfile->die_type_hash =
25545         htab_create_alloc_ex (127,
25546                               per_cu_offset_and_type_hash,
25547                               per_cu_offset_and_type_eq,
25548                               NULL,
25549                               &objfile->objfile_obstack,
25550                               hashtab_obstack_allocate,
25551                               dummy_obstack_deallocate);
25552     }
25553
25554   ofs.per_cu = cu->per_cu;
25555   ofs.sect_off = die->sect_off;
25556   ofs.type = type;
25557   slot = (struct dwarf2_per_cu_offset_and_type **)
25558     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25559   if (*slot)
25560     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25561                sect_offset_str (die->sect_off));
25562   *slot = XOBNEW (&objfile->objfile_obstack,
25563                   struct dwarf2_per_cu_offset_and_type);
25564   **slot = ofs;
25565   return type;
25566 }
25567
25568 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25569    or return NULL if the die does not have a saved type.  */
25570
25571 static struct type *
25572 get_die_type_at_offset (sect_offset sect_off,
25573                         struct dwarf2_per_cu_data *per_cu)
25574 {
25575   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25576   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25577
25578   if (dwarf2_per_objfile->die_type_hash == NULL)
25579     return NULL;
25580
25581   ofs.per_cu = per_cu;
25582   ofs.sect_off = sect_off;
25583   slot = ((struct dwarf2_per_cu_offset_and_type *)
25584           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25585   if (slot)
25586     return slot->type;
25587   else
25588     return NULL;
25589 }
25590
25591 /* Look up the type for DIE in CU in die_type_hash,
25592    or return NULL if DIE does not have a saved type.  */
25593
25594 static struct type *
25595 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25596 {
25597   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25598 }
25599
25600 /* Add a dependence relationship from CU to REF_PER_CU.  */
25601
25602 static void
25603 dwarf2_add_dependence (struct dwarf2_cu *cu,
25604                        struct dwarf2_per_cu_data *ref_per_cu)
25605 {
25606   void **slot;
25607
25608   if (cu->dependencies == NULL)
25609     cu->dependencies
25610       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25611                               NULL, &cu->comp_unit_obstack,
25612                               hashtab_obstack_allocate,
25613                               dummy_obstack_deallocate);
25614
25615   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25616   if (*slot == NULL)
25617     *slot = ref_per_cu;
25618 }
25619
25620 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25621    Set the mark field in every compilation unit in the
25622    cache that we must keep because we are keeping CU.  */
25623
25624 static int
25625 dwarf2_mark_helper (void **slot, void *data)
25626 {
25627   struct dwarf2_per_cu_data *per_cu;
25628
25629   per_cu = (struct dwarf2_per_cu_data *) *slot;
25630
25631   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25632      reading of the chain.  As such dependencies remain valid it is not much
25633      useful to track and undo them during QUIT cleanups.  */
25634   if (per_cu->cu == NULL)
25635     return 1;
25636
25637   if (per_cu->cu->mark)
25638     return 1;
25639   per_cu->cu->mark = true;
25640
25641   if (per_cu->cu->dependencies != NULL)
25642     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25643
25644   return 1;
25645 }
25646
25647 /* Set the mark field in CU and in every other compilation unit in the
25648    cache that we must keep because we are keeping CU.  */
25649
25650 static void
25651 dwarf2_mark (struct dwarf2_cu *cu)
25652 {
25653   if (cu->mark)
25654     return;
25655   cu->mark = true;
25656   if (cu->dependencies != NULL)
25657     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25658 }
25659
25660 static void
25661 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25662 {
25663   while (per_cu)
25664     {
25665       per_cu->cu->mark = false;
25666       per_cu = per_cu->cu->read_in_chain;
25667     }
25668 }
25669
25670 /* Trivial hash function for partial_die_info: the hash value of a DIE
25671    is its offset in .debug_info for this objfile.  */
25672
25673 static hashval_t
25674 partial_die_hash (const void *item)
25675 {
25676   const struct partial_die_info *part_die
25677     = (const struct partial_die_info *) item;
25678
25679   return to_underlying (part_die->sect_off);
25680 }
25681
25682 /* Trivial comparison function for partial_die_info structures: two DIEs
25683    are equal if they have the same offset.  */
25684
25685 static int
25686 partial_die_eq (const void *item_lhs, const void *item_rhs)
25687 {
25688   const struct partial_die_info *part_die_lhs
25689     = (const struct partial_die_info *) item_lhs;
25690   const struct partial_die_info *part_die_rhs
25691     = (const struct partial_die_info *) item_rhs;
25692
25693   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25694 }
25695
25696 struct cmd_list_element *set_dwarf_cmdlist;
25697 struct cmd_list_element *show_dwarf_cmdlist;
25698
25699 static void
25700 set_dwarf_cmd (const char *args, int from_tty)
25701 {
25702   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25703              gdb_stdout);
25704 }
25705
25706 static void
25707 show_dwarf_cmd (const char *args, int from_tty)
25708 {
25709   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25710 }
25711
25712 int dwarf_always_disassemble;
25713
25714 static void
25715 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25716                                struct cmd_list_element *c, const char *value)
25717 {
25718   fprintf_filtered (file,
25719                     _("Whether to always disassemble "
25720                       "DWARF expressions is %s.\n"),
25721                     value);
25722 }
25723
25724 static void
25725 show_check_physname (struct ui_file *file, int from_tty,
25726                      struct cmd_list_element *c, const char *value)
25727 {
25728   fprintf_filtered (file,
25729                     _("Whether to check \"physname\" is %s.\n"),
25730                     value);
25731 }
25732
25733 void
25734 _initialize_dwarf2_read (void)
25735 {
25736   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25737 Set DWARF specific variables.\n\
25738 Configure DWARF variables such as the cache size"),
25739                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25740                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25741
25742   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25743 Show DWARF specific variables\n\
25744 Show DWARF variables such as the cache size"),
25745                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25746                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25747
25748   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25749                             &dwarf_max_cache_age, _("\
25750 Set the upper bound on the age of cached DWARF compilation units."), _("\
25751 Show the upper bound on the age of cached DWARF compilation units."), _("\
25752 A higher limit means that cached compilation units will be stored\n\
25753 in memory longer, and more total memory will be used.  Zero disables\n\
25754 caching, which can slow down startup."),
25755                             NULL,
25756                             show_dwarf_max_cache_age,
25757                             &set_dwarf_cmdlist,
25758                             &show_dwarf_cmdlist);
25759
25760   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25761                            &dwarf_always_disassemble, _("\
25762 Set whether `info address' always disassembles DWARF expressions."), _("\
25763 Show whether `info address' always disassembles DWARF expressions."), _("\
25764 When enabled, DWARF expressions are always printed in an assembly-like\n\
25765 syntax.  When disabled, expressions will be printed in a more\n\
25766 conversational style, when possible."),
25767                            NULL,
25768                            show_dwarf_always_disassemble,
25769                            &set_dwarf_cmdlist,
25770                            &show_dwarf_cmdlist);
25771
25772   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25773 Set debugging of the DWARF reader."), _("\
25774 Show debugging of the DWARF reader."), _("\
25775 When enabled (non-zero), debugging messages are printed during DWARF\n\
25776 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25777 information.  A value greater than 1 provides more verbose information."),
25778                             NULL,
25779                             NULL,
25780                             &setdebuglist, &showdebuglist);
25781
25782   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25783 Set debugging of the DWARF DIE reader."), _("\
25784 Show debugging of the DWARF DIE reader."), _("\
25785 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25786 The value is the maximum depth to print."),
25787                              NULL,
25788                              NULL,
25789                              &setdebuglist, &showdebuglist);
25790
25791   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25792 Set debugging of the dwarf line reader."), _("\
25793 Show debugging of the dwarf line reader."), _("\
25794 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25795 A value of 1 (one) provides basic information.\n\
25796 A value greater than 1 provides more verbose information."),
25797                              NULL,
25798                              NULL,
25799                              &setdebuglist, &showdebuglist);
25800
25801   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25802 Set cross-checking of \"physname\" code against demangler."), _("\
25803 Show cross-checking of \"physname\" code against demangler."), _("\
25804 When enabled, GDB's internal \"physname\" code is checked against\n\
25805 the demangler."),
25806                            NULL, show_check_physname,
25807                            &setdebuglist, &showdebuglist);
25808
25809   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25810                            no_class, &use_deprecated_index_sections, _("\
25811 Set whether to use deprecated gdb_index sections."), _("\
25812 Show whether to use deprecated gdb_index sections."), _("\
25813 When enabled, deprecated .gdb_index sections are used anyway.\n\
25814 Normally they are ignored either because of a missing feature or\n\
25815 performance issue.\n\
25816 Warning: This option must be enabled before gdb reads the file."),
25817                            NULL,
25818                            NULL,
25819                            &setlist, &showlist);
25820
25821   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25822                                                         &dwarf2_locexpr_funcs);
25823   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25824                                                         &dwarf2_loclist_funcs);
25825
25826   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25827                                         &dwarf2_block_frame_base_locexpr_funcs);
25828   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25829                                         &dwarf2_block_frame_base_loclist_funcs);
25830
25831 #if GDB_SELF_TEST
25832   selftests::register_test ("dw2_expand_symtabs_matching",
25833                             selftests::dw2_expand_symtabs_matching::run_test);
25834 #endif
25835 }