Support for DW_OP_addrx and DW_FORM_addrx tags
[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_data *dwarf2_objfile_data_key;
112
113 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
114
115 static int dwarf2_locexpr_index;
116 static int dwarf2_loclist_index;
117 static int dwarf2_locexpr_block_index;
118 static int dwarf2_loclist_block_index;
119
120 /* An index into a (C++) symbol name component in a symbol name as
121    recorded in the mapped_index's symbol table.  For each C++ symbol
122    in the symbol table, we record one entry for the start of each
123    component in the symbol in a table of name components, and then
124    sort the table, in order to be able to binary search symbol names,
125    ignoring leading namespaces, both completion and regular look up.
126    For example, for symbol "A::B::C", we'll have an entry that points
127    to "A::B::C", another that points to "B::C", and another for "C".
128    Note that function symbols in GDB index have no parameter
129    information, just the function/method names.  You can convert a
130    name_component to a "const char *" using the
131    'mapped_index::symbol_name_at(offset_type)' method.  */
132
133 struct name_component
134 {
135   /* Offset in the symbol name where the component starts.  Stored as
136      a (32-bit) offset instead of a pointer to save memory and improve
137      locality on 64-bit architectures.  */
138   offset_type name_offset;
139
140   /* The symbol's index in the symbol and constant pool tables of a
141      mapped_index.  */
142   offset_type idx;
143 };
144
145 /* Base class containing bits shared by both .gdb_index and
146    .debug_name indexes.  */
147
148 struct mapped_index_base
149 {
150   mapped_index_base () = default;
151   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
152
153   /* The name_component table (a sorted vector).  See name_component's
154      description above.  */
155   std::vector<name_component> name_components;
156
157   /* How NAME_COMPONENTS is sorted.  */
158   enum case_sensitivity name_components_casing;
159
160   /* Return the number of names in the symbol table.  */
161   virtual size_t symbol_name_count () const = 0;
162
163   /* Get the name of the symbol at IDX in the symbol table.  */
164   virtual const char *symbol_name_at (offset_type idx) const = 0;
165
166   /* Return whether the name at IDX in the symbol table should be
167      ignored.  */
168   virtual bool symbol_name_slot_invalid (offset_type idx) const
169   {
170     return false;
171   }
172
173   /* Build the symbol name component sorted vector, if we haven't
174      yet.  */
175   void build_name_components ();
176
177   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
178      possible matches for LN_NO_PARAMS in the name component
179      vector.  */
180   std::pair<std::vector<name_component>::const_iterator,
181             std::vector<name_component>::const_iterator>
182     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
183
184   /* Prevent deleting/destroying via a base class pointer.  */
185 protected:
186   ~mapped_index_base() = default;
187 };
188
189 /* A description of the mapped index.  The file format is described in
190    a comment by the code that writes the index.  */
191 struct mapped_index final : public mapped_index_base
192 {
193   /* A slot/bucket in the symbol table hash.  */
194   struct symbol_table_slot
195   {
196     const offset_type name;
197     const offset_type vec;
198   };
199
200   /* Index data format version.  */
201   int version = 0;
202
203   /* The address table data.  */
204   gdb::array_view<const gdb_byte> address_table;
205
206   /* The symbol table, implemented as a hash table.  */
207   gdb::array_view<symbol_table_slot> symbol_table;
208
209   /* A pointer to the constant pool.  */
210   const char *constant_pool = nullptr;
211
212   bool symbol_name_slot_invalid (offset_type idx) const override
213   {
214     const auto &bucket = this->symbol_table[idx];
215     return bucket.name == 0 && bucket.vec;
216   }
217
218   /* Convenience method to get at the name of the symbol at IDX in the
219      symbol table.  */
220   const char *symbol_name_at (offset_type idx) const override
221   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
222
223   size_t symbol_name_count () const override
224   { return this->symbol_table.size (); }
225 };
226
227 /* A description of the mapped .debug_names.
228    Uninitialized map has CU_COUNT 0.  */
229 struct mapped_debug_names final : public mapped_index_base
230 {
231   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
232   : dwarf2_per_objfile (dwarf2_per_objfile_)
233   {}
234
235   struct dwarf2_per_objfile *dwarf2_per_objfile;
236   bfd_endian dwarf5_byte_order;
237   bool dwarf5_is_dwarf64;
238   bool augmentation_is_gdb;
239   uint8_t offset_size;
240   uint32_t cu_count = 0;
241   uint32_t tu_count, bucket_count, name_count;
242   const gdb_byte *cu_table_reordered, *tu_table_reordered;
243   const uint32_t *bucket_table_reordered, *hash_table_reordered;
244   const gdb_byte *name_table_string_offs_reordered;
245   const gdb_byte *name_table_entry_offs_reordered;
246   const gdb_byte *entry_pool;
247
248   struct index_val
249   {
250     ULONGEST dwarf_tag;
251     struct attr
252     {
253       /* Attribute name DW_IDX_*.  */
254       ULONGEST dw_idx;
255
256       /* Attribute form DW_FORM_*.  */
257       ULONGEST form;
258
259       /* Value if FORM is DW_FORM_implicit_const.  */
260       LONGEST implicit_const;
261     };
262     std::vector<attr> attr_vec;
263   };
264
265   std::unordered_map<ULONGEST, index_val> abbrev_map;
266
267   const char *namei_to_name (uint32_t namei) const;
268
269   /* Implementation of the mapped_index_base virtual interface, for
270      the name_components cache.  */
271
272   const char *symbol_name_at (offset_type idx) const override
273   { return namei_to_name (idx); }
274
275   size_t symbol_name_count () const override
276   { return this->name_count; }
277 };
278
279 /* See dwarf2read.h.  */
280
281 dwarf2_per_objfile *
282 get_dwarf2_per_objfile (struct objfile *objfile)
283 {
284   return ((struct dwarf2_per_objfile *)
285           objfile_data (objfile, dwarf2_objfile_data_key));
286 }
287
288 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
289
290 void
291 set_dwarf2_per_objfile (struct objfile *objfile,
292                         struct dwarf2_per_objfile *dwarf2_per_objfile)
293 {
294   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
295   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
296 }
297
298 /* Default names of the debugging sections.  */
299
300 /* Note that if the debugging section has been compressed, it might
301    have a name like .zdebug_info.  */
302
303 static const struct dwarf2_debug_sections dwarf2_elf_names =
304 {
305   { ".debug_info", ".zdebug_info" },
306   { ".debug_abbrev", ".zdebug_abbrev" },
307   { ".debug_line", ".zdebug_line" },
308   { ".debug_loc", ".zdebug_loc" },
309   { ".debug_loclists", ".zdebug_loclists" },
310   { ".debug_macinfo", ".zdebug_macinfo" },
311   { ".debug_macro", ".zdebug_macro" },
312   { ".debug_str", ".zdebug_str" },
313   { ".debug_line_str", ".zdebug_line_str" },
314   { ".debug_ranges", ".zdebug_ranges" },
315   { ".debug_rnglists", ".zdebug_rnglists" },
316   { ".debug_types", ".zdebug_types" },
317   { ".debug_addr", ".zdebug_addr" },
318   { ".debug_frame", ".zdebug_frame" },
319   { ".eh_frame", NULL },
320   { ".gdb_index", ".zgdb_index" },
321   { ".debug_names", ".zdebug_names" },
322   { ".debug_aranges", ".zdebug_aranges" },
323   23
324 };
325
326 /* List of DWO/DWP sections.  */
327
328 static const struct dwop_section_names
329 {
330   struct dwarf2_section_names abbrev_dwo;
331   struct dwarf2_section_names info_dwo;
332   struct dwarf2_section_names line_dwo;
333   struct dwarf2_section_names loc_dwo;
334   struct dwarf2_section_names loclists_dwo;
335   struct dwarf2_section_names macinfo_dwo;
336   struct dwarf2_section_names macro_dwo;
337   struct dwarf2_section_names str_dwo;
338   struct dwarf2_section_names str_offsets_dwo;
339   struct dwarf2_section_names types_dwo;
340   struct dwarf2_section_names cu_index;
341   struct dwarf2_section_names tu_index;
342 }
343 dwop_section_names =
344 {
345   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
346   { ".debug_info.dwo", ".zdebug_info.dwo" },
347   { ".debug_line.dwo", ".zdebug_line.dwo" },
348   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
349   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
350   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
351   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
352   { ".debug_str.dwo", ".zdebug_str.dwo" },
353   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
354   { ".debug_types.dwo", ".zdebug_types.dwo" },
355   { ".debug_cu_index", ".zdebug_cu_index" },
356   { ".debug_tu_index", ".zdebug_tu_index" },
357 };
358
359 /* local data types */
360
361 /* The data in a compilation unit header, after target2host
362    translation, looks like this.  */
363 struct comp_unit_head
364 {
365   unsigned int length;
366   short version;
367   unsigned char addr_size;
368   unsigned char signed_addr_p;
369   sect_offset abbrev_sect_off;
370
371   /* Size of file offsets; either 4 or 8.  */
372   unsigned int offset_size;
373
374   /* Size of the length field; either 4 or 12.  */
375   unsigned int initial_length_size;
376
377   enum dwarf_unit_type unit_type;
378
379   /* Offset to the first byte of this compilation unit header in the
380      .debug_info section, for resolving relative reference dies.  */
381   sect_offset sect_off;
382
383   /* Offset to first die in this cu from the start of the cu.
384      This will be the first byte following the compilation unit header.  */
385   cu_offset first_die_cu_offset;
386
387   /* 64-bit signature of this type unit - it is valid only for
388      UNIT_TYPE DW_UT_type.  */
389   ULONGEST signature;
390
391   /* For types, offset in the type's DIE of the type defined by this TU.  */
392   cu_offset type_cu_offset_in_tu;
393 };
394
395 /* Type used for delaying computation of method physnames.
396    See comments for compute_delayed_physnames.  */
397 struct delayed_method_info
398 {
399   /* The type to which the method is attached, i.e., its parent class.  */
400   struct type *type;
401
402   /* The index of the method in the type's function fieldlists.  */
403   int fnfield_index;
404
405   /* The index of the method in the fieldlist.  */
406   int index;
407
408   /* The name of the DIE.  */
409   const char *name;
410
411   /*  The DIE associated with this method.  */
412   struct die_info *die;
413 };
414
415 /* Internal state when decoding a particular compilation unit.  */
416 struct dwarf2_cu
417 {
418   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
419   ~dwarf2_cu ();
420
421   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
422
423   /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
424      Create the set of symtabs used by this TU, or if this TU is sharing
425      symtabs with another TU and the symtabs have already been created
426      then restore those symtabs in the line header.
427      We don't need the pc/line-number mapping for type units.  */
428   void setup_type_unit_groups (struct die_info *die);
429
430   /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
431      buildsym_compunit constructor.  */
432   struct compunit_symtab *start_symtab (const char *name,
433                                         const char *comp_dir,
434                                         CORE_ADDR low_pc);
435
436   /* Reset the builder.  */
437   void reset_builder () { m_builder.reset (); }
438
439   /* The header of the compilation unit.  */
440   struct comp_unit_head header {};
441
442   /* Base address of this compilation unit.  */
443   CORE_ADDR base_address = 0;
444
445   /* Non-zero if base_address has been set.  */
446   int base_known = 0;
447
448   /* The language we are debugging.  */
449   enum language language = language_unknown;
450   const struct language_defn *language_defn = nullptr;
451
452   const char *producer = nullptr;
453
454 private:
455   /* The symtab builder for this CU.  This is only non-NULL when full
456      symbols are being read.  */
457   std::unique_ptr<buildsym_compunit> m_builder;
458
459 public:
460   /* The generic symbol table building routines have separate lists for
461      file scope symbols and all all other scopes (local scopes).  So
462      we need to select the right one to pass to add_symbol_to_list().
463      We do it by keeping a pointer to the correct list in list_in_scope.
464
465      FIXME: The original dwarf code just treated the file scope as the
466      first local scope, and all other local scopes as nested local
467      scopes, and worked fine.  Check to see if we really need to
468      distinguish these in buildsym.c.  */
469   struct pending **list_in_scope = nullptr;
470
471   /* Hash table holding all the loaded partial DIEs
472      with partial_die->offset.SECT_OFF as hash.  */
473   htab_t partial_dies = nullptr;
474
475   /* Storage for things with the same lifetime as this read-in compilation
476      unit, including partial DIEs.  */
477   auto_obstack comp_unit_obstack;
478
479   /* When multiple dwarf2_cu structures are living in memory, this field
480      chains them all together, so that they can be released efficiently.
481      We will probably also want a generation counter so that most-recently-used
482      compilation units are cached...  */
483   struct dwarf2_per_cu_data *read_in_chain = nullptr;
484
485   /* Backlink to our per_cu entry.  */
486   struct dwarf2_per_cu_data *per_cu;
487
488   /* How many compilation units ago was this CU last referenced?  */
489   int last_used = 0;
490
491   /* A hash table of DIE cu_offset for following references with
492      die_info->offset.sect_off as hash.  */
493   htab_t die_hash = nullptr;
494
495   /* Full DIEs if read in.  */
496   struct die_info *dies = nullptr;
497
498   /* A set of pointers to dwarf2_per_cu_data objects for compilation
499      units referenced by this one.  Only set during full symbol processing;
500      partial symbol tables do not have dependencies.  */
501   htab_t dependencies = nullptr;
502
503   /* Header data from the line table, during full symbol processing.  */
504   struct line_header *line_header = nullptr;
505   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
506      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
507      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
508      to the line header as long as this DIE is being processed.  See
509      process_die_scope.  */
510   die_info *line_header_die_owner = nullptr;
511
512   /* A list of methods which need to have physnames computed
513      after all type information has been read.  */
514   std::vector<delayed_method_info> method_list;
515
516   /* To be copied to symtab->call_site_htab.  */
517   htab_t call_site_htab = nullptr;
518
519   /* Non-NULL if this CU came from a DWO file.
520      There is an invariant here that is important to remember:
521      Except for attributes copied from the top level DIE in the "main"
522      (or "stub") file in preparation for reading the DWO file
523      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
524      Either there isn't a DWO file (in which case this is NULL and the point
525      is moot), or there is and either we're not going to read it (in which
526      case this is NULL) or there is and we are reading it (in which case this
527      is non-NULL).  */
528   struct dwo_unit *dwo_unit = nullptr;
529
530   /* The DW_AT_addr_base attribute if present, zero otherwise
531      (zero is a valid value though).
532      Note this value comes from the Fission stub CU/TU's DIE.  */
533   ULONGEST addr_base = 0;
534
535   /* The DW_AT_ranges_base attribute if present, zero otherwise
536      (zero is a valid value though).
537      Note this value comes from the Fission stub CU/TU's DIE.
538      Also note that the value is zero in the non-DWO case so this value can
539      be used without needing to know whether DWO files are in use or not.
540      N.B. This does not apply to DW_AT_ranges appearing in
541      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
542      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
543      DW_AT_ranges_base *would* have to be applied, and we'd have to care
544      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
545   ULONGEST ranges_base = 0;
546
547   /* When reading debug info generated by older versions of rustc, we
548      have to rewrite some union types to be struct types with a
549      variant part.  This rewriting must be done after the CU is fully
550      read in, because otherwise at the point of rewriting some struct
551      type might not have been fully processed.  So, we keep a list of
552      all such types here and process them after expansion.  */
553   std::vector<struct type *> rust_unions;
554
555   /* Mark used when releasing cached dies.  */
556   bool mark : 1;
557
558   /* This CU references .debug_loc.  See the symtab->locations_valid field.
559      This test is imperfect as there may exist optimized debug code not using
560      any location list and still facing inlining issues if handled as
561      unoptimized code.  For a future better test see GCC PR other/32998.  */
562   bool has_loclist : 1;
563
564   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is true
565      if all the producer_is_* fields are valid.  This information is cached
566      because profiling CU expansion showed excessive time spent in
567      producer_is_gxx_lt_4_6.  */
568   bool checked_producer : 1;
569   bool producer_is_gxx_lt_4_6 : 1;
570   bool producer_is_gcc_lt_4_3 : 1;
571   bool producer_is_icc : 1;
572   bool producer_is_icc_lt_14 : 1;
573   bool producer_is_codewarrior : 1;
574
575   /* When true, the file that we're processing is known to have
576      debugging info for C++ namespaces.  GCC 3.3.x did not produce
577      this information, but later versions do.  */
578
579   bool processing_has_namespace_info : 1;
580
581   struct partial_die_info *find_partial_die (sect_offset sect_off);
582
583   /* If this CU was inherited by another CU (via specification,
584      abstract_origin, etc), this is the ancestor CU.  */
585   dwarf2_cu *ancestor;
586
587   /* Get the buildsym_compunit for this CU.  */
588   buildsym_compunit *get_builder ()
589   {
590     /* If this CU has a builder associated with it, use that.  */
591     if (m_builder != nullptr)
592       return m_builder.get ();
593
594     /* Otherwise, search ancestors for a valid builder.  */
595     if (ancestor != nullptr)
596       return ancestor->get_builder ();
597
598     return nullptr;
599   }
600 };
601
602 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
603    This includes type_unit_group and quick_file_names.  */
604
605 struct stmt_list_hash
606 {
607   /* The DWO unit this table is from or NULL if there is none.  */
608   struct dwo_unit *dwo_unit;
609
610   /* Offset in .debug_line or .debug_line.dwo.  */
611   sect_offset line_sect_off;
612 };
613
614 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
615    an object of this type.  */
616
617 struct type_unit_group
618 {
619   /* dwarf2read.c's main "handle" on a TU symtab.
620      To simplify things we create an artificial CU that "includes" all the
621      type units using this stmt_list so that the rest of the code still has
622      a "per_cu" handle on the symtab.
623      This PER_CU is recognized by having no section.  */
624 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
625   struct dwarf2_per_cu_data per_cu;
626
627   /* The TUs that share this DW_AT_stmt_list entry.
628      This is added to while parsing type units to build partial symtabs,
629      and is deleted afterwards and not used again.  */
630   VEC (sig_type_ptr) *tus;
631
632   /* The compunit symtab.
633      Type units in a group needn't all be defined in the same source file,
634      so we create an essentially anonymous symtab as the compunit symtab.  */
635   struct compunit_symtab *compunit_symtab;
636
637   /* The data used to construct the hash key.  */
638   struct stmt_list_hash hash;
639
640   /* The number of symtabs from the line header.
641      The value here must match line_header.num_file_names.  */
642   unsigned int num_symtabs;
643
644   /* The symbol tables for this TU (obtained from the files listed in
645      DW_AT_stmt_list).
646      WARNING: The order of entries here must match the order of entries
647      in the line header.  After the first TU using this type_unit_group, the
648      line header for the subsequent TUs is recreated from this.  This is done
649      because we need to use the same symtabs for each TU using the same
650      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
651      there's no guarantee the line header doesn't have duplicate entries.  */
652   struct symtab **symtabs;
653 };
654
655 /* These sections are what may appear in a (real or virtual) DWO file.  */
656
657 struct dwo_sections
658 {
659   struct dwarf2_section_info abbrev;
660   struct dwarf2_section_info line;
661   struct dwarf2_section_info loc;
662   struct dwarf2_section_info loclists;
663   struct dwarf2_section_info macinfo;
664   struct dwarf2_section_info macro;
665   struct dwarf2_section_info str;
666   struct dwarf2_section_info str_offsets;
667   /* In the case of a virtual DWO file, these two are unused.  */
668   struct dwarf2_section_info info;
669   VEC (dwarf2_section_info_def) *types;
670 };
671
672 /* CUs/TUs in DWP/DWO files.  */
673
674 struct dwo_unit
675 {
676   /* Backlink to the containing struct dwo_file.  */
677   struct dwo_file *dwo_file;
678
679   /* The "id" that distinguishes this CU/TU.
680      .debug_info calls this "dwo_id", .debug_types calls this "signature".
681      Since signatures came first, we stick with it for consistency.  */
682   ULONGEST signature;
683
684   /* The section this CU/TU lives in, in the DWO file.  */
685   struct dwarf2_section_info *section;
686
687   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
688   sect_offset sect_off;
689   unsigned int length;
690
691   /* For types, offset in the type's DIE of the type defined by this TU.  */
692   cu_offset type_offset_in_tu;
693 };
694
695 /* include/dwarf2.h defines the DWP section codes.
696    It defines a max value but it doesn't define a min value, which we
697    use for error checking, so provide one.  */
698
699 enum dwp_v2_section_ids
700 {
701   DW_SECT_MIN = 1
702 };
703
704 /* Data for one DWO file.
705
706    This includes virtual DWO files (a virtual DWO file is a DWO file as it
707    appears in a DWP file).  DWP files don't really have DWO files per se -
708    comdat folding of types "loses" the DWO file they came from, and from
709    a high level view DWP files appear to contain a mass of random types.
710    However, to maintain consistency with the non-DWP case we pretend DWP
711    files contain virtual DWO files, and we assign each TU with one virtual
712    DWO file (generally based on the line and abbrev section offsets -
713    a heuristic that seems to work in practice).  */
714
715 struct dwo_file
716 {
717   /* The DW_AT_GNU_dwo_name attribute.
718      For virtual DWO files the name is constructed from the section offsets
719      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
720      from related CU+TUs.  */
721   const char *dwo_name;
722
723   /* The DW_AT_comp_dir attribute.  */
724   const char *comp_dir;
725
726   /* The bfd, when the file is open.  Otherwise this is NULL.
727      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
728   bfd *dbfd;
729
730   /* The sections that make up this DWO file.
731      Remember that for virtual DWO files in DWP V2, these are virtual
732      sections (for lack of a better name).  */
733   struct dwo_sections sections;
734
735   /* The CUs in the file.
736      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
737      an extension to handle LLVM's Link Time Optimization output (where
738      multiple source files may be compiled into a single object/dwo pair). */
739   htab_t cus;
740
741   /* Table of TUs in the file.
742      Each element is a struct dwo_unit.  */
743   htab_t tus;
744 };
745
746 /* These sections are what may appear in a DWP file.  */
747
748 struct dwp_sections
749 {
750   /* These are used by both DWP version 1 and 2.  */
751   struct dwarf2_section_info str;
752   struct dwarf2_section_info cu_index;
753   struct dwarf2_section_info tu_index;
754
755   /* These are only used by DWP version 2 files.
756      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
757      sections are referenced by section number, and are not recorded here.
758      In DWP version 2 there is at most one copy of all these sections, each
759      section being (effectively) comprised of the concatenation of all of the
760      individual sections that exist in the version 1 format.
761      To keep the code simple we treat each of these concatenated pieces as a
762      section itself (a virtual section?).  */
763   struct dwarf2_section_info abbrev;
764   struct dwarf2_section_info info;
765   struct dwarf2_section_info line;
766   struct dwarf2_section_info loc;
767   struct dwarf2_section_info macinfo;
768   struct dwarf2_section_info macro;
769   struct dwarf2_section_info str_offsets;
770   struct dwarf2_section_info types;
771 };
772
773 /* These sections are what may appear in a virtual DWO file in DWP version 1.
774    A virtual DWO file is a DWO file as it appears in a DWP file.  */
775
776 struct virtual_v1_dwo_sections
777 {
778   struct dwarf2_section_info abbrev;
779   struct dwarf2_section_info line;
780   struct dwarf2_section_info loc;
781   struct dwarf2_section_info macinfo;
782   struct dwarf2_section_info macro;
783   struct dwarf2_section_info str_offsets;
784   /* Each DWP hash table entry records one CU or one TU.
785      That is recorded here, and copied to dwo_unit.section.  */
786   struct dwarf2_section_info info_or_types;
787 };
788
789 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
790    In version 2, the sections of the DWO files are concatenated together
791    and stored in one section of that name.  Thus each ELF section contains
792    several "virtual" sections.  */
793
794 struct virtual_v2_dwo_sections
795 {
796   bfd_size_type abbrev_offset;
797   bfd_size_type abbrev_size;
798
799   bfd_size_type line_offset;
800   bfd_size_type line_size;
801
802   bfd_size_type loc_offset;
803   bfd_size_type loc_size;
804
805   bfd_size_type macinfo_offset;
806   bfd_size_type macinfo_size;
807
808   bfd_size_type macro_offset;
809   bfd_size_type macro_size;
810
811   bfd_size_type str_offsets_offset;
812   bfd_size_type str_offsets_size;
813
814   /* Each DWP hash table entry records one CU or one TU.
815      That is recorded here, and copied to dwo_unit.section.  */
816   bfd_size_type info_or_types_offset;
817   bfd_size_type info_or_types_size;
818 };
819
820 /* Contents of DWP hash tables.  */
821
822 struct dwp_hash_table
823 {
824   uint32_t version, nr_columns;
825   uint32_t nr_units, nr_slots;
826   const gdb_byte *hash_table, *unit_table;
827   union
828   {
829     struct
830     {
831       const gdb_byte *indices;
832     } v1;
833     struct
834     {
835       /* This is indexed by column number and gives the id of the section
836          in that column.  */
837 #define MAX_NR_V2_DWO_SECTIONS \
838   (1 /* .debug_info or .debug_types */ \
839    + 1 /* .debug_abbrev */ \
840    + 1 /* .debug_line */ \
841    + 1 /* .debug_loc */ \
842    + 1 /* .debug_str_offsets */ \
843    + 1 /* .debug_macro or .debug_macinfo */)
844       int section_ids[MAX_NR_V2_DWO_SECTIONS];
845       const gdb_byte *offsets;
846       const gdb_byte *sizes;
847     } v2;
848   } section_pool;
849 };
850
851 /* Data for one DWP file.  */
852
853 struct dwp_file
854 {
855   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
856     : name (name_),
857       dbfd (std::move (abfd))
858   {
859   }
860
861   /* Name of the file.  */
862   const char *name;
863
864   /* File format version.  */
865   int version = 0;
866
867   /* The bfd.  */
868   gdb_bfd_ref_ptr dbfd;
869
870   /* Section info for this file.  */
871   struct dwp_sections sections {};
872
873   /* Table of CUs in the file.  */
874   const struct dwp_hash_table *cus = nullptr;
875
876   /* Table of TUs in the file.  */
877   const struct dwp_hash_table *tus = nullptr;
878
879   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
880   htab_t loaded_cus {};
881   htab_t loaded_tus {};
882
883   /* Table to map ELF section numbers to their sections.
884      This is only needed for the DWP V1 file format.  */
885   unsigned int num_sections = 0;
886   asection **elf_sections = nullptr;
887 };
888
889 /* This represents a '.dwz' file.  */
890
891 struct dwz_file
892 {
893   dwz_file (gdb_bfd_ref_ptr &&bfd)
894     : dwz_bfd (std::move (bfd))
895   {
896   }
897
898   /* A dwz file can only contain a few sections.  */
899   struct dwarf2_section_info abbrev {};
900   struct dwarf2_section_info info {};
901   struct dwarf2_section_info str {};
902   struct dwarf2_section_info line {};
903   struct dwarf2_section_info macro {};
904   struct dwarf2_section_info gdb_index {};
905   struct dwarf2_section_info debug_names {};
906
907   /* The dwz's BFD.  */
908   gdb_bfd_ref_ptr dwz_bfd;
909
910   /* If we loaded the index from an external file, this contains the
911      resources associated to the open file, memory mapping, etc.  */
912   std::unique_ptr<index_cache_resource> index_cache_res;
913 };
914
915 /* Struct used to pass misc. parameters to read_die_and_children, et
916    al.  which are used for both .debug_info and .debug_types dies.
917    All parameters here are unchanging for the life of the call.  This
918    struct exists to abstract away the constant parameters of die reading.  */
919
920 struct die_reader_specs
921 {
922   /* The bfd of die_section.  */
923   bfd* abfd;
924
925   /* The CU of the DIE we are parsing.  */
926   struct dwarf2_cu *cu;
927
928   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
929   struct dwo_file *dwo_file;
930
931   /* The section the die comes from.
932      This is either .debug_info or .debug_types, or the .dwo variants.  */
933   struct dwarf2_section_info *die_section;
934
935   /* die_section->buffer.  */
936   const gdb_byte *buffer;
937
938   /* The end of the buffer.  */
939   const gdb_byte *buffer_end;
940
941   /* The value of the DW_AT_comp_dir attribute.  */
942   const char *comp_dir;
943
944   /* The abbreviation table to use when reading the DIEs.  */
945   struct abbrev_table *abbrev_table;
946 };
947
948 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
949 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
950                                       const gdb_byte *info_ptr,
951                                       struct die_info *comp_unit_die,
952                                       int has_children,
953                                       void *data);
954
955 /* A 1-based directory index.  This is a strong typedef to prevent
956    accidentally using a directory index as a 0-based index into an
957    array/vector.  */
958 enum class dir_index : unsigned int {};
959
960 /* Likewise, a 1-based file name index.  */
961 enum class file_name_index : unsigned int {};
962
963 struct file_entry
964 {
965   file_entry () = default;
966
967   file_entry (const char *name_, dir_index d_index_,
968               unsigned int mod_time_, unsigned int length_)
969     : name (name_),
970       d_index (d_index_),
971       mod_time (mod_time_),
972       length (length_)
973   {}
974
975   /* Return the include directory at D_INDEX stored in LH.  Returns
976      NULL if D_INDEX is out of bounds.  */
977   const char *include_dir (const line_header *lh) const;
978
979   /* The file name.  Note this is an observing pointer.  The memory is
980      owned by debug_line_buffer.  */
981   const char *name {};
982
983   /* The directory index (1-based).  */
984   dir_index d_index {};
985
986   unsigned int mod_time {};
987
988   unsigned int length {};
989
990   /* True if referenced by the Line Number Program.  */
991   bool included_p {};
992
993   /* The associated symbol table, if any.  */
994   struct symtab *symtab {};
995 };
996
997 /* The line number information for a compilation unit (found in the
998    .debug_line section) begins with a "statement program header",
999    which contains the following information.  */
1000 struct line_header
1001 {
1002   line_header ()
1003     : offset_in_dwz {}
1004   {}
1005
1006   /* Add an entry to the include directory table.  */
1007   void add_include_dir (const char *include_dir);
1008
1009   /* Add an entry to the file name table.  */
1010   void add_file_name (const char *name, dir_index d_index,
1011                       unsigned int mod_time, unsigned int length);
1012
1013   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
1014      is out of bounds.  */
1015   const char *include_dir_at (dir_index index) const
1016   {
1017     /* Convert directory index number (1-based) to vector index
1018        (0-based).  */
1019     size_t vec_index = to_underlying (index) - 1;
1020
1021     if (vec_index >= include_dirs.size ())
1022       return NULL;
1023     return include_dirs[vec_index];
1024   }
1025
1026   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
1027      is out of bounds.  */
1028   file_entry *file_name_at (file_name_index index)
1029   {
1030     /* Convert file name index number (1-based) to vector index
1031        (0-based).  */
1032     size_t vec_index = to_underlying (index) - 1;
1033
1034     if (vec_index >= file_names.size ())
1035       return NULL;
1036     return &file_names[vec_index];
1037   }
1038
1039   /* Const version of the above.  */
1040   const file_entry *file_name_at (unsigned int index) const
1041   {
1042     if (index >= file_names.size ())
1043       return NULL;
1044     return &file_names[index];
1045   }
1046
1047   /* Offset of line number information in .debug_line section.  */
1048   sect_offset sect_off {};
1049
1050   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1051   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1052
1053   unsigned int total_length {};
1054   unsigned short version {};
1055   unsigned int header_length {};
1056   unsigned char minimum_instruction_length {};
1057   unsigned char maximum_ops_per_instruction {};
1058   unsigned char default_is_stmt {};
1059   int line_base {};
1060   unsigned char line_range {};
1061   unsigned char opcode_base {};
1062
1063   /* standard_opcode_lengths[i] is the number of operands for the
1064      standard opcode whose value is i.  This means that
1065      standard_opcode_lengths[0] is unused, and the last meaningful
1066      element is standard_opcode_lengths[opcode_base - 1].  */
1067   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1068
1069   /* The include_directories table.  Note these are observing
1070      pointers.  The memory is owned by debug_line_buffer.  */
1071   std::vector<const char *> include_dirs;
1072
1073   /* The file_names table.  */
1074   std::vector<file_entry> file_names;
1075
1076   /* The start and end of the statement program following this
1077      header.  These point into dwarf2_per_objfile->line_buffer.  */
1078   const gdb_byte *statement_program_start {}, *statement_program_end {};
1079 };
1080
1081 typedef std::unique_ptr<line_header> line_header_up;
1082
1083 const char *
1084 file_entry::include_dir (const line_header *lh) const
1085 {
1086   return lh->include_dir_at (d_index);
1087 }
1088
1089 /* When we construct a partial symbol table entry we only
1090    need this much information.  */
1091 struct partial_die_info : public allocate_on_obstack
1092   {
1093     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1094
1095     /* Disable assign but still keep copy ctor, which is needed
1096        load_partial_dies.   */
1097     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1098
1099     /* Adjust the partial die before generating a symbol for it.  This
1100        function may set the is_external flag or change the DIE's
1101        name.  */
1102     void fixup (struct dwarf2_cu *cu);
1103
1104     /* Read a minimal amount of information into the minimal die
1105        structure.  */
1106     const gdb_byte *read (const struct die_reader_specs *reader,
1107                           const struct abbrev_info &abbrev,
1108                           const gdb_byte *info_ptr);
1109
1110     /* Offset of this DIE.  */
1111     const sect_offset sect_off;
1112
1113     /* DWARF-2 tag for this DIE.  */
1114     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1115
1116     /* Assorted flags describing the data found in this DIE.  */
1117     const unsigned int has_children : 1;
1118
1119     unsigned int is_external : 1;
1120     unsigned int is_declaration : 1;
1121     unsigned int has_type : 1;
1122     unsigned int has_specification : 1;
1123     unsigned int has_pc_info : 1;
1124     unsigned int may_be_inlined : 1;
1125
1126     /* This DIE has been marked DW_AT_main_subprogram.  */
1127     unsigned int main_subprogram : 1;
1128
1129     /* Flag set if the SCOPE field of this structure has been
1130        computed.  */
1131     unsigned int scope_set : 1;
1132
1133     /* Flag set if the DIE has a byte_size attribute.  */
1134     unsigned int has_byte_size : 1;
1135
1136     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1137     unsigned int has_const_value : 1;
1138
1139     /* Flag set if any of the DIE's children are template arguments.  */
1140     unsigned int has_template_arguments : 1;
1141
1142     /* Flag set if fixup has been called on this die.  */
1143     unsigned int fixup_called : 1;
1144
1145     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1146     unsigned int is_dwz : 1;
1147
1148     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1149     unsigned int spec_is_dwz : 1;
1150
1151     /* The name of this DIE.  Normally the value of DW_AT_name, but
1152        sometimes a default name for unnamed DIEs.  */
1153     const char *name = nullptr;
1154
1155     /* The linkage name, if present.  */
1156     const char *linkage_name = nullptr;
1157
1158     /* The scope to prepend to our children.  This is generally
1159        allocated on the comp_unit_obstack, so will disappear
1160        when this compilation unit leaves the cache.  */
1161     const char *scope = nullptr;
1162
1163     /* Some data associated with the partial DIE.  The tag determines
1164        which field is live.  */
1165     union
1166     {
1167       /* The location description associated with this DIE, if any.  */
1168       struct dwarf_block *locdesc;
1169       /* The offset of an import, for DW_TAG_imported_unit.  */
1170       sect_offset sect_off;
1171     } d {};
1172
1173     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1174     CORE_ADDR lowpc = 0;
1175     CORE_ADDR highpc = 0;
1176
1177     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1178        DW_AT_sibling, if any.  */
1179     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1180        could return DW_AT_sibling values to its caller load_partial_dies.  */
1181     const gdb_byte *sibling = nullptr;
1182
1183     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1184        DW_AT_specification (or DW_AT_abstract_origin or
1185        DW_AT_extension).  */
1186     sect_offset spec_offset {};
1187
1188     /* Pointers to this DIE's parent, first child, and next sibling,
1189        if any.  */
1190     struct partial_die_info *die_parent = nullptr;
1191     struct partial_die_info *die_child = nullptr;
1192     struct partial_die_info *die_sibling = nullptr;
1193
1194     friend struct partial_die_info *
1195     dwarf2_cu::find_partial_die (sect_offset sect_off);
1196
1197   private:
1198     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1199     partial_die_info (sect_offset sect_off)
1200       : partial_die_info (sect_off, DW_TAG_padding, 0)
1201     {
1202     }
1203
1204     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1205                       int has_children_)
1206       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1207     {
1208       is_external = 0;
1209       is_declaration = 0;
1210       has_type = 0;
1211       has_specification = 0;
1212       has_pc_info = 0;
1213       may_be_inlined = 0;
1214       main_subprogram = 0;
1215       scope_set = 0;
1216       has_byte_size = 0;
1217       has_const_value = 0;
1218       has_template_arguments = 0;
1219       fixup_called = 0;
1220       is_dwz = 0;
1221       spec_is_dwz = 0;
1222     }
1223   };
1224
1225 /* This data structure holds the information of an abbrev.  */
1226 struct abbrev_info
1227   {
1228     unsigned int number;        /* number identifying abbrev */
1229     enum dwarf_tag tag;         /* dwarf tag */
1230     unsigned short has_children;                /* boolean */
1231     unsigned short num_attrs;   /* number of attributes */
1232     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1233     struct abbrev_info *next;   /* next in chain */
1234   };
1235
1236 struct attr_abbrev
1237   {
1238     ENUM_BITFIELD(dwarf_attribute) name : 16;
1239     ENUM_BITFIELD(dwarf_form) form : 16;
1240
1241     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1242     LONGEST implicit_const;
1243   };
1244
1245 /* Size of abbrev_table.abbrev_hash_table.  */
1246 #define ABBREV_HASH_SIZE 121
1247
1248 /* Top level data structure to contain an abbreviation table.  */
1249
1250 struct abbrev_table
1251 {
1252   explicit abbrev_table (sect_offset off)
1253     : sect_off (off)
1254   {
1255     m_abbrevs =
1256       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1257     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1258   }
1259
1260   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1261
1262   /* Allocate space for a struct abbrev_info object in
1263      ABBREV_TABLE.  */
1264   struct abbrev_info *alloc_abbrev ();
1265
1266   /* Add an abbreviation to the table.  */
1267   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1268
1269   /* Look up an abbrev in the table.
1270      Returns NULL if the abbrev is not found.  */
1271
1272   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1273
1274
1275   /* Where the abbrev table came from.
1276      This is used as a sanity check when the table is used.  */
1277   const sect_offset sect_off;
1278
1279   /* Storage for the abbrev table.  */
1280   auto_obstack abbrev_obstack;
1281
1282 private:
1283
1284   /* Hash table of abbrevs.
1285      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1286      It could be statically allocated, but the previous code didn't so we
1287      don't either.  */
1288   struct abbrev_info **m_abbrevs;
1289 };
1290
1291 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1292
1293 /* Attributes have a name and a value.  */
1294 struct attribute
1295   {
1296     ENUM_BITFIELD(dwarf_attribute) name : 16;
1297     ENUM_BITFIELD(dwarf_form) form : 15;
1298
1299     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1300        field should be in u.str (existing only for DW_STRING) but it is kept
1301        here for better struct attribute alignment.  */
1302     unsigned int string_is_canonical : 1;
1303
1304     union
1305       {
1306         const char *str;
1307         struct dwarf_block *blk;
1308         ULONGEST unsnd;
1309         LONGEST snd;
1310         CORE_ADDR addr;
1311         ULONGEST signature;
1312       }
1313     u;
1314   };
1315
1316 /* This data structure holds a complete die structure.  */
1317 struct die_info
1318   {
1319     /* DWARF-2 tag for this DIE.  */
1320     ENUM_BITFIELD(dwarf_tag) tag : 16;
1321
1322     /* Number of attributes */
1323     unsigned char num_attrs;
1324
1325     /* True if we're presently building the full type name for the
1326        type derived from this DIE.  */
1327     unsigned char building_fullname : 1;
1328
1329     /* True if this die is in process.  PR 16581.  */
1330     unsigned char in_process : 1;
1331
1332     /* Abbrev number */
1333     unsigned int abbrev;
1334
1335     /* Offset in .debug_info or .debug_types section.  */
1336     sect_offset sect_off;
1337
1338     /* The dies in a compilation unit form an n-ary tree.  PARENT
1339        points to this die's parent; CHILD points to the first child of
1340        this node; and all the children of a given node are chained
1341        together via their SIBLING fields.  */
1342     struct die_info *child;     /* Its first child, if any.  */
1343     struct die_info *sibling;   /* Its next sibling, if any.  */
1344     struct die_info *parent;    /* Its parent, if any.  */
1345
1346     /* An array of attributes, with NUM_ATTRS elements.  There may be
1347        zero, but it's not common and zero-sized arrays are not
1348        sufficiently portable C.  */
1349     struct attribute attrs[1];
1350   };
1351
1352 /* Get at parts of an attribute structure.  */
1353
1354 #define DW_STRING(attr)    ((attr)->u.str)
1355 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1356 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1357 #define DW_BLOCK(attr)     ((attr)->u.blk)
1358 #define DW_SND(attr)       ((attr)->u.snd)
1359 #define DW_ADDR(attr)      ((attr)->u.addr)
1360 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1361
1362 /* Blocks are a bunch of untyped bytes.  */
1363 struct dwarf_block
1364   {
1365     size_t size;
1366
1367     /* Valid only if SIZE is not zero.  */
1368     const gdb_byte *data;
1369   };
1370
1371 #ifndef ATTR_ALLOC_CHUNK
1372 #define ATTR_ALLOC_CHUNK 4
1373 #endif
1374
1375 /* Allocate fields for structs, unions and enums in this size.  */
1376 #ifndef DW_FIELD_ALLOC_CHUNK
1377 #define DW_FIELD_ALLOC_CHUNK 4
1378 #endif
1379
1380 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1381    but this would require a corresponding change in unpack_field_as_long
1382    and friends.  */
1383 static int bits_per_byte = 8;
1384
1385 /* When reading a variant or variant part, we track a bit more
1386    information about the field, and store it in an object of this
1387    type.  */
1388
1389 struct variant_field
1390 {
1391   /* If we see a DW_TAG_variant, then this will be the discriminant
1392      value.  */
1393   ULONGEST discriminant_value;
1394   /* If we see a DW_TAG_variant, then this will be set if this is the
1395      default branch.  */
1396   bool default_branch;
1397   /* While reading a DW_TAG_variant_part, this will be set if this
1398      field is the discriminant.  */
1399   bool is_discriminant;
1400 };
1401
1402 struct nextfield
1403 {
1404   int accessibility = 0;
1405   int virtuality = 0;
1406   /* Extra information to describe a variant or variant part.  */
1407   struct variant_field variant {};
1408   struct field field {};
1409 };
1410
1411 struct fnfieldlist
1412 {
1413   const char *name = nullptr;
1414   std::vector<struct fn_field> fnfields;
1415 };
1416
1417 /* The routines that read and process dies for a C struct or C++ class
1418    pass lists of data member fields and lists of member function fields
1419    in an instance of a field_info structure, as defined below.  */
1420 struct field_info
1421   {
1422     /* List of data member and baseclasses fields.  */
1423     std::vector<struct nextfield> fields;
1424     std::vector<struct nextfield> baseclasses;
1425
1426     /* Number of fields (including baseclasses).  */
1427     int nfields = 0;
1428
1429     /* Set if the accesibility of one of the fields is not public.  */
1430     int non_public_fields = 0;
1431
1432     /* Member function fieldlist array, contains name of possibly overloaded
1433        member function, number of overloaded member functions and a pointer
1434        to the head of the member function field chain.  */
1435     std::vector<struct fnfieldlist> fnfieldlists;
1436
1437     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1438        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1439     std::vector<struct decl_field> typedef_field_list;
1440
1441     /* Nested types defined by this class and the number of elements in this
1442        list.  */
1443     std::vector<struct decl_field> nested_types_list;
1444   };
1445
1446 /* One item on the queue of compilation units to read in full symbols
1447    for.  */
1448 struct dwarf2_queue_item
1449 {
1450   struct dwarf2_per_cu_data *per_cu;
1451   enum language pretend_language;
1452   struct dwarf2_queue_item *next;
1453 };
1454
1455 /* The current queue.  */
1456 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1457
1458 /* Loaded secondary compilation units are kept in memory until they
1459    have not been referenced for the processing of this many
1460    compilation units.  Set this to zero to disable caching.  Cache
1461    sizes of up to at least twenty will improve startup time for
1462    typical inter-CU-reference binaries, at an obvious memory cost.  */
1463 static int dwarf_max_cache_age = 5;
1464 static void
1465 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1466                           struct cmd_list_element *c, const char *value)
1467 {
1468   fprintf_filtered (file, _("The upper bound on the age of cached "
1469                             "DWARF compilation units is %s.\n"),
1470                     value);
1471 }
1472 \f
1473 /* local function prototypes */
1474
1475 static const char *get_section_name (const struct dwarf2_section_info *);
1476
1477 static const char *get_section_file_name (const struct dwarf2_section_info *);
1478
1479 static void dwarf2_find_base_address (struct die_info *die,
1480                                       struct dwarf2_cu *cu);
1481
1482 static struct partial_symtab *create_partial_symtab
1483   (struct dwarf2_per_cu_data *per_cu, const char *name);
1484
1485 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1486                                         const gdb_byte *info_ptr,
1487                                         struct die_info *type_unit_die,
1488                                         int has_children, void *data);
1489
1490 static void dwarf2_build_psymtabs_hard
1491   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1492
1493 static void scan_partial_symbols (struct partial_die_info *,
1494                                   CORE_ADDR *, CORE_ADDR *,
1495                                   int, struct dwarf2_cu *);
1496
1497 static void add_partial_symbol (struct partial_die_info *,
1498                                 struct dwarf2_cu *);
1499
1500 static void add_partial_namespace (struct partial_die_info *pdi,
1501                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1502                                    int set_addrmap, struct dwarf2_cu *cu);
1503
1504 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1505                                 CORE_ADDR *highpc, int set_addrmap,
1506                                 struct dwarf2_cu *cu);
1507
1508 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1509                                      struct dwarf2_cu *cu);
1510
1511 static void add_partial_subprogram (struct partial_die_info *pdi,
1512                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1513                                     int need_pc, struct dwarf2_cu *cu);
1514
1515 static void dwarf2_read_symtab (struct partial_symtab *,
1516                                 struct objfile *);
1517
1518 static void psymtab_to_symtab_1 (struct partial_symtab *);
1519
1520 static abbrev_table_up abbrev_table_read_table
1521   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1522    sect_offset);
1523
1524 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1525
1526 static struct partial_die_info *load_partial_dies
1527   (const struct die_reader_specs *, const gdb_byte *, int);
1528
1529 static struct partial_die_info *find_partial_die (sect_offset, int,
1530                                                   struct dwarf2_cu *);
1531
1532 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1533                                        struct attribute *, struct attr_abbrev *,
1534                                        const gdb_byte *);
1535
1536 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1537
1538 static int read_1_signed_byte (bfd *, const gdb_byte *);
1539
1540 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1541
1542 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1543
1544 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1545
1546 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1547                                unsigned int *);
1548
1549 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1550
1551 static LONGEST read_checked_initial_length_and_offset
1552   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1553    unsigned int *, unsigned int *);
1554
1555 static LONGEST read_offset (bfd *, const gdb_byte *,
1556                             const struct comp_unit_head *,
1557                             unsigned int *);
1558
1559 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1560
1561 static sect_offset read_abbrev_offset
1562   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1563    struct dwarf2_section_info *, sect_offset);
1564
1565 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1566
1567 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1568
1569 static const char *read_indirect_string
1570   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1571    const struct comp_unit_head *, unsigned int *);
1572
1573 static const char *read_indirect_line_string
1574   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1575    const struct comp_unit_head *, unsigned int *);
1576
1577 static const char *read_indirect_string_at_offset
1578   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1579    LONGEST str_offset);
1580
1581 static const char *read_indirect_string_from_dwz
1582   (struct objfile *objfile, struct dwz_file *, LONGEST);
1583
1584 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1585
1586 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1587                                               const gdb_byte *,
1588                                               unsigned int *);
1589
1590 static const char *read_str_index (const struct die_reader_specs *reader,
1591                                    ULONGEST str_index);
1592
1593 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1594
1595 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1596                                       struct dwarf2_cu *);
1597
1598 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1599                                                 unsigned int);
1600
1601 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1602                                        struct dwarf2_cu *cu);
1603
1604 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1605                                struct dwarf2_cu *cu);
1606
1607 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1608
1609 static struct die_info *die_specification (struct die_info *die,
1610                                            struct dwarf2_cu **);
1611
1612 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1613                                                 struct dwarf2_cu *cu);
1614
1615 static void dwarf_decode_lines (struct line_header *, const char *,
1616                                 struct dwarf2_cu *, struct partial_symtab *,
1617                                 CORE_ADDR, int decode_mapping);
1618
1619 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1620                                   const char *);
1621
1622 static struct symbol *new_symbol (struct die_info *, struct type *,
1623                                   struct dwarf2_cu *, struct symbol * = NULL);
1624
1625 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1626                                 struct dwarf2_cu *);
1627
1628 static void dwarf2_const_value_attr (const struct attribute *attr,
1629                                      struct type *type,
1630                                      const char *name,
1631                                      struct obstack *obstack,
1632                                      struct dwarf2_cu *cu, LONGEST *value,
1633                                      const gdb_byte **bytes,
1634                                      struct dwarf2_locexpr_baton **baton);
1635
1636 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1637
1638 static int need_gnat_info (struct dwarf2_cu *);
1639
1640 static struct type *die_descriptive_type (struct die_info *,
1641                                           struct dwarf2_cu *);
1642
1643 static void set_descriptive_type (struct type *, struct die_info *,
1644                                   struct dwarf2_cu *);
1645
1646 static struct type *die_containing_type (struct die_info *,
1647                                          struct dwarf2_cu *);
1648
1649 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1650                                      struct dwarf2_cu *);
1651
1652 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1653
1654 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1655
1656 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1657
1658 static char *typename_concat (struct obstack *obs, const char *prefix,
1659                               const char *suffix, int physname,
1660                               struct dwarf2_cu *cu);
1661
1662 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1663
1664 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1665
1666 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1667
1668 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1669
1670 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1671
1672 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1673
1674 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1675                                struct dwarf2_cu *, struct partial_symtab *);
1676
1677 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1678    values.  Keep the items ordered with increasing constraints compliance.  */
1679 enum pc_bounds_kind
1680 {
1681   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1682   PC_BOUNDS_NOT_PRESENT,
1683
1684   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1685      were present but they do not form a valid range of PC addresses.  */
1686   PC_BOUNDS_INVALID,
1687
1688   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1689   PC_BOUNDS_RANGES,
1690
1691   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1692   PC_BOUNDS_HIGH_LOW,
1693 };
1694
1695 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1696                                                  CORE_ADDR *, CORE_ADDR *,
1697                                                  struct dwarf2_cu *,
1698                                                  struct partial_symtab *);
1699
1700 static void get_scope_pc_bounds (struct die_info *,
1701                                  CORE_ADDR *, CORE_ADDR *,
1702                                  struct dwarf2_cu *);
1703
1704 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1705                                         CORE_ADDR, struct dwarf2_cu *);
1706
1707 static void dwarf2_add_field (struct field_info *, struct die_info *,
1708                               struct dwarf2_cu *);
1709
1710 static void dwarf2_attach_fields_to_type (struct field_info *,
1711                                           struct type *, struct dwarf2_cu *);
1712
1713 static void dwarf2_add_member_fn (struct field_info *,
1714                                   struct die_info *, struct type *,
1715                                   struct dwarf2_cu *);
1716
1717 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1718                                              struct type *,
1719                                              struct dwarf2_cu *);
1720
1721 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1722
1723 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1724
1725 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1726
1727 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1728
1729 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1730
1731 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1732
1733 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1734
1735 static struct type *read_module_type (struct die_info *die,
1736                                       struct dwarf2_cu *cu);
1737
1738 static const char *namespace_name (struct die_info *die,
1739                                    int *is_anonymous, struct dwarf2_cu *);
1740
1741 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1742
1743 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1744
1745 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1746                                                        struct dwarf2_cu *);
1747
1748 static struct die_info *read_die_and_siblings_1
1749   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1750    struct die_info *);
1751
1752 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1753                                                const gdb_byte *info_ptr,
1754                                                const gdb_byte **new_info_ptr,
1755                                                struct die_info *parent);
1756
1757 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1758                                         struct die_info **, const gdb_byte *,
1759                                         int *, int);
1760
1761 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1762                                       struct die_info **, const gdb_byte *,
1763                                       int *);
1764
1765 static void process_die (struct die_info *, struct dwarf2_cu *);
1766
1767 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1768                                              struct obstack *);
1769
1770 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1771
1772 static const char *dwarf2_full_name (const char *name,
1773                                      struct die_info *die,
1774                                      struct dwarf2_cu *cu);
1775
1776 static const char *dwarf2_physname (const char *name, struct die_info *die,
1777                                     struct dwarf2_cu *cu);
1778
1779 static struct die_info *dwarf2_extension (struct die_info *die,
1780                                           struct dwarf2_cu **);
1781
1782 static const char *dwarf_tag_name (unsigned int);
1783
1784 static const char *dwarf_attr_name (unsigned int);
1785
1786 static const char *dwarf_form_name (unsigned int);
1787
1788 static const char *dwarf_bool_name (unsigned int);
1789
1790 static const char *dwarf_type_encoding_name (unsigned int);
1791
1792 static struct die_info *sibling_die (struct die_info *);
1793
1794 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1795
1796 static void dump_die_for_error (struct die_info *);
1797
1798 static void dump_die_1 (struct ui_file *, int level, int max_level,
1799                         struct die_info *);
1800
1801 /*static*/ void dump_die (struct die_info *, int max_level);
1802
1803 static void store_in_ref_table (struct die_info *,
1804                                 struct dwarf2_cu *);
1805
1806 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1807
1808 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1809
1810 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1811                                                const struct attribute *,
1812                                                struct dwarf2_cu **);
1813
1814 static struct die_info *follow_die_ref (struct die_info *,
1815                                         const struct attribute *,
1816                                         struct dwarf2_cu **);
1817
1818 static struct die_info *follow_die_sig (struct die_info *,
1819                                         const struct attribute *,
1820                                         struct dwarf2_cu **);
1821
1822 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1823                                          struct dwarf2_cu *);
1824
1825 static struct type *get_DW_AT_signature_type (struct die_info *,
1826                                               const struct attribute *,
1827                                               struct dwarf2_cu *);
1828
1829 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1830
1831 static void read_signatured_type (struct signatured_type *);
1832
1833 static int attr_to_dynamic_prop (const struct attribute *attr,
1834                                  struct die_info *die, struct dwarf2_cu *cu,
1835                                  struct dynamic_prop *prop);
1836
1837 /* memory allocation interface */
1838
1839 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1840
1841 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1842
1843 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1844
1845 static int attr_form_is_block (const struct attribute *);
1846
1847 static int attr_form_is_section_offset (const struct attribute *);
1848
1849 static int attr_form_is_constant (const struct attribute *);
1850
1851 static int attr_form_is_ref (const struct attribute *);
1852
1853 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1854                                    struct dwarf2_loclist_baton *baton,
1855                                    const struct attribute *attr);
1856
1857 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1858                                          struct symbol *sym,
1859                                          struct dwarf2_cu *cu,
1860                                          int is_block);
1861
1862 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1863                                      const gdb_byte *info_ptr,
1864                                      struct abbrev_info *abbrev);
1865
1866 static hashval_t partial_die_hash (const void *item);
1867
1868 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1869
1870 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1871   (sect_offset sect_off, unsigned int offset_in_dwz,
1872    struct dwarf2_per_objfile *dwarf2_per_objfile);
1873
1874 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1875                                    struct die_info *comp_unit_die,
1876                                    enum language pretend_language);
1877
1878 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1879
1880 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1881
1882 static struct type *set_die_type (struct die_info *, struct type *,
1883                                   struct dwarf2_cu *);
1884
1885 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1886
1887 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1888
1889 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1890                                  enum language);
1891
1892 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1893                                     enum language);
1894
1895 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1896                                     enum language);
1897
1898 static void dwarf2_add_dependence (struct dwarf2_cu *,
1899                                    struct dwarf2_per_cu_data *);
1900
1901 static void dwarf2_mark (struct dwarf2_cu *);
1902
1903 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1904
1905 static struct type *get_die_type_at_offset (sect_offset,
1906                                             struct dwarf2_per_cu_data *);
1907
1908 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1909
1910 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1911                              enum language pretend_language);
1912
1913 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1914
1915 /* Class, the destructor of which frees all allocated queue entries.  This
1916    will only have work to do if an error was thrown while processing the
1917    dwarf.  If no error was thrown then the queue entries should have all
1918    been processed, and freed, as we went along.  */
1919
1920 class dwarf2_queue_guard
1921 {
1922 public:
1923   dwarf2_queue_guard () = default;
1924
1925   /* Free any entries remaining on the queue.  There should only be
1926      entries left if we hit an error while processing the dwarf.  */
1927   ~dwarf2_queue_guard ()
1928   {
1929     struct dwarf2_queue_item *item, *last;
1930
1931     item = dwarf2_queue;
1932     while (item)
1933       {
1934         /* Anything still marked queued is likely to be in an
1935            inconsistent state, so discard it.  */
1936         if (item->per_cu->queued)
1937           {
1938             if (item->per_cu->cu != NULL)
1939               free_one_cached_comp_unit (item->per_cu);
1940             item->per_cu->queued = 0;
1941           }
1942
1943         last = item;
1944         item = item->next;
1945         xfree (last);
1946       }
1947
1948     dwarf2_queue = dwarf2_queue_tail = NULL;
1949   }
1950 };
1951
1952 /* The return type of find_file_and_directory.  Note, the enclosed
1953    string pointers are only valid while this object is valid.  */
1954
1955 struct file_and_directory
1956 {
1957   /* The filename.  This is never NULL.  */
1958   const char *name;
1959
1960   /* The compilation directory.  NULL if not known.  If we needed to
1961      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1962      points directly to the DW_AT_comp_dir string attribute owned by
1963      the obstack that owns the DIE.  */
1964   const char *comp_dir;
1965
1966   /* If we needed to build a new string for comp_dir, this is what
1967      owns the storage.  */
1968   std::string comp_dir_storage;
1969 };
1970
1971 static file_and_directory find_file_and_directory (struct die_info *die,
1972                                                    struct dwarf2_cu *cu);
1973
1974 static char *file_full_name (int file, struct line_header *lh,
1975                              const char *comp_dir);
1976
1977 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1978 enum class rcuh_kind { COMPILE, TYPE };
1979
1980 static const gdb_byte *read_and_check_comp_unit_head
1981   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1982    struct comp_unit_head *header,
1983    struct dwarf2_section_info *section,
1984    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1985    rcuh_kind section_kind);
1986
1987 static void init_cutu_and_read_dies
1988   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1989    int use_existing_cu, int keep, bool skip_partial,
1990    die_reader_func_ftype *die_reader_func, void *data);
1991
1992 static void init_cutu_and_read_dies_simple
1993   (struct dwarf2_per_cu_data *this_cu,
1994    die_reader_func_ftype *die_reader_func, void *data);
1995
1996 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1997
1998 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1999
2000 static struct dwo_unit *lookup_dwo_unit_in_dwp
2001   (struct dwarf2_per_objfile *dwarf2_per_objfile,
2002    struct dwp_file *dwp_file, const char *comp_dir,
2003    ULONGEST signature, int is_debug_types);
2004
2005 static struct dwp_file *get_dwp_file
2006   (struct dwarf2_per_objfile *dwarf2_per_objfile);
2007
2008 static struct dwo_unit *lookup_dwo_comp_unit
2009   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
2010
2011 static struct dwo_unit *lookup_dwo_type_unit
2012   (struct signatured_type *, const char *, const char *);
2013
2014 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
2015
2016 static void free_dwo_file (struct dwo_file *);
2017
2018 /* A unique_ptr helper to free a dwo_file.  */
2019
2020 struct dwo_file_deleter
2021 {
2022   void operator() (struct dwo_file *df) const
2023   {
2024     free_dwo_file (df);
2025   }
2026 };
2027
2028 /* A unique pointer to a dwo_file.  */
2029
2030 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
2031
2032 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2033
2034 static void check_producer (struct dwarf2_cu *cu);
2035
2036 static void free_line_header_voidp (void *arg);
2037 \f
2038 /* Various complaints about symbol reading that don't abort the process.  */
2039
2040 static void
2041 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2042 {
2043   complaint (_("statement list doesn't fit in .debug_line section"));
2044 }
2045
2046 static void
2047 dwarf2_debug_line_missing_file_complaint (void)
2048 {
2049   complaint (_(".debug_line section has line data without a file"));
2050 }
2051
2052 static void
2053 dwarf2_debug_line_missing_end_sequence_complaint (void)
2054 {
2055   complaint (_(".debug_line section has line "
2056                "program sequence without an end"));
2057 }
2058
2059 static void
2060 dwarf2_complex_location_expr_complaint (void)
2061 {
2062   complaint (_("location expression too complex"));
2063 }
2064
2065 static void
2066 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2067                                               int arg3)
2068 {
2069   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2070              arg1, arg2, arg3);
2071 }
2072
2073 static void
2074 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2075 {
2076   complaint (_("debug info runs off end of %s section"
2077                " [in module %s]"),
2078              get_section_name (section),
2079              get_section_file_name (section));
2080 }
2081
2082 static void
2083 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2084 {
2085   complaint (_("macro debug info contains a "
2086                "malformed macro definition:\n`%s'"),
2087              arg1);
2088 }
2089
2090 static void
2091 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2092 {
2093   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2094              arg1, arg2);
2095 }
2096
2097 /* Hash function for line_header_hash.  */
2098
2099 static hashval_t
2100 line_header_hash (const struct line_header *ofs)
2101 {
2102   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2103 }
2104
2105 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2106
2107 static hashval_t
2108 line_header_hash_voidp (const void *item)
2109 {
2110   const struct line_header *ofs = (const struct line_header *) item;
2111
2112   return line_header_hash (ofs);
2113 }
2114
2115 /* Equality function for line_header_hash.  */
2116
2117 static int
2118 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2119 {
2120   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2121   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2122
2123   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2124           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2125 }
2126
2127 \f
2128
2129 /* Read the given attribute value as an address, taking the attribute's
2130    form into account.  */
2131
2132 static CORE_ADDR
2133 attr_value_as_address (struct attribute *attr)
2134 {
2135   CORE_ADDR addr;
2136
2137   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_addrx
2138       && attr->form != DW_FORM_GNU_addr_index)
2139     {
2140       /* Aside from a few clearly defined exceptions, attributes that
2141          contain an address must always be in DW_FORM_addr form.
2142          Unfortunately, some compilers happen to be violating this
2143          requirement by encoding addresses using other forms, such
2144          as DW_FORM_data4 for example.  For those broken compilers,
2145          we try to do our best, without any guarantee of success,
2146          to interpret the address correctly.  It would also be nice
2147          to generate a complaint, but that would require us to maintain
2148          a list of legitimate cases where a non-address form is allowed,
2149          as well as update callers to pass in at least the CU's DWARF
2150          version.  This is more overhead than what we're willing to
2151          expand for a pretty rare case.  */
2152       addr = DW_UNSND (attr);
2153     }
2154   else
2155     addr = DW_ADDR (attr);
2156
2157   return addr;
2158 }
2159
2160 /* See declaration.  */
2161
2162 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2163                                         const dwarf2_debug_sections *names)
2164   : objfile (objfile_)
2165 {
2166   if (names == NULL)
2167     names = &dwarf2_elf_names;
2168
2169   bfd *obfd = objfile->obfd;
2170
2171   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2172     locate_sections (obfd, sec, *names);
2173 }
2174
2175 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2176
2177 dwarf2_per_objfile::~dwarf2_per_objfile ()
2178 {
2179   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2180   free_cached_comp_units ();
2181
2182   if (quick_file_names_table)
2183     htab_delete (quick_file_names_table);
2184
2185   if (line_header_hash)
2186     htab_delete (line_header_hash);
2187
2188   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2189     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2190
2191   for (signatured_type *sig_type : all_type_units)
2192     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2193
2194   VEC_free (dwarf2_section_info_def, types);
2195
2196   if (dwo_files != NULL)
2197     free_dwo_files (dwo_files, objfile);
2198
2199   /* Everything else should be on the objfile obstack.  */
2200 }
2201
2202 /* See declaration.  */
2203
2204 void
2205 dwarf2_per_objfile::free_cached_comp_units ()
2206 {
2207   dwarf2_per_cu_data *per_cu = read_in_chain;
2208   dwarf2_per_cu_data **last_chain = &read_in_chain;
2209   while (per_cu != NULL)
2210     {
2211       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2212
2213       delete per_cu->cu;
2214       *last_chain = next_cu;
2215       per_cu = next_cu;
2216     }
2217 }
2218
2219 /* A helper class that calls free_cached_comp_units on
2220    destruction.  */
2221
2222 class free_cached_comp_units
2223 {
2224 public:
2225
2226   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2227     : m_per_objfile (per_objfile)
2228   {
2229   }
2230
2231   ~free_cached_comp_units ()
2232   {
2233     m_per_objfile->free_cached_comp_units ();
2234   }
2235
2236   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2237
2238 private:
2239
2240   dwarf2_per_objfile *m_per_objfile;
2241 };
2242
2243 /* Try to locate the sections we need for DWARF 2 debugging
2244    information and return true if we have enough to do something.
2245    NAMES points to the dwarf2 section names, or is NULL if the standard
2246    ELF names are used.  */
2247
2248 int
2249 dwarf2_has_info (struct objfile *objfile,
2250                  const struct dwarf2_debug_sections *names)
2251 {
2252   if (objfile->flags & OBJF_READNEVER)
2253     return 0;
2254
2255   struct dwarf2_per_objfile *dwarf2_per_objfile
2256     = get_dwarf2_per_objfile (objfile);
2257
2258   if (dwarf2_per_objfile == NULL)
2259     {
2260       /* Initialize per-objfile state.  */
2261       dwarf2_per_objfile
2262         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2263                                                                      names);
2264       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2265     }
2266   return (!dwarf2_per_objfile->info.is_virtual
2267           && dwarf2_per_objfile->info.s.section != NULL
2268           && !dwarf2_per_objfile->abbrev.is_virtual
2269           && dwarf2_per_objfile->abbrev.s.section != NULL);
2270 }
2271
2272 /* Return the containing section of virtual section SECTION.  */
2273
2274 static struct dwarf2_section_info *
2275 get_containing_section (const struct dwarf2_section_info *section)
2276 {
2277   gdb_assert (section->is_virtual);
2278   return section->s.containing_section;
2279 }
2280
2281 /* Return the bfd owner of SECTION.  */
2282
2283 static struct bfd *
2284 get_section_bfd_owner (const struct dwarf2_section_info *section)
2285 {
2286   if (section->is_virtual)
2287     {
2288       section = get_containing_section (section);
2289       gdb_assert (!section->is_virtual);
2290     }
2291   return section->s.section->owner;
2292 }
2293
2294 /* Return the bfd section of SECTION.
2295    Returns NULL if the section is not present.  */
2296
2297 static asection *
2298 get_section_bfd_section (const struct dwarf2_section_info *section)
2299 {
2300   if (section->is_virtual)
2301     {
2302       section = get_containing_section (section);
2303       gdb_assert (!section->is_virtual);
2304     }
2305   return section->s.section;
2306 }
2307
2308 /* Return the name of SECTION.  */
2309
2310 static const char *
2311 get_section_name (const struct dwarf2_section_info *section)
2312 {
2313   asection *sectp = get_section_bfd_section (section);
2314
2315   gdb_assert (sectp != NULL);
2316   return bfd_section_name (get_section_bfd_owner (section), sectp);
2317 }
2318
2319 /* Return the name of the file SECTION is in.  */
2320
2321 static const char *
2322 get_section_file_name (const struct dwarf2_section_info *section)
2323 {
2324   bfd *abfd = get_section_bfd_owner (section);
2325
2326   return bfd_get_filename (abfd);
2327 }
2328
2329 /* Return the id of SECTION.
2330    Returns 0 if SECTION doesn't exist.  */
2331
2332 static int
2333 get_section_id (const struct dwarf2_section_info *section)
2334 {
2335   asection *sectp = get_section_bfd_section (section);
2336
2337   if (sectp == NULL)
2338     return 0;
2339   return sectp->id;
2340 }
2341
2342 /* Return the flags of SECTION.
2343    SECTION (or containing section if this is a virtual section) must exist.  */
2344
2345 static int
2346 get_section_flags (const struct dwarf2_section_info *section)
2347 {
2348   asection *sectp = get_section_bfd_section (section);
2349
2350   gdb_assert (sectp != NULL);
2351   return bfd_get_section_flags (sectp->owner, sectp);
2352 }
2353
2354 /* When loading sections, we look either for uncompressed section or for
2355    compressed section names.  */
2356
2357 static int
2358 section_is_p (const char *section_name,
2359               const struct dwarf2_section_names *names)
2360 {
2361   if (names->normal != NULL
2362       && strcmp (section_name, names->normal) == 0)
2363     return 1;
2364   if (names->compressed != NULL
2365       && strcmp (section_name, names->compressed) == 0)
2366     return 1;
2367   return 0;
2368 }
2369
2370 /* See declaration.  */
2371
2372 void
2373 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2374                                      const dwarf2_debug_sections &names)
2375 {
2376   flagword aflag = bfd_get_section_flags (abfd, sectp);
2377
2378   if ((aflag & SEC_HAS_CONTENTS) == 0)
2379     {
2380     }
2381   else if (section_is_p (sectp->name, &names.info))
2382     {
2383       this->info.s.section = sectp;
2384       this->info.size = bfd_get_section_size (sectp);
2385     }
2386   else if (section_is_p (sectp->name, &names.abbrev))
2387     {
2388       this->abbrev.s.section = sectp;
2389       this->abbrev.size = bfd_get_section_size (sectp);
2390     }
2391   else if (section_is_p (sectp->name, &names.line))
2392     {
2393       this->line.s.section = sectp;
2394       this->line.size = bfd_get_section_size (sectp);
2395     }
2396   else if (section_is_p (sectp->name, &names.loc))
2397     {
2398       this->loc.s.section = sectp;
2399       this->loc.size = bfd_get_section_size (sectp);
2400     }
2401   else if (section_is_p (sectp->name, &names.loclists))
2402     {
2403       this->loclists.s.section = sectp;
2404       this->loclists.size = bfd_get_section_size (sectp);
2405     }
2406   else if (section_is_p (sectp->name, &names.macinfo))
2407     {
2408       this->macinfo.s.section = sectp;
2409       this->macinfo.size = bfd_get_section_size (sectp);
2410     }
2411   else if (section_is_p (sectp->name, &names.macro))
2412     {
2413       this->macro.s.section = sectp;
2414       this->macro.size = bfd_get_section_size (sectp);
2415     }
2416   else if (section_is_p (sectp->name, &names.str))
2417     {
2418       this->str.s.section = sectp;
2419       this->str.size = bfd_get_section_size (sectp);
2420     }
2421   else if (section_is_p (sectp->name, &names.line_str))
2422     {
2423       this->line_str.s.section = sectp;
2424       this->line_str.size = bfd_get_section_size (sectp);
2425     }
2426   else if (section_is_p (sectp->name, &names.addr))
2427     {
2428       this->addr.s.section = sectp;
2429       this->addr.size = bfd_get_section_size (sectp);
2430     }
2431   else if (section_is_p (sectp->name, &names.frame))
2432     {
2433       this->frame.s.section = sectp;
2434       this->frame.size = bfd_get_section_size (sectp);
2435     }
2436   else if (section_is_p (sectp->name, &names.eh_frame))
2437     {
2438       this->eh_frame.s.section = sectp;
2439       this->eh_frame.size = bfd_get_section_size (sectp);
2440     }
2441   else if (section_is_p (sectp->name, &names.ranges))
2442     {
2443       this->ranges.s.section = sectp;
2444       this->ranges.size = bfd_get_section_size (sectp);
2445     }
2446   else if (section_is_p (sectp->name, &names.rnglists))
2447     {
2448       this->rnglists.s.section = sectp;
2449       this->rnglists.size = bfd_get_section_size (sectp);
2450     }
2451   else if (section_is_p (sectp->name, &names.types))
2452     {
2453       struct dwarf2_section_info type_section;
2454
2455       memset (&type_section, 0, sizeof (type_section));
2456       type_section.s.section = sectp;
2457       type_section.size = bfd_get_section_size (sectp);
2458
2459       VEC_safe_push (dwarf2_section_info_def, this->types,
2460                      &type_section);
2461     }
2462   else if (section_is_p (sectp->name, &names.gdb_index))
2463     {
2464       this->gdb_index.s.section = sectp;
2465       this->gdb_index.size = bfd_get_section_size (sectp);
2466     }
2467   else if (section_is_p (sectp->name, &names.debug_names))
2468     {
2469       this->debug_names.s.section = sectp;
2470       this->debug_names.size = bfd_get_section_size (sectp);
2471     }
2472   else if (section_is_p (sectp->name, &names.debug_aranges))
2473     {
2474       this->debug_aranges.s.section = sectp;
2475       this->debug_aranges.size = bfd_get_section_size (sectp);
2476     }
2477
2478   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2479       && bfd_section_vma (abfd, sectp) == 0)
2480     this->has_section_at_zero = true;
2481 }
2482
2483 /* A helper function that decides whether a section is empty,
2484    or not present.  */
2485
2486 static int
2487 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2488 {
2489   if (section->is_virtual)
2490     return section->size == 0;
2491   return section->s.section == NULL || section->size == 0;
2492 }
2493
2494 /* See dwarf2read.h.  */
2495
2496 void
2497 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2498 {
2499   asection *sectp;
2500   bfd *abfd;
2501   gdb_byte *buf, *retbuf;
2502
2503   if (info->readin)
2504     return;
2505   info->buffer = NULL;
2506   info->readin = 1;
2507
2508   if (dwarf2_section_empty_p (info))
2509     return;
2510
2511   sectp = get_section_bfd_section (info);
2512
2513   /* If this is a virtual section we need to read in the real one first.  */
2514   if (info->is_virtual)
2515     {
2516       struct dwarf2_section_info *containing_section =
2517         get_containing_section (info);
2518
2519       gdb_assert (sectp != NULL);
2520       if ((sectp->flags & SEC_RELOC) != 0)
2521         {
2522           error (_("Dwarf Error: DWP format V2 with relocations is not"
2523                    " supported in section %s [in module %s]"),
2524                  get_section_name (info), get_section_file_name (info));
2525         }
2526       dwarf2_read_section (objfile, containing_section);
2527       /* Other code should have already caught virtual sections that don't
2528          fit.  */
2529       gdb_assert (info->virtual_offset + info->size
2530                   <= containing_section->size);
2531       /* If the real section is empty or there was a problem reading the
2532          section we shouldn't get here.  */
2533       gdb_assert (containing_section->buffer != NULL);
2534       info->buffer = containing_section->buffer + info->virtual_offset;
2535       return;
2536     }
2537
2538   /* If the section has relocations, we must read it ourselves.
2539      Otherwise we attach it to the BFD.  */
2540   if ((sectp->flags & SEC_RELOC) == 0)
2541     {
2542       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2543       return;
2544     }
2545
2546   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2547   info->buffer = buf;
2548
2549   /* When debugging .o files, we may need to apply relocations; see
2550      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2551      We never compress sections in .o files, so we only need to
2552      try this when the section is not compressed.  */
2553   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2554   if (retbuf != NULL)
2555     {
2556       info->buffer = retbuf;
2557       return;
2558     }
2559
2560   abfd = get_section_bfd_owner (info);
2561   gdb_assert (abfd != NULL);
2562
2563   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2564       || bfd_bread (buf, info->size, abfd) != info->size)
2565     {
2566       error (_("Dwarf Error: Can't read DWARF data"
2567                " in section %s [in module %s]"),
2568              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2569     }
2570 }
2571
2572 /* A helper function that returns the size of a section in a safe way.
2573    If you are positive that the section has been read before using the
2574    size, then it is safe to refer to the dwarf2_section_info object's
2575    "size" field directly.  In other cases, you must call this
2576    function, because for compressed sections the size field is not set
2577    correctly until the section has been read.  */
2578
2579 static bfd_size_type
2580 dwarf2_section_size (struct objfile *objfile,
2581                      struct dwarf2_section_info *info)
2582 {
2583   if (!info->readin)
2584     dwarf2_read_section (objfile, info);
2585   return info->size;
2586 }
2587
2588 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2589    SECTION_NAME.  */
2590
2591 void
2592 dwarf2_get_section_info (struct objfile *objfile,
2593                          enum dwarf2_section_enum sect,
2594                          asection **sectp, const gdb_byte **bufp,
2595                          bfd_size_type *sizep)
2596 {
2597   struct dwarf2_per_objfile *data
2598     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2599                                                   dwarf2_objfile_data_key);
2600   struct dwarf2_section_info *info;
2601
2602   /* We may see an objfile without any DWARF, in which case we just
2603      return nothing.  */
2604   if (data == NULL)
2605     {
2606       *sectp = NULL;
2607       *bufp = NULL;
2608       *sizep = 0;
2609       return;
2610     }
2611   switch (sect)
2612     {
2613     case DWARF2_DEBUG_FRAME:
2614       info = &data->frame;
2615       break;
2616     case DWARF2_EH_FRAME:
2617       info = &data->eh_frame;
2618       break;
2619     default:
2620       gdb_assert_not_reached ("unexpected section");
2621     }
2622
2623   dwarf2_read_section (objfile, info);
2624
2625   *sectp = get_section_bfd_section (info);
2626   *bufp = info->buffer;
2627   *sizep = info->size;
2628 }
2629
2630 /* A helper function to find the sections for a .dwz file.  */
2631
2632 static void
2633 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2634 {
2635   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2636
2637   /* Note that we only support the standard ELF names, because .dwz
2638      is ELF-only (at the time of writing).  */
2639   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2640     {
2641       dwz_file->abbrev.s.section = sectp;
2642       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2643     }
2644   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2645     {
2646       dwz_file->info.s.section = sectp;
2647       dwz_file->info.size = bfd_get_section_size (sectp);
2648     }
2649   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2650     {
2651       dwz_file->str.s.section = sectp;
2652       dwz_file->str.size = bfd_get_section_size (sectp);
2653     }
2654   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2655     {
2656       dwz_file->line.s.section = sectp;
2657       dwz_file->line.size = bfd_get_section_size (sectp);
2658     }
2659   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2660     {
2661       dwz_file->macro.s.section = sectp;
2662       dwz_file->macro.size = bfd_get_section_size (sectp);
2663     }
2664   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2665     {
2666       dwz_file->gdb_index.s.section = sectp;
2667       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2668     }
2669   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2670     {
2671       dwz_file->debug_names.s.section = sectp;
2672       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2673     }
2674 }
2675
2676 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2677    there is no .gnu_debugaltlink section in the file.  Error if there
2678    is such a section but the file cannot be found.  */
2679
2680 static struct dwz_file *
2681 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2682 {
2683   const char *filename;
2684   bfd_size_type buildid_len_arg;
2685   size_t buildid_len;
2686   bfd_byte *buildid;
2687
2688   if (dwarf2_per_objfile->dwz_file != NULL)
2689     return dwarf2_per_objfile->dwz_file.get ();
2690
2691   bfd_set_error (bfd_error_no_error);
2692   gdb::unique_xmalloc_ptr<char> data
2693     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2694                                   &buildid_len_arg, &buildid));
2695   if (data == NULL)
2696     {
2697       if (bfd_get_error () == bfd_error_no_error)
2698         return NULL;
2699       error (_("could not read '.gnu_debugaltlink' section: %s"),
2700              bfd_errmsg (bfd_get_error ()));
2701     }
2702
2703   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2704
2705   buildid_len = (size_t) buildid_len_arg;
2706
2707   filename = data.get ();
2708
2709   std::string abs_storage;
2710   if (!IS_ABSOLUTE_PATH (filename))
2711     {
2712       gdb::unique_xmalloc_ptr<char> abs
2713         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2714
2715       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2716       filename = abs_storage.c_str ();
2717     }
2718
2719   /* First try the file name given in the section.  If that doesn't
2720      work, try to use the build-id instead.  */
2721   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2722   if (dwz_bfd != NULL)
2723     {
2724       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2725         dwz_bfd.reset (nullptr);
2726     }
2727
2728   if (dwz_bfd == NULL)
2729     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2730
2731   if (dwz_bfd == NULL)
2732     error (_("could not find '.gnu_debugaltlink' file for %s"),
2733            objfile_name (dwarf2_per_objfile->objfile));
2734
2735   std::unique_ptr<struct dwz_file> result
2736     (new struct dwz_file (std::move (dwz_bfd)));
2737
2738   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2739                          result.get ());
2740
2741   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2742                             result->dwz_bfd.get ());
2743   dwarf2_per_objfile->dwz_file = std::move (result);
2744   return dwarf2_per_objfile->dwz_file.get ();
2745 }
2746 \f
2747 /* DWARF quick_symbols_functions support.  */
2748
2749 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2750    unique line tables, so we maintain a separate table of all .debug_line
2751    derived entries to support the sharing.
2752    All the quick functions need is the list of file names.  We discard the
2753    line_header when we're done and don't need to record it here.  */
2754 struct quick_file_names
2755 {
2756   /* The data used to construct the hash key.  */
2757   struct stmt_list_hash hash;
2758
2759   /* The number of entries in file_names, real_names.  */
2760   unsigned int num_file_names;
2761
2762   /* The file names from the line table, after being run through
2763      file_full_name.  */
2764   const char **file_names;
2765
2766   /* The file names from the line table after being run through
2767      gdb_realpath.  These are computed lazily.  */
2768   const char **real_names;
2769 };
2770
2771 /* When using the index (and thus not using psymtabs), each CU has an
2772    object of this type.  This is used to hold information needed by
2773    the various "quick" methods.  */
2774 struct dwarf2_per_cu_quick_data
2775 {
2776   /* The file table.  This can be NULL if there was no file table
2777      or it's currently not read in.
2778      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2779   struct quick_file_names *file_names;
2780
2781   /* The corresponding symbol table.  This is NULL if symbols for this
2782      CU have not yet been read.  */
2783   struct compunit_symtab *compunit_symtab;
2784
2785   /* A temporary mark bit used when iterating over all CUs in
2786      expand_symtabs_matching.  */
2787   unsigned int mark : 1;
2788
2789   /* True if we've tried to read the file table and found there isn't one.
2790      There will be no point in trying to read it again next time.  */
2791   unsigned int no_file_data : 1;
2792 };
2793
2794 /* Utility hash function for a stmt_list_hash.  */
2795
2796 static hashval_t
2797 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2798 {
2799   hashval_t v = 0;
2800
2801   if (stmt_list_hash->dwo_unit != NULL)
2802     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2803   v += to_underlying (stmt_list_hash->line_sect_off);
2804   return v;
2805 }
2806
2807 /* Utility equality function for a stmt_list_hash.  */
2808
2809 static int
2810 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2811                     const struct stmt_list_hash *rhs)
2812 {
2813   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2814     return 0;
2815   if (lhs->dwo_unit != NULL
2816       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2817     return 0;
2818
2819   return lhs->line_sect_off == rhs->line_sect_off;
2820 }
2821
2822 /* Hash function for a quick_file_names.  */
2823
2824 static hashval_t
2825 hash_file_name_entry (const void *e)
2826 {
2827   const struct quick_file_names *file_data
2828     = (const struct quick_file_names *) e;
2829
2830   return hash_stmt_list_entry (&file_data->hash);
2831 }
2832
2833 /* Equality function for a quick_file_names.  */
2834
2835 static int
2836 eq_file_name_entry (const void *a, const void *b)
2837 {
2838   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2839   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2840
2841   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2842 }
2843
2844 /* Delete function for a quick_file_names.  */
2845
2846 static void
2847 delete_file_name_entry (void *e)
2848 {
2849   struct quick_file_names *file_data = (struct quick_file_names *) e;
2850   int i;
2851
2852   for (i = 0; i < file_data->num_file_names; ++i)
2853     {
2854       xfree ((void*) file_data->file_names[i]);
2855       if (file_data->real_names)
2856         xfree ((void*) file_data->real_names[i]);
2857     }
2858
2859   /* The space for the struct itself lives on objfile_obstack,
2860      so we don't free it here.  */
2861 }
2862
2863 /* Create a quick_file_names hash table.  */
2864
2865 static htab_t
2866 create_quick_file_names_table (unsigned int nr_initial_entries)
2867 {
2868   return htab_create_alloc (nr_initial_entries,
2869                             hash_file_name_entry, eq_file_name_entry,
2870                             delete_file_name_entry, xcalloc, xfree);
2871 }
2872
2873 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2874    have to be created afterwards.  You should call age_cached_comp_units after
2875    processing PER_CU->CU.  dw2_setup must have been already called.  */
2876
2877 static void
2878 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2879 {
2880   if (per_cu->is_debug_types)
2881     load_full_type_unit (per_cu);
2882   else
2883     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2884
2885   if (per_cu->cu == NULL)
2886     return;  /* Dummy CU.  */
2887
2888   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2889 }
2890
2891 /* Read in the symbols for PER_CU.  */
2892
2893 static void
2894 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2895 {
2896   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2897
2898   /* Skip type_unit_groups, reading the type units they contain
2899      is handled elsewhere.  */
2900   if (IS_TYPE_UNIT_GROUP (per_cu))
2901     return;
2902
2903   /* The destructor of dwarf2_queue_guard frees any entries left on
2904      the queue.  After this point we're guaranteed to leave this function
2905      with the dwarf queue empty.  */
2906   dwarf2_queue_guard q_guard;
2907
2908   if (dwarf2_per_objfile->using_index
2909       ? per_cu->v.quick->compunit_symtab == NULL
2910       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2911     {
2912       queue_comp_unit (per_cu, language_minimal);
2913       load_cu (per_cu, skip_partial);
2914
2915       /* If we just loaded a CU from a DWO, and we're working with an index
2916          that may badly handle TUs, load all the TUs in that DWO as well.
2917          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2918       if (!per_cu->is_debug_types
2919           && per_cu->cu != NULL
2920           && per_cu->cu->dwo_unit != NULL
2921           && dwarf2_per_objfile->index_table != NULL
2922           && dwarf2_per_objfile->index_table->version <= 7
2923           /* DWP files aren't supported yet.  */
2924           && get_dwp_file (dwarf2_per_objfile) == NULL)
2925         queue_and_load_all_dwo_tus (per_cu);
2926     }
2927
2928   process_queue (dwarf2_per_objfile);
2929
2930   /* Age the cache, releasing compilation units that have not
2931      been used recently.  */
2932   age_cached_comp_units (dwarf2_per_objfile);
2933 }
2934
2935 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2936    the objfile from which this CU came.  Returns the resulting symbol
2937    table.  */
2938
2939 static struct compunit_symtab *
2940 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2941 {
2942   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2943
2944   gdb_assert (dwarf2_per_objfile->using_index);
2945   if (!per_cu->v.quick->compunit_symtab)
2946     {
2947       free_cached_comp_units freer (dwarf2_per_objfile);
2948       scoped_restore decrementer = increment_reading_symtab ();
2949       dw2_do_instantiate_symtab (per_cu, skip_partial);
2950       process_cu_includes (dwarf2_per_objfile);
2951     }
2952
2953   return per_cu->v.quick->compunit_symtab;
2954 }
2955
2956 /* See declaration.  */
2957
2958 dwarf2_per_cu_data *
2959 dwarf2_per_objfile::get_cutu (int index)
2960 {
2961   if (index >= this->all_comp_units.size ())
2962     {
2963       index -= this->all_comp_units.size ();
2964       gdb_assert (index < this->all_type_units.size ());
2965       return &this->all_type_units[index]->per_cu;
2966     }
2967
2968   return this->all_comp_units[index];
2969 }
2970
2971 /* See declaration.  */
2972
2973 dwarf2_per_cu_data *
2974 dwarf2_per_objfile::get_cu (int index)
2975 {
2976   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2977
2978   return this->all_comp_units[index];
2979 }
2980
2981 /* See declaration.  */
2982
2983 signatured_type *
2984 dwarf2_per_objfile::get_tu (int index)
2985 {
2986   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2987
2988   return this->all_type_units[index];
2989 }
2990
2991 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2992    objfile_obstack, and constructed with the specified field
2993    values.  */
2994
2995 static dwarf2_per_cu_data *
2996 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2997                           struct dwarf2_section_info *section,
2998                           int is_dwz,
2999                           sect_offset sect_off, ULONGEST length)
3000 {
3001   struct objfile *objfile = dwarf2_per_objfile->objfile;
3002   dwarf2_per_cu_data *the_cu
3003     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3004                      struct dwarf2_per_cu_data);
3005   the_cu->sect_off = sect_off;
3006   the_cu->length = length;
3007   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
3008   the_cu->section = section;
3009   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3010                                    struct dwarf2_per_cu_quick_data);
3011   the_cu->is_dwz = is_dwz;
3012   return the_cu;
3013 }
3014
3015 /* A helper for create_cus_from_index that handles a given list of
3016    CUs.  */
3017
3018 static void
3019 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
3020                             const gdb_byte *cu_list, offset_type n_elements,
3021                             struct dwarf2_section_info *section,
3022                             int is_dwz)
3023 {
3024   for (offset_type i = 0; i < n_elements; i += 2)
3025     {
3026       gdb_static_assert (sizeof (ULONGEST) >= 8);
3027
3028       sect_offset sect_off
3029         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
3030       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
3031       cu_list += 2 * 8;
3032
3033       dwarf2_per_cu_data *per_cu
3034         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3035                                      sect_off, length);
3036       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3037     }
3038 }
3039
3040 /* Read the CU list from the mapped index, and use it to create all
3041    the CU objects for this objfile.  */
3042
3043 static void
3044 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3045                        const gdb_byte *cu_list, offset_type cu_list_elements,
3046                        const gdb_byte *dwz_list, offset_type dwz_elements)
3047 {
3048   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3049   dwarf2_per_objfile->all_comp_units.reserve
3050     ((cu_list_elements + dwz_elements) / 2);
3051
3052   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3053                               &dwarf2_per_objfile->info, 0);
3054
3055   if (dwz_elements == 0)
3056     return;
3057
3058   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3059   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3060                               &dwz->info, 1);
3061 }
3062
3063 /* Create the signatured type hash table from the index.  */
3064
3065 static void
3066 create_signatured_type_table_from_index
3067   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3068    struct dwarf2_section_info *section,
3069    const gdb_byte *bytes,
3070    offset_type elements)
3071 {
3072   struct objfile *objfile = dwarf2_per_objfile->objfile;
3073
3074   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3075   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3076
3077   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3078
3079   for (offset_type i = 0; i < elements; i += 3)
3080     {
3081       struct signatured_type *sig_type;
3082       ULONGEST signature;
3083       void **slot;
3084       cu_offset type_offset_in_tu;
3085
3086       gdb_static_assert (sizeof (ULONGEST) >= 8);
3087       sect_offset sect_off
3088         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3089       type_offset_in_tu
3090         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3091                                                 BFD_ENDIAN_LITTLE);
3092       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3093       bytes += 3 * 8;
3094
3095       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3096                                  struct signatured_type);
3097       sig_type->signature = signature;
3098       sig_type->type_offset_in_tu = type_offset_in_tu;
3099       sig_type->per_cu.is_debug_types = 1;
3100       sig_type->per_cu.section = section;
3101       sig_type->per_cu.sect_off = sect_off;
3102       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3103       sig_type->per_cu.v.quick
3104         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3105                           struct dwarf2_per_cu_quick_data);
3106
3107       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3108       *slot = sig_type;
3109
3110       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3111     }
3112
3113   dwarf2_per_objfile->signatured_types = sig_types_hash;
3114 }
3115
3116 /* Create the signatured type hash table from .debug_names.  */
3117
3118 static void
3119 create_signatured_type_table_from_debug_names
3120   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3121    const mapped_debug_names &map,
3122    struct dwarf2_section_info *section,
3123    struct dwarf2_section_info *abbrev_section)
3124 {
3125   struct objfile *objfile = dwarf2_per_objfile->objfile;
3126
3127   dwarf2_read_section (objfile, section);
3128   dwarf2_read_section (objfile, abbrev_section);
3129
3130   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3131   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3132
3133   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3134
3135   for (uint32_t i = 0; i < map.tu_count; ++i)
3136     {
3137       struct signatured_type *sig_type;
3138       void **slot;
3139
3140       sect_offset sect_off
3141         = (sect_offset) (extract_unsigned_integer
3142                          (map.tu_table_reordered + i * map.offset_size,
3143                           map.offset_size,
3144                           map.dwarf5_byte_order));
3145
3146       comp_unit_head cu_header;
3147       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3148                                      abbrev_section,
3149                                      section->buffer + to_underlying (sect_off),
3150                                      rcuh_kind::TYPE);
3151
3152       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3153                                  struct signatured_type);
3154       sig_type->signature = cu_header.signature;
3155       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3156       sig_type->per_cu.is_debug_types = 1;
3157       sig_type->per_cu.section = section;
3158       sig_type->per_cu.sect_off = sect_off;
3159       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3160       sig_type->per_cu.v.quick
3161         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3162                           struct dwarf2_per_cu_quick_data);
3163
3164       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3165       *slot = sig_type;
3166
3167       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3168     }
3169
3170   dwarf2_per_objfile->signatured_types = sig_types_hash;
3171 }
3172
3173 /* Read the address map data from the mapped index, and use it to
3174    populate the objfile's psymtabs_addrmap.  */
3175
3176 static void
3177 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3178                            struct mapped_index *index)
3179 {
3180   struct objfile *objfile = dwarf2_per_objfile->objfile;
3181   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3182   const gdb_byte *iter, *end;
3183   struct addrmap *mutable_map;
3184   CORE_ADDR baseaddr;
3185
3186   auto_obstack temp_obstack;
3187
3188   mutable_map = addrmap_create_mutable (&temp_obstack);
3189
3190   iter = index->address_table.data ();
3191   end = iter + index->address_table.size ();
3192
3193   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3194
3195   while (iter < end)
3196     {
3197       ULONGEST hi, lo, cu_index;
3198       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3199       iter += 8;
3200       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3201       iter += 8;
3202       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3203       iter += 4;
3204
3205       if (lo > hi)
3206         {
3207           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3208                      hex_string (lo), hex_string (hi));
3209           continue;
3210         }
3211
3212       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3213         {
3214           complaint (_(".gdb_index address table has invalid CU number %u"),
3215                      (unsigned) cu_index);
3216           continue;
3217         }
3218
3219       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3220       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3221       addrmap_set_empty (mutable_map, lo, hi - 1,
3222                          dwarf2_per_objfile->get_cu (cu_index));
3223     }
3224
3225   objfile->partial_symtabs->psymtabs_addrmap
3226     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3227 }
3228
3229 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3230    populate the objfile's psymtabs_addrmap.  */
3231
3232 static void
3233 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3234                              struct dwarf2_section_info *section)
3235 {
3236   struct objfile *objfile = dwarf2_per_objfile->objfile;
3237   bfd *abfd = objfile->obfd;
3238   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3239   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3240                                        SECT_OFF_TEXT (objfile));
3241
3242   auto_obstack temp_obstack;
3243   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3244
3245   std::unordered_map<sect_offset,
3246                      dwarf2_per_cu_data *,
3247                      gdb::hash_enum<sect_offset>>
3248     debug_info_offset_to_per_cu;
3249   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3250     {
3251       const auto insertpair
3252         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3253       if (!insertpair.second)
3254         {
3255           warning (_("Section .debug_aranges in %s has duplicate "
3256                      "debug_info_offset %s, ignoring .debug_aranges."),
3257                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3258           return;
3259         }
3260     }
3261
3262   dwarf2_read_section (objfile, section);
3263
3264   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3265
3266   const gdb_byte *addr = section->buffer;
3267
3268   while (addr < section->buffer + section->size)
3269     {
3270       const gdb_byte *const entry_addr = addr;
3271       unsigned int bytes_read;
3272
3273       const LONGEST entry_length = read_initial_length (abfd, addr,
3274                                                         &bytes_read);
3275       addr += bytes_read;
3276
3277       const gdb_byte *const entry_end = addr + entry_length;
3278       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3279       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3280       if (addr + entry_length > section->buffer + section->size)
3281         {
3282           warning (_("Section .debug_aranges in %s entry at offset %zu "
3283                      "length %s exceeds section length %s, "
3284                      "ignoring .debug_aranges."),
3285                    objfile_name (objfile), entry_addr - section->buffer,
3286                    plongest (bytes_read + entry_length),
3287                    pulongest (section->size));
3288           return;
3289         }
3290
3291       /* The version number.  */
3292       const uint16_t version = read_2_bytes (abfd, addr);
3293       addr += 2;
3294       if (version != 2)
3295         {
3296           warning (_("Section .debug_aranges in %s entry at offset %zu "
3297                      "has unsupported version %d, ignoring .debug_aranges."),
3298                    objfile_name (objfile), entry_addr - section->buffer,
3299                    version);
3300           return;
3301         }
3302
3303       const uint64_t debug_info_offset
3304         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3305       addr += offset_size;
3306       const auto per_cu_it
3307         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3308       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3309         {
3310           warning (_("Section .debug_aranges in %s entry at offset %zu "
3311                      "debug_info_offset %s does not exists, "
3312                      "ignoring .debug_aranges."),
3313                    objfile_name (objfile), entry_addr - section->buffer,
3314                    pulongest (debug_info_offset));
3315           return;
3316         }
3317       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3318
3319       const uint8_t address_size = *addr++;
3320       if (address_size < 1 || address_size > 8)
3321         {
3322           warning (_("Section .debug_aranges in %s entry at offset %zu "
3323                      "address_size %u is invalid, ignoring .debug_aranges."),
3324                    objfile_name (objfile), entry_addr - section->buffer,
3325                    address_size);
3326           return;
3327         }
3328
3329       const uint8_t segment_selector_size = *addr++;
3330       if (segment_selector_size != 0)
3331         {
3332           warning (_("Section .debug_aranges in %s entry at offset %zu "
3333                      "segment_selector_size %u is not supported, "
3334                      "ignoring .debug_aranges."),
3335                    objfile_name (objfile), entry_addr - section->buffer,
3336                    segment_selector_size);
3337           return;
3338         }
3339
3340       /* Must pad to an alignment boundary that is twice the address
3341          size.  It is undocumented by the DWARF standard but GCC does
3342          use it.  */
3343       for (size_t padding = ((-(addr - section->buffer))
3344                              & (2 * address_size - 1));
3345            padding > 0; padding--)
3346         if (*addr++ != 0)
3347           {
3348             warning (_("Section .debug_aranges in %s entry at offset %zu "
3349                        "padding is not zero, ignoring .debug_aranges."),
3350                      objfile_name (objfile), entry_addr - section->buffer);
3351             return;
3352           }
3353
3354       for (;;)
3355         {
3356           if (addr + 2 * address_size > entry_end)
3357             {
3358               warning (_("Section .debug_aranges in %s entry at offset %zu "
3359                          "address list is not properly terminated, "
3360                          "ignoring .debug_aranges."),
3361                        objfile_name (objfile), entry_addr - section->buffer);
3362               return;
3363             }
3364           ULONGEST start = extract_unsigned_integer (addr, address_size,
3365                                                      dwarf5_byte_order);
3366           addr += address_size;
3367           ULONGEST length = extract_unsigned_integer (addr, address_size,
3368                                                       dwarf5_byte_order);
3369           addr += address_size;
3370           if (start == 0 && length == 0)
3371             break;
3372           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3373             {
3374               /* Symbol was eliminated due to a COMDAT group.  */
3375               continue;
3376             }
3377           ULONGEST end = start + length;
3378           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3379                    - baseaddr);
3380           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3381                  - baseaddr);
3382           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3383         }
3384     }
3385
3386   objfile->partial_symtabs->psymtabs_addrmap
3387     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3388 }
3389
3390 /* Find a slot in the mapped index INDEX for the object named NAME.
3391    If NAME is found, set *VEC_OUT to point to the CU vector in the
3392    constant pool and return true.  If NAME cannot be found, return
3393    false.  */
3394
3395 static bool
3396 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3397                           offset_type **vec_out)
3398 {
3399   offset_type hash;
3400   offset_type slot, step;
3401   int (*cmp) (const char *, const char *);
3402
3403   gdb::unique_xmalloc_ptr<char> without_params;
3404   if (current_language->la_language == language_cplus
3405       || current_language->la_language == language_fortran
3406       || current_language->la_language == language_d)
3407     {
3408       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3409          not contain any.  */
3410
3411       if (strchr (name, '(') != NULL)
3412         {
3413           without_params = cp_remove_params (name);
3414
3415           if (without_params != NULL)
3416             name = without_params.get ();
3417         }
3418     }
3419
3420   /* Index version 4 did not support case insensitive searches.  But the
3421      indices for case insensitive languages are built in lowercase, therefore
3422      simulate our NAME being searched is also lowercased.  */
3423   hash = mapped_index_string_hash ((index->version == 4
3424                                     && case_sensitivity == case_sensitive_off
3425                                     ? 5 : index->version),
3426                                    name);
3427
3428   slot = hash & (index->symbol_table.size () - 1);
3429   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3430   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3431
3432   for (;;)
3433     {
3434       const char *str;
3435
3436       const auto &bucket = index->symbol_table[slot];
3437       if (bucket.name == 0 && bucket.vec == 0)
3438         return false;
3439
3440       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3441       if (!cmp (name, str))
3442         {
3443           *vec_out = (offset_type *) (index->constant_pool
3444                                       + MAYBE_SWAP (bucket.vec));
3445           return true;
3446         }
3447
3448       slot = (slot + step) & (index->symbol_table.size () - 1);
3449     }
3450 }
3451
3452 /* A helper function that reads the .gdb_index from BUFFER and fills
3453    in MAP.  FILENAME is the name of the file containing the data;
3454    it is used for error reporting.  DEPRECATED_OK is true if it is
3455    ok to use deprecated sections.
3456
3457    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3458    out parameters that are filled in with information about the CU and
3459    TU lists in the section.
3460
3461    Returns true if all went well, false otherwise.  */
3462
3463 static bool
3464 read_gdb_index_from_buffer (struct objfile *objfile,
3465                             const char *filename,
3466                             bool deprecated_ok,
3467                             gdb::array_view<const gdb_byte> buffer,
3468                             struct mapped_index *map,
3469                             const gdb_byte **cu_list,
3470                             offset_type *cu_list_elements,
3471                             const gdb_byte **types_list,
3472                             offset_type *types_list_elements)
3473 {
3474   const gdb_byte *addr = &buffer[0];
3475
3476   /* Version check.  */
3477   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3478   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3479      causes the index to behave very poorly for certain requests.  Version 3
3480      contained incomplete addrmap.  So, it seems better to just ignore such
3481      indices.  */
3482   if (version < 4)
3483     {
3484       static int warning_printed = 0;
3485       if (!warning_printed)
3486         {
3487           warning (_("Skipping obsolete .gdb_index section in %s."),
3488                    filename);
3489           warning_printed = 1;
3490         }
3491       return 0;
3492     }
3493   /* Index version 4 uses a different hash function than index version
3494      5 and later.
3495
3496      Versions earlier than 6 did not emit psymbols for inlined
3497      functions.  Using these files will cause GDB not to be able to
3498      set breakpoints on inlined functions by name, so we ignore these
3499      indices unless the user has done
3500      "set use-deprecated-index-sections on".  */
3501   if (version < 6 && !deprecated_ok)
3502     {
3503       static int warning_printed = 0;
3504       if (!warning_printed)
3505         {
3506           warning (_("\
3507 Skipping deprecated .gdb_index section in %s.\n\
3508 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3509 to use the section anyway."),
3510                    filename);
3511           warning_printed = 1;
3512         }
3513       return 0;
3514     }
3515   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3516      of the TU (for symbols coming from TUs),
3517      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3518      Plus gold-generated indices can have duplicate entries for global symbols,
3519      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3520      These are just performance bugs, and we can't distinguish gdb-generated
3521      indices from gold-generated ones, so issue no warning here.  */
3522
3523   /* Indexes with higher version than the one supported by GDB may be no
3524      longer backward compatible.  */
3525   if (version > 8)
3526     return 0;
3527
3528   map->version = version;
3529
3530   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3531
3532   int i = 0;
3533   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3534   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3535                        / 8);
3536   ++i;
3537
3538   *types_list = addr + MAYBE_SWAP (metadata[i]);
3539   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3540                            - MAYBE_SWAP (metadata[i]))
3541                           / 8);
3542   ++i;
3543
3544   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3545   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3546   map->address_table
3547     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3548   ++i;
3549
3550   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3551   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3552   map->symbol_table
3553     = gdb::array_view<mapped_index::symbol_table_slot>
3554        ((mapped_index::symbol_table_slot *) symbol_table,
3555         (mapped_index::symbol_table_slot *) symbol_table_end);
3556
3557   ++i;
3558   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3559
3560   return 1;
3561 }
3562
3563 /* Callback types for dwarf2_read_gdb_index.  */
3564
3565 typedef gdb::function_view
3566     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3567     get_gdb_index_contents_ftype;
3568 typedef gdb::function_view
3569     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3570     get_gdb_index_contents_dwz_ftype;
3571
3572 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3573    elements of all the CUs and return 1.  Otherwise, return 0.  */
3574
3575 static int
3576 dwarf2_read_gdb_index
3577   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3578    get_gdb_index_contents_ftype get_gdb_index_contents,
3579    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3580 {
3581   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3582   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3583   struct dwz_file *dwz;
3584   struct objfile *objfile = dwarf2_per_objfile->objfile;
3585
3586   gdb::array_view<const gdb_byte> main_index_contents
3587     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3588
3589   if (main_index_contents.empty ())
3590     return 0;
3591
3592   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3593   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3594                                    use_deprecated_index_sections,
3595                                    main_index_contents, map.get (), &cu_list,
3596                                    &cu_list_elements, &types_list,
3597                                    &types_list_elements))
3598     return 0;
3599
3600   /* Don't use the index if it's empty.  */
3601   if (map->symbol_table.empty ())
3602     return 0;
3603
3604   /* If there is a .dwz file, read it so we can get its CU list as
3605      well.  */
3606   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3607   if (dwz != NULL)
3608     {
3609       struct mapped_index dwz_map;
3610       const gdb_byte *dwz_types_ignore;
3611       offset_type dwz_types_elements_ignore;
3612
3613       gdb::array_view<const gdb_byte> dwz_index_content
3614         = get_gdb_index_contents_dwz (objfile, dwz);
3615
3616       if (dwz_index_content.empty ())
3617         return 0;
3618
3619       if (!read_gdb_index_from_buffer (objfile,
3620                                        bfd_get_filename (dwz->dwz_bfd), 1,
3621                                        dwz_index_content, &dwz_map,
3622                                        &dwz_list, &dwz_list_elements,
3623                                        &dwz_types_ignore,
3624                                        &dwz_types_elements_ignore))
3625         {
3626           warning (_("could not read '.gdb_index' section from %s; skipping"),
3627                    bfd_get_filename (dwz->dwz_bfd));
3628           return 0;
3629         }
3630     }
3631
3632   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3633                          dwz_list, dwz_list_elements);
3634
3635   if (types_list_elements)
3636     {
3637       struct dwarf2_section_info *section;
3638
3639       /* We can only handle a single .debug_types when we have an
3640          index.  */
3641       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3642         return 0;
3643
3644       section = VEC_index (dwarf2_section_info_def,
3645                            dwarf2_per_objfile->types, 0);
3646
3647       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3648                                                types_list, types_list_elements);
3649     }
3650
3651   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3652
3653   dwarf2_per_objfile->index_table = std::move (map);
3654   dwarf2_per_objfile->using_index = 1;
3655   dwarf2_per_objfile->quick_file_names_table =
3656     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3657
3658   return 1;
3659 }
3660
3661 /* die_reader_func for dw2_get_file_names.  */
3662
3663 static void
3664 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3665                            const gdb_byte *info_ptr,
3666                            struct die_info *comp_unit_die,
3667                            int has_children,
3668                            void *data)
3669 {
3670   struct dwarf2_cu *cu = reader->cu;
3671   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3672   struct dwarf2_per_objfile *dwarf2_per_objfile
3673     = cu->per_cu->dwarf2_per_objfile;
3674   struct objfile *objfile = dwarf2_per_objfile->objfile;
3675   struct dwarf2_per_cu_data *lh_cu;
3676   struct attribute *attr;
3677   int i;
3678   void **slot;
3679   struct quick_file_names *qfn;
3680
3681   gdb_assert (! this_cu->is_debug_types);
3682
3683   /* Our callers never want to match partial units -- instead they
3684      will match the enclosing full CU.  */
3685   if (comp_unit_die->tag == DW_TAG_partial_unit)
3686     {
3687       this_cu->v.quick->no_file_data = 1;
3688       return;
3689     }
3690
3691   lh_cu = this_cu;
3692   slot = NULL;
3693
3694   line_header_up lh;
3695   sect_offset line_offset {};
3696
3697   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3698   if (attr)
3699     {
3700       struct quick_file_names find_entry;
3701
3702       line_offset = (sect_offset) DW_UNSND (attr);
3703
3704       /* We may have already read in this line header (TU line header sharing).
3705          If we have we're done.  */
3706       find_entry.hash.dwo_unit = cu->dwo_unit;
3707       find_entry.hash.line_sect_off = line_offset;
3708       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3709                              &find_entry, INSERT);
3710       if (*slot != NULL)
3711         {
3712           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3713           return;
3714         }
3715
3716       lh = dwarf_decode_line_header (line_offset, cu);
3717     }
3718   if (lh == NULL)
3719     {
3720       lh_cu->v.quick->no_file_data = 1;
3721       return;
3722     }
3723
3724   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3725   qfn->hash.dwo_unit = cu->dwo_unit;
3726   qfn->hash.line_sect_off = line_offset;
3727   gdb_assert (slot != NULL);
3728   *slot = qfn;
3729
3730   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3731
3732   qfn->num_file_names = lh->file_names.size ();
3733   qfn->file_names =
3734     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3735   for (i = 0; i < lh->file_names.size (); ++i)
3736     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3737   qfn->real_names = NULL;
3738
3739   lh_cu->v.quick->file_names = qfn;
3740 }
3741
3742 /* A helper for the "quick" functions which attempts to read the line
3743    table for THIS_CU.  */
3744
3745 static struct quick_file_names *
3746 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3747 {
3748   /* This should never be called for TUs.  */
3749   gdb_assert (! this_cu->is_debug_types);
3750   /* Nor type unit groups.  */
3751   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3752
3753   if (this_cu->v.quick->file_names != NULL)
3754     return this_cu->v.quick->file_names;
3755   /* If we know there is no line data, no point in looking again.  */
3756   if (this_cu->v.quick->no_file_data)
3757     return NULL;
3758
3759   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3760
3761   if (this_cu->v.quick->no_file_data)
3762     return NULL;
3763   return this_cu->v.quick->file_names;
3764 }
3765
3766 /* A helper for the "quick" functions which computes and caches the
3767    real path for a given file name from the line table.  */
3768
3769 static const char *
3770 dw2_get_real_path (struct objfile *objfile,
3771                    struct quick_file_names *qfn, int index)
3772 {
3773   if (qfn->real_names == NULL)
3774     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3775                                       qfn->num_file_names, const char *);
3776
3777   if (qfn->real_names[index] == NULL)
3778     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3779
3780   return qfn->real_names[index];
3781 }
3782
3783 static struct symtab *
3784 dw2_find_last_source_symtab (struct objfile *objfile)
3785 {
3786   struct dwarf2_per_objfile *dwarf2_per_objfile
3787     = get_dwarf2_per_objfile (objfile);
3788   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3789   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3790
3791   if (cust == NULL)
3792     return NULL;
3793
3794   return compunit_primary_filetab (cust);
3795 }
3796
3797 /* Traversal function for dw2_forget_cached_source_info.  */
3798
3799 static int
3800 dw2_free_cached_file_names (void **slot, void *info)
3801 {
3802   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3803
3804   if (file_data->real_names)
3805     {
3806       int i;
3807
3808       for (i = 0; i < file_data->num_file_names; ++i)
3809         {
3810           xfree ((void*) file_data->real_names[i]);
3811           file_data->real_names[i] = NULL;
3812         }
3813     }
3814
3815   return 1;
3816 }
3817
3818 static void
3819 dw2_forget_cached_source_info (struct objfile *objfile)
3820 {
3821   struct dwarf2_per_objfile *dwarf2_per_objfile
3822     = get_dwarf2_per_objfile (objfile);
3823
3824   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3825                           dw2_free_cached_file_names, NULL);
3826 }
3827
3828 /* Helper function for dw2_map_symtabs_matching_filename that expands
3829    the symtabs and calls the iterator.  */
3830
3831 static int
3832 dw2_map_expand_apply (struct objfile *objfile,
3833                       struct dwarf2_per_cu_data *per_cu,
3834                       const char *name, const char *real_path,
3835                       gdb::function_view<bool (symtab *)> callback)
3836 {
3837   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3838
3839   /* Don't visit already-expanded CUs.  */
3840   if (per_cu->v.quick->compunit_symtab)
3841     return 0;
3842
3843   /* This may expand more than one symtab, and we want to iterate over
3844      all of them.  */
3845   dw2_instantiate_symtab (per_cu, false);
3846
3847   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3848                                     last_made, callback);
3849 }
3850
3851 /* Implementation of the map_symtabs_matching_filename method.  */
3852
3853 static bool
3854 dw2_map_symtabs_matching_filename
3855   (struct objfile *objfile, const char *name, const char *real_path,
3856    gdb::function_view<bool (symtab *)> callback)
3857 {
3858   const char *name_basename = lbasename (name);
3859   struct dwarf2_per_objfile *dwarf2_per_objfile
3860     = get_dwarf2_per_objfile (objfile);
3861
3862   /* The rule is CUs specify all the files, including those used by
3863      any TU, so there's no need to scan TUs here.  */
3864
3865   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3866     {
3867       /* We only need to look at symtabs not already expanded.  */
3868       if (per_cu->v.quick->compunit_symtab)
3869         continue;
3870
3871       quick_file_names *file_data = dw2_get_file_names (per_cu);
3872       if (file_data == NULL)
3873         continue;
3874
3875       for (int j = 0; j < file_data->num_file_names; ++j)
3876         {
3877           const char *this_name = file_data->file_names[j];
3878           const char *this_real_name;
3879
3880           if (compare_filenames_for_search (this_name, name))
3881             {
3882               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3883                                         callback))
3884                 return true;
3885               continue;
3886             }
3887
3888           /* Before we invoke realpath, which can get expensive when many
3889              files are involved, do a quick comparison of the basenames.  */
3890           if (! basenames_may_differ
3891               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3892             continue;
3893
3894           this_real_name = dw2_get_real_path (objfile, file_data, j);
3895           if (compare_filenames_for_search (this_real_name, name))
3896             {
3897               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3898                                         callback))
3899                 return true;
3900               continue;
3901             }
3902
3903           if (real_path != NULL)
3904             {
3905               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3906               gdb_assert (IS_ABSOLUTE_PATH (name));
3907               if (this_real_name != NULL
3908                   && FILENAME_CMP (real_path, this_real_name) == 0)
3909                 {
3910                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3911                                             callback))
3912                     return true;
3913                   continue;
3914                 }
3915             }
3916         }
3917     }
3918
3919   return false;
3920 }
3921
3922 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3923
3924 struct dw2_symtab_iterator
3925 {
3926   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3927   struct dwarf2_per_objfile *dwarf2_per_objfile;
3928   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3929   int want_specific_block;
3930   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3931      Unused if !WANT_SPECIFIC_BLOCK.  */
3932   int block_index;
3933   /* The kind of symbol we're looking for.  */
3934   domain_enum domain;
3935   /* The list of CUs from the index entry of the symbol,
3936      or NULL if not found.  */
3937   offset_type *vec;
3938   /* The next element in VEC to look at.  */
3939   int next;
3940   /* The number of elements in VEC, or zero if there is no match.  */
3941   int length;
3942   /* Have we seen a global version of the symbol?
3943      If so we can ignore all further global instances.
3944      This is to work around gold/15646, inefficient gold-generated
3945      indices.  */
3946   int global_seen;
3947 };
3948
3949 /* Initialize the index symtab iterator ITER.
3950    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3951    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3952
3953 static void
3954 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3955                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3956                       int want_specific_block,
3957                       int block_index,
3958                       domain_enum domain,
3959                       const char *name)
3960 {
3961   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3962   iter->want_specific_block = want_specific_block;
3963   iter->block_index = block_index;
3964   iter->domain = domain;
3965   iter->next = 0;
3966   iter->global_seen = 0;
3967
3968   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3969
3970   /* index is NULL if OBJF_READNOW.  */
3971   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3972     iter->length = MAYBE_SWAP (*iter->vec);
3973   else
3974     {
3975       iter->vec = NULL;
3976       iter->length = 0;
3977     }
3978 }
3979
3980 /* Return the next matching CU or NULL if there are no more.  */
3981
3982 static struct dwarf2_per_cu_data *
3983 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3984 {
3985   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3986
3987   for ( ; iter->next < iter->length; ++iter->next)
3988     {
3989       offset_type cu_index_and_attrs =
3990         MAYBE_SWAP (iter->vec[iter->next + 1]);
3991       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3992       int want_static = iter->block_index != GLOBAL_BLOCK;
3993       /* This value is only valid for index versions >= 7.  */
3994       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3995       gdb_index_symbol_kind symbol_kind =
3996         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3997       /* Only check the symbol attributes if they're present.
3998          Indices prior to version 7 don't record them,
3999          and indices >= 7 may elide them for certain symbols
4000          (gold does this).  */
4001       int attrs_valid =
4002         (dwarf2_per_objfile->index_table->version >= 7
4003          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4004
4005       /* Don't crash on bad data.  */
4006       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
4007                        + dwarf2_per_objfile->all_type_units.size ()))
4008         {
4009           complaint (_(".gdb_index entry has bad CU index"
4010                        " [in module %s]"),
4011                      objfile_name (dwarf2_per_objfile->objfile));
4012           continue;
4013         }
4014
4015       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
4016
4017       /* Skip if already read in.  */
4018       if (per_cu->v.quick->compunit_symtab)
4019         continue;
4020
4021       /* Check static vs global.  */
4022       if (attrs_valid)
4023         {
4024           if (iter->want_specific_block
4025               && want_static != is_static)
4026             continue;
4027           /* Work around gold/15646.  */
4028           if (!is_static && iter->global_seen)
4029             continue;
4030           if (!is_static)
4031             iter->global_seen = 1;
4032         }
4033
4034       /* Only check the symbol's kind if it has one.  */
4035       if (attrs_valid)
4036         {
4037           switch (iter->domain)
4038             {
4039             case VAR_DOMAIN:
4040               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4041                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4042                   /* Some types are also in VAR_DOMAIN.  */
4043                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4044                 continue;
4045               break;
4046             case STRUCT_DOMAIN:
4047               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4048                 continue;
4049               break;
4050             case LABEL_DOMAIN:
4051               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4052                 continue;
4053               break;
4054             default:
4055               break;
4056             }
4057         }
4058
4059       ++iter->next;
4060       return per_cu;
4061     }
4062
4063   return NULL;
4064 }
4065
4066 static struct compunit_symtab *
4067 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4068                    const char *name, domain_enum domain)
4069 {
4070   struct compunit_symtab *stab_best = NULL;
4071   struct dwarf2_per_objfile *dwarf2_per_objfile
4072     = get_dwarf2_per_objfile (objfile);
4073
4074   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4075
4076   struct dw2_symtab_iterator iter;
4077   struct dwarf2_per_cu_data *per_cu;
4078
4079   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4080
4081   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4082     {
4083       struct symbol *sym, *with_opaque = NULL;
4084       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4085       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4086       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4087
4088       sym = block_find_symbol (block, name, domain,
4089                                block_find_non_opaque_type_preferred,
4090                                &with_opaque);
4091
4092       /* Some caution must be observed with overloaded functions
4093          and methods, since the index will not contain any overload
4094          information (but NAME might contain it).  */
4095
4096       if (sym != NULL
4097           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4098         return stab;
4099       if (with_opaque != NULL
4100           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4101         stab_best = stab;
4102
4103       /* Keep looking through other CUs.  */
4104     }
4105
4106   return stab_best;
4107 }
4108
4109 static void
4110 dw2_print_stats (struct objfile *objfile)
4111 {
4112   struct dwarf2_per_objfile *dwarf2_per_objfile
4113     = get_dwarf2_per_objfile (objfile);
4114   int total = (dwarf2_per_objfile->all_comp_units.size ()
4115                + dwarf2_per_objfile->all_type_units.size ());
4116   int count = 0;
4117
4118   for (int i = 0; i < total; ++i)
4119     {
4120       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4121
4122       if (!per_cu->v.quick->compunit_symtab)
4123         ++count;
4124     }
4125   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4126   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4127 }
4128
4129 /* This dumps minimal information about the index.
4130    It is called via "mt print objfiles".
4131    One use is to verify .gdb_index has been loaded by the
4132    gdb.dwarf2/gdb-index.exp testcase.  */
4133
4134 static void
4135 dw2_dump (struct objfile *objfile)
4136 {
4137   struct dwarf2_per_objfile *dwarf2_per_objfile
4138     = get_dwarf2_per_objfile (objfile);
4139
4140   gdb_assert (dwarf2_per_objfile->using_index);
4141   printf_filtered (".gdb_index:");
4142   if (dwarf2_per_objfile->index_table != NULL)
4143     {
4144       printf_filtered (" version %d\n",
4145                        dwarf2_per_objfile->index_table->version);
4146     }
4147   else
4148     printf_filtered (" faked for \"readnow\"\n");
4149   printf_filtered ("\n");
4150 }
4151
4152 static void
4153 dw2_expand_symtabs_for_function (struct objfile *objfile,
4154                                  const char *func_name)
4155 {
4156   struct dwarf2_per_objfile *dwarf2_per_objfile
4157     = get_dwarf2_per_objfile (objfile);
4158
4159   struct dw2_symtab_iterator iter;
4160   struct dwarf2_per_cu_data *per_cu;
4161
4162   /* Note: It doesn't matter what we pass for block_index here.  */
4163   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4164                         func_name);
4165
4166   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4167     dw2_instantiate_symtab (per_cu, false);
4168
4169 }
4170
4171 static void
4172 dw2_expand_all_symtabs (struct objfile *objfile)
4173 {
4174   struct dwarf2_per_objfile *dwarf2_per_objfile
4175     = get_dwarf2_per_objfile (objfile);
4176   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4177                      + dwarf2_per_objfile->all_type_units.size ());
4178
4179   for (int i = 0; i < total_units; ++i)
4180     {
4181       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4182
4183       /* We don't want to directly expand a partial CU, because if we
4184          read it with the wrong language, then assertion failures can
4185          be triggered later on.  See PR symtab/23010.  So, tell
4186          dw2_instantiate_symtab to skip partial CUs -- any important
4187          partial CU will be read via DW_TAG_imported_unit anyway.  */
4188       dw2_instantiate_symtab (per_cu, true);
4189     }
4190 }
4191
4192 static void
4193 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4194                                   const char *fullname)
4195 {
4196   struct dwarf2_per_objfile *dwarf2_per_objfile
4197     = get_dwarf2_per_objfile (objfile);
4198
4199   /* We don't need to consider type units here.
4200      This is only called for examining code, e.g. expand_line_sal.
4201      There can be an order of magnitude (or more) more type units
4202      than comp units, and we avoid them if we can.  */
4203
4204   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4205     {
4206       /* We only need to look at symtabs not already expanded.  */
4207       if (per_cu->v.quick->compunit_symtab)
4208         continue;
4209
4210       quick_file_names *file_data = dw2_get_file_names (per_cu);
4211       if (file_data == NULL)
4212         continue;
4213
4214       for (int j = 0; j < file_data->num_file_names; ++j)
4215         {
4216           const char *this_fullname = file_data->file_names[j];
4217
4218           if (filename_cmp (this_fullname, fullname) == 0)
4219             {
4220               dw2_instantiate_symtab (per_cu, false);
4221               break;
4222             }
4223         }
4224     }
4225 }
4226
4227 static void
4228 dw2_map_matching_symbols (struct objfile *objfile,
4229                           const char * name, domain_enum domain,
4230                           int global,
4231                           int (*callback) (const struct block *,
4232                                            struct symbol *, void *),
4233                           void *data, symbol_name_match_type match,
4234                           symbol_compare_ftype *ordered_compare)
4235 {
4236   /* Currently unimplemented; used for Ada.  The function can be called if the
4237      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4238      does not look for non-Ada symbols this function should just return.  */
4239 }
4240
4241 /* Symbol name matcher for .gdb_index names.
4242
4243    Symbol names in .gdb_index have a few particularities:
4244
4245    - There's no indication of which is the language of each symbol.
4246
4247      Since each language has its own symbol name matching algorithm,
4248      and we don't know which language is the right one, we must match
4249      each symbol against all languages.  This would be a potential
4250      performance problem if it were not mitigated by the
4251      mapped_index::name_components lookup table, which significantly
4252      reduces the number of times we need to call into this matcher,
4253      making it a non-issue.
4254
4255    - Symbol names in the index have no overload (parameter)
4256      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4257      appear as "foo" in the index, for example.
4258
4259      This means that the lookup names passed to the symbol name
4260      matcher functions must have no parameter information either
4261      because (e.g.) symbol search name "foo" does not match
4262      lookup-name "foo(int)" [while swapping search name for lookup
4263      name would match].
4264 */
4265 class gdb_index_symbol_name_matcher
4266 {
4267 public:
4268   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4269   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4270
4271   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4272      Returns true if any matcher matches.  */
4273   bool matches (const char *symbol_name);
4274
4275 private:
4276   /* A reference to the lookup name we're matching against.  */
4277   const lookup_name_info &m_lookup_name;
4278
4279   /* A vector holding all the different symbol name matchers, for all
4280      languages.  */
4281   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4282 };
4283
4284 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4285   (const lookup_name_info &lookup_name)
4286     : m_lookup_name (lookup_name)
4287 {
4288   /* Prepare the vector of comparison functions upfront, to avoid
4289      doing the same work for each symbol.  Care is taken to avoid
4290      matching with the same matcher more than once if/when multiple
4291      languages use the same matcher function.  */
4292   auto &matchers = m_symbol_name_matcher_funcs;
4293   matchers.reserve (nr_languages);
4294
4295   matchers.push_back (default_symbol_name_matcher);
4296
4297   for (int i = 0; i < nr_languages; i++)
4298     {
4299       const language_defn *lang = language_def ((enum language) i);
4300       symbol_name_matcher_ftype *name_matcher
4301         = get_symbol_name_matcher (lang, m_lookup_name);
4302
4303       /* Don't insert the same comparison routine more than once.
4304          Note that we do this linear walk instead of a seemingly
4305          cheaper sorted insert, or use a std::set or something like
4306          that, because relative order of function addresses is not
4307          stable.  This is not a problem in practice because the number
4308          of supported languages is low, and the cost here is tiny
4309          compared to the number of searches we'll do afterwards using
4310          this object.  */
4311       if (name_matcher != default_symbol_name_matcher
4312           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4313               == matchers.end ()))
4314         matchers.push_back (name_matcher);
4315     }
4316 }
4317
4318 bool
4319 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4320 {
4321   for (auto matches_name : m_symbol_name_matcher_funcs)
4322     if (matches_name (symbol_name, m_lookup_name, NULL))
4323       return true;
4324
4325   return false;
4326 }
4327
4328 /* Starting from a search name, return the string that finds the upper
4329    bound of all strings that start with SEARCH_NAME in a sorted name
4330    list.  Returns the empty string to indicate that the upper bound is
4331    the end of the list.  */
4332
4333 static std::string
4334 make_sort_after_prefix_name (const char *search_name)
4335 {
4336   /* When looking to complete "func", we find the upper bound of all
4337      symbols that start with "func" by looking for where we'd insert
4338      the closest string that would follow "func" in lexicographical
4339      order.  Usually, that's "func"-with-last-character-incremented,
4340      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4341      will be UTF-8 multi-byte sequences, but we can't be certain.
4342      Especially mind the 0xff character, which is a valid character in
4343      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4344      rule out compilers allowing it in identifiers.  Note that
4345      conveniently, strcmp/strcasecmp are specified to compare
4346      characters interpreted as unsigned char.  So what we do is treat
4347      the whole string as a base 256 number composed of a sequence of
4348      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4349      to 0, and carries 1 to the following more-significant position.
4350      If the very first character in SEARCH_NAME ends up incremented
4351      and carries/overflows, then the upper bound is the end of the
4352      list.  The string after the empty string is also the empty
4353      string.
4354
4355      Some examples of this operation:
4356
4357        SEARCH_NAME  => "+1" RESULT
4358
4359        "abc"              => "abd"
4360        "ab\xff"           => "ac"
4361        "\xff" "a" "\xff"  => "\xff" "b"
4362        "\xff"             => ""
4363        "\xff\xff"         => ""
4364        ""                 => ""
4365
4366      Then, with these symbols for example:
4367
4368       func
4369       func1
4370       fund
4371
4372      completing "func" looks for symbols between "func" and
4373      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4374      which finds "func" and "func1", but not "fund".
4375
4376      And with:
4377
4378       funcÿ     (Latin1 'ÿ' [0xff])
4379       funcÿ1
4380       fund
4381
4382      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4383      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4384
4385      And with:
4386
4387       ÿÿ        (Latin1 'ÿ' [0xff])
4388       ÿÿ1
4389
4390      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4391      the end of the list.
4392   */
4393   std::string after = search_name;
4394   while (!after.empty () && (unsigned char) after.back () == 0xff)
4395     after.pop_back ();
4396   if (!after.empty ())
4397     after.back () = (unsigned char) after.back () + 1;
4398   return after;
4399 }
4400
4401 /* See declaration.  */
4402
4403 std::pair<std::vector<name_component>::const_iterator,
4404           std::vector<name_component>::const_iterator>
4405 mapped_index_base::find_name_components_bounds
4406   (const lookup_name_info &lookup_name_without_params) const
4407 {
4408   auto *name_cmp
4409     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4410
4411   const char *cplus
4412     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4413
4414   /* Comparison function object for lower_bound that matches against a
4415      given symbol name.  */
4416   auto lookup_compare_lower = [&] (const name_component &elem,
4417                                    const char *name)
4418     {
4419       const char *elem_qualified = this->symbol_name_at (elem.idx);
4420       const char *elem_name = elem_qualified + elem.name_offset;
4421       return name_cmp (elem_name, name) < 0;
4422     };
4423
4424   /* Comparison function object for upper_bound that matches against a
4425      given symbol name.  */
4426   auto lookup_compare_upper = [&] (const char *name,
4427                                    const name_component &elem)
4428     {
4429       const char *elem_qualified = this->symbol_name_at (elem.idx);
4430       const char *elem_name = elem_qualified + elem.name_offset;
4431       return name_cmp (name, elem_name) < 0;
4432     };
4433
4434   auto begin = this->name_components.begin ();
4435   auto end = this->name_components.end ();
4436
4437   /* Find the lower bound.  */
4438   auto lower = [&] ()
4439     {
4440       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4441         return begin;
4442       else
4443         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4444     } ();
4445
4446   /* Find the upper bound.  */
4447   auto upper = [&] ()
4448     {
4449       if (lookup_name_without_params.completion_mode ())
4450         {
4451           /* In completion mode, we want UPPER to point past all
4452              symbols names that have the same prefix.  I.e., with
4453              these symbols, and completing "func":
4454
4455               function        << lower bound
4456               function1
4457               other_function  << upper bound
4458
4459              We find the upper bound by looking for the insertion
4460              point of "func"-with-last-character-incremented,
4461              i.e. "fund".  */
4462           std::string after = make_sort_after_prefix_name (cplus);
4463           if (after.empty ())
4464             return end;
4465           return std::lower_bound (lower, end, after.c_str (),
4466                                    lookup_compare_lower);
4467         }
4468       else
4469         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4470     } ();
4471
4472   return {lower, upper};
4473 }
4474
4475 /* See declaration.  */
4476
4477 void
4478 mapped_index_base::build_name_components ()
4479 {
4480   if (!this->name_components.empty ())
4481     return;
4482
4483   this->name_components_casing = case_sensitivity;
4484   auto *name_cmp
4485     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4486
4487   /* The code below only knows how to break apart components of C++
4488      symbol names (and other languages that use '::' as
4489      namespace/module separator).  If we add support for wild matching
4490      to some language that uses some other operator (E.g., Ada, Go and
4491      D use '.'), then we'll need to try splitting the symbol name
4492      according to that language too.  Note that Ada does support wild
4493      matching, but doesn't currently support .gdb_index.  */
4494   auto count = this->symbol_name_count ();
4495   for (offset_type idx = 0; idx < count; idx++)
4496     {
4497       if (this->symbol_name_slot_invalid (idx))
4498         continue;
4499
4500       const char *name = this->symbol_name_at (idx);
4501
4502       /* Add each name component to the name component table.  */
4503       unsigned int previous_len = 0;
4504       for (unsigned int current_len = cp_find_first_component (name);
4505            name[current_len] != '\0';
4506            current_len += cp_find_first_component (name + current_len))
4507         {
4508           gdb_assert (name[current_len] == ':');
4509           this->name_components.push_back ({previous_len, idx});
4510           /* Skip the '::'.  */
4511           current_len += 2;
4512           previous_len = current_len;
4513         }
4514       this->name_components.push_back ({previous_len, idx});
4515     }
4516
4517   /* Sort name_components elements by name.  */
4518   auto name_comp_compare = [&] (const name_component &left,
4519                                 const name_component &right)
4520     {
4521       const char *left_qualified = this->symbol_name_at (left.idx);
4522       const char *right_qualified = this->symbol_name_at (right.idx);
4523
4524       const char *left_name = left_qualified + left.name_offset;
4525       const char *right_name = right_qualified + right.name_offset;
4526
4527       return name_cmp (left_name, right_name) < 0;
4528     };
4529
4530   std::sort (this->name_components.begin (),
4531              this->name_components.end (),
4532              name_comp_compare);
4533 }
4534
4535 /* Helper for dw2_expand_symtabs_matching that works with a
4536    mapped_index_base instead of the containing objfile.  This is split
4537    to a separate function in order to be able to unit test the
4538    name_components matching using a mock mapped_index_base.  For each
4539    symbol name that matches, calls MATCH_CALLBACK, passing it the
4540    symbol's index in the mapped_index_base symbol table.  */
4541
4542 static void
4543 dw2_expand_symtabs_matching_symbol
4544   (mapped_index_base &index,
4545    const lookup_name_info &lookup_name_in,
4546    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4547    enum search_domain kind,
4548    gdb::function_view<void (offset_type)> match_callback)
4549 {
4550   lookup_name_info lookup_name_without_params
4551     = lookup_name_in.make_ignore_params ();
4552   gdb_index_symbol_name_matcher lookup_name_matcher
4553     (lookup_name_without_params);
4554
4555   /* Build the symbol name component sorted vector, if we haven't
4556      yet.  */
4557   index.build_name_components ();
4558
4559   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4560
4561   /* Now for each symbol name in range, check to see if we have a name
4562      match, and if so, call the MATCH_CALLBACK callback.  */
4563
4564   /* The same symbol may appear more than once in the range though.
4565      E.g., if we're looking for symbols that complete "w", and we have
4566      a symbol named "w1::w2", we'll find the two name components for
4567      that same symbol in the range.  To be sure we only call the
4568      callback once per symbol, we first collect the symbol name
4569      indexes that matched in a temporary vector and ignore
4570      duplicates.  */
4571   std::vector<offset_type> matches;
4572   matches.reserve (std::distance (bounds.first, bounds.second));
4573
4574   for (; bounds.first != bounds.second; ++bounds.first)
4575     {
4576       const char *qualified = index.symbol_name_at (bounds.first->idx);
4577
4578       if (!lookup_name_matcher.matches (qualified)
4579           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4580         continue;
4581
4582       matches.push_back (bounds.first->idx);
4583     }
4584
4585   std::sort (matches.begin (), matches.end ());
4586
4587   /* Finally call the callback, once per match.  */
4588   ULONGEST prev = -1;
4589   for (offset_type idx : matches)
4590     {
4591       if (prev != idx)
4592         {
4593           match_callback (idx);
4594           prev = idx;
4595         }
4596     }
4597
4598   /* Above we use a type wider than idx's for 'prev', since 0 and
4599      (offset_type)-1 are both possible values.  */
4600   static_assert (sizeof (prev) > sizeof (offset_type), "");
4601 }
4602
4603 #if GDB_SELF_TEST
4604
4605 namespace selftests { namespace dw2_expand_symtabs_matching {
4606
4607 /* A mock .gdb_index/.debug_names-like name index table, enough to
4608    exercise dw2_expand_symtabs_matching_symbol, which works with the
4609    mapped_index_base interface.  Builds an index from the symbol list
4610    passed as parameter to the constructor.  */
4611 class mock_mapped_index : public mapped_index_base
4612 {
4613 public:
4614   mock_mapped_index (gdb::array_view<const char *> symbols)
4615     : m_symbol_table (symbols)
4616   {}
4617
4618   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4619
4620   /* Return the number of names in the symbol table.  */
4621   size_t symbol_name_count () const override
4622   {
4623     return m_symbol_table.size ();
4624   }
4625
4626   /* Get the name of the symbol at IDX in the symbol table.  */
4627   const char *symbol_name_at (offset_type idx) const override
4628   {
4629     return m_symbol_table[idx];
4630   }
4631
4632 private:
4633   gdb::array_view<const char *> m_symbol_table;
4634 };
4635
4636 /* Convenience function that converts a NULL pointer to a "<null>"
4637    string, to pass to print routines.  */
4638
4639 static const char *
4640 string_or_null (const char *str)
4641 {
4642   return str != NULL ? str : "<null>";
4643 }
4644
4645 /* Check if a lookup_name_info built from
4646    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4647    index.  EXPECTED_LIST is the list of expected matches, in expected
4648    matching order.  If no match expected, then an empty list is
4649    specified.  Returns true on success.  On failure prints a warning
4650    indicating the file:line that failed, and returns false.  */
4651
4652 static bool
4653 check_match (const char *file, int line,
4654              mock_mapped_index &mock_index,
4655              const char *name, symbol_name_match_type match_type,
4656              bool completion_mode,
4657              std::initializer_list<const char *> expected_list)
4658 {
4659   lookup_name_info lookup_name (name, match_type, completion_mode);
4660
4661   bool matched = true;
4662
4663   auto mismatch = [&] (const char *expected_str,
4664                        const char *got)
4665   {
4666     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4667                "expected=\"%s\", got=\"%s\"\n"),
4668              file, line,
4669              (match_type == symbol_name_match_type::FULL
4670               ? "FULL" : "WILD"),
4671              name, string_or_null (expected_str), string_or_null (got));
4672     matched = false;
4673   };
4674
4675   auto expected_it = expected_list.begin ();
4676   auto expected_end = expected_list.end ();
4677
4678   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4679                                       NULL, ALL_DOMAIN,
4680                                       [&] (offset_type idx)
4681   {
4682     const char *matched_name = mock_index.symbol_name_at (idx);
4683     const char *expected_str
4684       = expected_it == expected_end ? NULL : *expected_it++;
4685
4686     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4687       mismatch (expected_str, matched_name);
4688   });
4689
4690   const char *expected_str
4691   = expected_it == expected_end ? NULL : *expected_it++;
4692   if (expected_str != NULL)
4693     mismatch (expected_str, NULL);
4694
4695   return matched;
4696 }
4697
4698 /* The symbols added to the mock mapped_index for testing (in
4699    canonical form).  */
4700 static const char *test_symbols[] = {
4701   "function",
4702   "std::bar",
4703   "std::zfunction",
4704   "std::zfunction2",
4705   "w1::w2",
4706   "ns::foo<char*>",
4707   "ns::foo<int>",
4708   "ns::foo<long>",
4709   "ns2::tmpl<int>::foo2",
4710   "(anonymous namespace)::A::B::C",
4711
4712   /* These are used to check that the increment-last-char in the
4713      matching algorithm for completion doesn't match "t1_fund" when
4714      completing "t1_func".  */
4715   "t1_func",
4716   "t1_func1",
4717   "t1_fund",
4718   "t1_fund1",
4719
4720   /* A UTF-8 name with multi-byte sequences to make sure that
4721      cp-name-parser understands this as a single identifier ("função"
4722      is "function" in PT).  */
4723   u8"u8função",
4724
4725   /* \377 (0xff) is Latin1 'ÿ'.  */
4726   "yfunc\377",
4727
4728   /* \377 (0xff) is Latin1 'ÿ'.  */
4729   "\377",
4730   "\377\377123",
4731
4732   /* A name with all sorts of complications.  Starts with "z" to make
4733      it easier for the completion tests below.  */
4734 #define Z_SYM_NAME \
4735   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4736     "::tuple<(anonymous namespace)::ui*, " \
4737     "std::default_delete<(anonymous namespace)::ui>, void>"
4738
4739   Z_SYM_NAME
4740 };
4741
4742 /* Returns true if the mapped_index_base::find_name_component_bounds
4743    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4744    in completion mode.  */
4745
4746 static bool
4747 check_find_bounds_finds (mapped_index_base &index,
4748                          const char *search_name,
4749                          gdb::array_view<const char *> expected_syms)
4750 {
4751   lookup_name_info lookup_name (search_name,
4752                                 symbol_name_match_type::FULL, true);
4753
4754   auto bounds = index.find_name_components_bounds (lookup_name);
4755
4756   size_t distance = std::distance (bounds.first, bounds.second);
4757   if (distance != expected_syms.size ())
4758     return false;
4759
4760   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4761     {
4762       auto nc_elem = bounds.first + exp_elem;
4763       const char *qualified = index.symbol_name_at (nc_elem->idx);
4764       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4765         return false;
4766     }
4767
4768   return true;
4769 }
4770
4771 /* Test the lower-level mapped_index::find_name_component_bounds
4772    method.  */
4773
4774 static void
4775 test_mapped_index_find_name_component_bounds ()
4776 {
4777   mock_mapped_index mock_index (test_symbols);
4778
4779   mock_index.build_name_components ();
4780
4781   /* Test the lower-level mapped_index::find_name_component_bounds
4782      method in completion mode.  */
4783   {
4784     static const char *expected_syms[] = {
4785       "t1_func",
4786       "t1_func1",
4787     };
4788
4789     SELF_CHECK (check_find_bounds_finds (mock_index,
4790                                          "t1_func", expected_syms));
4791   }
4792
4793   /* Check that the increment-last-char in the name matching algorithm
4794      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4795   {
4796     static const char *expected_syms1[] = {
4797       "\377",
4798       "\377\377123",
4799     };
4800     SELF_CHECK (check_find_bounds_finds (mock_index,
4801                                          "\377", expected_syms1));
4802
4803     static const char *expected_syms2[] = {
4804       "\377\377123",
4805     };
4806     SELF_CHECK (check_find_bounds_finds (mock_index,
4807                                          "\377\377", expected_syms2));
4808   }
4809 }
4810
4811 /* Test dw2_expand_symtabs_matching_symbol.  */
4812
4813 static void
4814 test_dw2_expand_symtabs_matching_symbol ()
4815 {
4816   mock_mapped_index mock_index (test_symbols);
4817
4818   /* We let all tests run until the end even if some fails, for debug
4819      convenience.  */
4820   bool any_mismatch = false;
4821
4822   /* Create the expected symbols list (an initializer_list).  Needed
4823      because lists have commas, and we need to pass them to CHECK,
4824      which is a macro.  */
4825 #define EXPECT(...) { __VA_ARGS__ }
4826
4827   /* Wrapper for check_match that passes down the current
4828      __FILE__/__LINE__.  */
4829 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4830   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4831                                 mock_index,                             \
4832                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4833                                 EXPECTED_LIST)
4834
4835   /* Identity checks.  */
4836   for (const char *sym : test_symbols)
4837     {
4838       /* Should be able to match all existing symbols.  */
4839       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4840                    EXPECT (sym));
4841
4842       /* Should be able to match all existing symbols with
4843          parameters.  */
4844       std::string with_params = std::string (sym) + "(int)";
4845       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4846                    EXPECT (sym));
4847
4848       /* Should be able to match all existing symbols with
4849          parameters and qualifiers.  */
4850       with_params = std::string (sym) + " ( int ) const";
4851       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4852                    EXPECT (sym));
4853
4854       /* This should really find sym, but cp-name-parser.y doesn't
4855          know about lvalue/rvalue qualifiers yet.  */
4856       with_params = std::string (sym) + " ( int ) &&";
4857       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4858                    {});
4859     }
4860
4861   /* Check that the name matching algorithm for completion doesn't get
4862      confused with Latin1 'ÿ' / 0xff.  */
4863   {
4864     static const char str[] = "\377";
4865     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4866                  EXPECT ("\377", "\377\377123"));
4867   }
4868
4869   /* Check that the increment-last-char in the matching algorithm for
4870      completion doesn't match "t1_fund" when completing "t1_func".  */
4871   {
4872     static const char str[] = "t1_func";
4873     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4874                  EXPECT ("t1_func", "t1_func1"));
4875   }
4876
4877   /* Check that completion mode works at each prefix of the expected
4878      symbol name.  */
4879   {
4880     static const char str[] = "function(int)";
4881     size_t len = strlen (str);
4882     std::string lookup;
4883
4884     for (size_t i = 1; i < len; i++)
4885       {
4886         lookup.assign (str, i);
4887         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4888                      EXPECT ("function"));
4889       }
4890   }
4891
4892   /* While "w" is a prefix of both components, the match function
4893      should still only be called once.  */
4894   {
4895     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4896                  EXPECT ("w1::w2"));
4897     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4898                  EXPECT ("w1::w2"));
4899   }
4900
4901   /* Same, with a "complicated" symbol.  */
4902   {
4903     static const char str[] = Z_SYM_NAME;
4904     size_t len = strlen (str);
4905     std::string lookup;
4906
4907     for (size_t i = 1; i < len; i++)
4908       {
4909         lookup.assign (str, i);
4910         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4911                      EXPECT (Z_SYM_NAME));
4912       }
4913   }
4914
4915   /* In FULL mode, an incomplete symbol doesn't match.  */
4916   {
4917     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4918                  {});
4919   }
4920
4921   /* A complete symbol with parameters matches any overload, since the
4922      index has no overload info.  */
4923   {
4924     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4925                  EXPECT ("std::zfunction", "std::zfunction2"));
4926     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4927                  EXPECT ("std::zfunction", "std::zfunction2"));
4928     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4929                  EXPECT ("std::zfunction", "std::zfunction2"));
4930   }
4931
4932   /* Check that whitespace is ignored appropriately.  A symbol with a
4933      template argument list. */
4934   {
4935     static const char expected[] = "ns::foo<int>";
4936     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4937                  EXPECT (expected));
4938     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4939                  EXPECT (expected));
4940   }
4941
4942   /* Check that whitespace is ignored appropriately.  A symbol with a
4943      template argument list that includes a pointer.  */
4944   {
4945     static const char expected[] = "ns::foo<char*>";
4946     /* Try both completion and non-completion modes.  */
4947     static const bool completion_mode[2] = {false, true};
4948     for (size_t i = 0; i < 2; i++)
4949       {
4950         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4951                      completion_mode[i], EXPECT (expected));
4952         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4953                      completion_mode[i], EXPECT (expected));
4954
4955         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4956                      completion_mode[i], EXPECT (expected));
4957         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4958                      completion_mode[i], EXPECT (expected));
4959       }
4960   }
4961
4962   {
4963     /* Check method qualifiers are ignored.  */
4964     static const char expected[] = "ns::foo<char*>";
4965     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4966                  symbol_name_match_type::FULL, true, EXPECT (expected));
4967     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4968                  symbol_name_match_type::FULL, true, EXPECT (expected));
4969     CHECK_MATCH ("foo < char * >  ( int ) const",
4970                  symbol_name_match_type::WILD, true, EXPECT (expected));
4971     CHECK_MATCH ("foo < char * >  ( int ) &&",
4972                  symbol_name_match_type::WILD, true, EXPECT (expected));
4973   }
4974
4975   /* Test lookup names that don't match anything.  */
4976   {
4977     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4978                  {});
4979
4980     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4981                  {});
4982   }
4983
4984   /* Some wild matching tests, exercising "(anonymous namespace)",
4985      which should not be confused with a parameter list.  */
4986   {
4987     static const char *syms[] = {
4988       "A::B::C",
4989       "B::C",
4990       "C",
4991       "A :: B :: C ( int )",
4992       "B :: C ( int )",
4993       "C ( int )",
4994     };
4995
4996     for (const char *s : syms)
4997       {
4998         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4999                      EXPECT ("(anonymous namespace)::A::B::C"));
5000       }
5001   }
5002
5003   {
5004     static const char expected[] = "ns2::tmpl<int>::foo2";
5005     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
5006                  EXPECT (expected));
5007     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
5008                  EXPECT (expected));
5009   }
5010
5011   SELF_CHECK (!any_mismatch);
5012
5013 #undef EXPECT
5014 #undef CHECK_MATCH
5015 }
5016
5017 static void
5018 run_test ()
5019 {
5020   test_mapped_index_find_name_component_bounds ();
5021   test_dw2_expand_symtabs_matching_symbol ();
5022 }
5023
5024 }} // namespace selftests::dw2_expand_symtabs_matching
5025
5026 #endif /* GDB_SELF_TEST */
5027
5028 /* If FILE_MATCHER is NULL or if PER_CU has
5029    dwarf2_per_cu_quick_data::MARK set (see
5030    dw_expand_symtabs_matching_file_matcher), expand the CU and call
5031    EXPANSION_NOTIFY on it.  */
5032
5033 static void
5034 dw2_expand_symtabs_matching_one
5035   (struct dwarf2_per_cu_data *per_cu,
5036    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5037    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5038 {
5039   if (file_matcher == NULL || per_cu->v.quick->mark)
5040     {
5041       bool symtab_was_null
5042         = (per_cu->v.quick->compunit_symtab == NULL);
5043
5044       dw2_instantiate_symtab (per_cu, false);
5045
5046       if (expansion_notify != NULL
5047           && symtab_was_null
5048           && per_cu->v.quick->compunit_symtab != NULL)
5049         expansion_notify (per_cu->v.quick->compunit_symtab);
5050     }
5051 }
5052
5053 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5054    matched, to expand corresponding CUs that were marked.  IDX is the
5055    index of the symbol name that matched.  */
5056
5057 static void
5058 dw2_expand_marked_cus
5059   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5060    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5061    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5062    search_domain kind)
5063 {
5064   offset_type *vec, vec_len, vec_idx;
5065   bool global_seen = false;
5066   mapped_index &index = *dwarf2_per_objfile->index_table;
5067
5068   vec = (offset_type *) (index.constant_pool
5069                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5070   vec_len = MAYBE_SWAP (vec[0]);
5071   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5072     {
5073       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5074       /* This value is only valid for index versions >= 7.  */
5075       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5076       gdb_index_symbol_kind symbol_kind =
5077         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5078       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5079       /* Only check the symbol attributes if they're present.
5080          Indices prior to version 7 don't record them,
5081          and indices >= 7 may elide them for certain symbols
5082          (gold does this).  */
5083       int attrs_valid =
5084         (index.version >= 7
5085          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5086
5087       /* Work around gold/15646.  */
5088       if (attrs_valid)
5089         {
5090           if (!is_static && global_seen)
5091             continue;
5092           if (!is_static)
5093             global_seen = true;
5094         }
5095
5096       /* Only check the symbol's kind if it has one.  */
5097       if (attrs_valid)
5098         {
5099           switch (kind)
5100             {
5101             case VARIABLES_DOMAIN:
5102               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5103                 continue;
5104               break;
5105             case FUNCTIONS_DOMAIN:
5106               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5107                 continue;
5108               break;
5109             case TYPES_DOMAIN:
5110               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5111                 continue;
5112               break;
5113             default:
5114               break;
5115             }
5116         }
5117
5118       /* Don't crash on bad data.  */
5119       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5120                        + dwarf2_per_objfile->all_type_units.size ()))
5121         {
5122           complaint (_(".gdb_index entry has bad CU index"
5123                        " [in module %s]"),
5124                        objfile_name (dwarf2_per_objfile->objfile));
5125           continue;
5126         }
5127
5128       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5129       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5130                                        expansion_notify);
5131     }
5132 }
5133
5134 /* If FILE_MATCHER is non-NULL, set all the
5135    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5136    that match FILE_MATCHER.  */
5137
5138 static void
5139 dw_expand_symtabs_matching_file_matcher
5140   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5141    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5142 {
5143   if (file_matcher == NULL)
5144     return;
5145
5146   objfile *const objfile = dwarf2_per_objfile->objfile;
5147
5148   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5149                                             htab_eq_pointer,
5150                                             NULL, xcalloc, xfree));
5151   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5152                                                 htab_eq_pointer,
5153                                                 NULL, xcalloc, xfree));
5154
5155   /* The rule is CUs specify all the files, including those used by
5156      any TU, so there's no need to scan TUs here.  */
5157
5158   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5159     {
5160       QUIT;
5161
5162       per_cu->v.quick->mark = 0;
5163
5164       /* We only need to look at symtabs not already expanded.  */
5165       if (per_cu->v.quick->compunit_symtab)
5166         continue;
5167
5168       quick_file_names *file_data = dw2_get_file_names (per_cu);
5169       if (file_data == NULL)
5170         continue;
5171
5172       if (htab_find (visited_not_found.get (), file_data) != NULL)
5173         continue;
5174       else if (htab_find (visited_found.get (), file_data) != NULL)
5175         {
5176           per_cu->v.quick->mark = 1;
5177           continue;
5178         }
5179
5180       for (int j = 0; j < file_data->num_file_names; ++j)
5181         {
5182           const char *this_real_name;
5183
5184           if (file_matcher (file_data->file_names[j], false))
5185             {
5186               per_cu->v.quick->mark = 1;
5187               break;
5188             }
5189
5190           /* Before we invoke realpath, which can get expensive when many
5191              files are involved, do a quick comparison of the basenames.  */
5192           if (!basenames_may_differ
5193               && !file_matcher (lbasename (file_data->file_names[j]),
5194                                 true))
5195             continue;
5196
5197           this_real_name = dw2_get_real_path (objfile, file_data, j);
5198           if (file_matcher (this_real_name, false))
5199             {
5200               per_cu->v.quick->mark = 1;
5201               break;
5202             }
5203         }
5204
5205       void **slot = htab_find_slot (per_cu->v.quick->mark
5206                                     ? visited_found.get ()
5207                                     : visited_not_found.get (),
5208                                     file_data, INSERT);
5209       *slot = file_data;
5210     }
5211 }
5212
5213 static void
5214 dw2_expand_symtabs_matching
5215   (struct objfile *objfile,
5216    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5217    const lookup_name_info &lookup_name,
5218    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5219    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5220    enum search_domain kind)
5221 {
5222   struct dwarf2_per_objfile *dwarf2_per_objfile
5223     = get_dwarf2_per_objfile (objfile);
5224
5225   /* index_table is NULL if OBJF_READNOW.  */
5226   if (!dwarf2_per_objfile->index_table)
5227     return;
5228
5229   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5230
5231   mapped_index &index = *dwarf2_per_objfile->index_table;
5232
5233   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5234                                       symbol_matcher,
5235                                       kind, [&] (offset_type idx)
5236     {
5237       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5238                              expansion_notify, kind);
5239     });
5240 }
5241
5242 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5243    symtab.  */
5244
5245 static struct compunit_symtab *
5246 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5247                                           CORE_ADDR pc)
5248 {
5249   int i;
5250
5251   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5252       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5253     return cust;
5254
5255   if (cust->includes == NULL)
5256     return NULL;
5257
5258   for (i = 0; cust->includes[i]; ++i)
5259     {
5260       struct compunit_symtab *s = cust->includes[i];
5261
5262       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5263       if (s != NULL)
5264         return s;
5265     }
5266
5267   return NULL;
5268 }
5269
5270 static struct compunit_symtab *
5271 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5272                                   struct bound_minimal_symbol msymbol,
5273                                   CORE_ADDR pc,
5274                                   struct obj_section *section,
5275                                   int warn_if_readin)
5276 {
5277   struct dwarf2_per_cu_data *data;
5278   struct compunit_symtab *result;
5279
5280   if (!objfile->partial_symtabs->psymtabs_addrmap)
5281     return NULL;
5282
5283   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5284                                  SECT_OFF_TEXT (objfile));
5285   data = (struct dwarf2_per_cu_data *) addrmap_find
5286     (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
5287   if (!data)
5288     return NULL;
5289
5290   if (warn_if_readin && data->v.quick->compunit_symtab)
5291     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5292              paddress (get_objfile_arch (objfile), pc));
5293
5294   result
5295     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5296                                                                         false),
5297                                                 pc);
5298   gdb_assert (result != NULL);
5299   return result;
5300 }
5301
5302 static void
5303 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5304                           void *data, int need_fullname)
5305 {
5306   struct dwarf2_per_objfile *dwarf2_per_objfile
5307     = get_dwarf2_per_objfile (objfile);
5308
5309   if (!dwarf2_per_objfile->filenames_cache)
5310     {
5311       dwarf2_per_objfile->filenames_cache.emplace ();
5312
5313       htab_up visited (htab_create_alloc (10,
5314                                           htab_hash_pointer, htab_eq_pointer,
5315                                           NULL, xcalloc, xfree));
5316
5317       /* The rule is CUs specify all the files, including those used
5318          by any TU, so there's no need to scan TUs here.  We can
5319          ignore file names coming from already-expanded CUs.  */
5320
5321       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5322         {
5323           if (per_cu->v.quick->compunit_symtab)
5324             {
5325               void **slot = htab_find_slot (visited.get (),
5326                                             per_cu->v.quick->file_names,
5327                                             INSERT);
5328
5329               *slot = per_cu->v.quick->file_names;
5330             }
5331         }
5332
5333       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5334         {
5335           /* We only need to look at symtabs not already expanded.  */
5336           if (per_cu->v.quick->compunit_symtab)
5337             continue;
5338
5339           quick_file_names *file_data = dw2_get_file_names (per_cu);
5340           if (file_data == NULL)
5341             continue;
5342
5343           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5344           if (*slot)
5345             {
5346               /* Already visited.  */
5347               continue;
5348             }
5349           *slot = file_data;
5350
5351           for (int j = 0; j < file_data->num_file_names; ++j)
5352             {
5353               const char *filename = file_data->file_names[j];
5354               dwarf2_per_objfile->filenames_cache->seen (filename);
5355             }
5356         }
5357     }
5358
5359   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5360     {
5361       gdb::unique_xmalloc_ptr<char> this_real_name;
5362
5363       if (need_fullname)
5364         this_real_name = gdb_realpath (filename);
5365       (*fun) (filename, this_real_name.get (), data);
5366     });
5367 }
5368
5369 static int
5370 dw2_has_symbols (struct objfile *objfile)
5371 {
5372   return 1;
5373 }
5374
5375 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5376 {
5377   dw2_has_symbols,
5378   dw2_find_last_source_symtab,
5379   dw2_forget_cached_source_info,
5380   dw2_map_symtabs_matching_filename,
5381   dw2_lookup_symbol,
5382   dw2_print_stats,
5383   dw2_dump,
5384   dw2_expand_symtabs_for_function,
5385   dw2_expand_all_symtabs,
5386   dw2_expand_symtabs_with_fullname,
5387   dw2_map_matching_symbols,
5388   dw2_expand_symtabs_matching,
5389   dw2_find_pc_sect_compunit_symtab,
5390   NULL,
5391   dw2_map_symbol_filenames
5392 };
5393
5394 /* DWARF-5 debug_names reader.  */
5395
5396 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5397 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5398
5399 /* A helper function that reads the .debug_names section in SECTION
5400    and fills in MAP.  FILENAME is the name of the file containing the
5401    section; it is used for error reporting.
5402
5403    Returns true if all went well, false otherwise.  */
5404
5405 static bool
5406 read_debug_names_from_section (struct objfile *objfile,
5407                                const char *filename,
5408                                struct dwarf2_section_info *section,
5409                                mapped_debug_names &map)
5410 {
5411   if (dwarf2_section_empty_p (section))
5412     return false;
5413
5414   /* Older elfutils strip versions could keep the section in the main
5415      executable while splitting it for the separate debug info file.  */
5416   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5417     return false;
5418
5419   dwarf2_read_section (objfile, section);
5420
5421   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5422
5423   const gdb_byte *addr = section->buffer;
5424
5425   bfd *const abfd = get_section_bfd_owner (section);
5426
5427   unsigned int bytes_read;
5428   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5429   addr += bytes_read;
5430
5431   map.dwarf5_is_dwarf64 = bytes_read != 4;
5432   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5433   if (bytes_read + length != section->size)
5434     {
5435       /* There may be multiple per-CU indices.  */
5436       warning (_("Section .debug_names in %s length %s does not match "
5437                  "section length %s, ignoring .debug_names."),
5438                filename, plongest (bytes_read + length),
5439                pulongest (section->size));
5440       return false;
5441     }
5442
5443   /* The version number.  */
5444   uint16_t version = read_2_bytes (abfd, addr);
5445   addr += 2;
5446   if (version != 5)
5447     {
5448       warning (_("Section .debug_names in %s has unsupported version %d, "
5449                  "ignoring .debug_names."),
5450                filename, version);
5451       return false;
5452     }
5453
5454   /* Padding.  */
5455   uint16_t padding = read_2_bytes (abfd, addr);
5456   addr += 2;
5457   if (padding != 0)
5458     {
5459       warning (_("Section .debug_names in %s has unsupported padding %d, "
5460                  "ignoring .debug_names."),
5461                filename, padding);
5462       return false;
5463     }
5464
5465   /* comp_unit_count - The number of CUs in the CU list.  */
5466   map.cu_count = read_4_bytes (abfd, addr);
5467   addr += 4;
5468
5469   /* local_type_unit_count - The number of TUs in the local TU
5470      list.  */
5471   map.tu_count = read_4_bytes (abfd, addr);
5472   addr += 4;
5473
5474   /* foreign_type_unit_count - The number of TUs in the foreign TU
5475      list.  */
5476   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5477   addr += 4;
5478   if (foreign_tu_count != 0)
5479     {
5480       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5481                  "ignoring .debug_names."),
5482                filename, static_cast<unsigned long> (foreign_tu_count));
5483       return false;
5484     }
5485
5486   /* bucket_count - The number of hash buckets in the hash lookup
5487      table.  */
5488   map.bucket_count = read_4_bytes (abfd, addr);
5489   addr += 4;
5490
5491   /* name_count - The number of unique names in the index.  */
5492   map.name_count = read_4_bytes (abfd, addr);
5493   addr += 4;
5494
5495   /* abbrev_table_size - The size in bytes of the abbreviations
5496      table.  */
5497   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5498   addr += 4;
5499
5500   /* augmentation_string_size - The size in bytes of the augmentation
5501      string.  This value is rounded up to a multiple of 4.  */
5502   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5503   addr += 4;
5504   map.augmentation_is_gdb = ((augmentation_string_size
5505                               == sizeof (dwarf5_augmentation))
5506                              && memcmp (addr, dwarf5_augmentation,
5507                                         sizeof (dwarf5_augmentation)) == 0);
5508   augmentation_string_size += (-augmentation_string_size) & 3;
5509   addr += augmentation_string_size;
5510
5511   /* List of CUs */
5512   map.cu_table_reordered = addr;
5513   addr += map.cu_count * map.offset_size;
5514
5515   /* List of Local TUs */
5516   map.tu_table_reordered = addr;
5517   addr += map.tu_count * map.offset_size;
5518
5519   /* Hash Lookup Table */
5520   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5521   addr += map.bucket_count * 4;
5522   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5523   addr += map.name_count * 4;
5524
5525   /* Name Table */
5526   map.name_table_string_offs_reordered = addr;
5527   addr += map.name_count * map.offset_size;
5528   map.name_table_entry_offs_reordered = addr;
5529   addr += map.name_count * map.offset_size;
5530
5531   const gdb_byte *abbrev_table_start = addr;
5532   for (;;)
5533     {
5534       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5535       addr += bytes_read;
5536       if (index_num == 0)
5537         break;
5538
5539       const auto insertpair
5540         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5541       if (!insertpair.second)
5542         {
5543           warning (_("Section .debug_names in %s has duplicate index %s, "
5544                      "ignoring .debug_names."),
5545                    filename, pulongest (index_num));
5546           return false;
5547         }
5548       mapped_debug_names::index_val &indexval = insertpair.first->second;
5549       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5550       addr += bytes_read;
5551
5552       for (;;)
5553         {
5554           mapped_debug_names::index_val::attr attr;
5555           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5556           addr += bytes_read;
5557           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5558           addr += bytes_read;
5559           if (attr.form == DW_FORM_implicit_const)
5560             {
5561               attr.implicit_const = read_signed_leb128 (abfd, addr,
5562                                                         &bytes_read);
5563               addr += bytes_read;
5564             }
5565           if (attr.dw_idx == 0 && attr.form == 0)
5566             break;
5567           indexval.attr_vec.push_back (std::move (attr));
5568         }
5569     }
5570   if (addr != abbrev_table_start + abbrev_table_size)
5571     {
5572       warning (_("Section .debug_names in %s has abbreviation_table "
5573                  "of size %zu vs. written as %u, ignoring .debug_names."),
5574                filename, addr - abbrev_table_start, abbrev_table_size);
5575       return false;
5576     }
5577   map.entry_pool = addr;
5578
5579   return true;
5580 }
5581
5582 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5583    list.  */
5584
5585 static void
5586 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5587                                   const mapped_debug_names &map,
5588                                   dwarf2_section_info &section,
5589                                   bool is_dwz)
5590 {
5591   sect_offset sect_off_prev;
5592   for (uint32_t i = 0; i <= map.cu_count; ++i)
5593     {
5594       sect_offset sect_off_next;
5595       if (i < map.cu_count)
5596         {
5597           sect_off_next
5598             = (sect_offset) (extract_unsigned_integer
5599                              (map.cu_table_reordered + i * map.offset_size,
5600                               map.offset_size,
5601                               map.dwarf5_byte_order));
5602         }
5603       else
5604         sect_off_next = (sect_offset) section.size;
5605       if (i >= 1)
5606         {
5607           const ULONGEST length = sect_off_next - sect_off_prev;
5608           dwarf2_per_cu_data *per_cu
5609             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5610                                          sect_off_prev, length);
5611           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5612         }
5613       sect_off_prev = sect_off_next;
5614     }
5615 }
5616
5617 /* Read the CU list from the mapped index, and use it to create all
5618    the CU objects for this dwarf2_per_objfile.  */
5619
5620 static void
5621 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5622                              const mapped_debug_names &map,
5623                              const mapped_debug_names &dwz_map)
5624 {
5625   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5626   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5627
5628   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5629                                     dwarf2_per_objfile->info,
5630                                     false /* is_dwz */);
5631
5632   if (dwz_map.cu_count == 0)
5633     return;
5634
5635   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5636   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5637                                     true /* is_dwz */);
5638 }
5639
5640 /* Read .debug_names.  If everything went ok, initialize the "quick"
5641    elements of all the CUs and return true.  Otherwise, return false.  */
5642
5643 static bool
5644 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5645 {
5646   std::unique_ptr<mapped_debug_names> map
5647     (new mapped_debug_names (dwarf2_per_objfile));
5648   mapped_debug_names dwz_map (dwarf2_per_objfile);
5649   struct objfile *objfile = dwarf2_per_objfile->objfile;
5650
5651   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5652                                       &dwarf2_per_objfile->debug_names,
5653                                       *map))
5654     return false;
5655
5656   /* Don't use the index if it's empty.  */
5657   if (map->name_count == 0)
5658     return false;
5659
5660   /* If there is a .dwz file, read it so we can get its CU list as
5661      well.  */
5662   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5663   if (dwz != NULL)
5664     {
5665       if (!read_debug_names_from_section (objfile,
5666                                           bfd_get_filename (dwz->dwz_bfd),
5667                                           &dwz->debug_names, dwz_map))
5668         {
5669           warning (_("could not read '.debug_names' section from %s; skipping"),
5670                    bfd_get_filename (dwz->dwz_bfd));
5671           return false;
5672         }
5673     }
5674
5675   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5676
5677   if (map->tu_count != 0)
5678     {
5679       /* We can only handle a single .debug_types when we have an
5680          index.  */
5681       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5682         return false;
5683
5684       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5685                                                 dwarf2_per_objfile->types, 0);
5686
5687       create_signatured_type_table_from_debug_names
5688         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5689     }
5690
5691   create_addrmap_from_aranges (dwarf2_per_objfile,
5692                                &dwarf2_per_objfile->debug_aranges);
5693
5694   dwarf2_per_objfile->debug_names_table = std::move (map);
5695   dwarf2_per_objfile->using_index = 1;
5696   dwarf2_per_objfile->quick_file_names_table =
5697     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5698
5699   return true;
5700 }
5701
5702 /* Type used to manage iterating over all CUs looking for a symbol for
5703    .debug_names.  */
5704
5705 class dw2_debug_names_iterator
5706 {
5707 public:
5708   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5709      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5710   dw2_debug_names_iterator (const mapped_debug_names &map,
5711                             bool want_specific_block,
5712                             block_enum block_index, domain_enum domain,
5713                             const char *name)
5714     : m_map (map), m_want_specific_block (want_specific_block),
5715       m_block_index (block_index), m_domain (domain),
5716       m_addr (find_vec_in_debug_names (map, name))
5717   {}
5718
5719   dw2_debug_names_iterator (const mapped_debug_names &map,
5720                             search_domain search, uint32_t namei)
5721     : m_map (map),
5722       m_search (search),
5723       m_addr (find_vec_in_debug_names (map, namei))
5724   {}
5725
5726   /* Return the next matching CU or NULL if there are no more.  */
5727   dwarf2_per_cu_data *next ();
5728
5729 private:
5730   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5731                                                   const char *name);
5732   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5733                                                   uint32_t namei);
5734
5735   /* The internalized form of .debug_names.  */
5736   const mapped_debug_names &m_map;
5737
5738   /* If true, only look for symbols that match BLOCK_INDEX.  */
5739   const bool m_want_specific_block = false;
5740
5741   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5742      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5743      value.  */
5744   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5745
5746   /* The kind of symbol we're looking for.  */
5747   const domain_enum m_domain = UNDEF_DOMAIN;
5748   const search_domain m_search = ALL_DOMAIN;
5749
5750   /* The list of CUs from the index entry of the symbol, or NULL if
5751      not found.  */
5752   const gdb_byte *m_addr;
5753 };
5754
5755 const char *
5756 mapped_debug_names::namei_to_name (uint32_t namei) const
5757 {
5758   const ULONGEST namei_string_offs
5759     = extract_unsigned_integer ((name_table_string_offs_reordered
5760                                  + namei * offset_size),
5761                                 offset_size,
5762                                 dwarf5_byte_order);
5763   return read_indirect_string_at_offset
5764     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5765 }
5766
5767 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5768    found, return pointer to its pool data.  If NAME cannot be found,
5769    return NULL.  */
5770
5771 const gdb_byte *
5772 dw2_debug_names_iterator::find_vec_in_debug_names
5773   (const mapped_debug_names &map, const char *name)
5774 {
5775   int (*cmp) (const char *, const char *);
5776
5777   if (current_language->la_language == language_cplus
5778       || current_language->la_language == language_fortran
5779       || current_language->la_language == language_d)
5780     {
5781       /* NAME is already canonical.  Drop any qualifiers as
5782          .debug_names does not contain any.  */
5783
5784       if (strchr (name, '(') != NULL)
5785         {
5786           gdb::unique_xmalloc_ptr<char> without_params
5787             = cp_remove_params (name);
5788
5789           if (without_params != NULL)
5790             {
5791               name = without_params.get();
5792             }
5793         }
5794     }
5795
5796   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5797
5798   const uint32_t full_hash = dwarf5_djb_hash (name);
5799   uint32_t namei
5800     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5801                                 (map.bucket_table_reordered
5802                                  + (full_hash % map.bucket_count)), 4,
5803                                 map.dwarf5_byte_order);
5804   if (namei == 0)
5805     return NULL;
5806   --namei;
5807   if (namei >= map.name_count)
5808     {
5809       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5810                    "[in module %s]"),
5811                  namei, map.name_count,
5812                  objfile_name (map.dwarf2_per_objfile->objfile));
5813       return NULL;
5814     }
5815
5816   for (;;)
5817     {
5818       const uint32_t namei_full_hash
5819         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5820                                     (map.hash_table_reordered + namei), 4,
5821                                     map.dwarf5_byte_order);
5822       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5823         return NULL;
5824
5825       if (full_hash == namei_full_hash)
5826         {
5827           const char *const namei_string = map.namei_to_name (namei);
5828
5829 #if 0 /* An expensive sanity check.  */
5830           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5831             {
5832               complaint (_("Wrong .debug_names hash for string at index %u "
5833                            "[in module %s]"),
5834                          namei, objfile_name (dwarf2_per_objfile->objfile));
5835               return NULL;
5836             }
5837 #endif
5838
5839           if (cmp (namei_string, name) == 0)
5840             {
5841               const ULONGEST namei_entry_offs
5842                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5843                                              + namei * map.offset_size),
5844                                             map.offset_size, map.dwarf5_byte_order);
5845               return map.entry_pool + namei_entry_offs;
5846             }
5847         }
5848
5849       ++namei;
5850       if (namei >= map.name_count)
5851         return NULL;
5852     }
5853 }
5854
5855 const gdb_byte *
5856 dw2_debug_names_iterator::find_vec_in_debug_names
5857   (const mapped_debug_names &map, uint32_t namei)
5858 {
5859   if (namei >= map.name_count)
5860     {
5861       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5862                    "[in module %s]"),
5863                  namei, map.name_count,
5864                  objfile_name (map.dwarf2_per_objfile->objfile));
5865       return NULL;
5866     }
5867
5868   const ULONGEST namei_entry_offs
5869     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5870                                  + namei * map.offset_size),
5871                                 map.offset_size, map.dwarf5_byte_order);
5872   return map.entry_pool + namei_entry_offs;
5873 }
5874
5875 /* See dw2_debug_names_iterator.  */
5876
5877 dwarf2_per_cu_data *
5878 dw2_debug_names_iterator::next ()
5879 {
5880   if (m_addr == NULL)
5881     return NULL;
5882
5883   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5884   struct objfile *objfile = dwarf2_per_objfile->objfile;
5885   bfd *const abfd = objfile->obfd;
5886
5887  again:
5888
5889   unsigned int bytes_read;
5890   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5891   m_addr += bytes_read;
5892   if (abbrev == 0)
5893     return NULL;
5894
5895   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5896   if (indexval_it == m_map.abbrev_map.cend ())
5897     {
5898       complaint (_("Wrong .debug_names undefined abbrev code %s "
5899                    "[in module %s]"),
5900                  pulongest (abbrev), objfile_name (objfile));
5901       return NULL;
5902     }
5903   const mapped_debug_names::index_val &indexval = indexval_it->second;
5904   bool have_is_static = false;
5905   bool is_static;
5906   dwarf2_per_cu_data *per_cu = NULL;
5907   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5908     {
5909       ULONGEST ull;
5910       switch (attr.form)
5911         {
5912         case DW_FORM_implicit_const:
5913           ull = attr.implicit_const;
5914           break;
5915         case DW_FORM_flag_present:
5916           ull = 1;
5917           break;
5918         case DW_FORM_udata:
5919           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5920           m_addr += bytes_read;
5921           break;
5922         default:
5923           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5924                      dwarf_form_name (attr.form),
5925                      objfile_name (objfile));
5926           return NULL;
5927         }
5928       switch (attr.dw_idx)
5929         {
5930         case DW_IDX_compile_unit:
5931           /* Don't crash on bad data.  */
5932           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5933             {
5934               complaint (_(".debug_names entry has bad CU index %s"
5935                            " [in module %s]"),
5936                          pulongest (ull),
5937                          objfile_name (dwarf2_per_objfile->objfile));
5938               continue;
5939             }
5940           per_cu = dwarf2_per_objfile->get_cutu (ull);
5941           break;
5942         case DW_IDX_type_unit:
5943           /* Don't crash on bad data.  */
5944           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5945             {
5946               complaint (_(".debug_names entry has bad TU index %s"
5947                            " [in module %s]"),
5948                          pulongest (ull),
5949                          objfile_name (dwarf2_per_objfile->objfile));
5950               continue;
5951             }
5952           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5953           break;
5954         case DW_IDX_GNU_internal:
5955           if (!m_map.augmentation_is_gdb)
5956             break;
5957           have_is_static = true;
5958           is_static = true;
5959           break;
5960         case DW_IDX_GNU_external:
5961           if (!m_map.augmentation_is_gdb)
5962             break;
5963           have_is_static = true;
5964           is_static = false;
5965           break;
5966         }
5967     }
5968
5969   /* Skip if already read in.  */
5970   if (per_cu->v.quick->compunit_symtab)
5971     goto again;
5972
5973   /* Check static vs global.  */
5974   if (have_is_static)
5975     {
5976       const bool want_static = m_block_index != GLOBAL_BLOCK;
5977       if (m_want_specific_block && want_static != is_static)
5978         goto again;
5979     }
5980
5981   /* Match dw2_symtab_iter_next, symbol_kind
5982      and debug_names::psymbol_tag.  */
5983   switch (m_domain)
5984     {
5985     case VAR_DOMAIN:
5986       switch (indexval.dwarf_tag)
5987         {
5988         case DW_TAG_variable:
5989         case DW_TAG_subprogram:
5990         /* Some types are also in VAR_DOMAIN.  */
5991         case DW_TAG_typedef:
5992         case DW_TAG_structure_type:
5993           break;
5994         default:
5995           goto again;
5996         }
5997       break;
5998     case STRUCT_DOMAIN:
5999       switch (indexval.dwarf_tag)
6000         {
6001         case DW_TAG_typedef:
6002         case DW_TAG_structure_type:
6003           break;
6004         default:
6005           goto again;
6006         }
6007       break;
6008     case LABEL_DOMAIN:
6009       switch (indexval.dwarf_tag)
6010         {
6011         case 0:
6012         case DW_TAG_variable:
6013           break;
6014         default:
6015           goto again;
6016         }
6017       break;
6018     default:
6019       break;
6020     }
6021
6022   /* Match dw2_expand_symtabs_matching, symbol_kind and
6023      debug_names::psymbol_tag.  */
6024   switch (m_search)
6025     {
6026     case VARIABLES_DOMAIN:
6027       switch (indexval.dwarf_tag)
6028         {
6029         case DW_TAG_variable:
6030           break;
6031         default:
6032           goto again;
6033         }
6034       break;
6035     case FUNCTIONS_DOMAIN:
6036       switch (indexval.dwarf_tag)
6037         {
6038         case DW_TAG_subprogram:
6039           break;
6040         default:
6041           goto again;
6042         }
6043       break;
6044     case TYPES_DOMAIN:
6045       switch (indexval.dwarf_tag)
6046         {
6047         case DW_TAG_typedef:
6048         case DW_TAG_structure_type:
6049           break;
6050         default:
6051           goto again;
6052         }
6053       break;
6054     default:
6055       break;
6056     }
6057
6058   return per_cu;
6059 }
6060
6061 static struct compunit_symtab *
6062 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6063                                const char *name, domain_enum domain)
6064 {
6065   const block_enum block_index = static_cast<block_enum> (block_index_int);
6066   struct dwarf2_per_objfile *dwarf2_per_objfile
6067     = get_dwarf2_per_objfile (objfile);
6068
6069   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6070   if (!mapp)
6071     {
6072       /* index is NULL if OBJF_READNOW.  */
6073       return NULL;
6074     }
6075   const auto &map = *mapp;
6076
6077   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6078                                  block_index, domain, name);
6079
6080   struct compunit_symtab *stab_best = NULL;
6081   struct dwarf2_per_cu_data *per_cu;
6082   while ((per_cu = iter.next ()) != NULL)
6083     {
6084       struct symbol *sym, *with_opaque = NULL;
6085       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6086       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6087       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6088
6089       sym = block_find_symbol (block, name, domain,
6090                                block_find_non_opaque_type_preferred,
6091                                &with_opaque);
6092
6093       /* Some caution must be observed with overloaded functions and
6094          methods, since the index will not contain any overload
6095          information (but NAME might contain it).  */
6096
6097       if (sym != NULL
6098           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6099         return stab;
6100       if (with_opaque != NULL
6101           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6102         stab_best = stab;
6103
6104       /* Keep looking through other CUs.  */
6105     }
6106
6107   return stab_best;
6108 }
6109
6110 /* This dumps minimal information about .debug_names.  It is called
6111    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6112    uses this to verify that .debug_names has been loaded.  */
6113
6114 static void
6115 dw2_debug_names_dump (struct objfile *objfile)
6116 {
6117   struct dwarf2_per_objfile *dwarf2_per_objfile
6118     = get_dwarf2_per_objfile (objfile);
6119
6120   gdb_assert (dwarf2_per_objfile->using_index);
6121   printf_filtered (".debug_names:");
6122   if (dwarf2_per_objfile->debug_names_table)
6123     printf_filtered (" exists\n");
6124   else
6125     printf_filtered (" faked for \"readnow\"\n");
6126   printf_filtered ("\n");
6127 }
6128
6129 static void
6130 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6131                                              const char *func_name)
6132 {
6133   struct dwarf2_per_objfile *dwarf2_per_objfile
6134     = get_dwarf2_per_objfile (objfile);
6135
6136   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6137   if (dwarf2_per_objfile->debug_names_table)
6138     {
6139       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6140
6141       /* Note: It doesn't matter what we pass for block_index here.  */
6142       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6143                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6144
6145       struct dwarf2_per_cu_data *per_cu;
6146       while ((per_cu = iter.next ()) != NULL)
6147         dw2_instantiate_symtab (per_cu, false);
6148     }
6149 }
6150
6151 static void
6152 dw2_debug_names_expand_symtabs_matching
6153   (struct objfile *objfile,
6154    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6155    const lookup_name_info &lookup_name,
6156    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6157    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6158    enum search_domain kind)
6159 {
6160   struct dwarf2_per_objfile *dwarf2_per_objfile
6161     = get_dwarf2_per_objfile (objfile);
6162
6163   /* debug_names_table is NULL if OBJF_READNOW.  */
6164   if (!dwarf2_per_objfile->debug_names_table)
6165     return;
6166
6167   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6168
6169   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6170
6171   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6172                                       symbol_matcher,
6173                                       kind, [&] (offset_type namei)
6174     {
6175       /* The name was matched, now expand corresponding CUs that were
6176          marked.  */
6177       dw2_debug_names_iterator iter (map, kind, namei);
6178
6179       struct dwarf2_per_cu_data *per_cu;
6180       while ((per_cu = iter.next ()) != NULL)
6181         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6182                                          expansion_notify);
6183     });
6184 }
6185
6186 const struct quick_symbol_functions dwarf2_debug_names_functions =
6187 {
6188   dw2_has_symbols,
6189   dw2_find_last_source_symtab,
6190   dw2_forget_cached_source_info,
6191   dw2_map_symtabs_matching_filename,
6192   dw2_debug_names_lookup_symbol,
6193   dw2_print_stats,
6194   dw2_debug_names_dump,
6195   dw2_debug_names_expand_symtabs_for_function,
6196   dw2_expand_all_symtabs,
6197   dw2_expand_symtabs_with_fullname,
6198   dw2_map_matching_symbols,
6199   dw2_debug_names_expand_symtabs_matching,
6200   dw2_find_pc_sect_compunit_symtab,
6201   NULL,
6202   dw2_map_symbol_filenames
6203 };
6204
6205 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6206    to either a dwarf2_per_objfile or dwz_file object.  */
6207
6208 template <typename T>
6209 static gdb::array_view<const gdb_byte>
6210 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6211 {
6212   dwarf2_section_info *section = &section_owner->gdb_index;
6213
6214   if (dwarf2_section_empty_p (section))
6215     return {};
6216
6217   /* Older elfutils strip versions could keep the section in the main
6218      executable while splitting it for the separate debug info file.  */
6219   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6220     return {};
6221
6222   dwarf2_read_section (obj, section);
6223
6224   /* dwarf2_section_info::size is a bfd_size_type, while
6225      gdb::array_view works with size_t.  On 32-bit hosts, with
6226      --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
6227      is 32-bit.  So we need an explicit narrowing conversion here.
6228      This is fine, because it's impossible to allocate or mmap an
6229      array/buffer larger than what size_t can represent.  */
6230   return gdb::make_array_view (section->buffer, section->size);
6231 }
6232
6233 /* Lookup the index cache for the contents of the index associated to
6234    DWARF2_OBJ.  */
6235
6236 static gdb::array_view<const gdb_byte>
6237 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6238 {
6239   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6240   if (build_id == nullptr)
6241     return {};
6242
6243   return global_index_cache.lookup_gdb_index (build_id,
6244                                               &dwarf2_obj->index_cache_res);
6245 }
6246
6247 /* Same as the above, but for DWZ.  */
6248
6249 static gdb::array_view<const gdb_byte>
6250 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6251 {
6252   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6253   if (build_id == nullptr)
6254     return {};
6255
6256   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6257 }
6258
6259 /* See symfile.h.  */
6260
6261 bool
6262 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6263 {
6264   struct dwarf2_per_objfile *dwarf2_per_objfile
6265     = get_dwarf2_per_objfile (objfile);
6266
6267   /* If we're about to read full symbols, don't bother with the
6268      indices.  In this case we also don't care if some other debug
6269      format is making psymtabs, because they are all about to be
6270      expanded anyway.  */
6271   if ((objfile->flags & OBJF_READNOW))
6272     {
6273       dwarf2_per_objfile->using_index = 1;
6274       create_all_comp_units (dwarf2_per_objfile);
6275       create_all_type_units (dwarf2_per_objfile);
6276       dwarf2_per_objfile->quick_file_names_table
6277         = create_quick_file_names_table
6278             (dwarf2_per_objfile->all_comp_units.size ());
6279
6280       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6281                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6282         {
6283           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6284
6285           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6286                                             struct dwarf2_per_cu_quick_data);
6287         }
6288
6289       /* Return 1 so that gdb sees the "quick" functions.  However,
6290          these functions will be no-ops because we will have expanded
6291          all symtabs.  */
6292       *index_kind = dw_index_kind::GDB_INDEX;
6293       return true;
6294     }
6295
6296   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6297     {
6298       *index_kind = dw_index_kind::DEBUG_NAMES;
6299       return true;
6300     }
6301
6302   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6303                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6304                              get_gdb_index_contents_from_section<dwz_file>))
6305     {
6306       *index_kind = dw_index_kind::GDB_INDEX;
6307       return true;
6308     }
6309
6310   /* ... otherwise, try to find the index in the index cache.  */
6311   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6312                              get_gdb_index_contents_from_cache,
6313                              get_gdb_index_contents_from_cache_dwz))
6314     {
6315       global_index_cache.hit ();
6316       *index_kind = dw_index_kind::GDB_INDEX;
6317       return true;
6318     }
6319
6320   global_index_cache.miss ();
6321   return false;
6322 }
6323
6324 \f
6325
6326 /* Build a partial symbol table.  */
6327
6328 void
6329 dwarf2_build_psymtabs (struct objfile *objfile)
6330 {
6331   struct dwarf2_per_objfile *dwarf2_per_objfile
6332     = get_dwarf2_per_objfile (objfile);
6333
6334   init_psymbol_list (objfile, 1024);
6335
6336   try
6337     {
6338       /* This isn't really ideal: all the data we allocate on the
6339          objfile's obstack is still uselessly kept around.  However,
6340          freeing it seems unsafe.  */
6341       psymtab_discarder psymtabs (objfile);
6342       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6343       psymtabs.keep ();
6344
6345       /* (maybe) store an index in the cache.  */
6346       global_index_cache.store (dwarf2_per_objfile);
6347     }
6348   catch (const gdb_exception_error &except)
6349     {
6350       exception_print (gdb_stderr, except);
6351     }
6352 }
6353
6354 /* Return the total length of the CU described by HEADER.  */
6355
6356 static unsigned int
6357 get_cu_length (const struct comp_unit_head *header)
6358 {
6359   return header->initial_length_size + header->length;
6360 }
6361
6362 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6363
6364 static inline bool
6365 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6366 {
6367   sect_offset bottom = cu_header->sect_off;
6368   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6369
6370   return sect_off >= bottom && sect_off < top;
6371 }
6372
6373 /* Find the base address of the compilation unit for range lists and
6374    location lists.  It will normally be specified by DW_AT_low_pc.
6375    In DWARF-3 draft 4, the base address could be overridden by
6376    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6377    compilation units with discontinuous ranges.  */
6378
6379 static void
6380 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6381 {
6382   struct attribute *attr;
6383
6384   cu->base_known = 0;
6385   cu->base_address = 0;
6386
6387   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6388   if (attr)
6389     {
6390       cu->base_address = attr_value_as_address (attr);
6391       cu->base_known = 1;
6392     }
6393   else
6394     {
6395       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6396       if (attr)
6397         {
6398           cu->base_address = attr_value_as_address (attr);
6399           cu->base_known = 1;
6400         }
6401     }
6402 }
6403
6404 /* Read in the comp unit header information from the debug_info at info_ptr.
6405    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6406    NOTE: This leaves members offset, first_die_offset to be filled in
6407    by the caller.  */
6408
6409 static const gdb_byte *
6410 read_comp_unit_head (struct comp_unit_head *cu_header,
6411                      const gdb_byte *info_ptr,
6412                      struct dwarf2_section_info *section,
6413                      rcuh_kind section_kind)
6414 {
6415   int signed_addr;
6416   unsigned int bytes_read;
6417   const char *filename = get_section_file_name (section);
6418   bfd *abfd = get_section_bfd_owner (section);
6419
6420   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6421   cu_header->initial_length_size = bytes_read;
6422   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6423   info_ptr += bytes_read;
6424   cu_header->version = read_2_bytes (abfd, info_ptr);
6425   if (cu_header->version < 2 || cu_header->version > 5)
6426     error (_("Dwarf Error: wrong version in compilation unit header "
6427            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6428            cu_header->version, filename);
6429   info_ptr += 2;
6430   if (cu_header->version < 5)
6431     switch (section_kind)
6432       {
6433       case rcuh_kind::COMPILE:
6434         cu_header->unit_type = DW_UT_compile;
6435         break;
6436       case rcuh_kind::TYPE:
6437         cu_header->unit_type = DW_UT_type;
6438         break;
6439       default:
6440         internal_error (__FILE__, __LINE__,
6441                         _("read_comp_unit_head: invalid section_kind"));
6442       }
6443   else
6444     {
6445       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6446                                                  (read_1_byte (abfd, info_ptr));
6447       info_ptr += 1;
6448       switch (cu_header->unit_type)
6449         {
6450         case DW_UT_compile:
6451           if (section_kind != rcuh_kind::COMPILE)
6452             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6453                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6454                    filename);
6455           break;
6456         case DW_UT_type:
6457           section_kind = rcuh_kind::TYPE;
6458           break;
6459         default:
6460           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6461                  "(is %d, should be %d or %d) [in module %s]"),
6462                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6463         }
6464
6465       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6466       info_ptr += 1;
6467     }
6468   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6469                                                           cu_header,
6470                                                           &bytes_read);
6471   info_ptr += bytes_read;
6472   if (cu_header->version < 5)
6473     {
6474       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6475       info_ptr += 1;
6476     }
6477   signed_addr = bfd_get_sign_extend_vma (abfd);
6478   if (signed_addr < 0)
6479     internal_error (__FILE__, __LINE__,
6480                     _("read_comp_unit_head: dwarf from non elf file"));
6481   cu_header->signed_addr_p = signed_addr;
6482
6483   if (section_kind == rcuh_kind::TYPE)
6484     {
6485       LONGEST type_offset;
6486
6487       cu_header->signature = read_8_bytes (abfd, info_ptr);
6488       info_ptr += 8;
6489
6490       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6491       info_ptr += bytes_read;
6492       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6493       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6494         error (_("Dwarf Error: Too big type_offset in compilation unit "
6495                "header (is %s) [in module %s]"), plongest (type_offset),
6496                filename);
6497     }
6498
6499   return info_ptr;
6500 }
6501
6502 /* Helper function that returns the proper abbrev section for
6503    THIS_CU.  */
6504
6505 static struct dwarf2_section_info *
6506 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6507 {
6508   struct dwarf2_section_info *abbrev;
6509   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6510
6511   if (this_cu->is_dwz)
6512     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6513   else
6514     abbrev = &dwarf2_per_objfile->abbrev;
6515
6516   return abbrev;
6517 }
6518
6519 /* Subroutine of read_and_check_comp_unit_head and
6520    read_and_check_type_unit_head to simplify them.
6521    Perform various error checking on the header.  */
6522
6523 static void
6524 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6525                             struct comp_unit_head *header,
6526                             struct dwarf2_section_info *section,
6527                             struct dwarf2_section_info *abbrev_section)
6528 {
6529   const char *filename = get_section_file_name (section);
6530
6531   if (to_underlying (header->abbrev_sect_off)
6532       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6533     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6534            "(offset %s + 6) [in module %s]"),
6535            sect_offset_str (header->abbrev_sect_off),
6536            sect_offset_str (header->sect_off),
6537            filename);
6538
6539   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6540      avoid potential 32-bit overflow.  */
6541   if (((ULONGEST) header->sect_off + get_cu_length (header))
6542       > section->size)
6543     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6544            "(offset %s + 0) [in module %s]"),
6545            header->length, sect_offset_str (header->sect_off),
6546            filename);
6547 }
6548
6549 /* Read in a CU/TU header and perform some basic error checking.
6550    The contents of the header are stored in HEADER.
6551    The result is a pointer to the start of the first DIE.  */
6552
6553 static const gdb_byte *
6554 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6555                                struct comp_unit_head *header,
6556                                struct dwarf2_section_info *section,
6557                                struct dwarf2_section_info *abbrev_section,
6558                                const gdb_byte *info_ptr,
6559                                rcuh_kind section_kind)
6560 {
6561   const gdb_byte *beg_of_comp_unit = info_ptr;
6562
6563   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6564
6565   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6566
6567   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6568
6569   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6570                               abbrev_section);
6571
6572   return info_ptr;
6573 }
6574
6575 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6576
6577 static sect_offset
6578 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6579                     struct dwarf2_section_info *section,
6580                     sect_offset sect_off)
6581 {
6582   bfd *abfd = get_section_bfd_owner (section);
6583   const gdb_byte *info_ptr;
6584   unsigned int initial_length_size, offset_size;
6585   uint16_t version;
6586
6587   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6588   info_ptr = section->buffer + to_underlying (sect_off);
6589   read_initial_length (abfd, info_ptr, &initial_length_size);
6590   offset_size = initial_length_size == 4 ? 4 : 8;
6591   info_ptr += initial_length_size;
6592
6593   version = read_2_bytes (abfd, info_ptr);
6594   info_ptr += 2;
6595   if (version >= 5)
6596     {
6597       /* Skip unit type and address size.  */
6598       info_ptr += 2;
6599     }
6600
6601   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6602 }
6603
6604 /* Allocate a new partial symtab for file named NAME and mark this new
6605    partial symtab as being an include of PST.  */
6606
6607 static void
6608 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6609                                struct objfile *objfile)
6610 {
6611   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6612
6613   if (!IS_ABSOLUTE_PATH (subpst->filename))
6614     {
6615       /* It shares objfile->objfile_obstack.  */
6616       subpst->dirname = pst->dirname;
6617     }
6618
6619   subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
6620   subpst->dependencies[0] = pst;
6621   subpst->number_of_dependencies = 1;
6622
6623   subpst->read_symtab = pst->read_symtab;
6624
6625   /* No private part is necessary for include psymtabs.  This property
6626      can be used to differentiate between such include psymtabs and
6627      the regular ones.  */
6628   subpst->read_symtab_private = NULL;
6629 }
6630
6631 /* Read the Line Number Program data and extract the list of files
6632    included by the source file represented by PST.  Build an include
6633    partial symtab for each of these included files.  */
6634
6635 static void
6636 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6637                                struct die_info *die,
6638                                struct partial_symtab *pst)
6639 {
6640   line_header_up lh;
6641   struct attribute *attr;
6642
6643   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6644   if (attr)
6645     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6646   if (lh == NULL)
6647     return;  /* No linetable, so no includes.  */
6648
6649   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6650      that we pass in the raw text_low here; that is ok because we're
6651      only decoding the line table to make include partial symtabs, and
6652      so the addresses aren't really used.  */
6653   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6654                       pst->raw_text_low (), 1);
6655 }
6656
6657 static hashval_t
6658 hash_signatured_type (const void *item)
6659 {
6660   const struct signatured_type *sig_type
6661     = (const struct signatured_type *) item;
6662
6663   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6664   return sig_type->signature;
6665 }
6666
6667 static int
6668 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6669 {
6670   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6671   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6672
6673   return lhs->signature == rhs->signature;
6674 }
6675
6676 /* Allocate a hash table for signatured types.  */
6677
6678 static htab_t
6679 allocate_signatured_type_table (struct objfile *objfile)
6680 {
6681   return htab_create_alloc_ex (41,
6682                                hash_signatured_type,
6683                                eq_signatured_type,
6684                                NULL,
6685                                &objfile->objfile_obstack,
6686                                hashtab_obstack_allocate,
6687                                dummy_obstack_deallocate);
6688 }
6689
6690 /* A helper function to add a signatured type CU to a table.  */
6691
6692 static int
6693 add_signatured_type_cu_to_table (void **slot, void *datum)
6694 {
6695   struct signatured_type *sigt = (struct signatured_type *) *slot;
6696   std::vector<signatured_type *> *all_type_units
6697     = (std::vector<signatured_type *> *) datum;
6698
6699   all_type_units->push_back (sigt);
6700
6701   return 1;
6702 }
6703
6704 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6705    and fill them into TYPES_HTAB.  It will process only type units,
6706    therefore DW_UT_type.  */
6707
6708 static void
6709 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6710                               struct dwo_file *dwo_file,
6711                               dwarf2_section_info *section, htab_t &types_htab,
6712                               rcuh_kind section_kind)
6713 {
6714   struct objfile *objfile = dwarf2_per_objfile->objfile;
6715   struct dwarf2_section_info *abbrev_section;
6716   bfd *abfd;
6717   const gdb_byte *info_ptr, *end_ptr;
6718
6719   abbrev_section = (dwo_file != NULL
6720                     ? &dwo_file->sections.abbrev
6721                     : &dwarf2_per_objfile->abbrev);
6722
6723   if (dwarf_read_debug)
6724     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6725                         get_section_name (section),
6726                         get_section_file_name (abbrev_section));
6727
6728   dwarf2_read_section (objfile, section);
6729   info_ptr = section->buffer;
6730
6731   if (info_ptr == NULL)
6732     return;
6733
6734   /* We can't set abfd until now because the section may be empty or
6735      not present, in which case the bfd is unknown.  */
6736   abfd = get_section_bfd_owner (section);
6737
6738   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6739      because we don't need to read any dies: the signature is in the
6740      header.  */
6741
6742   end_ptr = info_ptr + section->size;
6743   while (info_ptr < end_ptr)
6744     {
6745       struct signatured_type *sig_type;
6746       struct dwo_unit *dwo_tu;
6747       void **slot;
6748       const gdb_byte *ptr = info_ptr;
6749       struct comp_unit_head header;
6750       unsigned int length;
6751
6752       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6753
6754       /* Initialize it due to a false compiler warning.  */
6755       header.signature = -1;
6756       header.type_cu_offset_in_tu = (cu_offset) -1;
6757
6758       /* We need to read the type's signature in order to build the hash
6759          table, but we don't need anything else just yet.  */
6760
6761       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6762                                            abbrev_section, ptr, section_kind);
6763
6764       length = get_cu_length (&header);
6765
6766       /* Skip dummy type units.  */
6767       if (ptr >= info_ptr + length
6768           || peek_abbrev_code (abfd, ptr) == 0
6769           || header.unit_type != DW_UT_type)
6770         {
6771           info_ptr += length;
6772           continue;
6773         }
6774
6775       if (types_htab == NULL)
6776         {
6777           if (dwo_file)
6778             types_htab = allocate_dwo_unit_table (objfile);
6779           else
6780             types_htab = allocate_signatured_type_table (objfile);
6781         }
6782
6783       if (dwo_file)
6784         {
6785           sig_type = NULL;
6786           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6787                                    struct dwo_unit);
6788           dwo_tu->dwo_file = dwo_file;
6789           dwo_tu->signature = header.signature;
6790           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6791           dwo_tu->section = section;
6792           dwo_tu->sect_off = sect_off;
6793           dwo_tu->length = length;
6794         }
6795       else
6796         {
6797           /* N.B.: type_offset is not usable if this type uses a DWO file.
6798              The real type_offset is in the DWO file.  */
6799           dwo_tu = NULL;
6800           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6801                                      struct signatured_type);
6802           sig_type->signature = header.signature;
6803           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6804           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6805           sig_type->per_cu.is_debug_types = 1;
6806           sig_type->per_cu.section = section;
6807           sig_type->per_cu.sect_off = sect_off;
6808           sig_type->per_cu.length = length;
6809         }
6810
6811       slot = htab_find_slot (types_htab,
6812                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6813                              INSERT);
6814       gdb_assert (slot != NULL);
6815       if (*slot != NULL)
6816         {
6817           sect_offset dup_sect_off;
6818
6819           if (dwo_file)
6820             {
6821               const struct dwo_unit *dup_tu
6822                 = (const struct dwo_unit *) *slot;
6823
6824               dup_sect_off = dup_tu->sect_off;
6825             }
6826           else
6827             {
6828               const struct signatured_type *dup_tu
6829                 = (const struct signatured_type *) *slot;
6830
6831               dup_sect_off = dup_tu->per_cu.sect_off;
6832             }
6833
6834           complaint (_("debug type entry at offset %s is duplicate to"
6835                        " the entry at offset %s, signature %s"),
6836                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6837                      hex_string (header.signature));
6838         }
6839       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6840
6841       if (dwarf_read_debug > 1)
6842         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6843                             sect_offset_str (sect_off),
6844                             hex_string (header.signature));
6845
6846       info_ptr += length;
6847     }
6848 }
6849
6850 /* Create the hash table of all entries in the .debug_types
6851    (or .debug_types.dwo) section(s).
6852    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6853    otherwise it is NULL.
6854
6855    The result is a pointer to the hash table or NULL if there are no types.
6856
6857    Note: This function processes DWO files only, not DWP files.  */
6858
6859 static void
6860 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6861                                struct dwo_file *dwo_file,
6862                                VEC (dwarf2_section_info_def) *types,
6863                                htab_t &types_htab)
6864 {
6865   int ix;
6866   struct dwarf2_section_info *section;
6867
6868   if (VEC_empty (dwarf2_section_info_def, types))
6869     return;
6870
6871   for (ix = 0;
6872        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6873        ++ix)
6874     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6875                                   types_htab, rcuh_kind::TYPE);
6876 }
6877
6878 /* Create the hash table of all entries in the .debug_types section,
6879    and initialize all_type_units.
6880    The result is zero if there is an error (e.g. missing .debug_types section),
6881    otherwise non-zero.  */
6882
6883 static int
6884 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6885 {
6886   htab_t types_htab = NULL;
6887
6888   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6889                                 &dwarf2_per_objfile->info, types_htab,
6890                                 rcuh_kind::COMPILE);
6891   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6892                                  dwarf2_per_objfile->types, types_htab);
6893   if (types_htab == NULL)
6894     {
6895       dwarf2_per_objfile->signatured_types = NULL;
6896       return 0;
6897     }
6898
6899   dwarf2_per_objfile->signatured_types = types_htab;
6900
6901   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6902   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6903
6904   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6905                           &dwarf2_per_objfile->all_type_units);
6906
6907   return 1;
6908 }
6909
6910 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6911    If SLOT is non-NULL, it is the entry to use in the hash table.
6912    Otherwise we find one.  */
6913
6914 static struct signatured_type *
6915 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6916                void **slot)
6917 {
6918   struct objfile *objfile = dwarf2_per_objfile->objfile;
6919
6920   if (dwarf2_per_objfile->all_type_units.size ()
6921       == dwarf2_per_objfile->all_type_units.capacity ())
6922     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6923
6924   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6925                                               struct signatured_type);
6926
6927   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6928   sig_type->signature = sig;
6929   sig_type->per_cu.is_debug_types = 1;
6930   if (dwarf2_per_objfile->using_index)
6931     {
6932       sig_type->per_cu.v.quick =
6933         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6934                         struct dwarf2_per_cu_quick_data);
6935     }
6936
6937   if (slot == NULL)
6938     {
6939       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6940                              sig_type, INSERT);
6941     }
6942   gdb_assert (*slot == NULL);
6943   *slot = sig_type;
6944   /* The rest of sig_type must be filled in by the caller.  */
6945   return sig_type;
6946 }
6947
6948 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6949    Fill in SIG_ENTRY with DWO_ENTRY.  */
6950
6951 static void
6952 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6953                                   struct signatured_type *sig_entry,
6954                                   struct dwo_unit *dwo_entry)
6955 {
6956   /* Make sure we're not clobbering something we don't expect to.  */
6957   gdb_assert (! sig_entry->per_cu.queued);
6958   gdb_assert (sig_entry->per_cu.cu == NULL);
6959   if (dwarf2_per_objfile->using_index)
6960     {
6961       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6962       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6963     }
6964   else
6965       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6966   gdb_assert (sig_entry->signature == dwo_entry->signature);
6967   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6968   gdb_assert (sig_entry->type_unit_group == NULL);
6969   gdb_assert (sig_entry->dwo_unit == NULL);
6970
6971   sig_entry->per_cu.section = dwo_entry->section;
6972   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6973   sig_entry->per_cu.length = dwo_entry->length;
6974   sig_entry->per_cu.reading_dwo_directly = 1;
6975   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6976   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6977   sig_entry->dwo_unit = dwo_entry;
6978 }
6979
6980 /* Subroutine of lookup_signatured_type.
6981    If we haven't read the TU yet, create the signatured_type data structure
6982    for a TU to be read in directly from a DWO file, bypassing the stub.
6983    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6984    using .gdb_index, then when reading a CU we want to stay in the DWO file
6985    containing that CU.  Otherwise we could end up reading several other DWO
6986    files (due to comdat folding) to process the transitive closure of all the
6987    mentioned TUs, and that can be slow.  The current DWO file will have every
6988    type signature that it needs.
6989    We only do this for .gdb_index because in the psymtab case we already have
6990    to read all the DWOs to build the type unit groups.  */
6991
6992 static struct signatured_type *
6993 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6994 {
6995   struct dwarf2_per_objfile *dwarf2_per_objfile
6996     = cu->per_cu->dwarf2_per_objfile;
6997   struct objfile *objfile = dwarf2_per_objfile->objfile;
6998   struct dwo_file *dwo_file;
6999   struct dwo_unit find_dwo_entry, *dwo_entry;
7000   struct signatured_type find_sig_entry, *sig_entry;
7001   void **slot;
7002
7003   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7004
7005   /* If TU skeletons have been removed then we may not have read in any
7006      TUs yet.  */
7007   if (dwarf2_per_objfile->signatured_types == NULL)
7008     {
7009       dwarf2_per_objfile->signatured_types
7010         = allocate_signatured_type_table (objfile);
7011     }
7012
7013   /* We only ever need to read in one copy of a signatured type.
7014      Use the global signatured_types array to do our own comdat-folding
7015      of types.  If this is the first time we're reading this TU, and
7016      the TU has an entry in .gdb_index, replace the recorded data from
7017      .gdb_index with this TU.  */
7018
7019   find_sig_entry.signature = sig;
7020   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7021                          &find_sig_entry, INSERT);
7022   sig_entry = (struct signatured_type *) *slot;
7023
7024   /* We can get here with the TU already read, *or* in the process of being
7025      read.  Don't reassign the global entry to point to this DWO if that's
7026      the case.  Also note that if the TU is already being read, it may not
7027      have come from a DWO, the program may be a mix of Fission-compiled
7028      code and non-Fission-compiled code.  */
7029
7030   /* Have we already tried to read this TU?
7031      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7032      needn't exist in the global table yet).  */
7033   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7034     return sig_entry;
7035
7036   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7037      dwo_unit of the TU itself.  */
7038   dwo_file = cu->dwo_unit->dwo_file;
7039
7040   /* Ok, this is the first time we're reading this TU.  */
7041   if (dwo_file->tus == NULL)
7042     return NULL;
7043   find_dwo_entry.signature = sig;
7044   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7045   if (dwo_entry == NULL)
7046     return NULL;
7047
7048   /* If the global table doesn't have an entry for this TU, add one.  */
7049   if (sig_entry == NULL)
7050     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7051
7052   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7053   sig_entry->per_cu.tu_read = 1;
7054   return sig_entry;
7055 }
7056
7057 /* Subroutine of lookup_signatured_type.
7058    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7059    then try the DWP file.  If the TU stub (skeleton) has been removed then
7060    it won't be in .gdb_index.  */
7061
7062 static struct signatured_type *
7063 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7064 {
7065   struct dwarf2_per_objfile *dwarf2_per_objfile
7066     = cu->per_cu->dwarf2_per_objfile;
7067   struct objfile *objfile = dwarf2_per_objfile->objfile;
7068   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7069   struct dwo_unit *dwo_entry;
7070   struct signatured_type find_sig_entry, *sig_entry;
7071   void **slot;
7072
7073   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7074   gdb_assert (dwp_file != NULL);
7075
7076   /* If TU skeletons have been removed then we may not have read in any
7077      TUs yet.  */
7078   if (dwarf2_per_objfile->signatured_types == NULL)
7079     {
7080       dwarf2_per_objfile->signatured_types
7081         = allocate_signatured_type_table (objfile);
7082     }
7083
7084   find_sig_entry.signature = sig;
7085   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7086                          &find_sig_entry, INSERT);
7087   sig_entry = (struct signatured_type *) *slot;
7088
7089   /* Have we already tried to read this TU?
7090      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7091      needn't exist in the global table yet).  */
7092   if (sig_entry != NULL)
7093     return sig_entry;
7094
7095   if (dwp_file->tus == NULL)
7096     return NULL;
7097   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7098                                       sig, 1 /* is_debug_types */);
7099   if (dwo_entry == NULL)
7100     return NULL;
7101
7102   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7103   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7104
7105   return sig_entry;
7106 }
7107
7108 /* Lookup a signature based type for DW_FORM_ref_sig8.
7109    Returns NULL if signature SIG is not present in the table.
7110    It is up to the caller to complain about this.  */
7111
7112 static struct signatured_type *
7113 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7114 {
7115   struct dwarf2_per_objfile *dwarf2_per_objfile
7116     = cu->per_cu->dwarf2_per_objfile;
7117
7118   if (cu->dwo_unit
7119       && dwarf2_per_objfile->using_index)
7120     {
7121       /* We're in a DWO/DWP file, and we're using .gdb_index.
7122          These cases require special processing.  */
7123       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7124         return lookup_dwo_signatured_type (cu, sig);
7125       else
7126         return lookup_dwp_signatured_type (cu, sig);
7127     }
7128   else
7129     {
7130       struct signatured_type find_entry, *entry;
7131
7132       if (dwarf2_per_objfile->signatured_types == NULL)
7133         return NULL;
7134       find_entry.signature = sig;
7135       entry = ((struct signatured_type *)
7136                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7137       return entry;
7138     }
7139 }
7140 \f
7141 /* Low level DIE reading support.  */
7142
7143 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7144
7145 static void
7146 init_cu_die_reader (struct die_reader_specs *reader,
7147                     struct dwarf2_cu *cu,
7148                     struct dwarf2_section_info *section,
7149                     struct dwo_file *dwo_file,
7150                     struct abbrev_table *abbrev_table)
7151 {
7152   gdb_assert (section->readin && section->buffer != NULL);
7153   reader->abfd = get_section_bfd_owner (section);
7154   reader->cu = cu;
7155   reader->dwo_file = dwo_file;
7156   reader->die_section = section;
7157   reader->buffer = section->buffer;
7158   reader->buffer_end = section->buffer + section->size;
7159   reader->comp_dir = NULL;
7160   reader->abbrev_table = abbrev_table;
7161 }
7162
7163 /* Subroutine of init_cutu_and_read_dies to simplify it.
7164    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7165    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7166    already.
7167
7168    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7169    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7170    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7171    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7172    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7173    STUB_COMP_DIR may be non-NULL.
7174    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7175    are filled in with the info of the DIE from the DWO file.
7176    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7177    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7178    kept around for at least as long as *RESULT_READER.
7179
7180    The result is non-zero if a valid (non-dummy) DIE was found.  */
7181
7182 static int
7183 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7184                         struct dwo_unit *dwo_unit,
7185                         struct die_info *stub_comp_unit_die,
7186                         const char *stub_comp_dir,
7187                         struct die_reader_specs *result_reader,
7188                         const gdb_byte **result_info_ptr,
7189                         struct die_info **result_comp_unit_die,
7190                         int *result_has_children,
7191                         abbrev_table_up *result_dwo_abbrev_table)
7192 {
7193   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7194   struct objfile *objfile = dwarf2_per_objfile->objfile;
7195   struct dwarf2_cu *cu = this_cu->cu;
7196   bfd *abfd;
7197   const gdb_byte *begin_info_ptr, *info_ptr;
7198   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7199   int i,num_extra_attrs;
7200   struct dwarf2_section_info *dwo_abbrev_section;
7201   struct attribute *attr;
7202   struct die_info *comp_unit_die;
7203
7204   /* At most one of these may be provided.  */
7205   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7206
7207   /* These attributes aren't processed until later:
7208      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7209      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7210      referenced later.  However, these attributes are found in the stub
7211      which we won't have later.  In order to not impose this complication
7212      on the rest of the code, we read them here and copy them to the
7213      DWO CU/TU die.  */
7214
7215   stmt_list = NULL;
7216   low_pc = NULL;
7217   high_pc = NULL;
7218   ranges = NULL;
7219   comp_dir = NULL;
7220
7221   if (stub_comp_unit_die != NULL)
7222     {
7223       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7224          DWO file.  */
7225       if (! this_cu->is_debug_types)
7226         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7227       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7228       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7229       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7230       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7231
7232       /* There should be a DW_AT_addr_base attribute here (if needed).
7233          We need the value before we can process DW_FORM_GNU_addr_index
7234          or DW_FORM_addrx.  */
7235       cu->addr_base = 0;
7236       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7237       if (attr)
7238         cu->addr_base = DW_UNSND (attr);
7239
7240       /* There should be a DW_AT_ranges_base attribute here (if needed).
7241          We need the value before we can process DW_AT_ranges.  */
7242       cu->ranges_base = 0;
7243       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7244       if (attr)
7245         cu->ranges_base = DW_UNSND (attr);
7246     }
7247   else if (stub_comp_dir != NULL)
7248     {
7249       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7250       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7251       comp_dir->name = DW_AT_comp_dir;
7252       comp_dir->form = DW_FORM_string;
7253       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7254       DW_STRING (comp_dir) = stub_comp_dir;
7255     }
7256
7257   /* Set up for reading the DWO CU/TU.  */
7258   cu->dwo_unit = dwo_unit;
7259   dwarf2_section_info *section = dwo_unit->section;
7260   dwarf2_read_section (objfile, section);
7261   abfd = get_section_bfd_owner (section);
7262   begin_info_ptr = info_ptr = (section->buffer
7263                                + to_underlying (dwo_unit->sect_off));
7264   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7265
7266   if (this_cu->is_debug_types)
7267     {
7268       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7269
7270       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7271                                                 &cu->header, section,
7272                                                 dwo_abbrev_section,
7273                                                 info_ptr, rcuh_kind::TYPE);
7274       /* This is not an assert because it can be caused by bad debug info.  */
7275       if (sig_type->signature != cu->header.signature)
7276         {
7277           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7278                    " TU at offset %s [in module %s]"),
7279                  hex_string (sig_type->signature),
7280                  hex_string (cu->header.signature),
7281                  sect_offset_str (dwo_unit->sect_off),
7282                  bfd_get_filename (abfd));
7283         }
7284       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7285       /* For DWOs coming from DWP files, we don't know the CU length
7286          nor the type's offset in the TU until now.  */
7287       dwo_unit->length = get_cu_length (&cu->header);
7288       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7289
7290       /* Establish the type offset that can be used to lookup the type.
7291          For DWO files, we don't know it until now.  */
7292       sig_type->type_offset_in_section
7293         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7294     }
7295   else
7296     {
7297       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7298                                                 &cu->header, section,
7299                                                 dwo_abbrev_section,
7300                                                 info_ptr, rcuh_kind::COMPILE);
7301       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7302       /* For DWOs coming from DWP files, we don't know the CU length
7303          until now.  */
7304       dwo_unit->length = get_cu_length (&cu->header);
7305     }
7306
7307   *result_dwo_abbrev_table
7308     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7309                                cu->header.abbrev_sect_off);
7310   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7311                       result_dwo_abbrev_table->get ());
7312
7313   /* Read in the die, but leave space to copy over the attributes
7314      from the stub.  This has the benefit of simplifying the rest of
7315      the code - all the work to maintain the illusion of a single
7316      DW_TAG_{compile,type}_unit DIE is done here.  */
7317   num_extra_attrs = ((stmt_list != NULL)
7318                      + (low_pc != NULL)
7319                      + (high_pc != NULL)
7320                      + (ranges != NULL)
7321                      + (comp_dir != NULL));
7322   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7323                               result_has_children, num_extra_attrs);
7324
7325   /* Copy over the attributes from the stub to the DIE we just read in.  */
7326   comp_unit_die = *result_comp_unit_die;
7327   i = comp_unit_die->num_attrs;
7328   if (stmt_list != NULL)
7329     comp_unit_die->attrs[i++] = *stmt_list;
7330   if (low_pc != NULL)
7331     comp_unit_die->attrs[i++] = *low_pc;
7332   if (high_pc != NULL)
7333     comp_unit_die->attrs[i++] = *high_pc;
7334   if (ranges != NULL)
7335     comp_unit_die->attrs[i++] = *ranges;
7336   if (comp_dir != NULL)
7337     comp_unit_die->attrs[i++] = *comp_dir;
7338   comp_unit_die->num_attrs += num_extra_attrs;
7339
7340   if (dwarf_die_debug)
7341     {
7342       fprintf_unfiltered (gdb_stdlog,
7343                           "Read die from %s@0x%x of %s:\n",
7344                           get_section_name (section),
7345                           (unsigned) (begin_info_ptr - section->buffer),
7346                           bfd_get_filename (abfd));
7347       dump_die (comp_unit_die, dwarf_die_debug);
7348     }
7349
7350   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7351      TUs by skipping the stub and going directly to the entry in the DWO file.
7352      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7353      to get it via circuitous means.  Blech.  */
7354   if (comp_dir != NULL)
7355     result_reader->comp_dir = DW_STRING (comp_dir);
7356
7357   /* Skip dummy compilation units.  */
7358   if (info_ptr >= begin_info_ptr + dwo_unit->length
7359       || peek_abbrev_code (abfd, info_ptr) == 0)
7360     return 0;
7361
7362   *result_info_ptr = info_ptr;
7363   return 1;
7364 }
7365
7366 /* Subroutine of init_cutu_and_read_dies to simplify it.
7367    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7368    Returns NULL if the specified DWO unit cannot be found.  */
7369
7370 static struct dwo_unit *
7371 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7372                  struct die_info *comp_unit_die)
7373 {
7374   struct dwarf2_cu *cu = this_cu->cu;
7375   ULONGEST signature;
7376   struct dwo_unit *dwo_unit;
7377   const char *comp_dir, *dwo_name;
7378
7379   gdb_assert (cu != NULL);
7380
7381   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7382   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7383   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7384
7385   if (this_cu->is_debug_types)
7386     {
7387       struct signatured_type *sig_type;
7388
7389       /* Since this_cu is the first member of struct signatured_type,
7390          we can go from a pointer to one to a pointer to the other.  */
7391       sig_type = (struct signatured_type *) this_cu;
7392       signature = sig_type->signature;
7393       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7394     }
7395   else
7396     {
7397       struct attribute *attr;
7398
7399       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7400       if (! attr)
7401         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7402                  " [in module %s]"),
7403                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7404       signature = DW_UNSND (attr);
7405       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7406                                        signature);
7407     }
7408
7409   return dwo_unit;
7410 }
7411
7412 /* Subroutine of init_cutu_and_read_dies to simplify it.
7413    See it for a description of the parameters.
7414    Read a TU directly from a DWO file, bypassing the stub.  */
7415
7416 static void
7417 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7418                            int use_existing_cu, int keep,
7419                            die_reader_func_ftype *die_reader_func,
7420                            void *data)
7421 {
7422   std::unique_ptr<dwarf2_cu> new_cu;
7423   struct signatured_type *sig_type;
7424   struct die_reader_specs reader;
7425   const gdb_byte *info_ptr;
7426   struct die_info *comp_unit_die;
7427   int has_children;
7428   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7429
7430   /* Verify we can do the following downcast, and that we have the
7431      data we need.  */
7432   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7433   sig_type = (struct signatured_type *) this_cu;
7434   gdb_assert (sig_type->dwo_unit != NULL);
7435
7436   if (use_existing_cu && this_cu->cu != NULL)
7437     {
7438       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7439       /* There's no need to do the rereading_dwo_cu handling that
7440          init_cutu_and_read_dies does since we don't read the stub.  */
7441     }
7442   else
7443     {
7444       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7445       gdb_assert (this_cu->cu == NULL);
7446       new_cu.reset (new dwarf2_cu (this_cu));
7447     }
7448
7449   /* A future optimization, if needed, would be to use an existing
7450      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7451      could share abbrev tables.  */
7452
7453   /* The abbreviation table used by READER, this must live at least as long as
7454      READER.  */
7455   abbrev_table_up dwo_abbrev_table;
7456
7457   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7458                               NULL /* stub_comp_unit_die */,
7459                               sig_type->dwo_unit->dwo_file->comp_dir,
7460                               &reader, &info_ptr,
7461                               &comp_unit_die, &has_children,
7462                               &dwo_abbrev_table) == 0)
7463     {
7464       /* Dummy die.  */
7465       return;
7466     }
7467
7468   /* All the "real" work is done here.  */
7469   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7470
7471   /* This duplicates the code in init_cutu_and_read_dies,
7472      but the alternative is making the latter more complex.
7473      This function is only for the special case of using DWO files directly:
7474      no point in overly complicating the general case just to handle this.  */
7475   if (new_cu != NULL && keep)
7476     {
7477       /* Link this CU into read_in_chain.  */
7478       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7479       dwarf2_per_objfile->read_in_chain = this_cu;
7480       /* The chain owns it now.  */
7481       new_cu.release ();
7482     }
7483 }
7484
7485 /* Initialize a CU (or TU) and read its DIEs.
7486    If the CU defers to a DWO file, read the DWO file as well.
7487
7488    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7489    Otherwise the table specified in the comp unit header is read in and used.
7490    This is an optimization for when we already have the abbrev table.
7491
7492    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7493    Otherwise, a new CU is allocated with xmalloc.
7494
7495    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7496    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7497
7498    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7499    linker) then DIE_READER_FUNC will not get called.  */
7500
7501 static void
7502 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7503                          struct abbrev_table *abbrev_table,
7504                          int use_existing_cu, int keep,
7505                          bool skip_partial,
7506                          die_reader_func_ftype *die_reader_func,
7507                          void *data)
7508 {
7509   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7510   struct objfile *objfile = dwarf2_per_objfile->objfile;
7511   struct dwarf2_section_info *section = this_cu->section;
7512   bfd *abfd = get_section_bfd_owner (section);
7513   struct dwarf2_cu *cu;
7514   const gdb_byte *begin_info_ptr, *info_ptr;
7515   struct die_reader_specs reader;
7516   struct die_info *comp_unit_die;
7517   int has_children;
7518   struct attribute *attr;
7519   struct signatured_type *sig_type = NULL;
7520   struct dwarf2_section_info *abbrev_section;
7521   /* Non-zero if CU currently points to a DWO file and we need to
7522      reread it.  When this happens we need to reread the skeleton die
7523      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7524   int rereading_dwo_cu = 0;
7525
7526   if (dwarf_die_debug)
7527     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7528                         this_cu->is_debug_types ? "type" : "comp",
7529                         sect_offset_str (this_cu->sect_off));
7530
7531   if (use_existing_cu)
7532     gdb_assert (keep);
7533
7534   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7535      file (instead of going through the stub), short-circuit all of this.  */
7536   if (this_cu->reading_dwo_directly)
7537     {
7538       /* Narrow down the scope of possibilities to have to understand.  */
7539       gdb_assert (this_cu->is_debug_types);
7540       gdb_assert (abbrev_table == NULL);
7541       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7542                                  die_reader_func, data);
7543       return;
7544     }
7545
7546   /* This is cheap if the section is already read in.  */
7547   dwarf2_read_section (objfile, section);
7548
7549   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7550
7551   abbrev_section = get_abbrev_section_for_cu (this_cu);
7552
7553   std::unique_ptr<dwarf2_cu> new_cu;
7554   if (use_existing_cu && this_cu->cu != NULL)
7555     {
7556       cu = this_cu->cu;
7557       /* If this CU is from a DWO file we need to start over, we need to
7558          refetch the attributes from the skeleton CU.
7559          This could be optimized by retrieving those attributes from when we
7560          were here the first time: the previous comp_unit_die was stored in
7561          comp_unit_obstack.  But there's no data yet that we need this
7562          optimization.  */
7563       if (cu->dwo_unit != NULL)
7564         rereading_dwo_cu = 1;
7565     }
7566   else
7567     {
7568       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7569       gdb_assert (this_cu->cu == NULL);
7570       new_cu.reset (new dwarf2_cu (this_cu));
7571       cu = new_cu.get ();
7572     }
7573
7574   /* Get the header.  */
7575   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7576     {
7577       /* We already have the header, there's no need to read it in again.  */
7578       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7579     }
7580   else
7581     {
7582       if (this_cu->is_debug_types)
7583         {
7584           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7585                                                     &cu->header, section,
7586                                                     abbrev_section, info_ptr,
7587                                                     rcuh_kind::TYPE);
7588
7589           /* Since per_cu is the first member of struct signatured_type,
7590              we can go from a pointer to one to a pointer to the other.  */
7591           sig_type = (struct signatured_type *) this_cu;
7592           gdb_assert (sig_type->signature == cu->header.signature);
7593           gdb_assert (sig_type->type_offset_in_tu
7594                       == cu->header.type_cu_offset_in_tu);
7595           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7596
7597           /* LENGTH has not been set yet for type units if we're
7598              using .gdb_index.  */
7599           this_cu->length = get_cu_length (&cu->header);
7600
7601           /* Establish the type offset that can be used to lookup the type.  */
7602           sig_type->type_offset_in_section =
7603             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7604
7605           this_cu->dwarf_version = cu->header.version;
7606         }
7607       else
7608         {
7609           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7610                                                     &cu->header, section,
7611                                                     abbrev_section,
7612                                                     info_ptr,
7613                                                     rcuh_kind::COMPILE);
7614
7615           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7616           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7617           this_cu->dwarf_version = cu->header.version;
7618         }
7619     }
7620
7621   /* Skip dummy compilation units.  */
7622   if (info_ptr >= begin_info_ptr + this_cu->length
7623       || peek_abbrev_code (abfd, info_ptr) == 0)
7624     return;
7625
7626   /* If we don't have them yet, read the abbrevs for this compilation unit.
7627      And if we need to read them now, make sure they're freed when we're
7628      done (own the table through ABBREV_TABLE_HOLDER).  */
7629   abbrev_table_up abbrev_table_holder;
7630   if (abbrev_table != NULL)
7631     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7632   else
7633     {
7634       abbrev_table_holder
7635         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7636                                    cu->header.abbrev_sect_off);
7637       abbrev_table = abbrev_table_holder.get ();
7638     }
7639
7640   /* Read the top level CU/TU die.  */
7641   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7642   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7643
7644   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7645     return;
7646
7647   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7648      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7649      table from the DWO file and pass the ownership over to us.  It will be
7650      referenced from READER, so we must make sure to free it after we're done
7651      with READER.
7652
7653      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7654      DWO CU, that this test will fail (the attribute will not be present).  */
7655   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7656   abbrev_table_up dwo_abbrev_table;
7657   if (attr)
7658     {
7659       struct dwo_unit *dwo_unit;
7660       struct die_info *dwo_comp_unit_die;
7661
7662       if (has_children)
7663         {
7664           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7665                        " has children (offset %s) [in module %s]"),
7666                      sect_offset_str (this_cu->sect_off),
7667                      bfd_get_filename (abfd));
7668         }
7669       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7670       if (dwo_unit != NULL)
7671         {
7672           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7673                                       comp_unit_die, NULL,
7674                                       &reader, &info_ptr,
7675                                       &dwo_comp_unit_die, &has_children,
7676                                       &dwo_abbrev_table) == 0)
7677             {
7678               /* Dummy die.  */
7679               return;
7680             }
7681           comp_unit_die = dwo_comp_unit_die;
7682         }
7683       else
7684         {
7685           /* Yikes, we couldn't find the rest of the DIE, we only have
7686              the stub.  A complaint has already been logged.  There's
7687              not much more we can do except pass on the stub DIE to
7688              die_reader_func.  We don't want to throw an error on bad
7689              debug info.  */
7690         }
7691     }
7692
7693   /* All of the above is setup for this call.  Yikes.  */
7694   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7695
7696   /* Done, clean up.  */
7697   if (new_cu != NULL && keep)
7698     {
7699       /* Link this CU into read_in_chain.  */
7700       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7701       dwarf2_per_objfile->read_in_chain = this_cu;
7702       /* The chain owns it now.  */
7703       new_cu.release ();
7704     }
7705 }
7706
7707 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7708    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7709    to have already done the lookup to find the DWO file).
7710
7711    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7712    THIS_CU->is_debug_types, but nothing else.
7713
7714    We fill in THIS_CU->length.
7715
7716    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7717    linker) then DIE_READER_FUNC will not get called.
7718
7719    THIS_CU->cu is always freed when done.
7720    This is done in order to not leave THIS_CU->cu in a state where we have
7721    to care whether it refers to the "main" CU or the DWO CU.  */
7722
7723 static void
7724 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7725                                    struct dwo_file *dwo_file,
7726                                    die_reader_func_ftype *die_reader_func,
7727                                    void *data)
7728 {
7729   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7730   struct objfile *objfile = dwarf2_per_objfile->objfile;
7731   struct dwarf2_section_info *section = this_cu->section;
7732   bfd *abfd = get_section_bfd_owner (section);
7733   struct dwarf2_section_info *abbrev_section;
7734   const gdb_byte *begin_info_ptr, *info_ptr;
7735   struct die_reader_specs reader;
7736   struct die_info *comp_unit_die;
7737   int has_children;
7738
7739   if (dwarf_die_debug)
7740     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7741                         this_cu->is_debug_types ? "type" : "comp",
7742                         sect_offset_str (this_cu->sect_off));
7743
7744   gdb_assert (this_cu->cu == NULL);
7745
7746   abbrev_section = (dwo_file != NULL
7747                     ? &dwo_file->sections.abbrev
7748                     : get_abbrev_section_for_cu (this_cu));
7749
7750   /* This is cheap if the section is already read in.  */
7751   dwarf2_read_section (objfile, section);
7752
7753   struct dwarf2_cu cu (this_cu);
7754
7755   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7756   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7757                                             &cu.header, section,
7758                                             abbrev_section, info_ptr,
7759                                             (this_cu->is_debug_types
7760                                              ? rcuh_kind::TYPE
7761                                              : rcuh_kind::COMPILE));
7762
7763   this_cu->length = get_cu_length (&cu.header);
7764
7765   /* Skip dummy compilation units.  */
7766   if (info_ptr >= begin_info_ptr + this_cu->length
7767       || peek_abbrev_code (abfd, info_ptr) == 0)
7768     return;
7769
7770   abbrev_table_up abbrev_table
7771     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7772                                cu.header.abbrev_sect_off);
7773
7774   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7775   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7776
7777   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7778 }
7779
7780 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7781    does not lookup the specified DWO file.
7782    This cannot be used to read DWO files.
7783
7784    THIS_CU->cu is always freed when done.
7785    This is done in order to not leave THIS_CU->cu in a state where we have
7786    to care whether it refers to the "main" CU or the DWO CU.
7787    We can revisit this if the data shows there's a performance issue.  */
7788
7789 static void
7790 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7791                                 die_reader_func_ftype *die_reader_func,
7792                                 void *data)
7793 {
7794   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7795 }
7796 \f
7797 /* Type Unit Groups.
7798
7799    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7800    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7801    so that all types coming from the same compilation (.o file) are grouped
7802    together.  A future step could be to put the types in the same symtab as
7803    the CU the types ultimately came from.  */
7804
7805 static hashval_t
7806 hash_type_unit_group (const void *item)
7807 {
7808   const struct type_unit_group *tu_group
7809     = (const struct type_unit_group *) item;
7810
7811   return hash_stmt_list_entry (&tu_group->hash);
7812 }
7813
7814 static int
7815 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7816 {
7817   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7818   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7819
7820   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7821 }
7822
7823 /* Allocate a hash table for type unit groups.  */
7824
7825 static htab_t
7826 allocate_type_unit_groups_table (struct objfile *objfile)
7827 {
7828   return htab_create_alloc_ex (3,
7829                                hash_type_unit_group,
7830                                eq_type_unit_group,
7831                                NULL,
7832                                &objfile->objfile_obstack,
7833                                hashtab_obstack_allocate,
7834                                dummy_obstack_deallocate);
7835 }
7836
7837 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7838    partial symtabs.  We combine several TUs per psymtab to not let the size
7839    of any one psymtab grow too big.  */
7840 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7841 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7842
7843 /* Helper routine for get_type_unit_group.
7844    Create the type_unit_group object used to hold one or more TUs.  */
7845
7846 static struct type_unit_group *
7847 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7848 {
7849   struct dwarf2_per_objfile *dwarf2_per_objfile
7850     = cu->per_cu->dwarf2_per_objfile;
7851   struct objfile *objfile = dwarf2_per_objfile->objfile;
7852   struct dwarf2_per_cu_data *per_cu;
7853   struct type_unit_group *tu_group;
7854
7855   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7856                              struct type_unit_group);
7857   per_cu = &tu_group->per_cu;
7858   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7859
7860   if (dwarf2_per_objfile->using_index)
7861     {
7862       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7863                                         struct dwarf2_per_cu_quick_data);
7864     }
7865   else
7866     {
7867       unsigned int line_offset = to_underlying (line_offset_struct);
7868       struct partial_symtab *pst;
7869       std::string name;
7870
7871       /* Give the symtab a useful name for debug purposes.  */
7872       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7873         name = string_printf ("<type_units_%d>",
7874                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7875       else
7876         name = string_printf ("<type_units_at_0x%x>", line_offset);
7877
7878       pst = create_partial_symtab (per_cu, name.c_str ());
7879       pst->anonymous = 1;
7880     }
7881
7882   tu_group->hash.dwo_unit = cu->dwo_unit;
7883   tu_group->hash.line_sect_off = line_offset_struct;
7884
7885   return tu_group;
7886 }
7887
7888 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7889    STMT_LIST is a DW_AT_stmt_list attribute.  */
7890
7891 static struct type_unit_group *
7892 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7893 {
7894   struct dwarf2_per_objfile *dwarf2_per_objfile
7895     = cu->per_cu->dwarf2_per_objfile;
7896   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7897   struct type_unit_group *tu_group;
7898   void **slot;
7899   unsigned int line_offset;
7900   struct type_unit_group type_unit_group_for_lookup;
7901
7902   if (dwarf2_per_objfile->type_unit_groups == NULL)
7903     {
7904       dwarf2_per_objfile->type_unit_groups =
7905         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7906     }
7907
7908   /* Do we need to create a new group, or can we use an existing one?  */
7909
7910   if (stmt_list)
7911     {
7912       line_offset = DW_UNSND (stmt_list);
7913       ++tu_stats->nr_symtab_sharers;
7914     }
7915   else
7916     {
7917       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7918          We can do various things here like create one group per TU or
7919          spread them over multiple groups to split up the expansion work.
7920          To avoid worst case scenarios (too many groups or too large groups)
7921          we, umm, group them in bunches.  */
7922       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7923                      | (tu_stats->nr_stmt_less_type_units
7924                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7925       ++tu_stats->nr_stmt_less_type_units;
7926     }
7927
7928   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7929   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7930   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7931                          &type_unit_group_for_lookup, INSERT);
7932   if (*slot != NULL)
7933     {
7934       tu_group = (struct type_unit_group *) *slot;
7935       gdb_assert (tu_group != NULL);
7936     }
7937   else
7938     {
7939       sect_offset line_offset_struct = (sect_offset) line_offset;
7940       tu_group = create_type_unit_group (cu, line_offset_struct);
7941       *slot = tu_group;
7942       ++tu_stats->nr_symtabs;
7943     }
7944
7945   return tu_group;
7946 }
7947 \f
7948 /* Partial symbol tables.  */
7949
7950 /* Create a psymtab named NAME and assign it to PER_CU.
7951
7952    The caller must fill in the following details:
7953    dirname, textlow, texthigh.  */
7954
7955 static struct partial_symtab *
7956 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7957 {
7958   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7959   struct partial_symtab *pst;
7960
7961   pst = start_psymtab_common (objfile, name, 0);
7962
7963   pst->psymtabs_addrmap_supported = 1;
7964
7965   /* This is the glue that links PST into GDB's symbol API.  */
7966   pst->read_symtab_private = per_cu;
7967   pst->read_symtab = dwarf2_read_symtab;
7968   per_cu->v.psymtab = pst;
7969
7970   return pst;
7971 }
7972
7973 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7974    type.  */
7975
7976 struct process_psymtab_comp_unit_data
7977 {
7978   /* True if we are reading a DW_TAG_partial_unit.  */
7979
7980   int want_partial_unit;
7981
7982   /* The "pretend" language that is used if the CU doesn't declare a
7983      language.  */
7984
7985   enum language pretend_language;
7986 };
7987
7988 /* die_reader_func for process_psymtab_comp_unit.  */
7989
7990 static void
7991 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7992                                   const gdb_byte *info_ptr,
7993                                   struct die_info *comp_unit_die,
7994                                   int has_children,
7995                                   void *data)
7996 {
7997   struct dwarf2_cu *cu = reader->cu;
7998   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7999   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8000   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8001   CORE_ADDR baseaddr;
8002   CORE_ADDR best_lowpc = 0, best_highpc = 0;
8003   struct partial_symtab *pst;
8004   enum pc_bounds_kind cu_bounds_kind;
8005   const char *filename;
8006   struct process_psymtab_comp_unit_data *info
8007     = (struct process_psymtab_comp_unit_data *) data;
8008
8009   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
8010     return;
8011
8012   gdb_assert (! per_cu->is_debug_types);
8013
8014   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
8015
8016   /* Allocate a new partial symbol table structure.  */
8017   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
8018   if (filename == NULL)
8019     filename = "";
8020
8021   pst = create_partial_symtab (per_cu, filename);
8022
8023   /* This must be done before calling dwarf2_build_include_psymtabs.  */
8024   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
8025
8026   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8027
8028   dwarf2_find_base_address (comp_unit_die, cu);
8029
8030   /* Possibly set the default values of LOWPC and HIGHPC from
8031      `DW_AT_ranges'.  */
8032   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8033                                          &best_highpc, cu, pst);
8034   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8035     {
8036       CORE_ADDR low
8037         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8038            - baseaddr);
8039       CORE_ADDR high
8040         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8041            - baseaddr - 1);
8042       /* Store the contiguous range if it is not empty; it can be
8043          empty for CUs with no code.  */
8044       addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
8045                          low, high, pst);
8046     }
8047
8048   /* Check if comp unit has_children.
8049      If so, read the rest of the partial symbols from this comp unit.
8050      If not, there's no more debug_info for this comp unit.  */
8051   if (has_children)
8052     {
8053       struct partial_die_info *first_die;
8054       CORE_ADDR lowpc, highpc;
8055
8056       lowpc = ((CORE_ADDR) -1);
8057       highpc = ((CORE_ADDR) 0);
8058
8059       first_die = load_partial_dies (reader, info_ptr, 1);
8060
8061       scan_partial_symbols (first_die, &lowpc, &highpc,
8062                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8063
8064       /* If we didn't find a lowpc, set it to highpc to avoid
8065          complaints from `maint check'.  */
8066       if (lowpc == ((CORE_ADDR) -1))
8067         lowpc = highpc;
8068
8069       /* If the compilation unit didn't have an explicit address range,
8070          then use the information extracted from its child dies.  */
8071       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8072         {
8073           best_lowpc = lowpc;
8074           best_highpc = highpc;
8075         }
8076     }
8077   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8078                                                  best_lowpc + baseaddr)
8079                      - baseaddr);
8080   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8081                                                   best_highpc + baseaddr)
8082                       - baseaddr);
8083
8084   end_psymtab_common (objfile, pst);
8085
8086   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8087     {
8088       int i;
8089       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8090       struct dwarf2_per_cu_data *iter;
8091
8092       /* Fill in 'dependencies' here; we fill in 'users' in a
8093          post-pass.  */
8094       pst->number_of_dependencies = len;
8095       pst->dependencies
8096         = objfile->partial_symtabs->allocate_dependencies (len);
8097       for (i = 0;
8098            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8099                         i, iter);
8100            ++i)
8101         pst->dependencies[i] = iter->v.psymtab;
8102
8103       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8104     }
8105
8106   /* Get the list of files included in the current compilation unit,
8107      and build a psymtab for each of them.  */
8108   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8109
8110   if (dwarf_read_debug)
8111     fprintf_unfiltered (gdb_stdlog,
8112                         "Psymtab for %s unit @%s: %s - %s"
8113                         ", %d global, %d static syms\n",
8114                         per_cu->is_debug_types ? "type" : "comp",
8115                         sect_offset_str (per_cu->sect_off),
8116                         paddress (gdbarch, pst->text_low (objfile)),
8117                         paddress (gdbarch, pst->text_high (objfile)),
8118                         pst->n_global_syms, pst->n_static_syms);
8119 }
8120
8121 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8122    Process compilation unit THIS_CU for a psymtab.  */
8123
8124 static void
8125 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8126                            int want_partial_unit,
8127                            enum language pretend_language)
8128 {
8129   /* If this compilation unit was already read in, free the
8130      cached copy in order to read it in again.  This is
8131      necessary because we skipped some symbols when we first
8132      read in the compilation unit (see load_partial_dies).
8133      This problem could be avoided, but the benefit is unclear.  */
8134   if (this_cu->cu != NULL)
8135     free_one_cached_comp_unit (this_cu);
8136
8137   if (this_cu->is_debug_types)
8138     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8139                              build_type_psymtabs_reader, NULL);
8140   else
8141     {
8142       process_psymtab_comp_unit_data info;
8143       info.want_partial_unit = want_partial_unit;
8144       info.pretend_language = pretend_language;
8145       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8146                                process_psymtab_comp_unit_reader, &info);
8147     }
8148
8149   /* Age out any secondary CUs.  */
8150   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8151 }
8152
8153 /* Reader function for build_type_psymtabs.  */
8154
8155 static void
8156 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8157                             const gdb_byte *info_ptr,
8158                             struct die_info *type_unit_die,
8159                             int has_children,
8160                             void *data)
8161 {
8162   struct dwarf2_per_objfile *dwarf2_per_objfile
8163     = reader->cu->per_cu->dwarf2_per_objfile;
8164   struct objfile *objfile = dwarf2_per_objfile->objfile;
8165   struct dwarf2_cu *cu = reader->cu;
8166   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8167   struct signatured_type *sig_type;
8168   struct type_unit_group *tu_group;
8169   struct attribute *attr;
8170   struct partial_die_info *first_die;
8171   CORE_ADDR lowpc, highpc;
8172   struct partial_symtab *pst;
8173
8174   gdb_assert (data == NULL);
8175   gdb_assert (per_cu->is_debug_types);
8176   sig_type = (struct signatured_type *) per_cu;
8177
8178   if (! has_children)
8179     return;
8180
8181   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8182   tu_group = get_type_unit_group (cu, attr);
8183
8184   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8185
8186   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8187   pst = create_partial_symtab (per_cu, "");
8188   pst->anonymous = 1;
8189
8190   first_die = load_partial_dies (reader, info_ptr, 1);
8191
8192   lowpc = (CORE_ADDR) -1;
8193   highpc = (CORE_ADDR) 0;
8194   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8195
8196   end_psymtab_common (objfile, pst);
8197 }
8198
8199 /* Struct used to sort TUs by their abbreviation table offset.  */
8200
8201 struct tu_abbrev_offset
8202 {
8203   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8204   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8205   {}
8206
8207   signatured_type *sig_type;
8208   sect_offset abbrev_offset;
8209 };
8210
8211 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8212
8213 static bool
8214 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8215                           const struct tu_abbrev_offset &b)
8216 {
8217   return a.abbrev_offset < b.abbrev_offset;
8218 }
8219
8220 /* Efficiently read all the type units.
8221    This does the bulk of the work for build_type_psymtabs.
8222
8223    The efficiency is because we sort TUs by the abbrev table they use and
8224    only read each abbrev table once.  In one program there are 200K TUs
8225    sharing 8K abbrev tables.
8226
8227    The main purpose of this function is to support building the
8228    dwarf2_per_objfile->type_unit_groups table.
8229    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8230    can collapse the search space by grouping them by stmt_list.
8231    The savings can be significant, in the same program from above the 200K TUs
8232    share 8K stmt_list tables.
8233
8234    FUNC is expected to call get_type_unit_group, which will create the
8235    struct type_unit_group if necessary and add it to
8236    dwarf2_per_objfile->type_unit_groups.  */
8237
8238 static void
8239 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8240 {
8241   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8242   abbrev_table_up abbrev_table;
8243   sect_offset abbrev_offset;
8244
8245   /* It's up to the caller to not call us multiple times.  */
8246   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8247
8248   if (dwarf2_per_objfile->all_type_units.empty ())
8249     return;
8250
8251   /* TUs typically share abbrev tables, and there can be way more TUs than
8252      abbrev tables.  Sort by abbrev table to reduce the number of times we
8253      read each abbrev table in.
8254      Alternatives are to punt or to maintain a cache of abbrev tables.
8255      This is simpler and efficient enough for now.
8256
8257      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8258      symtab to use).  Typically TUs with the same abbrev offset have the same
8259      stmt_list value too so in practice this should work well.
8260
8261      The basic algorithm here is:
8262
8263       sort TUs by abbrev table
8264       for each TU with same abbrev table:
8265         read abbrev table if first user
8266         read TU top level DIE
8267           [IWBN if DWO skeletons had DW_AT_stmt_list]
8268         call FUNC  */
8269
8270   if (dwarf_read_debug)
8271     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8272
8273   /* Sort in a separate table to maintain the order of all_type_units
8274      for .gdb_index: TU indices directly index all_type_units.  */
8275   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8276   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8277
8278   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8279     sorted_by_abbrev.emplace_back
8280       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8281                                      sig_type->per_cu.section,
8282                                      sig_type->per_cu.sect_off));
8283
8284   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8285              sort_tu_by_abbrev_offset);
8286
8287   abbrev_offset = (sect_offset) ~(unsigned) 0;
8288
8289   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8290     {
8291       /* Switch to the next abbrev table if necessary.  */
8292       if (abbrev_table == NULL
8293           || tu.abbrev_offset != abbrev_offset)
8294         {
8295           abbrev_offset = tu.abbrev_offset;
8296           abbrev_table =
8297             abbrev_table_read_table (dwarf2_per_objfile,
8298                                      &dwarf2_per_objfile->abbrev,
8299                                      abbrev_offset);
8300           ++tu_stats->nr_uniq_abbrev_tables;
8301         }
8302
8303       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8304                                0, 0, false, build_type_psymtabs_reader, NULL);
8305     }
8306 }
8307
8308 /* Print collected type unit statistics.  */
8309
8310 static void
8311 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8312 {
8313   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8314
8315   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8316   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8317                       dwarf2_per_objfile->all_type_units.size ());
8318   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8319                       tu_stats->nr_uniq_abbrev_tables);
8320   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8321                       tu_stats->nr_symtabs);
8322   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8323                       tu_stats->nr_symtab_sharers);
8324   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8325                       tu_stats->nr_stmt_less_type_units);
8326   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8327                       tu_stats->nr_all_type_units_reallocs);
8328 }
8329
8330 /* Traversal function for build_type_psymtabs.  */
8331
8332 static int
8333 build_type_psymtab_dependencies (void **slot, void *info)
8334 {
8335   struct dwarf2_per_objfile *dwarf2_per_objfile
8336     = (struct dwarf2_per_objfile *) info;
8337   struct objfile *objfile = dwarf2_per_objfile->objfile;
8338   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8339   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8340   struct partial_symtab *pst = per_cu->v.psymtab;
8341   int len = VEC_length (sig_type_ptr, tu_group->tus);
8342   struct signatured_type *iter;
8343   int i;
8344
8345   gdb_assert (len > 0);
8346   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8347
8348   pst->number_of_dependencies = len;
8349   pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
8350   for (i = 0;
8351        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8352        ++i)
8353     {
8354       gdb_assert (iter->per_cu.is_debug_types);
8355       pst->dependencies[i] = iter->per_cu.v.psymtab;
8356       iter->type_unit_group = tu_group;
8357     }
8358
8359   VEC_free (sig_type_ptr, tu_group->tus);
8360
8361   return 1;
8362 }
8363
8364 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8365    Build partial symbol tables for the .debug_types comp-units.  */
8366
8367 static void
8368 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8369 {
8370   if (! create_all_type_units (dwarf2_per_objfile))
8371     return;
8372
8373   build_type_psymtabs_1 (dwarf2_per_objfile);
8374 }
8375
8376 /* Traversal function for process_skeletonless_type_unit.
8377    Read a TU in a DWO file and build partial symbols for it.  */
8378
8379 static int
8380 process_skeletonless_type_unit (void **slot, void *info)
8381 {
8382   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8383   struct dwarf2_per_objfile *dwarf2_per_objfile
8384     = (struct dwarf2_per_objfile *) info;
8385   struct signatured_type find_entry, *entry;
8386
8387   /* If this TU doesn't exist in the global table, add it and read it in.  */
8388
8389   if (dwarf2_per_objfile->signatured_types == NULL)
8390     {
8391       dwarf2_per_objfile->signatured_types
8392         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8393     }
8394
8395   find_entry.signature = dwo_unit->signature;
8396   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8397                          INSERT);
8398   /* If we've already seen this type there's nothing to do.  What's happening
8399      is we're doing our own version of comdat-folding here.  */
8400   if (*slot != NULL)
8401     return 1;
8402
8403   /* This does the job that create_all_type_units would have done for
8404      this TU.  */
8405   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8406   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8407   *slot = entry;
8408
8409   /* This does the job that build_type_psymtabs_1 would have done.  */
8410   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8411                            build_type_psymtabs_reader, NULL);
8412
8413   return 1;
8414 }
8415
8416 /* Traversal function for process_skeletonless_type_units.  */
8417
8418 static int
8419 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8420 {
8421   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8422
8423   if (dwo_file->tus != NULL)
8424     {
8425       htab_traverse_noresize (dwo_file->tus,
8426                               process_skeletonless_type_unit, info);
8427     }
8428
8429   return 1;
8430 }
8431
8432 /* Scan all TUs of DWO files, verifying we've processed them.
8433    This is needed in case a TU was emitted without its skeleton.
8434    Note: This can't be done until we know what all the DWO files are.  */
8435
8436 static void
8437 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8438 {
8439   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8440   if (get_dwp_file (dwarf2_per_objfile) == NULL
8441       && dwarf2_per_objfile->dwo_files != NULL)
8442     {
8443       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8444                               process_dwo_file_for_skeletonless_type_units,
8445                               dwarf2_per_objfile);
8446     }
8447 }
8448
8449 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8450
8451 static void
8452 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8453 {
8454   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8455     {
8456       struct partial_symtab *pst = per_cu->v.psymtab;
8457
8458       if (pst == NULL)
8459         continue;
8460
8461       for (int j = 0; j < pst->number_of_dependencies; ++j)
8462         {
8463           /* Set the 'user' field only if it is not already set.  */
8464           if (pst->dependencies[j]->user == NULL)
8465             pst->dependencies[j]->user = pst;
8466         }
8467     }
8468 }
8469
8470 /* Build the partial symbol table by doing a quick pass through the
8471    .debug_info and .debug_abbrev sections.  */
8472
8473 static void
8474 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8475 {
8476   struct objfile *objfile = dwarf2_per_objfile->objfile;
8477
8478   if (dwarf_read_debug)
8479     {
8480       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8481                           objfile_name (objfile));
8482     }
8483
8484   dwarf2_per_objfile->reading_partial_symbols = 1;
8485
8486   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8487
8488   /* Any cached compilation units will be linked by the per-objfile
8489      read_in_chain.  Make sure to free them when we're done.  */
8490   free_cached_comp_units freer (dwarf2_per_objfile);
8491
8492   build_type_psymtabs (dwarf2_per_objfile);
8493
8494   create_all_comp_units (dwarf2_per_objfile);
8495
8496   /* Create a temporary address map on a temporary obstack.  We later
8497      copy this to the final obstack.  */
8498   auto_obstack temp_obstack;
8499
8500   scoped_restore save_psymtabs_addrmap
8501     = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
8502                            addrmap_create_mutable (&temp_obstack));
8503
8504   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8505     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8506
8507   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8508   process_skeletonless_type_units (dwarf2_per_objfile);
8509
8510   /* Now that all TUs have been processed we can fill in the dependencies.  */
8511   if (dwarf2_per_objfile->type_unit_groups != NULL)
8512     {
8513       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8514                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8515     }
8516
8517   if (dwarf_read_debug)
8518     print_tu_stats (dwarf2_per_objfile);
8519
8520   set_partial_user (dwarf2_per_objfile);
8521
8522   objfile->partial_symtabs->psymtabs_addrmap
8523     = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
8524                             objfile->partial_symtabs->obstack ());
8525   /* At this point we want to keep the address map.  */
8526   save_psymtabs_addrmap.release ();
8527
8528   if (dwarf_read_debug)
8529     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8530                         objfile_name (objfile));
8531 }
8532
8533 /* die_reader_func for load_partial_comp_unit.  */
8534
8535 static void
8536 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8537                                const gdb_byte *info_ptr,
8538                                struct die_info *comp_unit_die,
8539                                int has_children,
8540                                void *data)
8541 {
8542   struct dwarf2_cu *cu = reader->cu;
8543
8544   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8545
8546   /* Check if comp unit has_children.
8547      If so, read the rest of the partial symbols from this comp unit.
8548      If not, there's no more debug_info for this comp unit.  */
8549   if (has_children)
8550     load_partial_dies (reader, info_ptr, 0);
8551 }
8552
8553 /* Load the partial DIEs for a secondary CU into memory.
8554    This is also used when rereading a primary CU with load_all_dies.  */
8555
8556 static void
8557 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8558 {
8559   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8560                            load_partial_comp_unit_reader, NULL);
8561 }
8562
8563 static void
8564 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8565                               struct dwarf2_section_info *section,
8566                               struct dwarf2_section_info *abbrev_section,
8567                               unsigned int is_dwz)
8568 {
8569   const gdb_byte *info_ptr;
8570   struct objfile *objfile = dwarf2_per_objfile->objfile;
8571
8572   if (dwarf_read_debug)
8573     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8574                         get_section_name (section),
8575                         get_section_file_name (section));
8576
8577   dwarf2_read_section (objfile, section);
8578
8579   info_ptr = section->buffer;
8580
8581   while (info_ptr < section->buffer + section->size)
8582     {
8583       struct dwarf2_per_cu_data *this_cu;
8584
8585       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8586
8587       comp_unit_head cu_header;
8588       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8589                                      abbrev_section, info_ptr,
8590                                      rcuh_kind::COMPILE);
8591
8592       /* Save the compilation unit for later lookup.  */
8593       if (cu_header.unit_type != DW_UT_type)
8594         {
8595           this_cu = XOBNEW (&objfile->objfile_obstack,
8596                             struct dwarf2_per_cu_data);
8597           memset (this_cu, 0, sizeof (*this_cu));
8598         }
8599       else
8600         {
8601           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8602                                   struct signatured_type);
8603           memset (sig_type, 0, sizeof (*sig_type));
8604           sig_type->signature = cu_header.signature;
8605           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8606           this_cu = &sig_type->per_cu;
8607         }
8608       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8609       this_cu->sect_off = sect_off;
8610       this_cu->length = cu_header.length + cu_header.initial_length_size;
8611       this_cu->is_dwz = is_dwz;
8612       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8613       this_cu->section = section;
8614
8615       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8616
8617       info_ptr = info_ptr + this_cu->length;
8618     }
8619 }
8620
8621 /* Create a list of all compilation units in OBJFILE.
8622    This is only done for -readnow and building partial symtabs.  */
8623
8624 static void
8625 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8626 {
8627   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8628   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8629                                 &dwarf2_per_objfile->abbrev, 0);
8630
8631   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8632   if (dwz != NULL)
8633     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8634                                   1);
8635 }
8636
8637 /* Process all loaded DIEs for compilation unit CU, starting at
8638    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8639    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8640    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8641    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8642
8643 static void
8644 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8645                       CORE_ADDR *highpc, int set_addrmap,
8646                       struct dwarf2_cu *cu)
8647 {
8648   struct partial_die_info *pdi;
8649
8650   /* Now, march along the PDI's, descending into ones which have
8651      interesting children but skipping the children of the other ones,
8652      until we reach the end of the compilation unit.  */
8653
8654   pdi = first_die;
8655
8656   while (pdi != NULL)
8657     {
8658       pdi->fixup (cu);
8659
8660       /* Anonymous namespaces or modules have no name but have interesting
8661          children, so we need to look at them.  Ditto for anonymous
8662          enums.  */
8663
8664       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8665           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8666           || pdi->tag == DW_TAG_imported_unit
8667           || pdi->tag == DW_TAG_inlined_subroutine)
8668         {
8669           switch (pdi->tag)
8670             {
8671             case DW_TAG_subprogram:
8672             case DW_TAG_inlined_subroutine:
8673               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8674               break;
8675             case DW_TAG_constant:
8676             case DW_TAG_variable:
8677             case DW_TAG_typedef:
8678             case DW_TAG_union_type:
8679               if (!pdi->is_declaration)
8680                 {
8681                   add_partial_symbol (pdi, cu);
8682                 }
8683               break;
8684             case DW_TAG_class_type:
8685             case DW_TAG_interface_type:
8686             case DW_TAG_structure_type:
8687               if (!pdi->is_declaration)
8688                 {
8689                   add_partial_symbol (pdi, cu);
8690                 }
8691               if ((cu->language == language_rust
8692                    || cu->language == language_cplus) && pdi->has_children)
8693                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8694                                       set_addrmap, cu);
8695               break;
8696             case DW_TAG_enumeration_type:
8697               if (!pdi->is_declaration)
8698                 add_partial_enumeration (pdi, cu);
8699               break;
8700             case DW_TAG_base_type:
8701             case DW_TAG_subrange_type:
8702               /* File scope base type definitions are added to the partial
8703                  symbol table.  */
8704               add_partial_symbol (pdi, cu);
8705               break;
8706             case DW_TAG_namespace:
8707               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8708               break;
8709             case DW_TAG_module:
8710               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8711               break;
8712             case DW_TAG_imported_unit:
8713               {
8714                 struct dwarf2_per_cu_data *per_cu;
8715
8716                 /* For now we don't handle imported units in type units.  */
8717                 if (cu->per_cu->is_debug_types)
8718                   {
8719                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8720                              " supported in type units [in module %s]"),
8721                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8722                   }
8723
8724                 per_cu = dwarf2_find_containing_comp_unit
8725                            (pdi->d.sect_off, pdi->is_dwz,
8726                             cu->per_cu->dwarf2_per_objfile);
8727
8728                 /* Go read the partial unit, if needed.  */
8729                 if (per_cu->v.psymtab == NULL)
8730                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8731
8732                 VEC_safe_push (dwarf2_per_cu_ptr,
8733                                cu->per_cu->imported_symtabs, per_cu);
8734               }
8735               break;
8736             case DW_TAG_imported_declaration:
8737               add_partial_symbol (pdi, cu);
8738               break;
8739             default:
8740               break;
8741             }
8742         }
8743
8744       /* If the die has a sibling, skip to the sibling.  */
8745
8746       pdi = pdi->die_sibling;
8747     }
8748 }
8749
8750 /* Functions used to compute the fully scoped name of a partial DIE.
8751
8752    Normally, this is simple.  For C++, the parent DIE's fully scoped
8753    name is concatenated with "::" and the partial DIE's name.
8754    Enumerators are an exception; they use the scope of their parent
8755    enumeration type, i.e. the name of the enumeration type is not
8756    prepended to the enumerator.
8757
8758    There are two complexities.  One is DW_AT_specification; in this
8759    case "parent" means the parent of the target of the specification,
8760    instead of the direct parent of the DIE.  The other is compilers
8761    which do not emit DW_TAG_namespace; in this case we try to guess
8762    the fully qualified name of structure types from their members'
8763    linkage names.  This must be done using the DIE's children rather
8764    than the children of any DW_AT_specification target.  We only need
8765    to do this for structures at the top level, i.e. if the target of
8766    any DW_AT_specification (if any; otherwise the DIE itself) does not
8767    have a parent.  */
8768
8769 /* Compute the scope prefix associated with PDI's parent, in
8770    compilation unit CU.  The result will be allocated on CU's
8771    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8772    field.  NULL is returned if no prefix is necessary.  */
8773 static const char *
8774 partial_die_parent_scope (struct partial_die_info *pdi,
8775                           struct dwarf2_cu *cu)
8776 {
8777   const char *grandparent_scope;
8778   struct partial_die_info *parent, *real_pdi;
8779
8780   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8781      then this means the parent of the specification DIE.  */
8782
8783   real_pdi = pdi;
8784   while (real_pdi->has_specification)
8785     real_pdi = find_partial_die (real_pdi->spec_offset,
8786                                  real_pdi->spec_is_dwz, cu);
8787
8788   parent = real_pdi->die_parent;
8789   if (parent == NULL)
8790     return NULL;
8791
8792   if (parent->scope_set)
8793     return parent->scope;
8794
8795   parent->fixup (cu);
8796
8797   grandparent_scope = partial_die_parent_scope (parent, cu);
8798
8799   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8800      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8801      Work around this problem here.  */
8802   if (cu->language == language_cplus
8803       && parent->tag == DW_TAG_namespace
8804       && strcmp (parent->name, "::") == 0
8805       && grandparent_scope == NULL)
8806     {
8807       parent->scope = NULL;
8808       parent->scope_set = 1;
8809       return NULL;
8810     }
8811
8812   if (pdi->tag == DW_TAG_enumerator)
8813     /* Enumerators should not get the name of the enumeration as a prefix.  */
8814     parent->scope = grandparent_scope;
8815   else if (parent->tag == DW_TAG_namespace
8816       || parent->tag == DW_TAG_module
8817       || parent->tag == DW_TAG_structure_type
8818       || parent->tag == DW_TAG_class_type
8819       || parent->tag == DW_TAG_interface_type
8820       || parent->tag == DW_TAG_union_type
8821       || parent->tag == DW_TAG_enumeration_type)
8822     {
8823       if (grandparent_scope == NULL)
8824         parent->scope = parent->name;
8825       else
8826         parent->scope = typename_concat (&cu->comp_unit_obstack,
8827                                          grandparent_scope,
8828                                          parent->name, 0, cu);
8829     }
8830   else
8831     {
8832       /* FIXME drow/2004-04-01: What should we be doing with
8833          function-local names?  For partial symbols, we should probably be
8834          ignoring them.  */
8835       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8836                  parent->tag, sect_offset_str (pdi->sect_off));
8837       parent->scope = grandparent_scope;
8838     }
8839
8840   parent->scope_set = 1;
8841   return parent->scope;
8842 }
8843
8844 /* Return the fully scoped name associated with PDI, from compilation unit
8845    CU.  The result will be allocated with malloc.  */
8846
8847 static char *
8848 partial_die_full_name (struct partial_die_info *pdi,
8849                        struct dwarf2_cu *cu)
8850 {
8851   const char *parent_scope;
8852
8853   /* If this is a template instantiation, we can not work out the
8854      template arguments from partial DIEs.  So, unfortunately, we have
8855      to go through the full DIEs.  At least any work we do building
8856      types here will be reused if full symbols are loaded later.  */
8857   if (pdi->has_template_arguments)
8858     {
8859       pdi->fixup (cu);
8860
8861       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8862         {
8863           struct die_info *die;
8864           struct attribute attr;
8865           struct dwarf2_cu *ref_cu = cu;
8866
8867           /* DW_FORM_ref_addr is using section offset.  */
8868           attr.name = (enum dwarf_attribute) 0;
8869           attr.form = DW_FORM_ref_addr;
8870           attr.u.unsnd = to_underlying (pdi->sect_off);
8871           die = follow_die_ref (NULL, &attr, &ref_cu);
8872
8873           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8874         }
8875     }
8876
8877   parent_scope = partial_die_parent_scope (pdi, cu);
8878   if (parent_scope == NULL)
8879     return NULL;
8880   else
8881     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8882 }
8883
8884 static void
8885 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8886 {
8887   struct dwarf2_per_objfile *dwarf2_per_objfile
8888     = cu->per_cu->dwarf2_per_objfile;
8889   struct objfile *objfile = dwarf2_per_objfile->objfile;
8890   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8891   CORE_ADDR addr = 0;
8892   const char *actual_name = NULL;
8893   CORE_ADDR baseaddr;
8894   char *built_actual_name;
8895
8896   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8897
8898   built_actual_name = partial_die_full_name (pdi, cu);
8899   if (built_actual_name != NULL)
8900     actual_name = built_actual_name;
8901
8902   if (actual_name == NULL)
8903     actual_name = pdi->name;
8904
8905   switch (pdi->tag)
8906     {
8907     case DW_TAG_inlined_subroutine:
8908     case DW_TAG_subprogram:
8909       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8910               - baseaddr);
8911       if (pdi->is_external || cu->language == language_ada)
8912         {
8913           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8914              of the global scope.  But in Ada, we want to be able to access
8915              nested procedures globally.  So all Ada subprograms are stored
8916              in the global scope.  */
8917           add_psymbol_to_list (actual_name, strlen (actual_name),
8918                                built_actual_name != NULL,
8919                                VAR_DOMAIN, LOC_BLOCK,
8920                                SECT_OFF_TEXT (objfile),
8921                                psymbol_placement::GLOBAL,
8922                                addr,
8923                                cu->language, objfile);
8924         }
8925       else
8926         {
8927           add_psymbol_to_list (actual_name, strlen (actual_name),
8928                                built_actual_name != NULL,
8929                                VAR_DOMAIN, LOC_BLOCK,
8930                                SECT_OFF_TEXT (objfile),
8931                                psymbol_placement::STATIC,
8932                                addr, cu->language, objfile);
8933         }
8934
8935       if (pdi->main_subprogram && actual_name != NULL)
8936         set_objfile_main_name (objfile, actual_name, cu->language);
8937       break;
8938     case DW_TAG_constant:
8939       add_psymbol_to_list (actual_name, strlen (actual_name),
8940                            built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8941                            -1, (pdi->is_external
8942                                 ? psymbol_placement::GLOBAL
8943                                 : psymbol_placement::STATIC),
8944                            0, cu->language, objfile);
8945       break;
8946     case DW_TAG_variable:
8947       if (pdi->d.locdesc)
8948         addr = decode_locdesc (pdi->d.locdesc, cu);
8949
8950       if (pdi->d.locdesc
8951           && addr == 0
8952           && !dwarf2_per_objfile->has_section_at_zero)
8953         {
8954           /* A global or static variable may also have been stripped
8955              out by the linker if unused, in which case its address
8956              will be nullified; do not add such variables into partial
8957              symbol table then.  */
8958         }
8959       else if (pdi->is_external)
8960         {
8961           /* Global Variable.
8962              Don't enter into the minimal symbol tables as there is
8963              a minimal symbol table entry from the ELF symbols already.
8964              Enter into partial symbol table if it has a location
8965              descriptor or a type.
8966              If the location descriptor is missing, new_symbol will create
8967              a LOC_UNRESOLVED symbol, the address of the variable will then
8968              be determined from the minimal symbol table whenever the variable
8969              is referenced.
8970              The address for the partial symbol table entry is not
8971              used by GDB, but it comes in handy for debugging partial symbol
8972              table building.  */
8973
8974           if (pdi->d.locdesc || pdi->has_type)
8975             add_psymbol_to_list (actual_name, strlen (actual_name),
8976                                  built_actual_name != NULL,
8977                                  VAR_DOMAIN, LOC_STATIC,
8978                                  SECT_OFF_TEXT (objfile),
8979                                  psymbol_placement::GLOBAL,
8980                                  addr, cu->language, objfile);
8981         }
8982       else
8983         {
8984           int has_loc = pdi->d.locdesc != NULL;
8985
8986           /* Static Variable.  Skip symbols whose value we cannot know (those
8987              without location descriptors or constant values).  */
8988           if (!has_loc && !pdi->has_const_value)
8989             {
8990               xfree (built_actual_name);
8991               return;
8992             }
8993
8994           add_psymbol_to_list (actual_name, strlen (actual_name),
8995                                built_actual_name != NULL,
8996                                VAR_DOMAIN, LOC_STATIC,
8997                                SECT_OFF_TEXT (objfile),
8998                                psymbol_placement::STATIC,
8999                                has_loc ? addr : 0,
9000                                cu->language, objfile);
9001         }
9002       break;
9003     case DW_TAG_typedef:
9004     case DW_TAG_base_type:
9005     case DW_TAG_subrange_type:
9006       add_psymbol_to_list (actual_name, strlen (actual_name),
9007                            built_actual_name != NULL,
9008                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9009                            psymbol_placement::STATIC,
9010                            0, cu->language, objfile);
9011       break;
9012     case DW_TAG_imported_declaration:
9013     case DW_TAG_namespace:
9014       add_psymbol_to_list (actual_name, strlen (actual_name),
9015                            built_actual_name != NULL,
9016                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9017                            psymbol_placement::GLOBAL,
9018                            0, cu->language, objfile);
9019       break;
9020     case DW_TAG_module:
9021       add_psymbol_to_list (actual_name, strlen (actual_name),
9022                            built_actual_name != NULL,
9023                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9024                            psymbol_placement::GLOBAL,
9025                            0, cu->language, objfile);
9026       break;
9027     case DW_TAG_class_type:
9028     case DW_TAG_interface_type:
9029     case DW_TAG_structure_type:
9030     case DW_TAG_union_type:
9031     case DW_TAG_enumeration_type:
9032       /* Skip external references.  The DWARF standard says in the section
9033          about "Structure, Union, and Class Type Entries": "An incomplete
9034          structure, union or class type is represented by a structure,
9035          union or class entry that does not have a byte size attribute
9036          and that has a DW_AT_declaration attribute."  */
9037       if (!pdi->has_byte_size && pdi->is_declaration)
9038         {
9039           xfree (built_actual_name);
9040           return;
9041         }
9042
9043       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9044          static vs. global.  */
9045       add_psymbol_to_list (actual_name, strlen (actual_name),
9046                            built_actual_name != NULL,
9047                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9048                            cu->language == language_cplus
9049                            ? psymbol_placement::GLOBAL
9050                            : psymbol_placement::STATIC,
9051                            0, cu->language, objfile);
9052
9053       break;
9054     case DW_TAG_enumerator:
9055       add_psymbol_to_list (actual_name, strlen (actual_name),
9056                            built_actual_name != NULL,
9057                            VAR_DOMAIN, LOC_CONST, -1,
9058                            cu->language == language_cplus
9059                            ? psymbol_placement::GLOBAL
9060                            : psymbol_placement::STATIC,
9061                            0, cu->language, objfile);
9062       break;
9063     default:
9064       break;
9065     }
9066
9067   xfree (built_actual_name);
9068 }
9069
9070 /* Read a partial die corresponding to a namespace; also, add a symbol
9071    corresponding to that namespace to the symbol table.  NAMESPACE is
9072    the name of the enclosing namespace.  */
9073
9074 static void
9075 add_partial_namespace (struct partial_die_info *pdi,
9076                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9077                        int set_addrmap, struct dwarf2_cu *cu)
9078 {
9079   /* Add a symbol for the namespace.  */
9080
9081   add_partial_symbol (pdi, cu);
9082
9083   /* Now scan partial symbols in that namespace.  */
9084
9085   if (pdi->has_children)
9086     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9087 }
9088
9089 /* Read a partial die corresponding to a Fortran module.  */
9090
9091 static void
9092 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9093                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9094 {
9095   /* Add a symbol for the namespace.  */
9096
9097   add_partial_symbol (pdi, cu);
9098
9099   /* Now scan partial symbols in that module.  */
9100
9101   if (pdi->has_children)
9102     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9103 }
9104
9105 /* Read a partial die corresponding to a subprogram or an inlined
9106    subprogram and create a partial symbol for that subprogram.
9107    When the CU language allows it, this routine also defines a partial
9108    symbol for each nested subprogram that this subprogram contains.
9109    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9110    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9111
9112    PDI may also be a lexical block, in which case we simply search
9113    recursively for subprograms defined inside that lexical block.
9114    Again, this is only performed when the CU language allows this
9115    type of definitions.  */
9116
9117 static void
9118 add_partial_subprogram (struct partial_die_info *pdi,
9119                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9120                         int set_addrmap, struct dwarf2_cu *cu)
9121 {
9122   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9123     {
9124       if (pdi->has_pc_info)
9125         {
9126           if (pdi->lowpc < *lowpc)
9127             *lowpc = pdi->lowpc;
9128           if (pdi->highpc > *highpc)
9129             *highpc = pdi->highpc;
9130           if (set_addrmap)
9131             {
9132               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9133               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9134               CORE_ADDR baseaddr;
9135               CORE_ADDR this_highpc;
9136               CORE_ADDR this_lowpc;
9137
9138               baseaddr = ANOFFSET (objfile->section_offsets,
9139                                    SECT_OFF_TEXT (objfile));
9140               this_lowpc
9141                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9142                                                pdi->lowpc + baseaddr)
9143                    - baseaddr);
9144               this_highpc
9145                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9146                                                pdi->highpc + baseaddr)
9147                    - baseaddr);
9148               addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
9149                                  this_lowpc, this_highpc - 1,
9150                                  cu->per_cu->v.psymtab);
9151             }
9152         }
9153
9154       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9155         {
9156           if (!pdi->is_declaration)
9157             /* Ignore subprogram DIEs that do not have a name, they are
9158                illegal.  Do not emit a complaint at this point, we will
9159                do so when we convert this psymtab into a symtab.  */
9160             if (pdi->name)
9161               add_partial_symbol (pdi, cu);
9162         }
9163     }
9164
9165   if (! pdi->has_children)
9166     return;
9167
9168   if (cu->language == language_ada)
9169     {
9170       pdi = pdi->die_child;
9171       while (pdi != NULL)
9172         {
9173           pdi->fixup (cu);
9174           if (pdi->tag == DW_TAG_subprogram
9175               || pdi->tag == DW_TAG_inlined_subroutine
9176               || pdi->tag == DW_TAG_lexical_block)
9177             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9178           pdi = pdi->die_sibling;
9179         }
9180     }
9181 }
9182
9183 /* Read a partial die corresponding to an enumeration type.  */
9184
9185 static void
9186 add_partial_enumeration (struct partial_die_info *enum_pdi,
9187                          struct dwarf2_cu *cu)
9188 {
9189   struct partial_die_info *pdi;
9190
9191   if (enum_pdi->name != NULL)
9192     add_partial_symbol (enum_pdi, cu);
9193
9194   pdi = enum_pdi->die_child;
9195   while (pdi)
9196     {
9197       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9198         complaint (_("malformed enumerator DIE ignored"));
9199       else
9200         add_partial_symbol (pdi, cu);
9201       pdi = pdi->die_sibling;
9202     }
9203 }
9204
9205 /* Return the initial uleb128 in the die at INFO_PTR.  */
9206
9207 static unsigned int
9208 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9209 {
9210   unsigned int bytes_read;
9211
9212   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9213 }
9214
9215 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9216    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9217
9218    Return the corresponding abbrev, or NULL if the number is zero (indicating
9219    an empty DIE).  In either case *BYTES_READ will be set to the length of
9220    the initial number.  */
9221
9222 static struct abbrev_info *
9223 peek_die_abbrev (const die_reader_specs &reader,
9224                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9225 {
9226   dwarf2_cu *cu = reader.cu;
9227   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9228   unsigned int abbrev_number
9229     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9230
9231   if (abbrev_number == 0)
9232     return NULL;
9233
9234   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9235   if (!abbrev)
9236     {
9237       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9238                " at offset %s [in module %s]"),
9239              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9240              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9241     }
9242
9243   return abbrev;
9244 }
9245
9246 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9247    Returns a pointer to the end of a series of DIEs, terminated by an empty
9248    DIE.  Any children of the skipped DIEs will also be skipped.  */
9249
9250 static const gdb_byte *
9251 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9252 {
9253   while (1)
9254     {
9255       unsigned int bytes_read;
9256       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9257
9258       if (abbrev == NULL)
9259         return info_ptr + bytes_read;
9260       else
9261         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9262     }
9263 }
9264
9265 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9266    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9267    abbrev corresponding to that skipped uleb128 should be passed in
9268    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9269    children.  */
9270
9271 static const gdb_byte *
9272 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9273               struct abbrev_info *abbrev)
9274 {
9275   unsigned int bytes_read;
9276   struct attribute attr;
9277   bfd *abfd = reader->abfd;
9278   struct dwarf2_cu *cu = reader->cu;
9279   const gdb_byte *buffer = reader->buffer;
9280   const gdb_byte *buffer_end = reader->buffer_end;
9281   unsigned int form, i;
9282
9283   for (i = 0; i < abbrev->num_attrs; i++)
9284     {
9285       /* The only abbrev we care about is DW_AT_sibling.  */
9286       if (abbrev->attrs[i].name == DW_AT_sibling)
9287         {
9288           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9289           if (attr.form == DW_FORM_ref_addr)
9290             complaint (_("ignoring absolute DW_AT_sibling"));
9291           else
9292             {
9293               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9294               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9295
9296               if (sibling_ptr < info_ptr)
9297                 complaint (_("DW_AT_sibling points backwards"));
9298               else if (sibling_ptr > reader->buffer_end)
9299                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9300               else
9301                 return sibling_ptr;
9302             }
9303         }
9304
9305       /* If it isn't DW_AT_sibling, skip this attribute.  */
9306       form = abbrev->attrs[i].form;
9307     skip_attribute:
9308       switch (form)
9309         {
9310         case DW_FORM_ref_addr:
9311           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9312              and later it is offset sized.  */
9313           if (cu->header.version == 2)
9314             info_ptr += cu->header.addr_size;
9315           else
9316             info_ptr += cu->header.offset_size;
9317           break;
9318         case DW_FORM_GNU_ref_alt:
9319           info_ptr += cu->header.offset_size;
9320           break;
9321         case DW_FORM_addr:
9322           info_ptr += cu->header.addr_size;
9323           break;
9324         case DW_FORM_data1:
9325         case DW_FORM_ref1:
9326         case DW_FORM_flag:
9327           info_ptr += 1;
9328           break;
9329         case DW_FORM_flag_present:
9330         case DW_FORM_implicit_const:
9331           break;
9332         case DW_FORM_data2:
9333         case DW_FORM_ref2:
9334           info_ptr += 2;
9335           break;
9336         case DW_FORM_data4:
9337         case DW_FORM_ref4:
9338           info_ptr += 4;
9339           break;
9340         case DW_FORM_data8:
9341         case DW_FORM_ref8:
9342         case DW_FORM_ref_sig8:
9343           info_ptr += 8;
9344           break;
9345         case DW_FORM_data16:
9346           info_ptr += 16;
9347           break;
9348         case DW_FORM_string:
9349           read_direct_string (abfd, info_ptr, &bytes_read);
9350           info_ptr += bytes_read;
9351           break;
9352         case DW_FORM_sec_offset:
9353         case DW_FORM_strp:
9354         case DW_FORM_GNU_strp_alt:
9355           info_ptr += cu->header.offset_size;
9356           break;
9357         case DW_FORM_exprloc:
9358         case DW_FORM_block:
9359           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9360           info_ptr += bytes_read;
9361           break;
9362         case DW_FORM_block1:
9363           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9364           break;
9365         case DW_FORM_block2:
9366           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9367           break;
9368         case DW_FORM_block4:
9369           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9370           break;
9371         case DW_FORM_addrx:
9372         case DW_FORM_sdata:
9373         case DW_FORM_udata:
9374         case DW_FORM_ref_udata:
9375         case DW_FORM_GNU_addr_index:
9376         case DW_FORM_GNU_str_index:
9377           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9378           break;
9379         case DW_FORM_indirect:
9380           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9381           info_ptr += bytes_read;
9382           /* We need to continue parsing from here, so just go back to
9383              the top.  */
9384           goto skip_attribute;
9385
9386         default:
9387           error (_("Dwarf Error: Cannot handle %s "
9388                    "in DWARF reader [in module %s]"),
9389                  dwarf_form_name (form),
9390                  bfd_get_filename (abfd));
9391         }
9392     }
9393
9394   if (abbrev->has_children)
9395     return skip_children (reader, info_ptr);
9396   else
9397     return info_ptr;
9398 }
9399
9400 /* Locate ORIG_PDI's sibling.
9401    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9402
9403 static const gdb_byte *
9404 locate_pdi_sibling (const struct die_reader_specs *reader,
9405                     struct partial_die_info *orig_pdi,
9406                     const gdb_byte *info_ptr)
9407 {
9408   /* Do we know the sibling already?  */
9409
9410   if (orig_pdi->sibling)
9411     return orig_pdi->sibling;
9412
9413   /* Are there any children to deal with?  */
9414
9415   if (!orig_pdi->has_children)
9416     return info_ptr;
9417
9418   /* Skip the children the long way.  */
9419
9420   return skip_children (reader, info_ptr);
9421 }
9422
9423 /* Expand this partial symbol table into a full symbol table.  SELF is
9424    not NULL.  */
9425
9426 static void
9427 dwarf2_read_symtab (struct partial_symtab *self,
9428                     struct objfile *objfile)
9429 {
9430   struct dwarf2_per_objfile *dwarf2_per_objfile
9431     = get_dwarf2_per_objfile (objfile);
9432
9433   if (self->readin)
9434     {
9435       warning (_("bug: psymtab for %s is already read in."),
9436                self->filename);
9437     }
9438   else
9439     {
9440       if (info_verbose)
9441         {
9442           printf_filtered (_("Reading in symbols for %s..."),
9443                            self->filename);
9444           gdb_flush (gdb_stdout);
9445         }
9446
9447       /* If this psymtab is constructed from a debug-only objfile, the
9448          has_section_at_zero flag will not necessarily be correct.  We
9449          can get the correct value for this flag by looking at the data
9450          associated with the (presumably stripped) associated objfile.  */
9451       if (objfile->separate_debug_objfile_backlink)
9452         {
9453           struct dwarf2_per_objfile *dpo_backlink
9454             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9455
9456           dwarf2_per_objfile->has_section_at_zero
9457             = dpo_backlink->has_section_at_zero;
9458         }
9459
9460       dwarf2_per_objfile->reading_partial_symbols = 0;
9461
9462       psymtab_to_symtab_1 (self);
9463
9464       /* Finish up the debug error message.  */
9465       if (info_verbose)
9466         printf_filtered (_("done.\n"));
9467     }
9468
9469   process_cu_includes (dwarf2_per_objfile);
9470 }
9471 \f
9472 /* Reading in full CUs.  */
9473
9474 /* Add PER_CU to the queue.  */
9475
9476 static void
9477 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9478                  enum language pretend_language)
9479 {
9480   struct dwarf2_queue_item *item;
9481
9482   per_cu->queued = 1;
9483   item = XNEW (struct dwarf2_queue_item);
9484   item->per_cu = per_cu;
9485   item->pretend_language = pretend_language;
9486   item->next = NULL;
9487
9488   if (dwarf2_queue == NULL)
9489     dwarf2_queue = item;
9490   else
9491     dwarf2_queue_tail->next = item;
9492
9493   dwarf2_queue_tail = item;
9494 }
9495
9496 /* If PER_CU is not yet queued, add it to the queue.
9497    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9498    dependency.
9499    The result is non-zero if PER_CU was queued, otherwise the result is zero
9500    meaning either PER_CU is already queued or it is already loaded.
9501
9502    N.B. There is an invariant here that if a CU is queued then it is loaded.
9503    The caller is required to load PER_CU if we return non-zero.  */
9504
9505 static int
9506 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9507                        struct dwarf2_per_cu_data *per_cu,
9508                        enum language pretend_language)
9509 {
9510   /* We may arrive here during partial symbol reading, if we need full
9511      DIEs to process an unusual case (e.g. template arguments).  Do
9512      not queue PER_CU, just tell our caller to load its DIEs.  */
9513   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9514     {
9515       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9516         return 1;
9517       return 0;
9518     }
9519
9520   /* Mark the dependence relation so that we don't flush PER_CU
9521      too early.  */
9522   if (dependent_cu != NULL)
9523     dwarf2_add_dependence (dependent_cu, per_cu);
9524
9525   /* If it's already on the queue, we have nothing to do.  */
9526   if (per_cu->queued)
9527     return 0;
9528
9529   /* If the compilation unit is already loaded, just mark it as
9530      used.  */
9531   if (per_cu->cu != NULL)
9532     {
9533       per_cu->cu->last_used = 0;
9534       return 0;
9535     }
9536
9537   /* Add it to the queue.  */
9538   queue_comp_unit (per_cu, pretend_language);
9539
9540   return 1;
9541 }
9542
9543 /* Process the queue.  */
9544
9545 static void
9546 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9547 {
9548   struct dwarf2_queue_item *item, *next_item;
9549
9550   if (dwarf_read_debug)
9551     {
9552       fprintf_unfiltered (gdb_stdlog,
9553                           "Expanding one or more symtabs of objfile %s ...\n",
9554                           objfile_name (dwarf2_per_objfile->objfile));
9555     }
9556
9557   /* The queue starts out with one item, but following a DIE reference
9558      may load a new CU, adding it to the end of the queue.  */
9559   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9560     {
9561       if ((dwarf2_per_objfile->using_index
9562            ? !item->per_cu->v.quick->compunit_symtab
9563            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9564           /* Skip dummy CUs.  */
9565           && item->per_cu->cu != NULL)
9566         {
9567           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9568           unsigned int debug_print_threshold;
9569           char buf[100];
9570
9571           if (per_cu->is_debug_types)
9572             {
9573               struct signatured_type *sig_type =
9574                 (struct signatured_type *) per_cu;
9575
9576               sprintf (buf, "TU %s at offset %s",
9577                        hex_string (sig_type->signature),
9578                        sect_offset_str (per_cu->sect_off));
9579               /* There can be 100s of TUs.
9580                  Only print them in verbose mode.  */
9581               debug_print_threshold = 2;
9582             }
9583           else
9584             {
9585               sprintf (buf, "CU at offset %s",
9586                        sect_offset_str (per_cu->sect_off));
9587               debug_print_threshold = 1;
9588             }
9589
9590           if (dwarf_read_debug >= debug_print_threshold)
9591             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9592
9593           if (per_cu->is_debug_types)
9594             process_full_type_unit (per_cu, item->pretend_language);
9595           else
9596             process_full_comp_unit (per_cu, item->pretend_language);
9597
9598           if (dwarf_read_debug >= debug_print_threshold)
9599             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9600         }
9601
9602       item->per_cu->queued = 0;
9603       next_item = item->next;
9604       xfree (item);
9605     }
9606
9607   dwarf2_queue_tail = NULL;
9608
9609   if (dwarf_read_debug)
9610     {
9611       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9612                           objfile_name (dwarf2_per_objfile->objfile));
9613     }
9614 }
9615
9616 /* Read in full symbols for PST, and anything it depends on.  */
9617
9618 static void
9619 psymtab_to_symtab_1 (struct partial_symtab *pst)
9620 {
9621   struct dwarf2_per_cu_data *per_cu;
9622   int i;
9623
9624   if (pst->readin)
9625     return;
9626
9627   for (i = 0; i < pst->number_of_dependencies; i++)
9628     if (!pst->dependencies[i]->readin
9629         && pst->dependencies[i]->user == NULL)
9630       {
9631         /* Inform about additional files that need to be read in.  */
9632         if (info_verbose)
9633           {
9634             /* FIXME: i18n: Need to make this a single string.  */
9635             fputs_filtered (" ", gdb_stdout);
9636             wrap_here ("");
9637             fputs_filtered ("and ", gdb_stdout);
9638             wrap_here ("");
9639             printf_filtered ("%s...", pst->dependencies[i]->filename);
9640             wrap_here ("");     /* Flush output.  */
9641             gdb_flush (gdb_stdout);
9642           }
9643         psymtab_to_symtab_1 (pst->dependencies[i]);
9644       }
9645
9646   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9647
9648   if (per_cu == NULL)
9649     {
9650       /* It's an include file, no symbols to read for it.
9651          Everything is in the parent symtab.  */
9652       pst->readin = 1;
9653       return;
9654     }
9655
9656   dw2_do_instantiate_symtab (per_cu, false);
9657 }
9658
9659 /* Trivial hash function for die_info: the hash value of a DIE
9660    is its offset in .debug_info for this objfile.  */
9661
9662 static hashval_t
9663 die_hash (const void *item)
9664 {
9665   const struct die_info *die = (const struct die_info *) item;
9666
9667   return to_underlying (die->sect_off);
9668 }
9669
9670 /* Trivial comparison function for die_info structures: two DIEs
9671    are equal if they have the same offset.  */
9672
9673 static int
9674 die_eq (const void *item_lhs, const void *item_rhs)
9675 {
9676   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9677   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9678
9679   return die_lhs->sect_off == die_rhs->sect_off;
9680 }
9681
9682 /* die_reader_func for load_full_comp_unit.
9683    This is identical to read_signatured_type_reader,
9684    but is kept separate for now.  */
9685
9686 static void
9687 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9688                             const gdb_byte *info_ptr,
9689                             struct die_info *comp_unit_die,
9690                             int has_children,
9691                             void *data)
9692 {
9693   struct dwarf2_cu *cu = reader->cu;
9694   enum language *language_ptr = (enum language *) data;
9695
9696   gdb_assert (cu->die_hash == NULL);
9697   cu->die_hash =
9698     htab_create_alloc_ex (cu->header.length / 12,
9699                           die_hash,
9700                           die_eq,
9701                           NULL,
9702                           &cu->comp_unit_obstack,
9703                           hashtab_obstack_allocate,
9704                           dummy_obstack_deallocate);
9705
9706   if (has_children)
9707     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9708                                                   &info_ptr, comp_unit_die);
9709   cu->dies = comp_unit_die;
9710   /* comp_unit_die is not stored in die_hash, no need.  */
9711
9712   /* We try not to read any attributes in this function, because not
9713      all CUs needed for references have been loaded yet, and symbol
9714      table processing isn't initialized.  But we have to set the CU language,
9715      or we won't be able to build types correctly.
9716      Similarly, if we do not read the producer, we can not apply
9717      producer-specific interpretation.  */
9718   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9719 }
9720
9721 /* Load the DIEs associated with PER_CU into memory.  */
9722
9723 static void
9724 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9725                      bool skip_partial,
9726                      enum language pretend_language)
9727 {
9728   gdb_assert (! this_cu->is_debug_types);
9729
9730   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9731                            load_full_comp_unit_reader, &pretend_language);
9732 }
9733
9734 /* Add a DIE to the delayed physname list.  */
9735
9736 static void
9737 add_to_method_list (struct type *type, int fnfield_index, int index,
9738                     const char *name, struct die_info *die,
9739                     struct dwarf2_cu *cu)
9740 {
9741   struct delayed_method_info mi;
9742   mi.type = type;
9743   mi.fnfield_index = fnfield_index;
9744   mi.index = index;
9745   mi.name = name;
9746   mi.die = die;
9747   cu->method_list.push_back (mi);
9748 }
9749
9750 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9751    "const" / "volatile".  If so, decrements LEN by the length of the
9752    modifier and return true.  Otherwise return false.  */
9753
9754 template<size_t N>
9755 static bool
9756 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9757 {
9758   size_t mod_len = sizeof (mod) - 1;
9759   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9760     {
9761       len -= mod_len;
9762       return true;
9763     }
9764   return false;
9765 }
9766
9767 /* Compute the physnames of any methods on the CU's method list.
9768
9769    The computation of method physnames is delayed in order to avoid the
9770    (bad) condition that one of the method's formal parameters is of an as yet
9771    incomplete type.  */
9772
9773 static void
9774 compute_delayed_physnames (struct dwarf2_cu *cu)
9775 {
9776   /* Only C++ delays computing physnames.  */
9777   if (cu->method_list.empty ())
9778     return;
9779   gdb_assert (cu->language == language_cplus);
9780
9781   for (const delayed_method_info &mi : cu->method_list)
9782     {
9783       const char *physname;
9784       struct fn_fieldlist *fn_flp
9785         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9786       physname = dwarf2_physname (mi.name, mi.die, cu);
9787       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9788         = physname ? physname : "";
9789
9790       /* Since there's no tag to indicate whether a method is a
9791          const/volatile overload, extract that information out of the
9792          demangled name.  */
9793       if (physname != NULL)
9794         {
9795           size_t len = strlen (physname);
9796
9797           while (1)
9798             {
9799               if (physname[len] == ')') /* shortcut */
9800                 break;
9801               else if (check_modifier (physname, len, " const"))
9802                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9803               else if (check_modifier (physname, len, " volatile"))
9804                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9805               else
9806                 break;
9807             }
9808         }
9809     }
9810
9811   /* The list is no longer needed.  */
9812   cu->method_list.clear ();
9813 }
9814
9815 /* Go objects should be embedded in a DW_TAG_module DIE,
9816    and it's not clear if/how imported objects will appear.
9817    To keep Go support simple until that's worked out,
9818    go back through what we've read and create something usable.
9819    We could do this while processing each DIE, and feels kinda cleaner,
9820    but that way is more invasive.
9821    This is to, for example, allow the user to type "p var" or "b main"
9822    without having to specify the package name, and allow lookups
9823    of module.object to work in contexts that use the expression
9824    parser.  */
9825
9826 static void
9827 fixup_go_packaging (struct dwarf2_cu *cu)
9828 {
9829   char *package_name = NULL;
9830   struct pending *list;
9831   int i;
9832
9833   for (list = *cu->get_builder ()->get_global_symbols ();
9834        list != NULL;
9835        list = list->next)
9836     {
9837       for (i = 0; i < list->nsyms; ++i)
9838         {
9839           struct symbol *sym = list->symbol[i];
9840
9841           if (SYMBOL_LANGUAGE (sym) == language_go
9842               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9843             {
9844               char *this_package_name = go_symbol_package_name (sym);
9845
9846               if (this_package_name == NULL)
9847                 continue;
9848               if (package_name == NULL)
9849                 package_name = this_package_name;
9850               else
9851                 {
9852                   struct objfile *objfile
9853                     = cu->per_cu->dwarf2_per_objfile->objfile;
9854                   if (strcmp (package_name, this_package_name) != 0)
9855                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9856                                (symbol_symtab (sym) != NULL
9857                                 ? symtab_to_filename_for_display
9858                                     (symbol_symtab (sym))
9859                                 : objfile_name (objfile)),
9860                                this_package_name, package_name);
9861                   xfree (this_package_name);
9862                 }
9863             }
9864         }
9865     }
9866
9867   if (package_name != NULL)
9868     {
9869       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9870       const char *saved_package_name
9871         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9872                                         package_name,
9873                                         strlen (package_name));
9874       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9875                                      saved_package_name);
9876       struct symbol *sym;
9877
9878       sym = allocate_symbol (objfile);
9879       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9880       SYMBOL_SET_NAMES (sym, saved_package_name,
9881                         strlen (saved_package_name), 0, objfile);
9882       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9883          e.g., "main" finds the "main" module and not C's main().  */
9884       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9885       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9886       SYMBOL_TYPE (sym) = type;
9887
9888       add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9889
9890       xfree (package_name);
9891     }
9892 }
9893
9894 /* Allocate a fully-qualified name consisting of the two parts on the
9895    obstack.  */
9896
9897 static const char *
9898 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9899 {
9900   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9901 }
9902
9903 /* A helper that allocates a struct discriminant_info to attach to a
9904    union type.  */
9905
9906 static struct discriminant_info *
9907 alloc_discriminant_info (struct type *type, int discriminant_index,
9908                          int default_index)
9909 {
9910   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9911   gdb_assert (discriminant_index == -1
9912               || (discriminant_index >= 0
9913                   && discriminant_index < TYPE_NFIELDS (type)));
9914   gdb_assert (default_index == -1
9915               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9916
9917   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9918
9919   struct discriminant_info *disc
9920     = ((struct discriminant_info *)
9921        TYPE_ZALLOC (type,
9922                     offsetof (struct discriminant_info, discriminants)
9923                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9924   disc->default_index = default_index;
9925   disc->discriminant_index = discriminant_index;
9926
9927   struct dynamic_prop prop;
9928   prop.kind = PROP_UNDEFINED;
9929   prop.data.baton = disc;
9930
9931   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9932
9933   return disc;
9934 }
9935
9936 /* Some versions of rustc emitted enums in an unusual way.
9937
9938    Ordinary enums were emitted as unions.  The first element of each
9939    structure in the union was named "RUST$ENUM$DISR".  This element
9940    held the discriminant.
9941
9942    These versions of Rust also implemented the "non-zero"
9943    optimization.  When the enum had two values, and one is empty and
9944    the other holds a pointer that cannot be zero, the pointer is used
9945    as the discriminant, with a zero value meaning the empty variant.
9946    Here, the union's first member is of the form
9947    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9948    where the fieldnos are the indices of the fields that should be
9949    traversed in order to find the field (which may be several fields deep)
9950    and the variantname is the name of the variant of the case when the
9951    field is zero.
9952
9953    This function recognizes whether TYPE is of one of these forms,
9954    and, if so, smashes it to be a variant type.  */
9955
9956 static void
9957 quirk_rust_enum (struct type *type, struct objfile *objfile)
9958 {
9959   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9960
9961   /* We don't need to deal with empty enums.  */
9962   if (TYPE_NFIELDS (type) == 0)
9963     return;
9964
9965 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9966   if (TYPE_NFIELDS (type) == 1
9967       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9968     {
9969       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9970
9971       /* Decode the field name to find the offset of the
9972          discriminant.  */
9973       ULONGEST bit_offset = 0;
9974       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9975       while (name[0] >= '0' && name[0] <= '9')
9976         {
9977           char *tail;
9978           unsigned long index = strtoul (name, &tail, 10);
9979           name = tail;
9980           if (*name != '$'
9981               || index >= TYPE_NFIELDS (field_type)
9982               || (TYPE_FIELD_LOC_KIND (field_type, index)
9983                   != FIELD_LOC_KIND_BITPOS))
9984             {
9985               complaint (_("Could not parse Rust enum encoding string \"%s\""
9986                            "[in module %s]"),
9987                          TYPE_FIELD_NAME (type, 0),
9988                          objfile_name (objfile));
9989               return;
9990             }
9991           ++name;
9992
9993           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9994           field_type = TYPE_FIELD_TYPE (field_type, index);
9995         }
9996
9997       /* Make a union to hold the variants.  */
9998       struct type *union_type = alloc_type (objfile);
9999       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10000       TYPE_NFIELDS (union_type) = 3;
10001       TYPE_FIELDS (union_type)
10002         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
10003       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10004       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10005
10006       /* Put the discriminant must at index 0.  */
10007       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10008       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10009       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10010       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10011
10012       /* The order of fields doesn't really matter, so put the real
10013          field at index 1 and the data-less field at index 2.  */
10014       struct discriminant_info *disc
10015         = alloc_discriminant_info (union_type, 0, 1);
10016       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10017       TYPE_FIELD_NAME (union_type, 1)
10018         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10019       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10020         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10021                               TYPE_FIELD_NAME (union_type, 1));
10022
10023       const char *dataless_name
10024         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10025                               name);
10026       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10027                                               dataless_name);
10028       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10029       /* NAME points into the original discriminant name, which
10030          already has the correct lifetime.  */
10031       TYPE_FIELD_NAME (union_type, 2) = name;
10032       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10033       disc->discriminants[2] = 0;
10034
10035       /* Smash this type to be a structure type.  We have to do this
10036          because the type has already been recorded.  */
10037       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10038       TYPE_NFIELDS (type) = 1;
10039       TYPE_FIELDS (type)
10040         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10041
10042       /* Install the variant part.  */
10043       TYPE_FIELD_TYPE (type, 0) = union_type;
10044       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10045       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10046     }
10047   else if (TYPE_NFIELDS (type) == 1)
10048     {
10049       /* We assume that a union with a single field is a univariant
10050          enum.  */
10051       /* Smash this type to be a structure type.  We have to do this
10052          because the type has already been recorded.  */
10053       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10054
10055       /* Make a union to hold the variants.  */
10056       struct type *union_type = alloc_type (objfile);
10057       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10058       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10059       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10060       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10061       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10062
10063       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10064       const char *variant_name
10065         = rust_last_path_segment (TYPE_NAME (field_type));
10066       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10067       TYPE_NAME (field_type)
10068         = rust_fully_qualify (&objfile->objfile_obstack,
10069                               TYPE_NAME (type), variant_name);
10070
10071       /* Install the union in the outer struct type.  */
10072       TYPE_NFIELDS (type) = 1;
10073       TYPE_FIELDS (type)
10074         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10075       TYPE_FIELD_TYPE (type, 0) = union_type;
10076       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10077       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10078
10079       alloc_discriminant_info (union_type, -1, 0);
10080     }
10081   else
10082     {
10083       struct type *disr_type = nullptr;
10084       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10085         {
10086           disr_type = TYPE_FIELD_TYPE (type, i);
10087
10088           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10089             {
10090               /* All fields of a true enum will be structs.  */
10091               return;
10092             }
10093           else if (TYPE_NFIELDS (disr_type) == 0)
10094             {
10095               /* Could be data-less variant, so keep going.  */
10096               disr_type = nullptr;
10097             }
10098           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10099                            "RUST$ENUM$DISR") != 0)
10100             {
10101               /* Not a Rust enum.  */
10102               return;
10103             }
10104           else
10105             {
10106               /* Found one.  */
10107               break;
10108             }
10109         }
10110
10111       /* If we got here without a discriminant, then it's probably
10112          just a union.  */
10113       if (disr_type == nullptr)
10114         return;
10115
10116       /* Smash this type to be a structure type.  We have to do this
10117          because the type has already been recorded.  */
10118       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10119
10120       /* Make a union to hold the variants.  */
10121       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10122       struct type *union_type = alloc_type (objfile);
10123       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10124       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10125       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10126       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10127       TYPE_FIELDS (union_type)
10128         = (struct field *) TYPE_ZALLOC (union_type,
10129                                         (TYPE_NFIELDS (union_type)
10130                                          * sizeof (struct field)));
10131
10132       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10133               TYPE_NFIELDS (type) * sizeof (struct field));
10134
10135       /* Install the discriminant at index 0 in the union.  */
10136       TYPE_FIELD (union_type, 0) = *disr_field;
10137       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10138       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10139
10140       /* Install the union in the outer struct type.  */
10141       TYPE_FIELD_TYPE (type, 0) = union_type;
10142       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10143       TYPE_NFIELDS (type) = 1;
10144
10145       /* Set the size and offset of the union type.  */
10146       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10147
10148       /* We need a way to find the correct discriminant given a
10149          variant name.  For convenience we build a map here.  */
10150       struct type *enum_type = FIELD_TYPE (*disr_field);
10151       std::unordered_map<std::string, ULONGEST> discriminant_map;
10152       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10153         {
10154           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10155             {
10156               const char *name
10157                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10158               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10159             }
10160         }
10161
10162       int n_fields = TYPE_NFIELDS (union_type);
10163       struct discriminant_info *disc
10164         = alloc_discriminant_info (union_type, 0, -1);
10165       /* Skip the discriminant here.  */
10166       for (int i = 1; i < n_fields; ++i)
10167         {
10168           /* Find the final word in the name of this variant's type.
10169              That name can be used to look up the correct
10170              discriminant.  */
10171           const char *variant_name
10172             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10173                                                                   i)));
10174
10175           auto iter = discriminant_map.find (variant_name);
10176           if (iter != discriminant_map.end ())
10177             disc->discriminants[i] = iter->second;
10178
10179           /* Remove the discriminant field, if it exists.  */
10180           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10181           if (TYPE_NFIELDS (sub_type) > 0)
10182             {
10183               --TYPE_NFIELDS (sub_type);
10184               ++TYPE_FIELDS (sub_type);
10185             }
10186           TYPE_FIELD_NAME (union_type, i) = variant_name;
10187           TYPE_NAME (sub_type)
10188             = rust_fully_qualify (&objfile->objfile_obstack,
10189                                   TYPE_NAME (type), variant_name);
10190         }
10191     }
10192 }
10193
10194 /* Rewrite some Rust unions to be structures with variants parts.  */
10195
10196 static void
10197 rust_union_quirks (struct dwarf2_cu *cu)
10198 {
10199   gdb_assert (cu->language == language_rust);
10200   for (type *type_ : cu->rust_unions)
10201     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10202   /* We don't need this any more.  */
10203   cu->rust_unions.clear ();
10204 }
10205
10206 /* Return the symtab for PER_CU.  This works properly regardless of
10207    whether we're using the index or psymtabs.  */
10208
10209 static struct compunit_symtab *
10210 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10211 {
10212   return (per_cu->dwarf2_per_objfile->using_index
10213           ? per_cu->v.quick->compunit_symtab
10214           : per_cu->v.psymtab->compunit_symtab);
10215 }
10216
10217 /* A helper function for computing the list of all symbol tables
10218    included by PER_CU.  */
10219
10220 static void
10221 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
10222                                 htab_t all_children, htab_t all_type_symtabs,
10223                                 struct dwarf2_per_cu_data *per_cu,
10224                                 struct compunit_symtab *immediate_parent)
10225 {
10226   void **slot;
10227   int ix;
10228   struct compunit_symtab *cust;
10229   struct dwarf2_per_cu_data *iter;
10230
10231   slot = htab_find_slot (all_children, per_cu, INSERT);
10232   if (*slot != NULL)
10233     {
10234       /* This inclusion and its children have been processed.  */
10235       return;
10236     }
10237
10238   *slot = per_cu;
10239   /* Only add a CU if it has a symbol table.  */
10240   cust = get_compunit_symtab (per_cu);
10241   if (cust != NULL)
10242     {
10243       /* If this is a type unit only add its symbol table if we haven't
10244          seen it yet (type unit per_cu's can share symtabs).  */
10245       if (per_cu->is_debug_types)
10246         {
10247           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10248           if (*slot == NULL)
10249             {
10250               *slot = cust;
10251               result->push_back (cust);
10252               if (cust->user == NULL)
10253                 cust->user = immediate_parent;
10254             }
10255         }
10256       else
10257         {
10258           result->push_back (cust);
10259           if (cust->user == NULL)
10260             cust->user = immediate_parent;
10261         }
10262     }
10263
10264   for (ix = 0;
10265        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10266        ++ix)
10267     {
10268       recursively_compute_inclusions (result, all_children,
10269                                       all_type_symtabs, iter, cust);
10270     }
10271 }
10272
10273 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10274    PER_CU.  */
10275
10276 static void
10277 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10278 {
10279   gdb_assert (! per_cu->is_debug_types);
10280
10281   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10282     {
10283       int ix, len;
10284       struct dwarf2_per_cu_data *per_cu_iter;
10285       std::vector<compunit_symtab *> result_symtabs;
10286       htab_t all_children, all_type_symtabs;
10287       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10288
10289       /* If we don't have a symtab, we can just skip this case.  */
10290       if (cust == NULL)
10291         return;
10292
10293       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10294                                         NULL, xcalloc, xfree);
10295       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10296                                             NULL, xcalloc, xfree);
10297
10298       for (ix = 0;
10299            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10300                         ix, per_cu_iter);
10301            ++ix)
10302         {
10303           recursively_compute_inclusions (&result_symtabs, all_children,
10304                                           all_type_symtabs, per_cu_iter,
10305                                           cust);
10306         }
10307
10308       /* Now we have a transitive closure of all the included symtabs.  */
10309       len = result_symtabs.size ();
10310       cust->includes
10311         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10312                      struct compunit_symtab *, len + 1);
10313       memcpy (cust->includes, result_symtabs.data (),
10314               len * sizeof (compunit_symtab *));
10315       cust->includes[len] = NULL;
10316
10317       htab_delete (all_children);
10318       htab_delete (all_type_symtabs);
10319     }
10320 }
10321
10322 /* Compute the 'includes' field for the symtabs of all the CUs we just
10323    read.  */
10324
10325 static void
10326 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10327 {
10328   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10329     {
10330       if (! iter->is_debug_types)
10331         compute_compunit_symtab_includes (iter);
10332     }
10333
10334   dwarf2_per_objfile->just_read_cus.clear ();
10335 }
10336
10337 /* Generate full symbol information for PER_CU, whose DIEs have
10338    already been loaded into memory.  */
10339
10340 static void
10341 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10342                         enum language pretend_language)
10343 {
10344   struct dwarf2_cu *cu = per_cu->cu;
10345   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10346   struct objfile *objfile = dwarf2_per_objfile->objfile;
10347   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10348   CORE_ADDR lowpc, highpc;
10349   struct compunit_symtab *cust;
10350   CORE_ADDR baseaddr;
10351   struct block *static_block;
10352   CORE_ADDR addr;
10353
10354   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10355
10356   /* Clear the list here in case something was left over.  */
10357   cu->method_list.clear ();
10358
10359   cu->language = pretend_language;
10360   cu->language_defn = language_def (cu->language);
10361
10362   /* Do line number decoding in read_file_scope () */
10363   process_die (cu->dies, cu);
10364
10365   /* For now fudge the Go package.  */
10366   if (cu->language == language_go)
10367     fixup_go_packaging (cu);
10368
10369   /* Now that we have processed all the DIEs in the CU, all the types 
10370      should be complete, and it should now be safe to compute all of the
10371      physnames.  */
10372   compute_delayed_physnames (cu);
10373
10374   if (cu->language == language_rust)
10375     rust_union_quirks (cu);
10376
10377   /* Some compilers don't define a DW_AT_high_pc attribute for the
10378      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10379      it, by scanning the DIE's below the compilation unit.  */
10380   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10381
10382   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10383   static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
10384
10385   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10386      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10387      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10388      addrmap to help ensure it has an accurate map of pc values belonging to
10389      this comp unit.  */
10390   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10391
10392   cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10393                                                     SECT_OFF_TEXT (objfile),
10394                                                     0);
10395
10396   if (cust != NULL)
10397     {
10398       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10399
10400       /* Set symtab language to language from DW_AT_language.  If the
10401          compilation is from a C file generated by language preprocessors, do
10402          not set the language if it was already deduced by start_subfile.  */
10403       if (!(cu->language == language_c
10404             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10405         COMPUNIT_FILETABS (cust)->language = cu->language;
10406
10407       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10408          produce DW_AT_location with location lists but it can be possibly
10409          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10410          there were bugs in prologue debug info, fixed later in GCC-4.5
10411          by "unwind info for epilogues" patch (which is not directly related).
10412
10413          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10414          needed, it would be wrong due to missing DW_AT_producer there.
10415
10416          Still one can confuse GDB by using non-standard GCC compilation
10417          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10418          */ 
10419       if (cu->has_loclist && gcc_4_minor >= 5)
10420         cust->locations_valid = 1;
10421
10422       if (gcc_4_minor >= 5)
10423         cust->epilogue_unwind_valid = 1;
10424
10425       cust->call_site_htab = cu->call_site_htab;
10426     }
10427
10428   if (dwarf2_per_objfile->using_index)
10429     per_cu->v.quick->compunit_symtab = cust;
10430   else
10431     {
10432       struct partial_symtab *pst = per_cu->v.psymtab;
10433       pst->compunit_symtab = cust;
10434       pst->readin = 1;
10435     }
10436
10437   /* Push it for inclusion processing later.  */
10438   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10439
10440   /* Not needed any more.  */
10441   cu->reset_builder ();
10442 }
10443
10444 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10445    already been loaded into memory.  */
10446
10447 static void
10448 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10449                         enum language pretend_language)
10450 {
10451   struct dwarf2_cu *cu = per_cu->cu;
10452   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10453   struct objfile *objfile = dwarf2_per_objfile->objfile;
10454   struct compunit_symtab *cust;
10455   struct signatured_type *sig_type;
10456
10457   gdb_assert (per_cu->is_debug_types);
10458   sig_type = (struct signatured_type *) per_cu;
10459
10460   /* Clear the list here in case something was left over.  */
10461   cu->method_list.clear ();
10462
10463   cu->language = pretend_language;
10464   cu->language_defn = language_def (cu->language);
10465
10466   /* The symbol tables are set up in read_type_unit_scope.  */
10467   process_die (cu->dies, cu);
10468
10469   /* For now fudge the Go package.  */
10470   if (cu->language == language_go)
10471     fixup_go_packaging (cu);
10472
10473   /* Now that we have processed all the DIEs in the CU, all the types 
10474      should be complete, and it should now be safe to compute all of the
10475      physnames.  */
10476   compute_delayed_physnames (cu);
10477
10478   if (cu->language == language_rust)
10479     rust_union_quirks (cu);
10480
10481   /* TUs share symbol tables.
10482      If this is the first TU to use this symtab, complete the construction
10483      of it with end_expandable_symtab.  Otherwise, complete the addition of
10484      this TU's symbols to the existing symtab.  */
10485   if (sig_type->type_unit_group->compunit_symtab == NULL)
10486     {
10487       buildsym_compunit *builder = cu->get_builder ();
10488       cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10489       sig_type->type_unit_group->compunit_symtab = cust;
10490
10491       if (cust != NULL)
10492         {
10493           /* Set symtab language to language from DW_AT_language.  If the
10494              compilation is from a C file generated by language preprocessors,
10495              do not set the language if it was already deduced by
10496              start_subfile.  */
10497           if (!(cu->language == language_c
10498                 && COMPUNIT_FILETABS (cust)->language != language_c))
10499             COMPUNIT_FILETABS (cust)->language = cu->language;
10500         }
10501     }
10502   else
10503     {
10504       cu->get_builder ()->augment_type_symtab ();
10505       cust = sig_type->type_unit_group->compunit_symtab;
10506     }
10507
10508   if (dwarf2_per_objfile->using_index)
10509     per_cu->v.quick->compunit_symtab = cust;
10510   else
10511     {
10512       struct partial_symtab *pst = per_cu->v.psymtab;
10513       pst->compunit_symtab = cust;
10514       pst->readin = 1;
10515     }
10516
10517   /* Not needed any more.  */
10518   cu->reset_builder ();
10519 }
10520
10521 /* Process an imported unit DIE.  */
10522
10523 static void
10524 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10525 {
10526   struct attribute *attr;
10527
10528   /* For now we don't handle imported units in type units.  */
10529   if (cu->per_cu->is_debug_types)
10530     {
10531       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10532                " supported in type units [in module %s]"),
10533              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10534     }
10535
10536   attr = dwarf2_attr (die, DW_AT_import, cu);
10537   if (attr != NULL)
10538     {
10539       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10540       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10541       dwarf2_per_cu_data *per_cu
10542         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10543                                             cu->per_cu->dwarf2_per_objfile);
10544
10545       /* If necessary, add it to the queue and load its DIEs.  */
10546       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10547         load_full_comp_unit (per_cu, false, cu->language);
10548
10549       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10550                      per_cu);
10551     }
10552 }
10553
10554 /* RAII object that represents a process_die scope: i.e.,
10555    starts/finishes processing a DIE.  */
10556 class process_die_scope
10557 {
10558 public:
10559   process_die_scope (die_info *die, dwarf2_cu *cu)
10560     : m_die (die), m_cu (cu)
10561   {
10562     /* We should only be processing DIEs not already in process.  */
10563     gdb_assert (!m_die->in_process);
10564     m_die->in_process = true;
10565   }
10566
10567   ~process_die_scope ()
10568   {
10569     m_die->in_process = false;
10570
10571     /* If we're done processing the DIE for the CU that owns the line
10572        header, we don't need the line header anymore.  */
10573     if (m_cu->line_header_die_owner == m_die)
10574       {
10575         delete m_cu->line_header;
10576         m_cu->line_header = NULL;
10577         m_cu->line_header_die_owner = NULL;
10578       }
10579   }
10580
10581 private:
10582   die_info *m_die;
10583   dwarf2_cu *m_cu;
10584 };
10585
10586 /* Process a die and its children.  */
10587
10588 static void
10589 process_die (struct die_info *die, struct dwarf2_cu *cu)
10590 {
10591   process_die_scope scope (die, cu);
10592
10593   switch (die->tag)
10594     {
10595     case DW_TAG_padding:
10596       break;
10597     case DW_TAG_compile_unit:
10598     case DW_TAG_partial_unit:
10599       read_file_scope (die, cu);
10600       break;
10601     case DW_TAG_type_unit:
10602       read_type_unit_scope (die, cu);
10603       break;
10604     case DW_TAG_subprogram:
10605     case DW_TAG_inlined_subroutine:
10606       read_func_scope (die, cu);
10607       break;
10608     case DW_TAG_lexical_block:
10609     case DW_TAG_try_block:
10610     case DW_TAG_catch_block:
10611       read_lexical_block_scope (die, cu);
10612       break;
10613     case DW_TAG_call_site:
10614     case DW_TAG_GNU_call_site:
10615       read_call_site_scope (die, cu);
10616       break;
10617     case DW_TAG_class_type:
10618     case DW_TAG_interface_type:
10619     case DW_TAG_structure_type:
10620     case DW_TAG_union_type:
10621       process_structure_scope (die, cu);
10622       break;
10623     case DW_TAG_enumeration_type:
10624       process_enumeration_scope (die, cu);
10625       break;
10626
10627     /* These dies have a type, but processing them does not create
10628        a symbol or recurse to process the children.  Therefore we can
10629        read them on-demand through read_type_die.  */
10630     case DW_TAG_subroutine_type:
10631     case DW_TAG_set_type:
10632     case DW_TAG_array_type:
10633     case DW_TAG_pointer_type:
10634     case DW_TAG_ptr_to_member_type:
10635     case DW_TAG_reference_type:
10636     case DW_TAG_rvalue_reference_type:
10637     case DW_TAG_string_type:
10638       break;
10639
10640     case DW_TAG_base_type:
10641     case DW_TAG_subrange_type:
10642     case DW_TAG_typedef:
10643       /* Add a typedef symbol for the type definition, if it has a
10644          DW_AT_name.  */
10645       new_symbol (die, read_type_die (die, cu), cu);
10646       break;
10647     case DW_TAG_common_block:
10648       read_common_block (die, cu);
10649       break;
10650     case DW_TAG_common_inclusion:
10651       break;
10652     case DW_TAG_namespace:
10653       cu->processing_has_namespace_info = true;
10654       read_namespace (die, cu);
10655       break;
10656     case DW_TAG_module:
10657       cu->processing_has_namespace_info = true;
10658       read_module (die, cu);
10659       break;
10660     case DW_TAG_imported_declaration:
10661       cu->processing_has_namespace_info = true;
10662       if (read_namespace_alias (die, cu))
10663         break;
10664       /* The declaration is not a global namespace alias.  */
10665       /* Fall through.  */
10666     case DW_TAG_imported_module:
10667       cu->processing_has_namespace_info = true;
10668       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10669                                  || cu->language != language_fortran))
10670         complaint (_("Tag '%s' has unexpected children"),
10671                    dwarf_tag_name (die->tag));
10672       read_import_statement (die, cu);
10673       break;
10674
10675     case DW_TAG_imported_unit:
10676       process_imported_unit_die (die, cu);
10677       break;
10678
10679     case DW_TAG_variable:
10680       read_variable (die, cu);
10681       break;
10682
10683     default:
10684       new_symbol (die, NULL, cu);
10685       break;
10686     }
10687 }
10688 \f
10689 /* DWARF name computation.  */
10690
10691 /* A helper function for dwarf2_compute_name which determines whether DIE
10692    needs to have the name of the scope prepended to the name listed in the
10693    die.  */
10694
10695 static int
10696 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10697 {
10698   struct attribute *attr;
10699
10700   switch (die->tag)
10701     {
10702     case DW_TAG_namespace:
10703     case DW_TAG_typedef:
10704     case DW_TAG_class_type:
10705     case DW_TAG_interface_type:
10706     case DW_TAG_structure_type:
10707     case DW_TAG_union_type:
10708     case DW_TAG_enumeration_type:
10709     case DW_TAG_enumerator:
10710     case DW_TAG_subprogram:
10711     case DW_TAG_inlined_subroutine:
10712     case DW_TAG_member:
10713     case DW_TAG_imported_declaration:
10714       return 1;
10715
10716     case DW_TAG_variable:
10717     case DW_TAG_constant:
10718       /* We only need to prefix "globally" visible variables.  These include
10719          any variable marked with DW_AT_external or any variable that
10720          lives in a namespace.  [Variables in anonymous namespaces
10721          require prefixing, but they are not DW_AT_external.]  */
10722
10723       if (dwarf2_attr (die, DW_AT_specification, cu))
10724         {
10725           struct dwarf2_cu *spec_cu = cu;
10726
10727           return die_needs_namespace (die_specification (die, &spec_cu),
10728                                       spec_cu);
10729         }
10730
10731       attr = dwarf2_attr (die, DW_AT_external, cu);
10732       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10733           && die->parent->tag != DW_TAG_module)
10734         return 0;
10735       /* A variable in a lexical block of some kind does not need a
10736          namespace, even though in C++ such variables may be external
10737          and have a mangled name.  */
10738       if (die->parent->tag ==  DW_TAG_lexical_block
10739           || die->parent->tag ==  DW_TAG_try_block
10740           || die->parent->tag ==  DW_TAG_catch_block
10741           || die->parent->tag == DW_TAG_subprogram)
10742         return 0;
10743       return 1;
10744
10745     default:
10746       return 0;
10747     }
10748 }
10749
10750 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10751    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10752    defined for the given DIE.  */
10753
10754 static struct attribute *
10755 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10756 {
10757   struct attribute *attr;
10758
10759   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10760   if (attr == NULL)
10761     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10762
10763   return attr;
10764 }
10765
10766 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10767    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10768    defined for the given DIE.  */
10769
10770 static const char *
10771 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10772 {
10773   const char *linkage_name;
10774
10775   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10776   if (linkage_name == NULL)
10777     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10778
10779   return linkage_name;
10780 }
10781
10782 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10783    compute the physname for the object, which include a method's:
10784    - formal parameters (C++),
10785    - receiver type (Go),
10786
10787    The term "physname" is a bit confusing.
10788    For C++, for example, it is the demangled name.
10789    For Go, for example, it's the mangled name.
10790
10791    For Ada, return the DIE's linkage name rather than the fully qualified
10792    name.  PHYSNAME is ignored..
10793
10794    The result is allocated on the objfile_obstack and canonicalized.  */
10795
10796 static const char *
10797 dwarf2_compute_name (const char *name,
10798                      struct die_info *die, struct dwarf2_cu *cu,
10799                      int physname)
10800 {
10801   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10802
10803   if (name == NULL)
10804     name = dwarf2_name (die, cu);
10805
10806   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10807      but otherwise compute it by typename_concat inside GDB.
10808      FIXME: Actually this is not really true, or at least not always true.
10809      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10810      Fortran names because there is no mangling standard.  So new_symbol
10811      will set the demangled name to the result of dwarf2_full_name, and it is
10812      the demangled name that GDB uses if it exists.  */
10813   if (cu->language == language_ada
10814       || (cu->language == language_fortran && physname))
10815     {
10816       /* For Ada unit, we prefer the linkage name over the name, as
10817          the former contains the exported name, which the user expects
10818          to be able to reference.  Ideally, we want the user to be able
10819          to reference this entity using either natural or linkage name,
10820          but we haven't started looking at this enhancement yet.  */
10821       const char *linkage_name = dw2_linkage_name (die, cu);
10822
10823       if (linkage_name != NULL)
10824         return linkage_name;
10825     }
10826
10827   /* These are the only languages we know how to qualify names in.  */
10828   if (name != NULL
10829       && (cu->language == language_cplus
10830           || cu->language == language_fortran || cu->language == language_d
10831           || cu->language == language_rust))
10832     {
10833       if (die_needs_namespace (die, cu))
10834         {
10835           const char *prefix;
10836           const char *canonical_name = NULL;
10837
10838           string_file buf;
10839
10840           prefix = determine_prefix (die, cu);
10841           if (*prefix != '\0')
10842             {
10843               char *prefixed_name = typename_concat (NULL, prefix, name,
10844                                                      physname, cu);
10845
10846               buf.puts (prefixed_name);
10847               xfree (prefixed_name);
10848             }
10849           else
10850             buf.puts (name);
10851
10852           /* Template parameters may be specified in the DIE's DW_AT_name, or
10853              as children with DW_TAG_template_type_param or
10854              DW_TAG_value_type_param.  If the latter, add them to the name
10855              here.  If the name already has template parameters, then
10856              skip this step; some versions of GCC emit both, and
10857              it is more efficient to use the pre-computed name.
10858
10859              Something to keep in mind about this process: it is very
10860              unlikely, or in some cases downright impossible, to produce
10861              something that will match the mangled name of a function.
10862              If the definition of the function has the same debug info,
10863              we should be able to match up with it anyway.  But fallbacks
10864              using the minimal symbol, for instance to find a method
10865              implemented in a stripped copy of libstdc++, will not work.
10866              If we do not have debug info for the definition, we will have to
10867              match them up some other way.
10868
10869              When we do name matching there is a related problem with function
10870              templates; two instantiated function templates are allowed to
10871              differ only by their return types, which we do not add here.  */
10872
10873           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10874             {
10875               struct attribute *attr;
10876               struct die_info *child;
10877               int first = 1;
10878
10879               die->building_fullname = 1;
10880
10881               for (child = die->child; child != NULL; child = child->sibling)
10882                 {
10883                   struct type *type;
10884                   LONGEST value;
10885                   const gdb_byte *bytes;
10886                   struct dwarf2_locexpr_baton *baton;
10887                   struct value *v;
10888
10889                   if (child->tag != DW_TAG_template_type_param
10890                       && child->tag != DW_TAG_template_value_param)
10891                     continue;
10892
10893                   if (first)
10894                     {
10895                       buf.puts ("<");
10896                       first = 0;
10897                     }
10898                   else
10899                     buf.puts (", ");
10900
10901                   attr = dwarf2_attr (child, DW_AT_type, cu);
10902                   if (attr == NULL)
10903                     {
10904                       complaint (_("template parameter missing DW_AT_type"));
10905                       buf.puts ("UNKNOWN_TYPE");
10906                       continue;
10907                     }
10908                   type = die_type (child, cu);
10909
10910                   if (child->tag == DW_TAG_template_type_param)
10911                     {
10912                       c_print_type (type, "", &buf, -1, 0, cu->language,
10913                                     &type_print_raw_options);
10914                       continue;
10915                     }
10916
10917                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10918                   if (attr == NULL)
10919                     {
10920                       complaint (_("template parameter missing "
10921                                    "DW_AT_const_value"));
10922                       buf.puts ("UNKNOWN_VALUE");
10923                       continue;
10924                     }
10925
10926                   dwarf2_const_value_attr (attr, type, name,
10927                                            &cu->comp_unit_obstack, cu,
10928                                            &value, &bytes, &baton);
10929
10930                   if (TYPE_NOSIGN (type))
10931                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10932                        changed, this can use value_print instead.  */
10933                     c_printchar (value, type, &buf);
10934                   else
10935                     {
10936                       struct value_print_options opts;
10937
10938                       if (baton != NULL)
10939                         v = dwarf2_evaluate_loc_desc (type, NULL,
10940                                                       baton->data,
10941                                                       baton->size,
10942                                                       baton->per_cu);
10943                       else if (bytes != NULL)
10944                         {
10945                           v = allocate_value (type);
10946                           memcpy (value_contents_writeable (v), bytes,
10947                                   TYPE_LENGTH (type));
10948                         }
10949                       else
10950                         v = value_from_longest (type, value);
10951
10952                       /* Specify decimal so that we do not depend on
10953                          the radix.  */
10954                       get_formatted_print_options (&opts, 'd');
10955                       opts.raw = 1;
10956                       value_print (v, &buf, &opts);
10957                       release_value (v);
10958                     }
10959                 }
10960
10961               die->building_fullname = 0;
10962
10963               if (!first)
10964                 {
10965                   /* Close the argument list, with a space if necessary
10966                      (nested templates).  */
10967                   if (!buf.empty () && buf.string ().back () == '>')
10968                     buf.puts (" >");
10969                   else
10970                     buf.puts (">");
10971                 }
10972             }
10973
10974           /* For C++ methods, append formal parameter type
10975              information, if PHYSNAME.  */
10976
10977           if (physname && die->tag == DW_TAG_subprogram
10978               && cu->language == language_cplus)
10979             {
10980               struct type *type = read_type_die (die, cu);
10981
10982               c_type_print_args (type, &buf, 1, cu->language,
10983                                  &type_print_raw_options);
10984
10985               if (cu->language == language_cplus)
10986                 {
10987                   /* Assume that an artificial first parameter is
10988                      "this", but do not crash if it is not.  RealView
10989                      marks unnamed (and thus unused) parameters as
10990                      artificial; there is no way to differentiate
10991                      the two cases.  */
10992                   if (TYPE_NFIELDS (type) > 0
10993                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10994                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10995                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10996                                                                         0))))
10997                     buf.puts (" const");
10998                 }
10999             }
11000
11001           const std::string &intermediate_name = buf.string ();
11002
11003           if (cu->language == language_cplus)
11004             canonical_name
11005               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11006                                           &objfile->per_bfd->storage_obstack);
11007
11008           /* If we only computed INTERMEDIATE_NAME, or if
11009              INTERMEDIATE_NAME is already canonical, then we need to
11010              copy it to the appropriate obstack.  */
11011           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11012             name = ((const char *)
11013                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11014                                    intermediate_name.c_str (),
11015                                    intermediate_name.length ()));
11016           else
11017             name = canonical_name;
11018         }
11019     }
11020
11021   return name;
11022 }
11023
11024 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11025    If scope qualifiers are appropriate they will be added.  The result
11026    will be allocated on the storage_obstack, or NULL if the DIE does
11027    not have a name.  NAME may either be from a previous call to
11028    dwarf2_name or NULL.
11029
11030    The output string will be canonicalized (if C++).  */
11031
11032 static const char *
11033 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11034 {
11035   return dwarf2_compute_name (name, die, cu, 0);
11036 }
11037
11038 /* Construct a physname for the given DIE in CU.  NAME may either be
11039    from a previous call to dwarf2_name or NULL.  The result will be
11040    allocated on the objfile_objstack or NULL if the DIE does not have a
11041    name.
11042
11043    The output string will be canonicalized (if C++).  */
11044
11045 static const char *
11046 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11047 {
11048   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11049   const char *retval, *mangled = NULL, *canon = NULL;
11050   int need_copy = 1;
11051
11052   /* In this case dwarf2_compute_name is just a shortcut not building anything
11053      on its own.  */
11054   if (!die_needs_namespace (die, cu))
11055     return dwarf2_compute_name (name, die, cu, 1);
11056
11057   mangled = dw2_linkage_name (die, cu);
11058
11059   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11060      See https://github.com/rust-lang/rust/issues/32925.  */
11061   if (cu->language == language_rust && mangled != NULL
11062       && strchr (mangled, '{') != NULL)
11063     mangled = NULL;
11064
11065   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11066      has computed.  */
11067   gdb::unique_xmalloc_ptr<char> demangled;
11068   if (mangled != NULL)
11069     {
11070
11071       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11072         {
11073           /* Do nothing (do not demangle the symbol name).  */
11074         }
11075       else if (cu->language == language_go)
11076         {
11077           /* This is a lie, but we already lie to the caller new_symbol.
11078              new_symbol assumes we return the mangled name.
11079              This just undoes that lie until things are cleaned up.  */
11080         }
11081       else
11082         {
11083           /* Use DMGL_RET_DROP for C++ template functions to suppress
11084              their return type.  It is easier for GDB users to search
11085              for such functions as `name(params)' than `long name(params)'.
11086              In such case the minimal symbol names do not match the full
11087              symbol names but for template functions there is never a need
11088              to look up their definition from their declaration so
11089              the only disadvantage remains the minimal symbol variant
11090              `long name(params)' does not have the proper inferior type.  */
11091           demangled.reset (gdb_demangle (mangled,
11092                                          (DMGL_PARAMS | DMGL_ANSI
11093                                           | DMGL_RET_DROP)));
11094         }
11095       if (demangled)
11096         canon = demangled.get ();
11097       else
11098         {
11099           canon = mangled;
11100           need_copy = 0;
11101         }
11102     }
11103
11104   if (canon == NULL || check_physname)
11105     {
11106       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11107
11108       if (canon != NULL && strcmp (physname, canon) != 0)
11109         {
11110           /* It may not mean a bug in GDB.  The compiler could also
11111              compute DW_AT_linkage_name incorrectly.  But in such case
11112              GDB would need to be bug-to-bug compatible.  */
11113
11114           complaint (_("Computed physname <%s> does not match demangled <%s> "
11115                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11116                      physname, canon, mangled, sect_offset_str (die->sect_off),
11117                      objfile_name (objfile));
11118
11119           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11120              is available here - over computed PHYSNAME.  It is safer
11121              against both buggy GDB and buggy compilers.  */
11122
11123           retval = canon;
11124         }
11125       else
11126         {
11127           retval = physname;
11128           need_copy = 0;
11129         }
11130     }
11131   else
11132     retval = canon;
11133
11134   if (need_copy)
11135     retval = ((const char *)
11136               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11137                              retval, strlen (retval)));
11138
11139   return retval;
11140 }
11141
11142 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11143    a new symbol for it.
11144
11145    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11146
11147 static int
11148 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11149 {
11150   struct attribute *attr;
11151
11152   /* If the die does not have a name, this is not a namespace
11153      alias.  */
11154   attr = dwarf2_attr (die, DW_AT_name, cu);
11155   if (attr != NULL)
11156     {
11157       int num;
11158       struct die_info *d = die;
11159       struct dwarf2_cu *imported_cu = cu;
11160
11161       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11162          keep inspecting DIEs until we hit the underlying import.  */
11163 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11164       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11165         {
11166           attr = dwarf2_attr (d, DW_AT_import, cu);
11167           if (attr == NULL)
11168             break;
11169
11170           d = follow_die_ref (d, attr, &imported_cu);
11171           if (d->tag != DW_TAG_imported_declaration)
11172             break;
11173         }
11174
11175       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11176         {
11177           complaint (_("DIE at %s has too many recursively imported "
11178                        "declarations"), sect_offset_str (d->sect_off));
11179           return 0;
11180         }
11181
11182       if (attr != NULL)
11183         {
11184           struct type *type;
11185           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11186
11187           type = get_die_type_at_offset (sect_off, cu->per_cu);
11188           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11189             {
11190               /* This declaration is a global namespace alias.  Add
11191                  a symbol for it whose type is the aliased namespace.  */
11192               new_symbol (die, type, cu);
11193               return 1;
11194             }
11195         }
11196     }
11197
11198   return 0;
11199 }
11200
11201 /* Return the using directives repository (global or local?) to use in the
11202    current context for CU.
11203
11204    For Ada, imported declarations can materialize renamings, which *may* be
11205    global.  However it is impossible (for now?) in DWARF to distinguish
11206    "external" imported declarations and "static" ones.  As all imported
11207    declarations seem to be static in all other languages, make them all CU-wide
11208    global only in Ada.  */
11209
11210 static struct using_direct **
11211 using_directives (struct dwarf2_cu *cu)
11212 {
11213   if (cu->language == language_ada
11214       && cu->get_builder ()->outermost_context_p ())
11215     return cu->get_builder ()->get_global_using_directives ();
11216   else
11217     return cu->get_builder ()->get_local_using_directives ();
11218 }
11219
11220 /* Read the import statement specified by the given die and record it.  */
11221
11222 static void
11223 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11224 {
11225   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11226   struct attribute *import_attr;
11227   struct die_info *imported_die, *child_die;
11228   struct dwarf2_cu *imported_cu;
11229   const char *imported_name;
11230   const char *imported_name_prefix;
11231   const char *canonical_name;
11232   const char *import_alias;
11233   const char *imported_declaration = NULL;
11234   const char *import_prefix;
11235   std::vector<const char *> excludes;
11236
11237   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11238   if (import_attr == NULL)
11239     {
11240       complaint (_("Tag '%s' has no DW_AT_import"),
11241                  dwarf_tag_name (die->tag));
11242       return;
11243     }
11244
11245   imported_cu = cu;
11246   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11247   imported_name = dwarf2_name (imported_die, imported_cu);
11248   if (imported_name == NULL)
11249     {
11250       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11251
11252         The import in the following code:
11253         namespace A
11254           {
11255             typedef int B;
11256           }
11257
11258         int main ()
11259           {
11260             using A::B;
11261             B b;
11262             return b;
11263           }
11264
11265         ...
11266          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11267             <52>   DW_AT_decl_file   : 1
11268             <53>   DW_AT_decl_line   : 6
11269             <54>   DW_AT_import      : <0x75>
11270          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11271             <59>   DW_AT_name        : B
11272             <5b>   DW_AT_decl_file   : 1
11273             <5c>   DW_AT_decl_line   : 2
11274             <5d>   DW_AT_type        : <0x6e>
11275         ...
11276          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11277             <76>   DW_AT_byte_size   : 4
11278             <77>   DW_AT_encoding    : 5        (signed)
11279
11280         imports the wrong die ( 0x75 instead of 0x58 ).
11281         This case will be ignored until the gcc bug is fixed.  */
11282       return;
11283     }
11284
11285   /* Figure out the local name after import.  */
11286   import_alias = dwarf2_name (die, cu);
11287
11288   /* Figure out where the statement is being imported to.  */
11289   import_prefix = determine_prefix (die, cu);
11290
11291   /* Figure out what the scope of the imported die is and prepend it
11292      to the name of the imported die.  */
11293   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11294
11295   if (imported_die->tag != DW_TAG_namespace
11296       && imported_die->tag != DW_TAG_module)
11297     {
11298       imported_declaration = imported_name;
11299       canonical_name = imported_name_prefix;
11300     }
11301   else if (strlen (imported_name_prefix) > 0)
11302     canonical_name = obconcat (&objfile->objfile_obstack,
11303                                imported_name_prefix,
11304                                (cu->language == language_d ? "." : "::"),
11305                                imported_name, (char *) NULL);
11306   else
11307     canonical_name = imported_name;
11308
11309   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11310     for (child_die = die->child; child_die && child_die->tag;
11311          child_die = sibling_die (child_die))
11312       {
11313         /* DWARF-4: A Fortran use statement with a “rename list” may be
11314            represented by an imported module entry with an import attribute
11315            referring to the module and owned entries corresponding to those
11316            entities that are renamed as part of being imported.  */
11317
11318         if (child_die->tag != DW_TAG_imported_declaration)
11319           {
11320             complaint (_("child DW_TAG_imported_declaration expected "
11321                          "- DIE at %s [in module %s]"),
11322                        sect_offset_str (child_die->sect_off),
11323                        objfile_name (objfile));
11324             continue;
11325           }
11326
11327         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11328         if (import_attr == NULL)
11329           {
11330             complaint (_("Tag '%s' has no DW_AT_import"),
11331                        dwarf_tag_name (child_die->tag));
11332             continue;
11333           }
11334
11335         imported_cu = cu;
11336         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11337                                               &imported_cu);
11338         imported_name = dwarf2_name (imported_die, imported_cu);
11339         if (imported_name == NULL)
11340           {
11341             complaint (_("child DW_TAG_imported_declaration has unknown "
11342                          "imported name - DIE at %s [in module %s]"),
11343                        sect_offset_str (child_die->sect_off),
11344                        objfile_name (objfile));
11345             continue;
11346           }
11347
11348         excludes.push_back (imported_name);
11349
11350         process_die (child_die, cu);
11351       }
11352
11353   add_using_directive (using_directives (cu),
11354                        import_prefix,
11355                        canonical_name,
11356                        import_alias,
11357                        imported_declaration,
11358                        excludes,
11359                        0,
11360                        &objfile->objfile_obstack);
11361 }
11362
11363 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11364    types, but gives them a size of zero.  Starting with version 14,
11365    ICC is compatible with GCC.  */
11366
11367 static bool
11368 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11369 {
11370   if (!cu->checked_producer)
11371     check_producer (cu);
11372
11373   return cu->producer_is_icc_lt_14;
11374 }
11375
11376 /* ICC generates a DW_AT_type for C void functions.  This was observed on
11377    ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11378    which says that void functions should not have a DW_AT_type.  */
11379
11380 static bool
11381 producer_is_icc (struct dwarf2_cu *cu)
11382 {
11383   if (!cu->checked_producer)
11384     check_producer (cu);
11385
11386   return cu->producer_is_icc;
11387 }
11388
11389 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11390    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11391    this, it was first present in GCC release 4.3.0.  */
11392
11393 static bool
11394 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11395 {
11396   if (!cu->checked_producer)
11397     check_producer (cu);
11398
11399   return cu->producer_is_gcc_lt_4_3;
11400 }
11401
11402 static file_and_directory
11403 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11404 {
11405   file_and_directory res;
11406
11407   /* Find the filename.  Do not use dwarf2_name here, since the filename
11408      is not a source language identifier.  */
11409   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11410   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11411
11412   if (res.comp_dir == NULL
11413       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11414       && IS_ABSOLUTE_PATH (res.name))
11415     {
11416       res.comp_dir_storage = ldirname (res.name);
11417       if (!res.comp_dir_storage.empty ())
11418         res.comp_dir = res.comp_dir_storage.c_str ();
11419     }
11420   if (res.comp_dir != NULL)
11421     {
11422       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11423          directory, get rid of it.  */
11424       const char *cp = strchr (res.comp_dir, ':');
11425
11426       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11427         res.comp_dir = cp + 1;
11428     }
11429
11430   if (res.name == NULL)
11431     res.name = "<unknown>";
11432
11433   return res;
11434 }
11435
11436 /* Handle DW_AT_stmt_list for a compilation unit.
11437    DIE is the DW_TAG_compile_unit die for CU.
11438    COMP_DIR is the compilation directory.  LOWPC is passed to
11439    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11440
11441 static void
11442 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11443                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11444 {
11445   struct dwarf2_per_objfile *dwarf2_per_objfile
11446     = cu->per_cu->dwarf2_per_objfile;
11447   struct objfile *objfile = dwarf2_per_objfile->objfile;
11448   struct attribute *attr;
11449   struct line_header line_header_local;
11450   hashval_t line_header_local_hash;
11451   void **slot;
11452   int decode_mapping;
11453
11454   gdb_assert (! cu->per_cu->is_debug_types);
11455
11456   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11457   if (attr == NULL)
11458     return;
11459
11460   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11461
11462   /* The line header hash table is only created if needed (it exists to
11463      prevent redundant reading of the line table for partial_units).
11464      If we're given a partial_unit, we'll need it.  If we're given a
11465      compile_unit, then use the line header hash table if it's already
11466      created, but don't create one just yet.  */
11467
11468   if (dwarf2_per_objfile->line_header_hash == NULL
11469       && die->tag == DW_TAG_partial_unit)
11470     {
11471       dwarf2_per_objfile->line_header_hash
11472         = htab_create_alloc_ex (127, line_header_hash_voidp,
11473                                 line_header_eq_voidp,
11474                                 free_line_header_voidp,
11475                                 &objfile->objfile_obstack,
11476                                 hashtab_obstack_allocate,
11477                                 dummy_obstack_deallocate);
11478     }
11479
11480   line_header_local.sect_off = line_offset;
11481   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11482   line_header_local_hash = line_header_hash (&line_header_local);
11483   if (dwarf2_per_objfile->line_header_hash != NULL)
11484     {
11485       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11486                                        &line_header_local,
11487                                        line_header_local_hash, NO_INSERT);
11488
11489       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11490          is not present in *SLOT (since if there is something in *SLOT then
11491          it will be for a partial_unit).  */
11492       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11493         {
11494           gdb_assert (*slot != NULL);
11495           cu->line_header = (struct line_header *) *slot;
11496           return;
11497         }
11498     }
11499
11500   /* dwarf_decode_line_header does not yet provide sufficient information.
11501      We always have to call also dwarf_decode_lines for it.  */
11502   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11503   if (lh == NULL)
11504     return;
11505
11506   cu->line_header = lh.release ();
11507   cu->line_header_die_owner = die;
11508
11509   if (dwarf2_per_objfile->line_header_hash == NULL)
11510     slot = NULL;
11511   else
11512     {
11513       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11514                                        &line_header_local,
11515                                        line_header_local_hash, INSERT);
11516       gdb_assert (slot != NULL);
11517     }
11518   if (slot != NULL && *slot == NULL)
11519     {
11520       /* This newly decoded line number information unit will be owned
11521          by line_header_hash hash table.  */
11522       *slot = cu->line_header;
11523       cu->line_header_die_owner = NULL;
11524     }
11525   else
11526     {
11527       /* We cannot free any current entry in (*slot) as that struct line_header
11528          may be already used by multiple CUs.  Create only temporary decoded
11529          line_header for this CU - it may happen at most once for each line
11530          number information unit.  And if we're not using line_header_hash
11531          then this is what we want as well.  */
11532       gdb_assert (die->tag != DW_TAG_partial_unit);
11533     }
11534   decode_mapping = (die->tag != DW_TAG_partial_unit);
11535   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11536                       decode_mapping);
11537
11538 }
11539
11540 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11541
11542 static void
11543 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11544 {
11545   struct dwarf2_per_objfile *dwarf2_per_objfile
11546     = cu->per_cu->dwarf2_per_objfile;
11547   struct objfile *objfile = dwarf2_per_objfile->objfile;
11548   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11549   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11550   CORE_ADDR highpc = ((CORE_ADDR) 0);
11551   struct attribute *attr;
11552   struct die_info *child_die;
11553   CORE_ADDR baseaddr;
11554
11555   prepare_one_comp_unit (cu, die, cu->language);
11556   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11557
11558   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11559
11560   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11561      from finish_block.  */
11562   if (lowpc == ((CORE_ADDR) -1))
11563     lowpc = highpc;
11564   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11565
11566   file_and_directory fnd = find_file_and_directory (die, cu);
11567
11568   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11569      standardised yet.  As a workaround for the language detection we fall
11570      back to the DW_AT_producer string.  */
11571   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11572     cu->language = language_opencl;
11573
11574   /* Similar hack for Go.  */
11575   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11576     set_cu_language (DW_LANG_Go, cu);
11577
11578   cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11579
11580   /* Decode line number information if present.  We do this before
11581      processing child DIEs, so that the line header table is available
11582      for DW_AT_decl_file.  */
11583   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11584
11585   /* Process all dies in compilation unit.  */
11586   if (die->child != NULL)
11587     {
11588       child_die = die->child;
11589       while (child_die && child_die->tag)
11590         {
11591           process_die (child_die, cu);
11592           child_die = sibling_die (child_die);
11593         }
11594     }
11595
11596   /* Decode macro information, if present.  Dwarf 2 macro information
11597      refers to information in the line number info statement program
11598      header, so we can only read it if we've read the header
11599      successfully.  */
11600   attr = dwarf2_attr (die, DW_AT_macros, cu);
11601   if (attr == NULL)
11602     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11603   if (attr && cu->line_header)
11604     {
11605       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11606         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11607
11608       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11609     }
11610   else
11611     {
11612       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11613       if (attr && cu->line_header)
11614         {
11615           unsigned int macro_offset = DW_UNSND (attr);
11616
11617           dwarf_decode_macros (cu, macro_offset, 0);
11618         }
11619     }
11620 }
11621
11622 void
11623 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11624 {
11625   struct type_unit_group *tu_group;
11626   int first_time;
11627   struct attribute *attr;
11628   unsigned int i;
11629   struct signatured_type *sig_type;
11630
11631   gdb_assert (per_cu->is_debug_types);
11632   sig_type = (struct signatured_type *) per_cu;
11633
11634   attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11635
11636   /* If we're using .gdb_index (includes -readnow) then
11637      per_cu->type_unit_group may not have been set up yet.  */
11638   if (sig_type->type_unit_group == NULL)
11639     sig_type->type_unit_group = get_type_unit_group (this, attr);
11640   tu_group = sig_type->type_unit_group;
11641
11642   /* If we've already processed this stmt_list there's no real need to
11643      do it again, we could fake it and just recreate the part we need
11644      (file name,index -> symtab mapping).  If data shows this optimization
11645      is useful we can do it then.  */
11646   first_time = tu_group->compunit_symtab == NULL;
11647
11648   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11649      debug info.  */
11650   line_header_up lh;
11651   if (attr != NULL)
11652     {
11653       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11654       lh = dwarf_decode_line_header (line_offset, this);
11655     }
11656   if (lh == NULL)
11657     {
11658       if (first_time)
11659         start_symtab ("", NULL, 0);
11660       else
11661         {
11662           gdb_assert (tu_group->symtabs == NULL);
11663           gdb_assert (m_builder == nullptr);
11664           struct compunit_symtab *cust = tu_group->compunit_symtab;
11665           m_builder.reset (new struct buildsym_compunit
11666                            (COMPUNIT_OBJFILE (cust), "",
11667                             COMPUNIT_DIRNAME (cust),
11668                             compunit_language (cust),
11669                             0, cust));
11670         }
11671       return;
11672     }
11673
11674   line_header = lh.release ();
11675   line_header_die_owner = die;
11676
11677   if (first_time)
11678     {
11679       struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11680
11681       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11682          still initializing it, and our caller (a few levels up)
11683          process_full_type_unit still needs to know if this is the first
11684          time.  */
11685
11686       tu_group->num_symtabs = line_header->file_names.size ();
11687       tu_group->symtabs = XNEWVEC (struct symtab *,
11688                                    line_header->file_names.size ());
11689
11690       for (i = 0; i < line_header->file_names.size (); ++i)
11691         {
11692           file_entry &fe = line_header->file_names[i];
11693
11694           dwarf2_start_subfile (this, fe.name,
11695                                 fe.include_dir (line_header));
11696           buildsym_compunit *b = get_builder ();
11697           if (b->get_current_subfile ()->symtab == NULL)
11698             {
11699               /* NOTE: start_subfile will recognize when it's been
11700                  passed a file it has already seen.  So we can't
11701                  assume there's a simple mapping from
11702                  cu->line_header->file_names to subfiles, plus
11703                  cu->line_header->file_names may contain dups.  */
11704               b->get_current_subfile ()->symtab
11705                 = allocate_symtab (cust, b->get_current_subfile ()->name);
11706             }
11707
11708           fe.symtab = b->get_current_subfile ()->symtab;
11709           tu_group->symtabs[i] = fe.symtab;
11710         }
11711     }
11712   else
11713     {
11714       gdb_assert (m_builder == nullptr);
11715       struct compunit_symtab *cust = tu_group->compunit_symtab;
11716       m_builder.reset (new struct buildsym_compunit
11717                        (COMPUNIT_OBJFILE (cust), "",
11718                         COMPUNIT_DIRNAME (cust),
11719                         compunit_language (cust),
11720                         0, cust));
11721
11722       for (i = 0; i < line_header->file_names.size (); ++i)
11723         {
11724           file_entry &fe = line_header->file_names[i];
11725
11726           fe.symtab = tu_group->symtabs[i];
11727         }
11728     }
11729
11730   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11731      so they don't have a "real" (so to speak) symtab anyway.
11732      There is later code that will assign the main symtab to all symbols
11733      that don't have one.  We need to handle the case of a symbol with a
11734      missing symtab (DW_AT_decl_file) anyway.  */
11735 }
11736
11737 /* Process DW_TAG_type_unit.
11738    For TUs we want to skip the first top level sibling if it's not the
11739    actual type being defined by this TU.  In this case the first top
11740    level sibling is there to provide context only.  */
11741
11742 static void
11743 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11744 {
11745   struct die_info *child_die;
11746
11747   prepare_one_comp_unit (cu, die, language_minimal);
11748
11749   /* Initialize (or reinitialize) the machinery for building symtabs.
11750      We do this before processing child DIEs, so that the line header table
11751      is available for DW_AT_decl_file.  */
11752   cu->setup_type_unit_groups (die);
11753
11754   if (die->child != NULL)
11755     {
11756       child_die = die->child;
11757       while (child_die && child_die->tag)
11758         {
11759           process_die (child_die, cu);
11760           child_die = sibling_die (child_die);
11761         }
11762     }
11763 }
11764 \f
11765 /* DWO/DWP files.
11766
11767    http://gcc.gnu.org/wiki/DebugFission
11768    http://gcc.gnu.org/wiki/DebugFissionDWP
11769
11770    To simplify handling of both DWO files ("object" files with the DWARF info)
11771    and DWP files (a file with the DWOs packaged up into one file), we treat
11772    DWP files as having a collection of virtual DWO files.  */
11773
11774 static hashval_t
11775 hash_dwo_file (const void *item)
11776 {
11777   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11778   hashval_t hash;
11779
11780   hash = htab_hash_string (dwo_file->dwo_name);
11781   if (dwo_file->comp_dir != NULL)
11782     hash += htab_hash_string (dwo_file->comp_dir);
11783   return hash;
11784 }
11785
11786 static int
11787 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11788 {
11789   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11790   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11791
11792   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11793     return 0;
11794   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11795     return lhs->comp_dir == rhs->comp_dir;
11796   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11797 }
11798
11799 /* Allocate a hash table for DWO files.  */
11800
11801 static htab_t
11802 allocate_dwo_file_hash_table (struct objfile *objfile)
11803 {
11804   return htab_create_alloc_ex (41,
11805                                hash_dwo_file,
11806                                eq_dwo_file,
11807                                NULL,
11808                                &objfile->objfile_obstack,
11809                                hashtab_obstack_allocate,
11810                                dummy_obstack_deallocate);
11811 }
11812
11813 /* Lookup DWO file DWO_NAME.  */
11814
11815 static void **
11816 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11817                       const char *dwo_name,
11818                       const char *comp_dir)
11819 {
11820   struct dwo_file find_entry;
11821   void **slot;
11822
11823   if (dwarf2_per_objfile->dwo_files == NULL)
11824     dwarf2_per_objfile->dwo_files
11825       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11826
11827   memset (&find_entry, 0, sizeof (find_entry));
11828   find_entry.dwo_name = dwo_name;
11829   find_entry.comp_dir = comp_dir;
11830   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11831
11832   return slot;
11833 }
11834
11835 static hashval_t
11836 hash_dwo_unit (const void *item)
11837 {
11838   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11839
11840   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11841   return dwo_unit->signature;
11842 }
11843
11844 static int
11845 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11846 {
11847   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11848   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11849
11850   /* The signature is assumed to be unique within the DWO file.
11851      So while object file CU dwo_id's always have the value zero,
11852      that's OK, assuming each object file DWO file has only one CU,
11853      and that's the rule for now.  */
11854   return lhs->signature == rhs->signature;
11855 }
11856
11857 /* Allocate a hash table for DWO CUs,TUs.
11858    There is one of these tables for each of CUs,TUs for each DWO file.  */
11859
11860 static htab_t
11861 allocate_dwo_unit_table (struct objfile *objfile)
11862 {
11863   /* Start out with a pretty small number.
11864      Generally DWO files contain only one CU and maybe some TUs.  */
11865   return htab_create_alloc_ex (3,
11866                                hash_dwo_unit,
11867                                eq_dwo_unit,
11868                                NULL,
11869                                &objfile->objfile_obstack,
11870                                hashtab_obstack_allocate,
11871                                dummy_obstack_deallocate);
11872 }
11873
11874 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11875
11876 struct create_dwo_cu_data
11877 {
11878   struct dwo_file *dwo_file;
11879   struct dwo_unit dwo_unit;
11880 };
11881
11882 /* die_reader_func for create_dwo_cu.  */
11883
11884 static void
11885 create_dwo_cu_reader (const struct die_reader_specs *reader,
11886                       const gdb_byte *info_ptr,
11887                       struct die_info *comp_unit_die,
11888                       int has_children,
11889                       void *datap)
11890 {
11891   struct dwarf2_cu *cu = reader->cu;
11892   sect_offset sect_off = cu->per_cu->sect_off;
11893   struct dwarf2_section_info *section = cu->per_cu->section;
11894   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11895   struct dwo_file *dwo_file = data->dwo_file;
11896   struct dwo_unit *dwo_unit = &data->dwo_unit;
11897   struct attribute *attr;
11898
11899   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11900   if (attr == NULL)
11901     {
11902       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11903                    " its dwo_id [in module %s]"),
11904                  sect_offset_str (sect_off), dwo_file->dwo_name);
11905       return;
11906     }
11907
11908   dwo_unit->dwo_file = dwo_file;
11909   dwo_unit->signature = DW_UNSND (attr);
11910   dwo_unit->section = section;
11911   dwo_unit->sect_off = sect_off;
11912   dwo_unit->length = cu->per_cu->length;
11913
11914   if (dwarf_read_debug)
11915     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11916                         sect_offset_str (sect_off),
11917                         hex_string (dwo_unit->signature));
11918 }
11919
11920 /* Create the dwo_units for the CUs in a DWO_FILE.
11921    Note: This function processes DWO files only, not DWP files.  */
11922
11923 static void
11924 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11925                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11926                        htab_t &cus_htab)
11927 {
11928   struct objfile *objfile = dwarf2_per_objfile->objfile;
11929   const gdb_byte *info_ptr, *end_ptr;
11930
11931   dwarf2_read_section (objfile, &section);
11932   info_ptr = section.buffer;
11933
11934   if (info_ptr == NULL)
11935     return;
11936
11937   if (dwarf_read_debug)
11938     {
11939       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11940                           get_section_name (&section),
11941                           get_section_file_name (&section));
11942     }
11943
11944   end_ptr = info_ptr + section.size;
11945   while (info_ptr < end_ptr)
11946     {
11947       struct dwarf2_per_cu_data per_cu;
11948       struct create_dwo_cu_data create_dwo_cu_data;
11949       struct dwo_unit *dwo_unit;
11950       void **slot;
11951       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11952
11953       memset (&create_dwo_cu_data.dwo_unit, 0,
11954               sizeof (create_dwo_cu_data.dwo_unit));
11955       memset (&per_cu, 0, sizeof (per_cu));
11956       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11957       per_cu.is_debug_types = 0;
11958       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11959       per_cu.section = &section;
11960       create_dwo_cu_data.dwo_file = &dwo_file;
11961
11962       init_cutu_and_read_dies_no_follow (
11963           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11964       info_ptr += per_cu.length;
11965
11966       // If the unit could not be parsed, skip it.
11967       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11968         continue;
11969
11970       if (cus_htab == NULL)
11971         cus_htab = allocate_dwo_unit_table (objfile);
11972
11973       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11974       *dwo_unit = create_dwo_cu_data.dwo_unit;
11975       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11976       gdb_assert (slot != NULL);
11977       if (*slot != NULL)
11978         {
11979           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11980           sect_offset dup_sect_off = dup_cu->sect_off;
11981
11982           complaint (_("debug cu entry at offset %s is duplicate to"
11983                        " the entry at offset %s, signature %s"),
11984                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11985                      hex_string (dwo_unit->signature));
11986         }
11987       *slot = (void *)dwo_unit;
11988     }
11989 }
11990
11991 /* DWP file .debug_{cu,tu}_index section format:
11992    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11993
11994    DWP Version 1:
11995
11996    Both index sections have the same format, and serve to map a 64-bit
11997    signature to a set of section numbers.  Each section begins with a header,
11998    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11999    indexes, and a pool of 32-bit section numbers.  The index sections will be
12000    aligned at 8-byte boundaries in the file.
12001
12002    The index section header consists of:
12003
12004     V, 32 bit version number
12005     -, 32 bits unused
12006     N, 32 bit number of compilation units or type units in the index
12007     M, 32 bit number of slots in the hash table
12008
12009    Numbers are recorded using the byte order of the application binary.
12010
12011    The hash table begins at offset 16 in the section, and consists of an array
12012    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12013    order of the application binary).  Unused slots in the hash table are 0.
12014    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12015
12016    The parallel table begins immediately after the hash table
12017    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12018    array of 32-bit indexes (using the byte order of the application binary),
12019    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12020    table contains a 32-bit index into the pool of section numbers.  For unused
12021    hash table slots, the corresponding entry in the parallel table will be 0.
12022
12023    The pool of section numbers begins immediately following the hash table
12024    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12025    section numbers consists of an array of 32-bit words (using the byte order
12026    of the application binary).  Each item in the array is indexed starting
12027    from 0.  The hash table entry provides the index of the first section
12028    number in the set.  Additional section numbers in the set follow, and the
12029    set is terminated by a 0 entry (section number 0 is not used in ELF).
12030
12031    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12032    section must be the first entry in the set, and the .debug_abbrev.dwo must
12033    be the second entry. Other members of the set may follow in any order.
12034
12035    ---
12036
12037    DWP Version 2:
12038
12039    DWP Version 2 combines all the .debug_info, etc. sections into one,
12040    and the entries in the index tables are now offsets into these sections.
12041    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12042    section.
12043
12044    Index Section Contents:
12045     Header
12046     Hash Table of Signatures   dwp_hash_table.hash_table
12047     Parallel Table of Indices  dwp_hash_table.unit_table
12048     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12049     Table of Section Sizes     dwp_hash_table.v2.sizes
12050
12051    The index section header consists of:
12052
12053     V, 32 bit version number
12054     L, 32 bit number of columns in the table of section offsets
12055     N, 32 bit number of compilation units or type units in the index
12056     M, 32 bit number of slots in the hash table
12057
12058    Numbers are recorded using the byte order of the application binary.
12059
12060    The hash table has the same format as version 1.
12061    The parallel table of indices has the same format as version 1,
12062    except that the entries are origin-1 indices into the table of sections
12063    offsets and the table of section sizes.
12064
12065    The table of offsets begins immediately following the parallel table
12066    (at offset 16 + 12 * M from the beginning of the section).  The table is
12067    a two-dimensional array of 32-bit words (using the byte order of the
12068    application binary), with L columns and N+1 rows, in row-major order.
12069    Each row in the array is indexed starting from 0.  The first row provides
12070    a key to the remaining rows: each column in this row provides an identifier
12071    for a debug section, and the offsets in the same column of subsequent rows
12072    refer to that section.  The section identifiers are:
12073
12074     DW_SECT_INFO         1  .debug_info.dwo
12075     DW_SECT_TYPES        2  .debug_types.dwo
12076     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12077     DW_SECT_LINE         4  .debug_line.dwo
12078     DW_SECT_LOC          5  .debug_loc.dwo
12079     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12080     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12081     DW_SECT_MACRO        8  .debug_macro.dwo
12082
12083    The offsets provided by the CU and TU index sections are the base offsets
12084    for the contributions made by each CU or TU to the corresponding section
12085    in the package file.  Each CU and TU header contains an abbrev_offset
12086    field, used to find the abbreviations table for that CU or TU within the
12087    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12088    be interpreted as relative to the base offset given in the index section.
12089    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12090    should be interpreted as relative to the base offset for .debug_line.dwo,
12091    and offsets into other debug sections obtained from DWARF attributes should
12092    also be interpreted as relative to the corresponding base offset.
12093
12094    The table of sizes begins immediately following the table of offsets.
12095    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12096    with L columns and N rows, in row-major order.  Each row in the array is
12097    indexed starting from 1 (row 0 is shared by the two tables).
12098
12099    ---
12100
12101    Hash table lookup is handled the same in version 1 and 2:
12102
12103    We assume that N and M will not exceed 2^32 - 1.
12104    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12105
12106    Given a 64-bit compilation unit signature or a type signature S, an entry
12107    in the hash table is located as follows:
12108
12109    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12110       the low-order k bits all set to 1.
12111
12112    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12113
12114    3) If the hash table entry at index H matches the signature, use that
12115       entry.  If the hash table entry at index H is unused (all zeroes),
12116       terminate the search: the signature is not present in the table.
12117
12118    4) Let H = (H + H') modulo M. Repeat at Step 3.
12119
12120    Because M > N and H' and M are relatively prime, the search is guaranteed
12121    to stop at an unused slot or find the match.  */
12122
12123 /* Create a hash table to map DWO IDs to their CU/TU entry in
12124    .debug_{info,types}.dwo in DWP_FILE.
12125    Returns NULL if there isn't one.
12126    Note: This function processes DWP files only, not DWO files.  */
12127
12128 static struct dwp_hash_table *
12129 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12130                        struct dwp_file *dwp_file, int is_debug_types)
12131 {
12132   struct objfile *objfile = dwarf2_per_objfile->objfile;
12133   bfd *dbfd = dwp_file->dbfd.get ();
12134   const gdb_byte *index_ptr, *index_end;
12135   struct dwarf2_section_info *index;
12136   uint32_t version, nr_columns, nr_units, nr_slots;
12137   struct dwp_hash_table *htab;
12138
12139   if (is_debug_types)
12140     index = &dwp_file->sections.tu_index;
12141   else
12142     index = &dwp_file->sections.cu_index;
12143
12144   if (dwarf2_section_empty_p (index))
12145     return NULL;
12146   dwarf2_read_section (objfile, index);
12147
12148   index_ptr = index->buffer;
12149   index_end = index_ptr + index->size;
12150
12151   version = read_4_bytes (dbfd, index_ptr);
12152   index_ptr += 4;
12153   if (version == 2)
12154     nr_columns = read_4_bytes (dbfd, index_ptr);
12155   else
12156     nr_columns = 0;
12157   index_ptr += 4;
12158   nr_units = read_4_bytes (dbfd, index_ptr);
12159   index_ptr += 4;
12160   nr_slots = read_4_bytes (dbfd, index_ptr);
12161   index_ptr += 4;
12162
12163   if (version != 1 && version != 2)
12164     {
12165       error (_("Dwarf Error: unsupported DWP file version (%s)"
12166                " [in module %s]"),
12167              pulongest (version), dwp_file->name);
12168     }
12169   if (nr_slots != (nr_slots & -nr_slots))
12170     {
12171       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12172                " is not power of 2 [in module %s]"),
12173              pulongest (nr_slots), dwp_file->name);
12174     }
12175
12176   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12177   htab->version = version;
12178   htab->nr_columns = nr_columns;
12179   htab->nr_units = nr_units;
12180   htab->nr_slots = nr_slots;
12181   htab->hash_table = index_ptr;
12182   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12183
12184   /* Exit early if the table is empty.  */
12185   if (nr_slots == 0 || nr_units == 0
12186       || (version == 2 && nr_columns == 0))
12187     {
12188       /* All must be zero.  */
12189       if (nr_slots != 0 || nr_units != 0
12190           || (version == 2 && nr_columns != 0))
12191         {
12192           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12193                        " all zero [in modules %s]"),
12194                      dwp_file->name);
12195         }
12196       return htab;
12197     }
12198
12199   if (version == 1)
12200     {
12201       htab->section_pool.v1.indices =
12202         htab->unit_table + sizeof (uint32_t) * nr_slots;
12203       /* It's harder to decide whether the section is too small in v1.
12204          V1 is deprecated anyway so we punt.  */
12205     }
12206   else
12207     {
12208       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12209       int *ids = htab->section_pool.v2.section_ids;
12210       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12211       /* Reverse map for error checking.  */
12212       int ids_seen[DW_SECT_MAX + 1];
12213       int i;
12214
12215       if (nr_columns < 2)
12216         {
12217           error (_("Dwarf Error: bad DWP hash table, too few columns"
12218                    " in section table [in module %s]"),
12219                  dwp_file->name);
12220         }
12221       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12222         {
12223           error (_("Dwarf Error: bad DWP hash table, too many columns"
12224                    " in section table [in module %s]"),
12225                  dwp_file->name);
12226         }
12227       memset (ids, 255, sizeof_ids);
12228       memset (ids_seen, 255, sizeof (ids_seen));
12229       for (i = 0; i < nr_columns; ++i)
12230         {
12231           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12232
12233           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12234             {
12235               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12236                        " in section table [in module %s]"),
12237                      id, dwp_file->name);
12238             }
12239           if (ids_seen[id] != -1)
12240             {
12241               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12242                        " id %d in section table [in module %s]"),
12243                      id, dwp_file->name);
12244             }
12245           ids_seen[id] = i;
12246           ids[i] = id;
12247         }
12248       /* Must have exactly one info or types section.  */
12249       if (((ids_seen[DW_SECT_INFO] != -1)
12250            + (ids_seen[DW_SECT_TYPES] != -1))
12251           != 1)
12252         {
12253           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12254                    " DWO info/types section [in module %s]"),
12255                  dwp_file->name);
12256         }
12257       /* Must have an abbrev section.  */
12258       if (ids_seen[DW_SECT_ABBREV] == -1)
12259         {
12260           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12261                    " section [in module %s]"),
12262                  dwp_file->name);
12263         }
12264       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12265       htab->section_pool.v2.sizes =
12266         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12267                                          * nr_units * nr_columns);
12268       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12269                                           * nr_units * nr_columns))
12270           > index_end)
12271         {
12272           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12273                    " [in module %s]"),
12274                  dwp_file->name);
12275         }
12276     }
12277
12278   return htab;
12279 }
12280
12281 /* Update SECTIONS with the data from SECTP.
12282
12283    This function is like the other "locate" section routines that are
12284    passed to bfd_map_over_sections, but in this context the sections to
12285    read comes from the DWP V1 hash table, not the full ELF section table.
12286
12287    The result is non-zero for success, or zero if an error was found.  */
12288
12289 static int
12290 locate_v1_virtual_dwo_sections (asection *sectp,
12291                                 struct virtual_v1_dwo_sections *sections)
12292 {
12293   const struct dwop_section_names *names = &dwop_section_names;
12294
12295   if (section_is_p (sectp->name, &names->abbrev_dwo))
12296     {
12297       /* There can be only one.  */
12298       if (sections->abbrev.s.section != NULL)
12299         return 0;
12300       sections->abbrev.s.section = sectp;
12301       sections->abbrev.size = bfd_get_section_size (sectp);
12302     }
12303   else if (section_is_p (sectp->name, &names->info_dwo)
12304            || section_is_p (sectp->name, &names->types_dwo))
12305     {
12306       /* There can be only one.  */
12307       if (sections->info_or_types.s.section != NULL)
12308         return 0;
12309       sections->info_or_types.s.section = sectp;
12310       sections->info_or_types.size = bfd_get_section_size (sectp);
12311     }
12312   else if (section_is_p (sectp->name, &names->line_dwo))
12313     {
12314       /* There can be only one.  */
12315       if (sections->line.s.section != NULL)
12316         return 0;
12317       sections->line.s.section = sectp;
12318       sections->line.size = bfd_get_section_size (sectp);
12319     }
12320   else if (section_is_p (sectp->name, &names->loc_dwo))
12321     {
12322       /* There can be only one.  */
12323       if (sections->loc.s.section != NULL)
12324         return 0;
12325       sections->loc.s.section = sectp;
12326       sections->loc.size = bfd_get_section_size (sectp);
12327     }
12328   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12329     {
12330       /* There can be only one.  */
12331       if (sections->macinfo.s.section != NULL)
12332         return 0;
12333       sections->macinfo.s.section = sectp;
12334       sections->macinfo.size = bfd_get_section_size (sectp);
12335     }
12336   else if (section_is_p (sectp->name, &names->macro_dwo))
12337     {
12338       /* There can be only one.  */
12339       if (sections->macro.s.section != NULL)
12340         return 0;
12341       sections->macro.s.section = sectp;
12342       sections->macro.size = bfd_get_section_size (sectp);
12343     }
12344   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12345     {
12346       /* There can be only one.  */
12347       if (sections->str_offsets.s.section != NULL)
12348         return 0;
12349       sections->str_offsets.s.section = sectp;
12350       sections->str_offsets.size = bfd_get_section_size (sectp);
12351     }
12352   else
12353     {
12354       /* No other kind of section is valid.  */
12355       return 0;
12356     }
12357
12358   return 1;
12359 }
12360
12361 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12362    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12363    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12364    This is for DWP version 1 files.  */
12365
12366 static struct dwo_unit *
12367 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12368                            struct dwp_file *dwp_file,
12369                            uint32_t unit_index,
12370                            const char *comp_dir,
12371                            ULONGEST signature, int is_debug_types)
12372 {
12373   struct objfile *objfile = dwarf2_per_objfile->objfile;
12374   const struct dwp_hash_table *dwp_htab =
12375     is_debug_types ? dwp_file->tus : dwp_file->cus;
12376   bfd *dbfd = dwp_file->dbfd.get ();
12377   const char *kind = is_debug_types ? "TU" : "CU";
12378   struct dwo_file *dwo_file;
12379   struct dwo_unit *dwo_unit;
12380   struct virtual_v1_dwo_sections sections;
12381   void **dwo_file_slot;
12382   int i;
12383
12384   gdb_assert (dwp_file->version == 1);
12385
12386   if (dwarf_read_debug)
12387     {
12388       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12389                           kind,
12390                           pulongest (unit_index), hex_string (signature),
12391                           dwp_file->name);
12392     }
12393
12394   /* Fetch the sections of this DWO unit.
12395      Put a limit on the number of sections we look for so that bad data
12396      doesn't cause us to loop forever.  */
12397
12398 #define MAX_NR_V1_DWO_SECTIONS \
12399   (1 /* .debug_info or .debug_types */ \
12400    + 1 /* .debug_abbrev */ \
12401    + 1 /* .debug_line */ \
12402    + 1 /* .debug_loc */ \
12403    + 1 /* .debug_str_offsets */ \
12404    + 1 /* .debug_macro or .debug_macinfo */ \
12405    + 1 /* trailing zero */)
12406
12407   memset (&sections, 0, sizeof (sections));
12408
12409   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12410     {
12411       asection *sectp;
12412       uint32_t section_nr =
12413         read_4_bytes (dbfd,
12414                       dwp_htab->section_pool.v1.indices
12415                       + (unit_index + i) * sizeof (uint32_t));
12416
12417       if (section_nr == 0)
12418         break;
12419       if (section_nr >= dwp_file->num_sections)
12420         {
12421           error (_("Dwarf Error: bad DWP hash table, section number too large"
12422                    " [in module %s]"),
12423                  dwp_file->name);
12424         }
12425
12426       sectp = dwp_file->elf_sections[section_nr];
12427       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12428         {
12429           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12430                    " [in module %s]"),
12431                  dwp_file->name);
12432         }
12433     }
12434
12435   if (i < 2
12436       || dwarf2_section_empty_p (&sections.info_or_types)
12437       || dwarf2_section_empty_p (&sections.abbrev))
12438     {
12439       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12440                " [in module %s]"),
12441              dwp_file->name);
12442     }
12443   if (i == MAX_NR_V1_DWO_SECTIONS)
12444     {
12445       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12446                " [in module %s]"),
12447              dwp_file->name);
12448     }
12449
12450   /* It's easier for the rest of the code if we fake a struct dwo_file and
12451      have dwo_unit "live" in that.  At least for now.
12452
12453      The DWP file can be made up of a random collection of CUs and TUs.
12454      However, for each CU + set of TUs that came from the same original DWO
12455      file, we can combine them back into a virtual DWO file to save space
12456      (fewer struct dwo_file objects to allocate).  Remember that for really
12457      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12458
12459   std::string virtual_dwo_name =
12460     string_printf ("virtual-dwo/%d-%d-%d-%d",
12461                    get_section_id (&sections.abbrev),
12462                    get_section_id (&sections.line),
12463                    get_section_id (&sections.loc),
12464                    get_section_id (&sections.str_offsets));
12465   /* Can we use an existing virtual DWO file?  */
12466   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12467                                         virtual_dwo_name.c_str (),
12468                                         comp_dir);
12469   /* Create one if necessary.  */
12470   if (*dwo_file_slot == NULL)
12471     {
12472       if (dwarf_read_debug)
12473         {
12474           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12475                               virtual_dwo_name.c_str ());
12476         }
12477       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12478       dwo_file->dwo_name
12479         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12480                                         virtual_dwo_name.c_str (),
12481                                         virtual_dwo_name.size ());
12482       dwo_file->comp_dir = comp_dir;
12483       dwo_file->sections.abbrev = sections.abbrev;
12484       dwo_file->sections.line = sections.line;
12485       dwo_file->sections.loc = sections.loc;
12486       dwo_file->sections.macinfo = sections.macinfo;
12487       dwo_file->sections.macro = sections.macro;
12488       dwo_file->sections.str_offsets = sections.str_offsets;
12489       /* The "str" section is global to the entire DWP file.  */
12490       dwo_file->sections.str = dwp_file->sections.str;
12491       /* The info or types section is assigned below to dwo_unit,
12492          there's no need to record it in dwo_file.
12493          Also, we can't simply record type sections in dwo_file because
12494          we record a pointer into the vector in dwo_unit.  As we collect more
12495          types we'll grow the vector and eventually have to reallocate space
12496          for it, invalidating all copies of pointers into the previous
12497          contents.  */
12498       *dwo_file_slot = dwo_file;
12499     }
12500   else
12501     {
12502       if (dwarf_read_debug)
12503         {
12504           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12505                               virtual_dwo_name.c_str ());
12506         }
12507       dwo_file = (struct dwo_file *) *dwo_file_slot;
12508     }
12509
12510   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12511   dwo_unit->dwo_file = dwo_file;
12512   dwo_unit->signature = signature;
12513   dwo_unit->section =
12514     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12515   *dwo_unit->section = sections.info_or_types;
12516   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12517
12518   return dwo_unit;
12519 }
12520
12521 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12522    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12523    piece within that section used by a TU/CU, return a virtual section
12524    of just that piece.  */
12525
12526 static struct dwarf2_section_info
12527 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12528                        struct dwarf2_section_info *section,
12529                        bfd_size_type offset, bfd_size_type size)
12530 {
12531   struct dwarf2_section_info result;
12532   asection *sectp;
12533
12534   gdb_assert (section != NULL);
12535   gdb_assert (!section->is_virtual);
12536
12537   memset (&result, 0, sizeof (result));
12538   result.s.containing_section = section;
12539   result.is_virtual = 1;
12540
12541   if (size == 0)
12542     return result;
12543
12544   sectp = get_section_bfd_section (section);
12545
12546   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12547      bounds of the real section.  This is a pretty-rare event, so just
12548      flag an error (easier) instead of a warning and trying to cope.  */
12549   if (sectp == NULL
12550       || offset + size > bfd_get_section_size (sectp))
12551     {
12552       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12553                " in section %s [in module %s]"),
12554              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12555              objfile_name (dwarf2_per_objfile->objfile));
12556     }
12557
12558   result.virtual_offset = offset;
12559   result.size = size;
12560   return result;
12561 }
12562
12563 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12564    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12565    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12566    This is for DWP version 2 files.  */
12567
12568 static struct dwo_unit *
12569 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12570                            struct dwp_file *dwp_file,
12571                            uint32_t unit_index,
12572                            const char *comp_dir,
12573                            ULONGEST signature, int is_debug_types)
12574 {
12575   struct objfile *objfile = dwarf2_per_objfile->objfile;
12576   const struct dwp_hash_table *dwp_htab =
12577     is_debug_types ? dwp_file->tus : dwp_file->cus;
12578   bfd *dbfd = dwp_file->dbfd.get ();
12579   const char *kind = is_debug_types ? "TU" : "CU";
12580   struct dwo_file *dwo_file;
12581   struct dwo_unit *dwo_unit;
12582   struct virtual_v2_dwo_sections sections;
12583   void **dwo_file_slot;
12584   int i;
12585
12586   gdb_assert (dwp_file->version == 2);
12587
12588   if (dwarf_read_debug)
12589     {
12590       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12591                           kind,
12592                           pulongest (unit_index), hex_string (signature),
12593                           dwp_file->name);
12594     }
12595
12596   /* Fetch the section offsets of this DWO unit.  */
12597
12598   memset (&sections, 0, sizeof (sections));
12599
12600   for (i = 0; i < dwp_htab->nr_columns; ++i)
12601     {
12602       uint32_t offset = read_4_bytes (dbfd,
12603                                       dwp_htab->section_pool.v2.offsets
12604                                       + (((unit_index - 1) * dwp_htab->nr_columns
12605                                           + i)
12606                                          * sizeof (uint32_t)));
12607       uint32_t size = read_4_bytes (dbfd,
12608                                     dwp_htab->section_pool.v2.sizes
12609                                     + (((unit_index - 1) * dwp_htab->nr_columns
12610                                         + i)
12611                                        * sizeof (uint32_t)));
12612
12613       switch (dwp_htab->section_pool.v2.section_ids[i])
12614         {
12615         case DW_SECT_INFO:
12616         case DW_SECT_TYPES:
12617           sections.info_or_types_offset = offset;
12618           sections.info_or_types_size = size;
12619           break;
12620         case DW_SECT_ABBREV:
12621           sections.abbrev_offset = offset;
12622           sections.abbrev_size = size;
12623           break;
12624         case DW_SECT_LINE:
12625           sections.line_offset = offset;
12626           sections.line_size = size;
12627           break;
12628         case DW_SECT_LOC:
12629           sections.loc_offset = offset;
12630           sections.loc_size = size;
12631           break;
12632         case DW_SECT_STR_OFFSETS:
12633           sections.str_offsets_offset = offset;
12634           sections.str_offsets_size = size;
12635           break;
12636         case DW_SECT_MACINFO:
12637           sections.macinfo_offset = offset;
12638           sections.macinfo_size = size;
12639           break;
12640         case DW_SECT_MACRO:
12641           sections.macro_offset = offset;
12642           sections.macro_size = size;
12643           break;
12644         }
12645     }
12646
12647   /* It's easier for the rest of the code if we fake a struct dwo_file and
12648      have dwo_unit "live" in that.  At least for now.
12649
12650      The DWP file can be made up of a random collection of CUs and TUs.
12651      However, for each CU + set of TUs that came from the same original DWO
12652      file, we can combine them back into a virtual DWO file to save space
12653      (fewer struct dwo_file objects to allocate).  Remember that for really
12654      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12655
12656   std::string virtual_dwo_name =
12657     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12658                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12659                    (long) (sections.line_size ? sections.line_offset : 0),
12660                    (long) (sections.loc_size ? sections.loc_offset : 0),
12661                    (long) (sections.str_offsets_size
12662                            ? sections.str_offsets_offset : 0));
12663   /* Can we use an existing virtual DWO file?  */
12664   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12665                                         virtual_dwo_name.c_str (),
12666                                         comp_dir);
12667   /* Create one if necessary.  */
12668   if (*dwo_file_slot == NULL)
12669     {
12670       if (dwarf_read_debug)
12671         {
12672           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12673                               virtual_dwo_name.c_str ());
12674         }
12675       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12676       dwo_file->dwo_name
12677         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12678                                         virtual_dwo_name.c_str (),
12679                                         virtual_dwo_name.size ());
12680       dwo_file->comp_dir = comp_dir;
12681       dwo_file->sections.abbrev =
12682         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12683                                sections.abbrev_offset, sections.abbrev_size);
12684       dwo_file->sections.line =
12685         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12686                                sections.line_offset, sections.line_size);
12687       dwo_file->sections.loc =
12688         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12689                                sections.loc_offset, sections.loc_size);
12690       dwo_file->sections.macinfo =
12691         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12692                                sections.macinfo_offset, sections.macinfo_size);
12693       dwo_file->sections.macro =
12694         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12695                                sections.macro_offset, sections.macro_size);
12696       dwo_file->sections.str_offsets =
12697         create_dwp_v2_section (dwarf2_per_objfile,
12698                                &dwp_file->sections.str_offsets,
12699                                sections.str_offsets_offset,
12700                                sections.str_offsets_size);
12701       /* The "str" section is global to the entire DWP file.  */
12702       dwo_file->sections.str = dwp_file->sections.str;
12703       /* The info or types section is assigned below to dwo_unit,
12704          there's no need to record it in dwo_file.
12705          Also, we can't simply record type sections in dwo_file because
12706          we record a pointer into the vector in dwo_unit.  As we collect more
12707          types we'll grow the vector and eventually have to reallocate space
12708          for it, invalidating all copies of pointers into the previous
12709          contents.  */
12710       *dwo_file_slot = dwo_file;
12711     }
12712   else
12713     {
12714       if (dwarf_read_debug)
12715         {
12716           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12717                               virtual_dwo_name.c_str ());
12718         }
12719       dwo_file = (struct dwo_file *) *dwo_file_slot;
12720     }
12721
12722   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12723   dwo_unit->dwo_file = dwo_file;
12724   dwo_unit->signature = signature;
12725   dwo_unit->section =
12726     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12727   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12728                                               is_debug_types
12729                                               ? &dwp_file->sections.types
12730                                               : &dwp_file->sections.info,
12731                                               sections.info_or_types_offset,
12732                                               sections.info_or_types_size);
12733   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12734
12735   return dwo_unit;
12736 }
12737
12738 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12739    Returns NULL if the signature isn't found.  */
12740
12741 static struct dwo_unit *
12742 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12743                         struct dwp_file *dwp_file, const char *comp_dir,
12744                         ULONGEST signature, int is_debug_types)
12745 {
12746   const struct dwp_hash_table *dwp_htab =
12747     is_debug_types ? dwp_file->tus : dwp_file->cus;
12748   bfd *dbfd = dwp_file->dbfd.get ();
12749   uint32_t mask = dwp_htab->nr_slots - 1;
12750   uint32_t hash = signature & mask;
12751   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12752   unsigned int i;
12753   void **slot;
12754   struct dwo_unit find_dwo_cu;
12755
12756   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12757   find_dwo_cu.signature = signature;
12758   slot = htab_find_slot (is_debug_types
12759                          ? dwp_file->loaded_tus
12760                          : dwp_file->loaded_cus,
12761                          &find_dwo_cu, INSERT);
12762
12763   if (*slot != NULL)
12764     return (struct dwo_unit *) *slot;
12765
12766   /* Use a for loop so that we don't loop forever on bad debug info.  */
12767   for (i = 0; i < dwp_htab->nr_slots; ++i)
12768     {
12769       ULONGEST signature_in_table;
12770
12771       signature_in_table =
12772         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12773       if (signature_in_table == signature)
12774         {
12775           uint32_t unit_index =
12776             read_4_bytes (dbfd,
12777                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12778
12779           if (dwp_file->version == 1)
12780             {
12781               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12782                                                  dwp_file, unit_index,
12783                                                  comp_dir, signature,
12784                                                  is_debug_types);
12785             }
12786           else
12787             {
12788               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12789                                                  dwp_file, unit_index,
12790                                                  comp_dir, signature,
12791                                                  is_debug_types);
12792             }
12793           return (struct dwo_unit *) *slot;
12794         }
12795       if (signature_in_table == 0)
12796         return NULL;
12797       hash = (hash + hash2) & mask;
12798     }
12799
12800   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12801            " [in module %s]"),
12802          dwp_file->name);
12803 }
12804
12805 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12806    Open the file specified by FILE_NAME and hand it off to BFD for
12807    preliminary analysis.  Return a newly initialized bfd *, which
12808    includes a canonicalized copy of FILE_NAME.
12809    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12810    SEARCH_CWD is true if the current directory is to be searched.
12811    It will be searched before debug-file-directory.
12812    If successful, the file is added to the bfd include table of the
12813    objfile's bfd (see gdb_bfd_record_inclusion).
12814    If unable to find/open the file, return NULL.
12815    NOTE: This function is derived from symfile_bfd_open.  */
12816
12817 static gdb_bfd_ref_ptr
12818 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12819                     const char *file_name, int is_dwp, int search_cwd)
12820 {
12821   int desc;
12822   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12823      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12824      to debug_file_directory.  */
12825   const char *search_path;
12826   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12827
12828   gdb::unique_xmalloc_ptr<char> search_path_holder;
12829   if (search_cwd)
12830     {
12831       if (*debug_file_directory != '\0')
12832         {
12833           search_path_holder.reset (concat (".", dirname_separator_string,
12834                                             debug_file_directory,
12835                                             (char *) NULL));
12836           search_path = search_path_holder.get ();
12837         }
12838       else
12839         search_path = ".";
12840     }
12841   else
12842     search_path = debug_file_directory;
12843
12844   openp_flags flags = OPF_RETURN_REALPATH;
12845   if (is_dwp)
12846     flags |= OPF_SEARCH_IN_PATH;
12847
12848   gdb::unique_xmalloc_ptr<char> absolute_name;
12849   desc = openp (search_path, flags, file_name,
12850                 O_RDONLY | O_BINARY, &absolute_name);
12851   if (desc < 0)
12852     return NULL;
12853
12854   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12855                                          gnutarget, desc));
12856   if (sym_bfd == NULL)
12857     return NULL;
12858   bfd_set_cacheable (sym_bfd.get (), 1);
12859
12860   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12861     return NULL;
12862
12863   /* Success.  Record the bfd as having been included by the objfile's bfd.
12864      This is important because things like demangled_names_hash lives in the
12865      objfile's per_bfd space and may have references to things like symbol
12866      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12867   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12868
12869   return sym_bfd;
12870 }
12871
12872 /* Try to open DWO file FILE_NAME.
12873    COMP_DIR is the DW_AT_comp_dir attribute.
12874    The result is the bfd handle of the file.
12875    If there is a problem finding or opening the file, return NULL.
12876    Upon success, the canonicalized path of the file is stored in the bfd,
12877    same as symfile_bfd_open.  */
12878
12879 static gdb_bfd_ref_ptr
12880 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12881                const char *file_name, const char *comp_dir)
12882 {
12883   if (IS_ABSOLUTE_PATH (file_name))
12884     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12885                                0 /*is_dwp*/, 0 /*search_cwd*/);
12886
12887   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12888
12889   if (comp_dir != NULL)
12890     {
12891       char *path_to_try = concat (comp_dir, SLASH_STRING,
12892                                   file_name, (char *) NULL);
12893
12894       /* NOTE: If comp_dir is a relative path, this will also try the
12895          search path, which seems useful.  */
12896       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12897                                                 path_to_try,
12898                                                 0 /*is_dwp*/,
12899                                                 1 /*search_cwd*/));
12900       xfree (path_to_try);
12901       if (abfd != NULL)
12902         return abfd;
12903     }
12904
12905   /* That didn't work, try debug-file-directory, which, despite its name,
12906      is a list of paths.  */
12907
12908   if (*debug_file_directory == '\0')
12909     return NULL;
12910
12911   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12912                              0 /*is_dwp*/, 1 /*search_cwd*/);
12913 }
12914
12915 /* This function is mapped across the sections and remembers the offset and
12916    size of each of the DWO debugging sections we are interested in.  */
12917
12918 static void
12919 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12920 {
12921   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12922   const struct dwop_section_names *names = &dwop_section_names;
12923
12924   if (section_is_p (sectp->name, &names->abbrev_dwo))
12925     {
12926       dwo_sections->abbrev.s.section = sectp;
12927       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12928     }
12929   else if (section_is_p (sectp->name, &names->info_dwo))
12930     {
12931       dwo_sections->info.s.section = sectp;
12932       dwo_sections->info.size = bfd_get_section_size (sectp);
12933     }
12934   else if (section_is_p (sectp->name, &names->line_dwo))
12935     {
12936       dwo_sections->line.s.section = sectp;
12937       dwo_sections->line.size = bfd_get_section_size (sectp);
12938     }
12939   else if (section_is_p (sectp->name, &names->loc_dwo))
12940     {
12941       dwo_sections->loc.s.section = sectp;
12942       dwo_sections->loc.size = bfd_get_section_size (sectp);
12943     }
12944   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12945     {
12946       dwo_sections->macinfo.s.section = sectp;
12947       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12948     }
12949   else if (section_is_p (sectp->name, &names->macro_dwo))
12950     {
12951       dwo_sections->macro.s.section = sectp;
12952       dwo_sections->macro.size = bfd_get_section_size (sectp);
12953     }
12954   else if (section_is_p (sectp->name, &names->str_dwo))
12955     {
12956       dwo_sections->str.s.section = sectp;
12957       dwo_sections->str.size = bfd_get_section_size (sectp);
12958     }
12959   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12960     {
12961       dwo_sections->str_offsets.s.section = sectp;
12962       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12963     }
12964   else if (section_is_p (sectp->name, &names->types_dwo))
12965     {
12966       struct dwarf2_section_info type_section;
12967
12968       memset (&type_section, 0, sizeof (type_section));
12969       type_section.s.section = sectp;
12970       type_section.size = bfd_get_section_size (sectp);
12971       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12972                      &type_section);
12973     }
12974 }
12975
12976 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12977    by PER_CU.  This is for the non-DWP case.
12978    The result is NULL if DWO_NAME can't be found.  */
12979
12980 static struct dwo_file *
12981 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12982                         const char *dwo_name, const char *comp_dir)
12983 {
12984   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12985   struct objfile *objfile = dwarf2_per_objfile->objfile;
12986
12987   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12988   if (dbfd == NULL)
12989     {
12990       if (dwarf_read_debug)
12991         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12992       return NULL;
12993     }
12994
12995   /* We use a unique pointer here, despite the obstack allocation,
12996      because a dwo_file needs some cleanup if it is abandoned.  */
12997   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12998                                         struct dwo_file));
12999   dwo_file->dwo_name = dwo_name;
13000   dwo_file->comp_dir = comp_dir;
13001   dwo_file->dbfd = dbfd.release ();
13002
13003   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
13004                          &dwo_file->sections);
13005
13006   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
13007                          dwo_file->cus);
13008
13009   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
13010                                  dwo_file->sections.types, dwo_file->tus);
13011
13012   if (dwarf_read_debug)
13013     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13014
13015   return dwo_file.release ();
13016 }
13017
13018 /* This function is mapped across the sections and remembers the offset and
13019    size of each of the DWP debugging sections common to version 1 and 2 that
13020    we are interested in.  */
13021
13022 static void
13023 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13024                                    void *dwp_file_ptr)
13025 {
13026   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13027   const struct dwop_section_names *names = &dwop_section_names;
13028   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13029
13030   /* Record the ELF section number for later lookup: this is what the
13031      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13032   gdb_assert (elf_section_nr < dwp_file->num_sections);
13033   dwp_file->elf_sections[elf_section_nr] = sectp;
13034
13035   /* Look for specific sections that we need.  */
13036   if (section_is_p (sectp->name, &names->str_dwo))
13037     {
13038       dwp_file->sections.str.s.section = sectp;
13039       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13040     }
13041   else if (section_is_p (sectp->name, &names->cu_index))
13042     {
13043       dwp_file->sections.cu_index.s.section = sectp;
13044       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13045     }
13046   else if (section_is_p (sectp->name, &names->tu_index))
13047     {
13048       dwp_file->sections.tu_index.s.section = sectp;
13049       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13050     }
13051 }
13052
13053 /* This function is mapped across the sections and remembers the offset and
13054    size of each of the DWP version 2 debugging sections that we are interested
13055    in.  This is split into a separate function because we don't know if we
13056    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13057
13058 static void
13059 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13060 {
13061   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13062   const struct dwop_section_names *names = &dwop_section_names;
13063   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13064
13065   /* Record the ELF section number for later lookup: this is what the
13066      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13067   gdb_assert (elf_section_nr < dwp_file->num_sections);
13068   dwp_file->elf_sections[elf_section_nr] = sectp;
13069
13070   /* Look for specific sections that we need.  */
13071   if (section_is_p (sectp->name, &names->abbrev_dwo))
13072     {
13073       dwp_file->sections.abbrev.s.section = sectp;
13074       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13075     }
13076   else if (section_is_p (sectp->name, &names->info_dwo))
13077     {
13078       dwp_file->sections.info.s.section = sectp;
13079       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13080     }
13081   else if (section_is_p (sectp->name, &names->line_dwo))
13082     {
13083       dwp_file->sections.line.s.section = sectp;
13084       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13085     }
13086   else if (section_is_p (sectp->name, &names->loc_dwo))
13087     {
13088       dwp_file->sections.loc.s.section = sectp;
13089       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13090     }
13091   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13092     {
13093       dwp_file->sections.macinfo.s.section = sectp;
13094       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13095     }
13096   else if (section_is_p (sectp->name, &names->macro_dwo))
13097     {
13098       dwp_file->sections.macro.s.section = sectp;
13099       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13100     }
13101   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13102     {
13103       dwp_file->sections.str_offsets.s.section = sectp;
13104       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13105     }
13106   else if (section_is_p (sectp->name, &names->types_dwo))
13107     {
13108       dwp_file->sections.types.s.section = sectp;
13109       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13110     }
13111 }
13112
13113 /* Hash function for dwp_file loaded CUs/TUs.  */
13114
13115 static hashval_t
13116 hash_dwp_loaded_cutus (const void *item)
13117 {
13118   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13119
13120   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13121   return dwo_unit->signature;
13122 }
13123
13124 /* Equality function for dwp_file loaded CUs/TUs.  */
13125
13126 static int
13127 eq_dwp_loaded_cutus (const void *a, const void *b)
13128 {
13129   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13130   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13131
13132   return dua->signature == dub->signature;
13133 }
13134
13135 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13136
13137 static htab_t
13138 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13139 {
13140   return htab_create_alloc_ex (3,
13141                                hash_dwp_loaded_cutus,
13142                                eq_dwp_loaded_cutus,
13143                                NULL,
13144                                &objfile->objfile_obstack,
13145                                hashtab_obstack_allocate,
13146                                dummy_obstack_deallocate);
13147 }
13148
13149 /* Try to open DWP file FILE_NAME.
13150    The result is the bfd handle of the file.
13151    If there is a problem finding or opening the file, return NULL.
13152    Upon success, the canonicalized path of the file is stored in the bfd,
13153    same as symfile_bfd_open.  */
13154
13155 static gdb_bfd_ref_ptr
13156 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13157                const char *file_name)
13158 {
13159   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13160                                             1 /*is_dwp*/,
13161                                             1 /*search_cwd*/));
13162   if (abfd != NULL)
13163     return abfd;
13164
13165   /* Work around upstream bug 15652.
13166      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13167      [Whether that's a "bug" is debatable, but it is getting in our way.]
13168      We have no real idea where the dwp file is, because gdb's realpath-ing
13169      of the executable's path may have discarded the needed info.
13170      [IWBN if the dwp file name was recorded in the executable, akin to
13171      .gnu_debuglink, but that doesn't exist yet.]
13172      Strip the directory from FILE_NAME and search again.  */
13173   if (*debug_file_directory != '\0')
13174     {
13175       /* Don't implicitly search the current directory here.
13176          If the user wants to search "." to handle this case,
13177          it must be added to debug-file-directory.  */
13178       return try_open_dwop_file (dwarf2_per_objfile,
13179                                  lbasename (file_name), 1 /*is_dwp*/,
13180                                  0 /*search_cwd*/);
13181     }
13182
13183   return NULL;
13184 }
13185
13186 /* Initialize the use of the DWP file for the current objfile.
13187    By convention the name of the DWP file is ${objfile}.dwp.
13188    The result is NULL if it can't be found.  */
13189
13190 static std::unique_ptr<struct dwp_file>
13191 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13192 {
13193   struct objfile *objfile = dwarf2_per_objfile->objfile;
13194
13195   /* Try to find first .dwp for the binary file before any symbolic links
13196      resolving.  */
13197
13198   /* If the objfile is a debug file, find the name of the real binary
13199      file and get the name of dwp file from there.  */
13200   std::string dwp_name;
13201   if (objfile->separate_debug_objfile_backlink != NULL)
13202     {
13203       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13204       const char *backlink_basename = lbasename (backlink->original_name);
13205
13206       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13207     }
13208   else
13209     dwp_name = objfile->original_name;
13210
13211   dwp_name += ".dwp";
13212
13213   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13214   if (dbfd == NULL
13215       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13216     {
13217       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13218       dwp_name = objfile_name (objfile);
13219       dwp_name += ".dwp";
13220       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13221     }
13222
13223   if (dbfd == NULL)
13224     {
13225       if (dwarf_read_debug)
13226         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13227       return std::unique_ptr<dwp_file> ();
13228     }
13229
13230   const char *name = bfd_get_filename (dbfd.get ());
13231   std::unique_ptr<struct dwp_file> dwp_file
13232     (new struct dwp_file (name, std::move (dbfd)));
13233
13234   dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
13235   dwp_file->elf_sections =
13236     OBSTACK_CALLOC (&objfile->objfile_obstack,
13237                     dwp_file->num_sections, asection *);
13238
13239   bfd_map_over_sections (dwp_file->dbfd.get (),
13240                          dwarf2_locate_common_dwp_sections,
13241                          dwp_file.get ());
13242
13243   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13244                                          0);
13245
13246   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13247                                          1);
13248
13249   /* The DWP file version is stored in the hash table.  Oh well.  */
13250   if (dwp_file->cus && dwp_file->tus
13251       && dwp_file->cus->version != dwp_file->tus->version)
13252     {
13253       /* Technically speaking, we should try to limp along, but this is
13254          pretty bizarre.  We use pulongest here because that's the established
13255          portability solution (e.g, we cannot use %u for uint32_t).  */
13256       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13257                " TU version %s [in DWP file %s]"),
13258              pulongest (dwp_file->cus->version),
13259              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13260     }
13261
13262   if (dwp_file->cus)
13263     dwp_file->version = dwp_file->cus->version;
13264   else if (dwp_file->tus)
13265     dwp_file->version = dwp_file->tus->version;
13266   else
13267     dwp_file->version = 2;
13268
13269   if (dwp_file->version == 2)
13270     bfd_map_over_sections (dwp_file->dbfd.get (),
13271                            dwarf2_locate_v2_dwp_sections,
13272                            dwp_file.get ());
13273
13274   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13275   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13276
13277   if (dwarf_read_debug)
13278     {
13279       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13280       fprintf_unfiltered (gdb_stdlog,
13281                           "    %s CUs, %s TUs\n",
13282                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13283                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13284     }
13285
13286   return dwp_file;
13287 }
13288
13289 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13290
13291 static struct dwp_file *
13292 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13293 {
13294   if (! dwarf2_per_objfile->dwp_checked)
13295     {
13296       dwarf2_per_objfile->dwp_file
13297         = open_and_init_dwp_file (dwarf2_per_objfile);
13298       dwarf2_per_objfile->dwp_checked = 1;
13299     }
13300   return dwarf2_per_objfile->dwp_file.get ();
13301 }
13302
13303 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13304    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13305    or in the DWP file for the objfile, referenced by THIS_UNIT.
13306    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13307    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13308
13309    This is called, for example, when wanting to read a variable with a
13310    complex location.  Therefore we don't want to do file i/o for every call.
13311    Therefore we don't want to look for a DWO file on every call.
13312    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13313    then we check if we've already seen DWO_NAME, and only THEN do we check
13314    for a DWO file.
13315
13316    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13317    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13318
13319 static struct dwo_unit *
13320 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13321                  const char *dwo_name, const char *comp_dir,
13322                  ULONGEST signature, int is_debug_types)
13323 {
13324   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13325   struct objfile *objfile = dwarf2_per_objfile->objfile;
13326   const char *kind = is_debug_types ? "TU" : "CU";
13327   void **dwo_file_slot;
13328   struct dwo_file *dwo_file;
13329   struct dwp_file *dwp_file;
13330
13331   /* First see if there's a DWP file.
13332      If we have a DWP file but didn't find the DWO inside it, don't
13333      look for the original DWO file.  It makes gdb behave differently
13334      depending on whether one is debugging in the build tree.  */
13335
13336   dwp_file = get_dwp_file (dwarf2_per_objfile);
13337   if (dwp_file != NULL)
13338     {
13339       const struct dwp_hash_table *dwp_htab =
13340         is_debug_types ? dwp_file->tus : dwp_file->cus;
13341
13342       if (dwp_htab != NULL)
13343         {
13344           struct dwo_unit *dwo_cutu =
13345             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13346                                     signature, is_debug_types);
13347
13348           if (dwo_cutu != NULL)
13349             {
13350               if (dwarf_read_debug)
13351                 {
13352                   fprintf_unfiltered (gdb_stdlog,
13353                                       "Virtual DWO %s %s found: @%s\n",
13354                                       kind, hex_string (signature),
13355                                       host_address_to_string (dwo_cutu));
13356                 }
13357               return dwo_cutu;
13358             }
13359         }
13360     }
13361   else
13362     {
13363       /* No DWP file, look for the DWO file.  */
13364
13365       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13366                                             dwo_name, comp_dir);
13367       if (*dwo_file_slot == NULL)
13368         {
13369           /* Read in the file and build a table of the CUs/TUs it contains.  */
13370           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13371         }
13372       /* NOTE: This will be NULL if unable to open the file.  */
13373       dwo_file = (struct dwo_file *) *dwo_file_slot;
13374
13375       if (dwo_file != NULL)
13376         {
13377           struct dwo_unit *dwo_cutu = NULL;
13378
13379           if (is_debug_types && dwo_file->tus)
13380             {
13381               struct dwo_unit find_dwo_cutu;
13382
13383               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13384               find_dwo_cutu.signature = signature;
13385               dwo_cutu
13386                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13387             }
13388           else if (!is_debug_types && dwo_file->cus)
13389             {
13390               struct dwo_unit find_dwo_cutu;
13391
13392               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13393               find_dwo_cutu.signature = signature;
13394               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13395                                                        &find_dwo_cutu);
13396             }
13397
13398           if (dwo_cutu != NULL)
13399             {
13400               if (dwarf_read_debug)
13401                 {
13402                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13403                                       kind, dwo_name, hex_string (signature),
13404                                       host_address_to_string (dwo_cutu));
13405                 }
13406               return dwo_cutu;
13407             }
13408         }
13409     }
13410
13411   /* We didn't find it.  This could mean a dwo_id mismatch, or
13412      someone deleted the DWO/DWP file, or the search path isn't set up
13413      correctly to find the file.  */
13414
13415   if (dwarf_read_debug)
13416     {
13417       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13418                           kind, dwo_name, hex_string (signature));
13419     }
13420
13421   /* This is a warning and not a complaint because it can be caused by
13422      pilot error (e.g., user accidentally deleting the DWO).  */
13423   {
13424     /* Print the name of the DWP file if we looked there, helps the user
13425        better diagnose the problem.  */
13426     std::string dwp_text;
13427
13428     if (dwp_file != NULL)
13429       dwp_text = string_printf (" [in DWP file %s]",
13430                                 lbasename (dwp_file->name));
13431
13432     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13433                " [in module %s]"),
13434              kind, dwo_name, hex_string (signature),
13435              dwp_text.c_str (),
13436              this_unit->is_debug_types ? "TU" : "CU",
13437              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13438   }
13439   return NULL;
13440 }
13441
13442 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13443    See lookup_dwo_cutu_unit for details.  */
13444
13445 static struct dwo_unit *
13446 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13447                       const char *dwo_name, const char *comp_dir,
13448                       ULONGEST signature)
13449 {
13450   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13451 }
13452
13453 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13454    See lookup_dwo_cutu_unit for details.  */
13455
13456 static struct dwo_unit *
13457 lookup_dwo_type_unit (struct signatured_type *this_tu,
13458                       const char *dwo_name, const char *comp_dir)
13459 {
13460   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13461 }
13462
13463 /* Traversal function for queue_and_load_all_dwo_tus.  */
13464
13465 static int
13466 queue_and_load_dwo_tu (void **slot, void *info)
13467 {
13468   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13469   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13470   ULONGEST signature = dwo_unit->signature;
13471   struct signatured_type *sig_type =
13472     lookup_dwo_signatured_type (per_cu->cu, signature);
13473
13474   if (sig_type != NULL)
13475     {
13476       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13477
13478       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13479          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13480          while processing PER_CU.  */
13481       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13482         load_full_type_unit (sig_cu);
13483       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13484     }
13485
13486   return 1;
13487 }
13488
13489 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13490    The DWO may have the only definition of the type, though it may not be
13491    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13492    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13493
13494 static void
13495 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13496 {
13497   struct dwo_unit *dwo_unit;
13498   struct dwo_file *dwo_file;
13499
13500   gdb_assert (!per_cu->is_debug_types);
13501   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13502   gdb_assert (per_cu->cu != NULL);
13503
13504   dwo_unit = per_cu->cu->dwo_unit;
13505   gdb_assert (dwo_unit != NULL);
13506
13507   dwo_file = dwo_unit->dwo_file;
13508   if (dwo_file->tus != NULL)
13509     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13510 }
13511
13512 /* Free all resources associated with DWO_FILE.
13513    Close the DWO file and munmap the sections.  */
13514
13515 static void
13516 free_dwo_file (struct dwo_file *dwo_file)
13517 {
13518   /* Note: dbfd is NULL for virtual DWO files.  */
13519   gdb_bfd_unref (dwo_file->dbfd);
13520
13521   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13522 }
13523
13524 /* Traversal function for free_dwo_files.  */
13525
13526 static int
13527 free_dwo_file_from_slot (void **slot, void *info)
13528 {
13529   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13530
13531   free_dwo_file (dwo_file);
13532
13533   return 1;
13534 }
13535
13536 /* Free all resources associated with DWO_FILES.  */
13537
13538 static void
13539 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13540 {
13541   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13542 }
13543 \f
13544 /* Read in various DIEs.  */
13545
13546 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13547    Inherit only the children of the DW_AT_abstract_origin DIE not being
13548    already referenced by DW_AT_abstract_origin from the children of the
13549    current DIE.  */
13550
13551 static void
13552 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13553 {
13554   struct die_info *child_die;
13555   sect_offset *offsetp;
13556   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13557   struct die_info *origin_die;
13558   /* Iterator of the ORIGIN_DIE children.  */
13559   struct die_info *origin_child_die;
13560   struct attribute *attr;
13561   struct dwarf2_cu *origin_cu;
13562   struct pending **origin_previous_list_in_scope;
13563
13564   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13565   if (!attr)
13566     return;
13567
13568   /* Note that following die references may follow to a die in a
13569      different cu.  */
13570
13571   origin_cu = cu;
13572   origin_die = follow_die_ref (die, attr, &origin_cu);
13573
13574   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13575      symbols in.  */
13576   origin_previous_list_in_scope = origin_cu->list_in_scope;
13577   origin_cu->list_in_scope = cu->list_in_scope;
13578
13579   if (die->tag != origin_die->tag
13580       && !(die->tag == DW_TAG_inlined_subroutine
13581            && origin_die->tag == DW_TAG_subprogram))
13582     complaint (_("DIE %s and its abstract origin %s have different tags"),
13583                sect_offset_str (die->sect_off),
13584                sect_offset_str (origin_die->sect_off));
13585
13586   std::vector<sect_offset> offsets;
13587
13588   for (child_die = die->child;
13589        child_die && child_die->tag;
13590        child_die = sibling_die (child_die))
13591     {
13592       struct die_info *child_origin_die;
13593       struct dwarf2_cu *child_origin_cu;
13594
13595       /* We are trying to process concrete instance entries:
13596          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13597          it's not relevant to our analysis here. i.e. detecting DIEs that are
13598          present in the abstract instance but not referenced in the concrete
13599          one.  */
13600       if (child_die->tag == DW_TAG_call_site
13601           || child_die->tag == DW_TAG_GNU_call_site)
13602         continue;
13603
13604       /* For each CHILD_DIE, find the corresponding child of
13605          ORIGIN_DIE.  If there is more than one layer of
13606          DW_AT_abstract_origin, follow them all; there shouldn't be,
13607          but GCC versions at least through 4.4 generate this (GCC PR
13608          40573).  */
13609       child_origin_die = child_die;
13610       child_origin_cu = cu;
13611       while (1)
13612         {
13613           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13614                               child_origin_cu);
13615           if (attr == NULL)
13616             break;
13617           child_origin_die = follow_die_ref (child_origin_die, attr,
13618                                              &child_origin_cu);
13619         }
13620
13621       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13622          counterpart may exist.  */
13623       if (child_origin_die != child_die)
13624         {
13625           if (child_die->tag != child_origin_die->tag
13626               && !(child_die->tag == DW_TAG_inlined_subroutine
13627                    && child_origin_die->tag == DW_TAG_subprogram))
13628             complaint (_("Child DIE %s and its abstract origin %s have "
13629                          "different tags"),
13630                        sect_offset_str (child_die->sect_off),
13631                        sect_offset_str (child_origin_die->sect_off));
13632           if (child_origin_die->parent != origin_die)
13633             complaint (_("Child DIE %s and its abstract origin %s have "
13634                          "different parents"),
13635                        sect_offset_str (child_die->sect_off),
13636                        sect_offset_str (child_origin_die->sect_off));
13637           else
13638             offsets.push_back (child_origin_die->sect_off);
13639         }
13640     }
13641   std::sort (offsets.begin (), offsets.end ());
13642   sect_offset *offsets_end = offsets.data () + offsets.size ();
13643   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13644     if (offsetp[-1] == *offsetp)
13645       complaint (_("Multiple children of DIE %s refer "
13646                    "to DIE %s as their abstract origin"),
13647                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13648
13649   offsetp = offsets.data ();
13650   origin_child_die = origin_die->child;
13651   while (origin_child_die && origin_child_die->tag)
13652     {
13653       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13654       while (offsetp < offsets_end
13655              && *offsetp < origin_child_die->sect_off)
13656         offsetp++;
13657       if (offsetp >= offsets_end
13658           || *offsetp > origin_child_die->sect_off)
13659         {
13660           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13661              Check whether we're already processing ORIGIN_CHILD_DIE.
13662              This can happen with mutually referenced abstract_origins.
13663              PR 16581.  */
13664           if (!origin_child_die->in_process)
13665             process_die (origin_child_die, origin_cu);
13666         }
13667       origin_child_die = sibling_die (origin_child_die);
13668     }
13669   origin_cu->list_in_scope = origin_previous_list_in_scope;
13670 }
13671
13672 static void
13673 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13674 {
13675   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13676   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13677   struct context_stack *newobj;
13678   CORE_ADDR lowpc;
13679   CORE_ADDR highpc;
13680   struct die_info *child_die;
13681   struct attribute *attr, *call_line, *call_file;
13682   const char *name;
13683   CORE_ADDR baseaddr;
13684   struct block *block;
13685   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13686   std::vector<struct symbol *> template_args;
13687   struct template_symbol *templ_func = NULL;
13688
13689   if (inlined_func)
13690     {
13691       /* If we do not have call site information, we can't show the
13692          caller of this inlined function.  That's too confusing, so
13693          only use the scope for local variables.  */
13694       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13695       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13696       if (call_line == NULL || call_file == NULL)
13697         {
13698           read_lexical_block_scope (die, cu);
13699           return;
13700         }
13701     }
13702
13703   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13704
13705   name = dwarf2_name (die, cu);
13706
13707   /* Ignore functions with missing or empty names.  These are actually
13708      illegal according to the DWARF standard.  */
13709   if (name == NULL)
13710     {
13711       complaint (_("missing name for subprogram DIE at %s"),
13712                  sect_offset_str (die->sect_off));
13713       return;
13714     }
13715
13716   /* Ignore functions with missing or invalid low and high pc attributes.  */
13717   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13718       <= PC_BOUNDS_INVALID)
13719     {
13720       attr = dwarf2_attr (die, DW_AT_external, cu);
13721       if (!attr || !DW_UNSND (attr))
13722         complaint (_("cannot get low and high bounds "
13723                      "for subprogram DIE at %s"),
13724                    sect_offset_str (die->sect_off));
13725       return;
13726     }
13727
13728   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13729   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13730
13731   /* If we have any template arguments, then we must allocate a
13732      different sort of symbol.  */
13733   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13734     {
13735       if (child_die->tag == DW_TAG_template_type_param
13736           || child_die->tag == DW_TAG_template_value_param)
13737         {
13738           templ_func = allocate_template_symbol (objfile);
13739           templ_func->subclass = SYMBOL_TEMPLATE;
13740           break;
13741         }
13742     }
13743
13744   newobj = cu->get_builder ()->push_context (0, lowpc);
13745   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13746                              (struct symbol *) templ_func);
13747
13748   /* If there is a location expression for DW_AT_frame_base, record
13749      it.  */
13750   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13751   if (attr)
13752     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13753
13754   /* If there is a location for the static link, record it.  */
13755   newobj->static_link = NULL;
13756   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13757   if (attr)
13758     {
13759       newobj->static_link
13760         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13761       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13762     }
13763
13764   cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13765
13766   if (die->child != NULL)
13767     {
13768       child_die = die->child;
13769       while (child_die && child_die->tag)
13770         {
13771           if (child_die->tag == DW_TAG_template_type_param
13772               || child_die->tag == DW_TAG_template_value_param)
13773             {
13774               struct symbol *arg = new_symbol (child_die, NULL, cu);
13775
13776               if (arg != NULL)
13777                 template_args.push_back (arg);
13778             }
13779           else
13780             process_die (child_die, cu);
13781           child_die = sibling_die (child_die);
13782         }
13783     }
13784
13785   inherit_abstract_dies (die, cu);
13786
13787   /* If we have a DW_AT_specification, we might need to import using
13788      directives from the context of the specification DIE.  See the
13789      comment in determine_prefix.  */
13790   if (cu->language == language_cplus
13791       && dwarf2_attr (die, DW_AT_specification, cu))
13792     {
13793       struct dwarf2_cu *spec_cu = cu;
13794       struct die_info *spec_die = die_specification (die, &spec_cu);
13795
13796       while (spec_die)
13797         {
13798           child_die = spec_die->child;
13799           while (child_die && child_die->tag)
13800             {
13801               if (child_die->tag == DW_TAG_imported_module)
13802                 process_die (child_die, spec_cu);
13803               child_die = sibling_die (child_die);
13804             }
13805
13806           /* In some cases, GCC generates specification DIEs that
13807              themselves contain DW_AT_specification attributes.  */
13808           spec_die = die_specification (spec_die, &spec_cu);
13809         }
13810     }
13811
13812   struct context_stack cstk = cu->get_builder ()->pop_context ();
13813   /* Make a block for the local symbols within.  */
13814   block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13815                                      cstk.static_link, lowpc, highpc);
13816
13817   /* For C++, set the block's scope.  */
13818   if ((cu->language == language_cplus
13819        || cu->language == language_fortran
13820        || cu->language == language_d
13821        || cu->language == language_rust)
13822       && cu->processing_has_namespace_info)
13823     block_set_scope (block, determine_prefix (die, cu),
13824                      &objfile->objfile_obstack);
13825
13826   /* If we have address ranges, record them.  */
13827   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13828
13829   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13830
13831   /* Attach template arguments to function.  */
13832   if (!template_args.empty ())
13833     {
13834       gdb_assert (templ_func != NULL);
13835
13836       templ_func->n_template_arguments = template_args.size ();
13837       templ_func->template_arguments
13838         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13839                      templ_func->n_template_arguments);
13840       memcpy (templ_func->template_arguments,
13841               template_args.data (),
13842               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13843
13844       /* Make sure that the symtab is set on the new symbols.  Even
13845          though they don't appear in this symtab directly, other parts
13846          of gdb assume that symbols do, and this is reasonably
13847          true.  */
13848       for (symbol *sym : template_args)
13849         symbol_set_symtab (sym, symbol_symtab (templ_func));
13850     }
13851
13852   /* In C++, we can have functions nested inside functions (e.g., when
13853      a function declares a class that has methods).  This means that
13854      when we finish processing a function scope, we may need to go
13855      back to building a containing block's symbol lists.  */
13856   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13857   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13858
13859   /* If we've finished processing a top-level function, subsequent
13860      symbols go in the file symbol list.  */
13861   if (cu->get_builder ()->outermost_context_p ())
13862     cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13863 }
13864
13865 /* Process all the DIES contained within a lexical block scope.  Start
13866    a new scope, process the dies, and then close the scope.  */
13867
13868 static void
13869 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13870 {
13871   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13872   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13873   CORE_ADDR lowpc, highpc;
13874   struct die_info *child_die;
13875   CORE_ADDR baseaddr;
13876
13877   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13878
13879   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13880   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13881      as multiple lexical blocks?  Handling children in a sane way would
13882      be nasty.  Might be easier to properly extend generic blocks to
13883      describe ranges.  */
13884   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13885     {
13886     case PC_BOUNDS_NOT_PRESENT:
13887       /* DW_TAG_lexical_block has no attributes, process its children as if
13888          there was no wrapping by that DW_TAG_lexical_block.
13889          GCC does no longer produces such DWARF since GCC r224161.  */
13890       for (child_die = die->child;
13891            child_die != NULL && child_die->tag;
13892            child_die = sibling_die (child_die))
13893         process_die (child_die, cu);
13894       return;
13895     case PC_BOUNDS_INVALID:
13896       return;
13897     }
13898   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13899   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13900
13901   cu->get_builder ()->push_context (0, lowpc);
13902   if (die->child != NULL)
13903     {
13904       child_die = die->child;
13905       while (child_die && child_die->tag)
13906         {
13907           process_die (child_die, cu);
13908           child_die = sibling_die (child_die);
13909         }
13910     }
13911   inherit_abstract_dies (die, cu);
13912   struct context_stack cstk = cu->get_builder ()->pop_context ();
13913
13914   if (*cu->get_builder ()->get_local_symbols () != NULL
13915       || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13916     {
13917       struct block *block
13918         = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13919                                      cstk.start_addr, highpc);
13920
13921       /* Note that recording ranges after traversing children, as we
13922          do here, means that recording a parent's ranges entails
13923          walking across all its children's ranges as they appear in
13924          the address map, which is quadratic behavior.
13925
13926          It would be nicer to record the parent's ranges before
13927          traversing its children, simply overriding whatever you find
13928          there.  But since we don't even decide whether to create a
13929          block until after we've traversed its children, that's hard
13930          to do.  */
13931       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13932     }
13933   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13934   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13935 }
13936
13937 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13938
13939 static void
13940 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13941 {
13942   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13943   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13944   CORE_ADDR pc, baseaddr;
13945   struct attribute *attr;
13946   struct call_site *call_site, call_site_local;
13947   void **slot;
13948   int nparams;
13949   struct die_info *child_die;
13950
13951   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13952
13953   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13954   if (attr == NULL)
13955     {
13956       /* This was a pre-DWARF-5 GNU extension alias
13957          for DW_AT_call_return_pc.  */
13958       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13959     }
13960   if (!attr)
13961     {
13962       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13963                    "DIE %s [in module %s]"),
13964                  sect_offset_str (die->sect_off), objfile_name (objfile));
13965       return;
13966     }
13967   pc = attr_value_as_address (attr) + baseaddr;
13968   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13969
13970   if (cu->call_site_htab == NULL)
13971     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13972                                                NULL, &objfile->objfile_obstack,
13973                                                hashtab_obstack_allocate, NULL);
13974   call_site_local.pc = pc;
13975   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13976   if (*slot != NULL)
13977     {
13978       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13979                    "DIE %s [in module %s]"),
13980                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13981                  objfile_name (objfile));
13982       return;
13983     }
13984
13985   /* Count parameters at the caller.  */
13986
13987   nparams = 0;
13988   for (child_die = die->child; child_die && child_die->tag;
13989        child_die = sibling_die (child_die))
13990     {
13991       if (child_die->tag != DW_TAG_call_site_parameter
13992           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13993         {
13994           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13995                        "DW_TAG_call_site child DIE %s [in module %s]"),
13996                      child_die->tag, sect_offset_str (child_die->sect_off),
13997                      objfile_name (objfile));
13998           continue;
13999         }
14000
14001       nparams++;
14002     }
14003
14004   call_site
14005     = ((struct call_site *)
14006        obstack_alloc (&objfile->objfile_obstack,
14007                       sizeof (*call_site)
14008                       + (sizeof (*call_site->parameter) * (nparams - 1))));
14009   *slot = call_site;
14010   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14011   call_site->pc = pc;
14012
14013   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14014       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14015     {
14016       struct die_info *func_die;
14017
14018       /* Skip also over DW_TAG_inlined_subroutine.  */
14019       for (func_die = die->parent;
14020            func_die && func_die->tag != DW_TAG_subprogram
14021            && func_die->tag != DW_TAG_subroutine_type;
14022            func_die = func_die->parent);
14023
14024       /* DW_AT_call_all_calls is a superset
14025          of DW_AT_call_all_tail_calls.  */
14026       if (func_die
14027           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14028           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14029           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14030           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14031         {
14032           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14033              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14034              both the initial caller containing the real return address PC and
14035              the final callee containing the current PC of a chain of tail
14036              calls do not need to have the tail call list complete.  But any
14037              function candidate for a virtual tail call frame searched via
14038              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14039              determined unambiguously.  */
14040         }
14041       else
14042         {
14043           struct type *func_type = NULL;
14044
14045           if (func_die)
14046             func_type = get_die_type (func_die, cu);
14047           if (func_type != NULL)
14048             {
14049               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14050
14051               /* Enlist this call site to the function.  */
14052               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14053               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14054             }
14055           else
14056             complaint (_("Cannot find function owning DW_TAG_call_site "
14057                          "DIE %s [in module %s]"),
14058                        sect_offset_str (die->sect_off), objfile_name (objfile));
14059         }
14060     }
14061
14062   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14063   if (attr == NULL)
14064     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14065   if (attr == NULL)
14066     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14067   if (attr == NULL)
14068     {
14069       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14070       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14071     }
14072   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14073   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14074     /* Keep NULL DWARF_BLOCK.  */;
14075   else if (attr_form_is_block (attr))
14076     {
14077       struct dwarf2_locexpr_baton *dlbaton;
14078
14079       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14080       dlbaton->data = DW_BLOCK (attr)->data;
14081       dlbaton->size = DW_BLOCK (attr)->size;
14082       dlbaton->per_cu = cu->per_cu;
14083
14084       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14085     }
14086   else if (attr_form_is_ref (attr))
14087     {
14088       struct dwarf2_cu *target_cu = cu;
14089       struct die_info *target_die;
14090
14091       target_die = follow_die_ref (die, attr, &target_cu);
14092       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14093       if (die_is_declaration (target_die, target_cu))
14094         {
14095           const char *target_physname;
14096
14097           /* Prefer the mangled name; otherwise compute the demangled one.  */
14098           target_physname = dw2_linkage_name (target_die, target_cu);
14099           if (target_physname == NULL)
14100             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14101           if (target_physname == NULL)
14102             complaint (_("DW_AT_call_target target DIE has invalid "
14103                          "physname, for referencing DIE %s [in module %s]"),
14104                        sect_offset_str (die->sect_off), objfile_name (objfile));
14105           else
14106             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14107         }
14108       else
14109         {
14110           CORE_ADDR lowpc;
14111
14112           /* DW_AT_entry_pc should be preferred.  */
14113           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14114               <= PC_BOUNDS_INVALID)
14115             complaint (_("DW_AT_call_target target DIE has invalid "
14116                          "low pc, for referencing DIE %s [in module %s]"),
14117                        sect_offset_str (die->sect_off), objfile_name (objfile));
14118           else
14119             {
14120               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14121               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14122             }
14123         }
14124     }
14125   else
14126     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14127                  "block nor reference, for DIE %s [in module %s]"),
14128                sect_offset_str (die->sect_off), objfile_name (objfile));
14129
14130   call_site->per_cu = cu->per_cu;
14131
14132   for (child_die = die->child;
14133        child_die && child_die->tag;
14134        child_die = sibling_die (child_die))
14135     {
14136       struct call_site_parameter *parameter;
14137       struct attribute *loc, *origin;
14138
14139       if (child_die->tag != DW_TAG_call_site_parameter
14140           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14141         {
14142           /* Already printed the complaint above.  */
14143           continue;
14144         }
14145
14146       gdb_assert (call_site->parameter_count < nparams);
14147       parameter = &call_site->parameter[call_site->parameter_count];
14148
14149       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14150          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14151          register is contained in DW_AT_call_value.  */
14152
14153       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14154       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14155       if (origin == NULL)
14156         {
14157           /* This was a pre-DWARF-5 GNU extension alias
14158              for DW_AT_call_parameter.  */
14159           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14160         }
14161       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14162         {
14163           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14164
14165           sect_offset sect_off
14166             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14167           if (!offset_in_cu_p (&cu->header, sect_off))
14168             {
14169               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14170                  binding can be done only inside one CU.  Such referenced DIE
14171                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14172               complaint (_("DW_AT_call_parameter offset is not in CU for "
14173                            "DW_TAG_call_site child DIE %s [in module %s]"),
14174                          sect_offset_str (child_die->sect_off),
14175                          objfile_name (objfile));
14176               continue;
14177             }
14178           parameter->u.param_cu_off
14179             = (cu_offset) (sect_off - cu->header.sect_off);
14180         }
14181       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14182         {
14183           complaint (_("No DW_FORM_block* DW_AT_location for "
14184                        "DW_TAG_call_site child DIE %s [in module %s]"),
14185                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14186           continue;
14187         }
14188       else
14189         {
14190           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14191             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14192           if (parameter->u.dwarf_reg != -1)
14193             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14194           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14195                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14196                                              &parameter->u.fb_offset))
14197             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14198           else
14199             {
14200               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14201                            "for DW_FORM_block* DW_AT_location is supported for "
14202                            "DW_TAG_call_site child DIE %s "
14203                            "[in module %s]"),
14204                          sect_offset_str (child_die->sect_off),
14205                          objfile_name (objfile));
14206               continue;
14207             }
14208         }
14209
14210       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14211       if (attr == NULL)
14212         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14213       if (!attr_form_is_block (attr))
14214         {
14215           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14216                        "DW_TAG_call_site child DIE %s [in module %s]"),
14217                      sect_offset_str (child_die->sect_off),
14218                      objfile_name (objfile));
14219           continue;
14220         }
14221       parameter->value = DW_BLOCK (attr)->data;
14222       parameter->value_size = DW_BLOCK (attr)->size;
14223
14224       /* Parameters are not pre-cleared by memset above.  */
14225       parameter->data_value = NULL;
14226       parameter->data_value_size = 0;
14227       call_site->parameter_count++;
14228
14229       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14230       if (attr == NULL)
14231         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14232       if (attr)
14233         {
14234           if (!attr_form_is_block (attr))
14235             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14236                          "DW_TAG_call_site child DIE %s [in module %s]"),
14237                        sect_offset_str (child_die->sect_off),
14238                        objfile_name (objfile));
14239           else
14240             {
14241               parameter->data_value = DW_BLOCK (attr)->data;
14242               parameter->data_value_size = DW_BLOCK (attr)->size;
14243             }
14244         }
14245     }
14246 }
14247
14248 /* Helper function for read_variable.  If DIE represents a virtual
14249    table, then return the type of the concrete object that is
14250    associated with the virtual table.  Otherwise, return NULL.  */
14251
14252 static struct type *
14253 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14254 {
14255   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14256   if (attr == NULL)
14257     return NULL;
14258
14259   /* Find the type DIE.  */
14260   struct die_info *type_die = NULL;
14261   struct dwarf2_cu *type_cu = cu;
14262
14263   if (attr_form_is_ref (attr))
14264     type_die = follow_die_ref (die, attr, &type_cu);
14265   if (type_die == NULL)
14266     return NULL;
14267
14268   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14269     return NULL;
14270   return die_containing_type (type_die, type_cu);
14271 }
14272
14273 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14274
14275 static void
14276 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14277 {
14278   struct rust_vtable_symbol *storage = NULL;
14279
14280   if (cu->language == language_rust)
14281     {
14282       struct type *containing_type = rust_containing_type (die, cu);
14283
14284       if (containing_type != NULL)
14285         {
14286           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14287
14288           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14289                                     struct rust_vtable_symbol);
14290           initialize_objfile_symbol (storage);
14291           storage->concrete_type = containing_type;
14292           storage->subclass = SYMBOL_RUST_VTABLE;
14293         }
14294     }
14295
14296   struct symbol *res = new_symbol (die, NULL, cu, storage);
14297   struct attribute *abstract_origin
14298     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14299   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14300   if (res == NULL && loc && abstract_origin)
14301     {
14302       /* We have a variable without a name, but with a location and an abstract
14303          origin.  This may be a concrete instance of an abstract variable
14304          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14305          later.  */
14306       struct dwarf2_cu *origin_cu = cu;
14307       struct die_info *origin_die
14308         = follow_die_ref (die, abstract_origin, &origin_cu);
14309       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14310       dpo->abstract_to_concrete[origin_die].push_back (die);
14311     }
14312 }
14313
14314 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14315    reading .debug_rnglists.
14316    Callback's type should be:
14317     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14318    Return true if the attributes are present and valid, otherwise,
14319    return false.  */
14320
14321 template <typename Callback>
14322 static bool
14323 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14324                          Callback &&callback)
14325 {
14326   struct dwarf2_per_objfile *dwarf2_per_objfile
14327     = cu->per_cu->dwarf2_per_objfile;
14328   struct objfile *objfile = dwarf2_per_objfile->objfile;
14329   bfd *obfd = objfile->obfd;
14330   /* Base address selection entry.  */
14331   CORE_ADDR base;
14332   int found_base;
14333   const gdb_byte *buffer;
14334   CORE_ADDR baseaddr;
14335   bool overflow = false;
14336
14337   found_base = cu->base_known;
14338   base = cu->base_address;
14339
14340   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14341   if (offset >= dwarf2_per_objfile->rnglists.size)
14342     {
14343       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14344                  offset);
14345       return false;
14346     }
14347   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14348
14349   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14350
14351   while (1)
14352     {
14353       /* Initialize it due to a false compiler warning.  */
14354       CORE_ADDR range_beginning = 0, range_end = 0;
14355       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14356                                  + dwarf2_per_objfile->rnglists.size);
14357       unsigned int bytes_read;
14358
14359       if (buffer == buf_end)
14360         {
14361           overflow = true;
14362           break;
14363         }
14364       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14365       switch (rlet)
14366         {
14367         case DW_RLE_end_of_list:
14368           break;
14369         case DW_RLE_base_address:
14370           if (buffer + cu->header.addr_size > buf_end)
14371             {
14372               overflow = true;
14373               break;
14374             }
14375           base = read_address (obfd, buffer, cu, &bytes_read);
14376           found_base = 1;
14377           buffer += bytes_read;
14378           break;
14379         case DW_RLE_start_length:
14380           if (buffer + cu->header.addr_size > buf_end)
14381             {
14382               overflow = true;
14383               break;
14384             }
14385           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14386           buffer += bytes_read;
14387           range_end = (range_beginning
14388                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14389           buffer += bytes_read;
14390           if (buffer > buf_end)
14391             {
14392               overflow = true;
14393               break;
14394             }
14395           break;
14396         case DW_RLE_offset_pair:
14397           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14398           buffer += bytes_read;
14399           if (buffer > buf_end)
14400             {
14401               overflow = true;
14402               break;
14403             }
14404           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14405           buffer += bytes_read;
14406           if (buffer > buf_end)
14407             {
14408               overflow = true;
14409               break;
14410             }
14411           break;
14412         case DW_RLE_start_end:
14413           if (buffer + 2 * cu->header.addr_size > buf_end)
14414             {
14415               overflow = true;
14416               break;
14417             }
14418           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14419           buffer += bytes_read;
14420           range_end = read_address (obfd, buffer, cu, &bytes_read);
14421           buffer += bytes_read;
14422           break;
14423         default:
14424           complaint (_("Invalid .debug_rnglists data (no base address)"));
14425           return false;
14426         }
14427       if (rlet == DW_RLE_end_of_list || overflow)
14428         break;
14429       if (rlet == DW_RLE_base_address)
14430         continue;
14431
14432       if (!found_base)
14433         {
14434           /* We have no valid base address for the ranges
14435              data.  */
14436           complaint (_("Invalid .debug_rnglists data (no base address)"));
14437           return false;
14438         }
14439
14440       if (range_beginning > range_end)
14441         {
14442           /* Inverted range entries are invalid.  */
14443           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14444           return false;
14445         }
14446
14447       /* Empty range entries have no effect.  */
14448       if (range_beginning == range_end)
14449         continue;
14450
14451       range_beginning += base;
14452       range_end += base;
14453
14454       /* A not-uncommon case of bad debug info.
14455          Don't pollute the addrmap with bad data.  */
14456       if (range_beginning + baseaddr == 0
14457           && !dwarf2_per_objfile->has_section_at_zero)
14458         {
14459           complaint (_(".debug_rnglists entry has start address of zero"
14460                        " [in module %s]"), objfile_name (objfile));
14461           continue;
14462         }
14463
14464       callback (range_beginning, range_end);
14465     }
14466
14467   if (overflow)
14468     {
14469       complaint (_("Offset %d is not terminated "
14470                    "for DW_AT_ranges attribute"),
14471                  offset);
14472       return false;
14473     }
14474
14475   return true;
14476 }
14477
14478 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14479    Callback's type should be:
14480     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14481    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14482
14483 template <typename Callback>
14484 static int
14485 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14486                        Callback &&callback)
14487 {
14488   struct dwarf2_per_objfile *dwarf2_per_objfile
14489       = cu->per_cu->dwarf2_per_objfile;
14490   struct objfile *objfile = dwarf2_per_objfile->objfile;
14491   struct comp_unit_head *cu_header = &cu->header;
14492   bfd *obfd = objfile->obfd;
14493   unsigned int addr_size = cu_header->addr_size;
14494   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14495   /* Base address selection entry.  */
14496   CORE_ADDR base;
14497   int found_base;
14498   unsigned int dummy;
14499   const gdb_byte *buffer;
14500   CORE_ADDR baseaddr;
14501
14502   if (cu_header->version >= 5)
14503     return dwarf2_rnglists_process (offset, cu, callback);
14504
14505   found_base = cu->base_known;
14506   base = cu->base_address;
14507
14508   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14509   if (offset >= dwarf2_per_objfile->ranges.size)
14510     {
14511       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14512                  offset);
14513       return 0;
14514     }
14515   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14516
14517   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14518
14519   while (1)
14520     {
14521       CORE_ADDR range_beginning, range_end;
14522
14523       range_beginning = read_address (obfd, buffer, cu, &dummy);
14524       buffer += addr_size;
14525       range_end = read_address (obfd, buffer, cu, &dummy);
14526       buffer += addr_size;
14527       offset += 2 * addr_size;
14528
14529       /* An end of list marker is a pair of zero addresses.  */
14530       if (range_beginning == 0 && range_end == 0)
14531         /* Found the end of list entry.  */
14532         break;
14533
14534       /* Each base address selection entry is a pair of 2 values.
14535          The first is the largest possible address, the second is
14536          the base address.  Check for a base address here.  */
14537       if ((range_beginning & mask) == mask)
14538         {
14539           /* If we found the largest possible address, then we already
14540              have the base address in range_end.  */
14541           base = range_end;
14542           found_base = 1;
14543           continue;
14544         }
14545
14546       if (!found_base)
14547         {
14548           /* We have no valid base address for the ranges
14549              data.  */
14550           complaint (_("Invalid .debug_ranges data (no base address)"));
14551           return 0;
14552         }
14553
14554       if (range_beginning > range_end)
14555         {
14556           /* Inverted range entries are invalid.  */
14557           complaint (_("Invalid .debug_ranges data (inverted range)"));
14558           return 0;
14559         }
14560
14561       /* Empty range entries have no effect.  */
14562       if (range_beginning == range_end)
14563         continue;
14564
14565       range_beginning += base;
14566       range_end += base;
14567
14568       /* A not-uncommon case of bad debug info.
14569          Don't pollute the addrmap with bad data.  */
14570       if (range_beginning + baseaddr == 0
14571           && !dwarf2_per_objfile->has_section_at_zero)
14572         {
14573           complaint (_(".debug_ranges entry has start address of zero"
14574                        " [in module %s]"), objfile_name (objfile));
14575           continue;
14576         }
14577
14578       callback (range_beginning, range_end);
14579     }
14580
14581   return 1;
14582 }
14583
14584 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14585    Return 1 if the attributes are present and valid, otherwise, return 0.
14586    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14587
14588 static int
14589 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14590                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14591                     struct partial_symtab *ranges_pst)
14592 {
14593   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14594   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14595   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14596                                        SECT_OFF_TEXT (objfile));
14597   int low_set = 0;
14598   CORE_ADDR low = 0;
14599   CORE_ADDR high = 0;
14600   int retval;
14601
14602   retval = dwarf2_ranges_process (offset, cu,
14603     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14604     {
14605       if (ranges_pst != NULL)
14606         {
14607           CORE_ADDR lowpc;
14608           CORE_ADDR highpc;
14609
14610           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14611                                                range_beginning + baseaddr)
14612                    - baseaddr);
14613           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14614                                                 range_end + baseaddr)
14615                     - baseaddr);
14616           addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14617                              lowpc, highpc - 1, ranges_pst);
14618         }
14619
14620       /* FIXME: This is recording everything as a low-high
14621          segment of consecutive addresses.  We should have a
14622          data structure for discontiguous block ranges
14623          instead.  */
14624       if (! low_set)
14625         {
14626           low = range_beginning;
14627           high = range_end;
14628           low_set = 1;
14629         }
14630       else
14631         {
14632           if (range_beginning < low)
14633             low = range_beginning;
14634           if (range_end > high)
14635             high = range_end;
14636         }
14637     });
14638   if (!retval)
14639     return 0;
14640
14641   if (! low_set)
14642     /* If the first entry is an end-of-list marker, the range
14643        describes an empty scope, i.e. no instructions.  */
14644     return 0;
14645
14646   if (low_return)
14647     *low_return = low;
14648   if (high_return)
14649     *high_return = high;
14650   return 1;
14651 }
14652
14653 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14654    definition for the return value.  *LOWPC and *HIGHPC are set iff
14655    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14656
14657 static enum pc_bounds_kind
14658 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14659                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14660                       struct partial_symtab *pst)
14661 {
14662   struct dwarf2_per_objfile *dwarf2_per_objfile
14663     = cu->per_cu->dwarf2_per_objfile;
14664   struct attribute *attr;
14665   struct attribute *attr_high;
14666   CORE_ADDR low = 0;
14667   CORE_ADDR high = 0;
14668   enum pc_bounds_kind ret;
14669
14670   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14671   if (attr_high)
14672     {
14673       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14674       if (attr)
14675         {
14676           low = attr_value_as_address (attr);
14677           high = attr_value_as_address (attr_high);
14678           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14679             high += low;
14680         }
14681       else
14682         /* Found high w/o low attribute.  */
14683         return PC_BOUNDS_INVALID;
14684
14685       /* Found consecutive range of addresses.  */
14686       ret = PC_BOUNDS_HIGH_LOW;
14687     }
14688   else
14689     {
14690       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14691       if (attr != NULL)
14692         {
14693           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14694              We take advantage of the fact that DW_AT_ranges does not appear
14695              in DW_TAG_compile_unit of DWO files.  */
14696           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14697           unsigned int ranges_offset = (DW_UNSND (attr)
14698                                         + (need_ranges_base
14699                                            ? cu->ranges_base
14700                                            : 0));
14701
14702           /* Value of the DW_AT_ranges attribute is the offset in the
14703              .debug_ranges section.  */
14704           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14705             return PC_BOUNDS_INVALID;
14706           /* Found discontinuous range of addresses.  */
14707           ret = PC_BOUNDS_RANGES;
14708         }
14709       else
14710         return PC_BOUNDS_NOT_PRESENT;
14711     }
14712
14713   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14714   if (high <= low)
14715     return PC_BOUNDS_INVALID;
14716
14717   /* When using the GNU linker, .gnu.linkonce. sections are used to
14718      eliminate duplicate copies of functions and vtables and such.
14719      The linker will arbitrarily choose one and discard the others.
14720      The AT_*_pc values for such functions refer to local labels in
14721      these sections.  If the section from that file was discarded, the
14722      labels are not in the output, so the relocs get a value of 0.
14723      If this is a discarded function, mark the pc bounds as invalid,
14724      so that GDB will ignore it.  */
14725   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14726     return PC_BOUNDS_INVALID;
14727
14728   *lowpc = low;
14729   if (highpc)
14730     *highpc = high;
14731   return ret;
14732 }
14733
14734 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14735    its low and high PC addresses.  Do nothing if these addresses could not
14736    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14737    and HIGHPC to the high address if greater than HIGHPC.  */
14738
14739 static void
14740 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14741                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14742                                  struct dwarf2_cu *cu)
14743 {
14744   CORE_ADDR low, high;
14745   struct die_info *child = die->child;
14746
14747   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14748     {
14749       *lowpc = std::min (*lowpc, low);
14750       *highpc = std::max (*highpc, high);
14751     }
14752
14753   /* If the language does not allow nested subprograms (either inside
14754      subprograms or lexical blocks), we're done.  */
14755   if (cu->language != language_ada)
14756     return;
14757
14758   /* Check all the children of the given DIE.  If it contains nested
14759      subprograms, then check their pc bounds.  Likewise, we need to
14760      check lexical blocks as well, as they may also contain subprogram
14761      definitions.  */
14762   while (child && child->tag)
14763     {
14764       if (child->tag == DW_TAG_subprogram
14765           || child->tag == DW_TAG_lexical_block)
14766         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14767       child = sibling_die (child);
14768     }
14769 }
14770
14771 /* Get the low and high pc's represented by the scope DIE, and store
14772    them in *LOWPC and *HIGHPC.  If the correct values can't be
14773    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14774
14775 static void
14776 get_scope_pc_bounds (struct die_info *die,
14777                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14778                      struct dwarf2_cu *cu)
14779 {
14780   CORE_ADDR best_low = (CORE_ADDR) -1;
14781   CORE_ADDR best_high = (CORE_ADDR) 0;
14782   CORE_ADDR current_low, current_high;
14783
14784   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14785       >= PC_BOUNDS_RANGES)
14786     {
14787       best_low = current_low;
14788       best_high = current_high;
14789     }
14790   else
14791     {
14792       struct die_info *child = die->child;
14793
14794       while (child && child->tag)
14795         {
14796           switch (child->tag) {
14797           case DW_TAG_subprogram:
14798             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14799             break;
14800           case DW_TAG_namespace:
14801           case DW_TAG_module:
14802             /* FIXME: carlton/2004-01-16: Should we do this for
14803                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14804                that current GCC's always emit the DIEs corresponding
14805                to definitions of methods of classes as children of a
14806                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14807                the DIEs giving the declarations, which could be
14808                anywhere).  But I don't see any reason why the
14809                standards says that they have to be there.  */
14810             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14811
14812             if (current_low != ((CORE_ADDR) -1))
14813               {
14814                 best_low = std::min (best_low, current_low);
14815                 best_high = std::max (best_high, current_high);
14816               }
14817             break;
14818           default:
14819             /* Ignore.  */
14820             break;
14821           }
14822
14823           child = sibling_die (child);
14824         }
14825     }
14826
14827   *lowpc = best_low;
14828   *highpc = best_high;
14829 }
14830
14831 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14832    in DIE.  */
14833
14834 static void
14835 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14836                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14837 {
14838   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14839   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14840   struct attribute *attr;
14841   struct attribute *attr_high;
14842
14843   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14844   if (attr_high)
14845     {
14846       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14847       if (attr)
14848         {
14849           CORE_ADDR low = attr_value_as_address (attr);
14850           CORE_ADDR high = attr_value_as_address (attr_high);
14851
14852           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14853             high += low;
14854
14855           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14856           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14857           cu->get_builder ()->record_block_range (block, low, high - 1);
14858         }
14859     }
14860
14861   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14862   if (attr)
14863     {
14864       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14865          We take advantage of the fact that DW_AT_ranges does not appear
14866          in DW_TAG_compile_unit of DWO files.  */
14867       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14868
14869       /* The value of the DW_AT_ranges attribute is the offset of the
14870          address range list in the .debug_ranges section.  */
14871       unsigned long offset = (DW_UNSND (attr)
14872                               + (need_ranges_base ? cu->ranges_base : 0));
14873
14874       std::vector<blockrange> blockvec;
14875       dwarf2_ranges_process (offset, cu,
14876         [&] (CORE_ADDR start, CORE_ADDR end)
14877         {
14878           start += baseaddr;
14879           end += baseaddr;
14880           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14881           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14882           cu->get_builder ()->record_block_range (block, start, end - 1);
14883           blockvec.emplace_back (start, end);
14884         });
14885
14886       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14887     }
14888 }
14889
14890 /* Check whether the producer field indicates either of GCC < 4.6, or the
14891    Intel C/C++ compiler, and cache the result in CU.  */
14892
14893 static void
14894 check_producer (struct dwarf2_cu *cu)
14895 {
14896   int major, minor;
14897
14898   if (cu->producer == NULL)
14899     {
14900       /* For unknown compilers expect their behavior is DWARF version
14901          compliant.
14902
14903          GCC started to support .debug_types sections by -gdwarf-4 since
14904          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14905          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14906          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14907          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14908     }
14909   else if (producer_is_gcc (cu->producer, &major, &minor))
14910     {
14911       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14912       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14913     }
14914   else if (producer_is_icc (cu->producer, &major, &minor))
14915     {
14916       cu->producer_is_icc = true;
14917       cu->producer_is_icc_lt_14 = major < 14;
14918     }
14919   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14920     cu->producer_is_codewarrior = true;
14921   else
14922     {
14923       /* For other non-GCC compilers, expect their behavior is DWARF version
14924          compliant.  */
14925     }
14926
14927   cu->checked_producer = true;
14928 }
14929
14930 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14931    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14932    during 4.6.0 experimental.  */
14933
14934 static bool
14935 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14936 {
14937   if (!cu->checked_producer)
14938     check_producer (cu);
14939
14940   return cu->producer_is_gxx_lt_4_6;
14941 }
14942
14943
14944 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14945    with incorrect is_stmt attributes.  */
14946
14947 static bool
14948 producer_is_codewarrior (struct dwarf2_cu *cu)
14949 {
14950   if (!cu->checked_producer)
14951     check_producer (cu);
14952
14953   return cu->producer_is_codewarrior;
14954 }
14955
14956 /* Return the default accessibility type if it is not overriden by
14957    DW_AT_accessibility.  */
14958
14959 static enum dwarf_access_attribute
14960 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14961 {
14962   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14963     {
14964       /* The default DWARF 2 accessibility for members is public, the default
14965          accessibility for inheritance is private.  */
14966
14967       if (die->tag != DW_TAG_inheritance)
14968         return DW_ACCESS_public;
14969       else
14970         return DW_ACCESS_private;
14971     }
14972   else
14973     {
14974       /* DWARF 3+ defines the default accessibility a different way.  The same
14975          rules apply now for DW_TAG_inheritance as for the members and it only
14976          depends on the container kind.  */
14977
14978       if (die->parent->tag == DW_TAG_class_type)
14979         return DW_ACCESS_private;
14980       else
14981         return DW_ACCESS_public;
14982     }
14983 }
14984
14985 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14986    offset.  If the attribute was not found return 0, otherwise return
14987    1.  If it was found but could not properly be handled, set *OFFSET
14988    to 0.  */
14989
14990 static int
14991 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14992                              LONGEST *offset)
14993 {
14994   struct attribute *attr;
14995
14996   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14997   if (attr != NULL)
14998     {
14999       *offset = 0;
15000
15001       /* Note that we do not check for a section offset first here.
15002          This is because DW_AT_data_member_location is new in DWARF 4,
15003          so if we see it, we can assume that a constant form is really
15004          a constant and not a section offset.  */
15005       if (attr_form_is_constant (attr))
15006         *offset = dwarf2_get_attr_constant_value (attr, 0);
15007       else if (attr_form_is_section_offset (attr))
15008         dwarf2_complex_location_expr_complaint ();
15009       else if (attr_form_is_block (attr))
15010         *offset = decode_locdesc (DW_BLOCK (attr), cu);
15011       else
15012         dwarf2_complex_location_expr_complaint ();
15013
15014       return 1;
15015     }
15016
15017   return 0;
15018 }
15019
15020 /* Add an aggregate field to the field list.  */
15021
15022 static void
15023 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15024                   struct dwarf2_cu *cu)
15025 {
15026   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15027   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15028   struct nextfield *new_field;
15029   struct attribute *attr;
15030   struct field *fp;
15031   const char *fieldname = "";
15032
15033   if (die->tag == DW_TAG_inheritance)
15034     {
15035       fip->baseclasses.emplace_back ();
15036       new_field = &fip->baseclasses.back ();
15037     }
15038   else
15039     {
15040       fip->fields.emplace_back ();
15041       new_field = &fip->fields.back ();
15042     }
15043
15044   fip->nfields++;
15045
15046   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15047   if (attr)
15048     new_field->accessibility = DW_UNSND (attr);
15049   else
15050     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15051   if (new_field->accessibility != DW_ACCESS_public)
15052     fip->non_public_fields = 1;
15053
15054   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15055   if (attr)
15056     new_field->virtuality = DW_UNSND (attr);
15057   else
15058     new_field->virtuality = DW_VIRTUALITY_none;
15059
15060   fp = &new_field->field;
15061
15062   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15063     {
15064       LONGEST offset;
15065
15066       /* Data member other than a C++ static data member.  */
15067
15068       /* Get type of field.  */
15069       fp->type = die_type (die, cu);
15070
15071       SET_FIELD_BITPOS (*fp, 0);
15072
15073       /* Get bit size of field (zero if none).  */
15074       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15075       if (attr)
15076         {
15077           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15078         }
15079       else
15080         {
15081           FIELD_BITSIZE (*fp) = 0;
15082         }
15083
15084       /* Get bit offset of field.  */
15085       if (handle_data_member_location (die, cu, &offset))
15086         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15087       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15088       if (attr)
15089         {
15090           if (gdbarch_bits_big_endian (gdbarch))
15091             {
15092               /* For big endian bits, the DW_AT_bit_offset gives the
15093                  additional bit offset from the MSB of the containing
15094                  anonymous object to the MSB of the field.  We don't
15095                  have to do anything special since we don't need to
15096                  know the size of the anonymous object.  */
15097               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15098             }
15099           else
15100             {
15101               /* For little endian bits, compute the bit offset to the
15102                  MSB of the anonymous object, subtract off the number of
15103                  bits from the MSB of the field to the MSB of the
15104                  object, and then subtract off the number of bits of
15105                  the field itself.  The result is the bit offset of
15106                  the LSB of the field.  */
15107               int anonymous_size;
15108               int bit_offset = DW_UNSND (attr);
15109
15110               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15111               if (attr)
15112                 {
15113                   /* The size of the anonymous object containing
15114                      the bit field is explicit, so use the
15115                      indicated size (in bytes).  */
15116                   anonymous_size = DW_UNSND (attr);
15117                 }
15118               else
15119                 {
15120                   /* The size of the anonymous object containing
15121                      the bit field must be inferred from the type
15122                      attribute of the data member containing the
15123                      bit field.  */
15124                   anonymous_size = TYPE_LENGTH (fp->type);
15125                 }
15126               SET_FIELD_BITPOS (*fp,
15127                                 (FIELD_BITPOS (*fp)
15128                                  + anonymous_size * bits_per_byte
15129                                  - bit_offset - FIELD_BITSIZE (*fp)));
15130             }
15131         }
15132       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15133       if (attr != NULL)
15134         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15135                                 + dwarf2_get_attr_constant_value (attr, 0)));
15136
15137       /* Get name of field.  */
15138       fieldname = dwarf2_name (die, cu);
15139       if (fieldname == NULL)
15140         fieldname = "";
15141
15142       /* The name is already allocated along with this objfile, so we don't
15143          need to duplicate it for the type.  */
15144       fp->name = fieldname;
15145
15146       /* Change accessibility for artificial fields (e.g. virtual table
15147          pointer or virtual base class pointer) to private.  */
15148       if (dwarf2_attr (die, DW_AT_artificial, cu))
15149         {
15150           FIELD_ARTIFICIAL (*fp) = 1;
15151           new_field->accessibility = DW_ACCESS_private;
15152           fip->non_public_fields = 1;
15153         }
15154     }
15155   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15156     {
15157       /* C++ static member.  */
15158
15159       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15160          is a declaration, but all versions of G++ as of this writing
15161          (so through at least 3.2.1) incorrectly generate
15162          DW_TAG_variable tags.  */
15163
15164       const char *physname;
15165
15166       /* Get name of field.  */
15167       fieldname = dwarf2_name (die, cu);
15168       if (fieldname == NULL)
15169         return;
15170
15171       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15172       if (attr
15173           /* Only create a symbol if this is an external value.
15174              new_symbol checks this and puts the value in the global symbol
15175              table, which we want.  If it is not external, new_symbol
15176              will try to put the value in cu->list_in_scope which is wrong.  */
15177           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15178         {
15179           /* A static const member, not much different than an enum as far as
15180              we're concerned, except that we can support more types.  */
15181           new_symbol (die, NULL, cu);
15182         }
15183
15184       /* Get physical name.  */
15185       physname = dwarf2_physname (fieldname, die, cu);
15186
15187       /* The name is already allocated along with this objfile, so we don't
15188          need to duplicate it for the type.  */
15189       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15190       FIELD_TYPE (*fp) = die_type (die, cu);
15191       FIELD_NAME (*fp) = fieldname;
15192     }
15193   else if (die->tag == DW_TAG_inheritance)
15194     {
15195       LONGEST offset;
15196
15197       /* C++ base class field.  */
15198       if (handle_data_member_location (die, cu, &offset))
15199         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15200       FIELD_BITSIZE (*fp) = 0;
15201       FIELD_TYPE (*fp) = die_type (die, cu);
15202       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15203     }
15204   else if (die->tag == DW_TAG_variant_part)
15205     {
15206       /* process_structure_scope will treat this DIE as a union.  */
15207       process_structure_scope (die, cu);
15208
15209       /* The variant part is relative to the start of the enclosing
15210          structure.  */
15211       SET_FIELD_BITPOS (*fp, 0);
15212       fp->type = get_die_type (die, cu);
15213       fp->artificial = 1;
15214       fp->name = "<<variant>>";
15215
15216       /* Normally a DW_TAG_variant_part won't have a size, but our
15217          representation requires one, so set it to the maximum of the
15218          child sizes.  */
15219       if (TYPE_LENGTH (fp->type) == 0)
15220         {
15221           unsigned max = 0;
15222           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15223             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15224               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15225           TYPE_LENGTH (fp->type) = max;
15226         }
15227     }
15228   else
15229     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15230 }
15231
15232 /* Can the type given by DIE define another type?  */
15233
15234 static bool
15235 type_can_define_types (const struct die_info *die)
15236 {
15237   switch (die->tag)
15238     {
15239     case DW_TAG_typedef:
15240     case DW_TAG_class_type:
15241     case DW_TAG_structure_type:
15242     case DW_TAG_union_type:
15243     case DW_TAG_enumeration_type:
15244       return true;
15245
15246     default:
15247       return false;
15248     }
15249 }
15250
15251 /* Add a type definition defined in the scope of the FIP's class.  */
15252
15253 static void
15254 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15255                       struct dwarf2_cu *cu)
15256 {
15257   struct decl_field fp;
15258   memset (&fp, 0, sizeof (fp));
15259
15260   gdb_assert (type_can_define_types (die));
15261
15262   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15263   fp.name = dwarf2_name (die, cu);
15264   fp.type = read_type_die (die, cu);
15265
15266   /* Save accessibility.  */
15267   enum dwarf_access_attribute accessibility;
15268   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15269   if (attr != NULL)
15270     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15271   else
15272     accessibility = dwarf2_default_access_attribute (die, cu);
15273   switch (accessibility)
15274     {
15275     case DW_ACCESS_public:
15276       /* The assumed value if neither private nor protected.  */
15277       break;
15278     case DW_ACCESS_private:
15279       fp.is_private = 1;
15280       break;
15281     case DW_ACCESS_protected:
15282       fp.is_protected = 1;
15283       break;
15284     default:
15285       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15286     }
15287
15288   if (die->tag == DW_TAG_typedef)
15289     fip->typedef_field_list.push_back (fp);
15290   else
15291     fip->nested_types_list.push_back (fp);
15292 }
15293
15294 /* Create the vector of fields, and attach it to the type.  */
15295
15296 static void
15297 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15298                               struct dwarf2_cu *cu)
15299 {
15300   int nfields = fip->nfields;
15301
15302   /* Record the field count, allocate space for the array of fields,
15303      and create blank accessibility bitfields if necessary.  */
15304   TYPE_NFIELDS (type) = nfields;
15305   TYPE_FIELDS (type) = (struct field *)
15306     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15307
15308   if (fip->non_public_fields && cu->language != language_ada)
15309     {
15310       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15311
15312       TYPE_FIELD_PRIVATE_BITS (type) =
15313         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15314       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15315
15316       TYPE_FIELD_PROTECTED_BITS (type) =
15317         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15318       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15319
15320       TYPE_FIELD_IGNORE_BITS (type) =
15321         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15322       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15323     }
15324
15325   /* If the type has baseclasses, allocate and clear a bit vector for
15326      TYPE_FIELD_VIRTUAL_BITS.  */
15327   if (!fip->baseclasses.empty () && cu->language != language_ada)
15328     {
15329       int num_bytes = B_BYTES (fip->baseclasses.size ());
15330       unsigned char *pointer;
15331
15332       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15333       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15334       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15335       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15336       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15337     }
15338
15339   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15340     {
15341       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15342
15343       for (int index = 0; index < nfields; ++index)
15344         {
15345           struct nextfield &field = fip->fields[index];
15346
15347           if (field.variant.is_discriminant)
15348             di->discriminant_index = index;
15349           else if (field.variant.default_branch)
15350             di->default_index = index;
15351           else
15352             di->discriminants[index] = field.variant.discriminant_value;
15353         }
15354     }
15355
15356   /* Copy the saved-up fields into the field vector.  */
15357   for (int i = 0; i < nfields; ++i)
15358     {
15359       struct nextfield &field
15360         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15361            : fip->fields[i - fip->baseclasses.size ()]);
15362
15363       TYPE_FIELD (type, i) = field.field;
15364       switch (field.accessibility)
15365         {
15366         case DW_ACCESS_private:
15367           if (cu->language != language_ada)
15368             SET_TYPE_FIELD_PRIVATE (type, i);
15369           break;
15370
15371         case DW_ACCESS_protected:
15372           if (cu->language != language_ada)
15373             SET_TYPE_FIELD_PROTECTED (type, i);
15374           break;
15375
15376         case DW_ACCESS_public:
15377           break;
15378
15379         default:
15380           /* Unknown accessibility.  Complain and treat it as public.  */
15381           {
15382             complaint (_("unsupported accessibility %d"),
15383                        field.accessibility);
15384           }
15385           break;
15386         }
15387       if (i < fip->baseclasses.size ())
15388         {
15389           switch (field.virtuality)
15390             {
15391             case DW_VIRTUALITY_virtual:
15392             case DW_VIRTUALITY_pure_virtual:
15393               if (cu->language == language_ada)
15394                 error (_("unexpected virtuality in component of Ada type"));
15395               SET_TYPE_FIELD_VIRTUAL (type, i);
15396               break;
15397             }
15398         }
15399     }
15400 }
15401
15402 /* Return true if this member function is a constructor, false
15403    otherwise.  */
15404
15405 static int
15406 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15407 {
15408   const char *fieldname;
15409   const char *type_name;
15410   int len;
15411
15412   if (die->parent == NULL)
15413     return 0;
15414
15415   if (die->parent->tag != DW_TAG_structure_type
15416       && die->parent->tag != DW_TAG_union_type
15417       && die->parent->tag != DW_TAG_class_type)
15418     return 0;
15419
15420   fieldname = dwarf2_name (die, cu);
15421   type_name = dwarf2_name (die->parent, cu);
15422   if (fieldname == NULL || type_name == NULL)
15423     return 0;
15424
15425   len = strlen (fieldname);
15426   return (strncmp (fieldname, type_name, len) == 0
15427           && (type_name[len] == '\0' || type_name[len] == '<'));
15428 }
15429
15430 /* Add a member function to the proper fieldlist.  */
15431
15432 static void
15433 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15434                       struct type *type, struct dwarf2_cu *cu)
15435 {
15436   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15437   struct attribute *attr;
15438   int i;
15439   struct fnfieldlist *flp = nullptr;
15440   struct fn_field *fnp;
15441   const char *fieldname;
15442   struct type *this_type;
15443   enum dwarf_access_attribute accessibility;
15444
15445   if (cu->language == language_ada)
15446     error (_("unexpected member function in Ada type"));
15447
15448   /* Get name of member function.  */
15449   fieldname = dwarf2_name (die, cu);
15450   if (fieldname == NULL)
15451     return;
15452
15453   /* Look up member function name in fieldlist.  */
15454   for (i = 0; i < fip->fnfieldlists.size (); i++)
15455     {
15456       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15457         {
15458           flp = &fip->fnfieldlists[i];
15459           break;
15460         }
15461     }
15462
15463   /* Create a new fnfieldlist if necessary.  */
15464   if (flp == nullptr)
15465     {
15466       fip->fnfieldlists.emplace_back ();
15467       flp = &fip->fnfieldlists.back ();
15468       flp->name = fieldname;
15469       i = fip->fnfieldlists.size () - 1;
15470     }
15471
15472   /* Create a new member function field and add it to the vector of
15473      fnfieldlists.  */
15474   flp->fnfields.emplace_back ();
15475   fnp = &flp->fnfields.back ();
15476
15477   /* Delay processing of the physname until later.  */
15478   if (cu->language == language_cplus)
15479     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15480                         die, cu);
15481   else
15482     {
15483       const char *physname = dwarf2_physname (fieldname, die, cu);
15484       fnp->physname = physname ? physname : "";
15485     }
15486
15487   fnp->type = alloc_type (objfile);
15488   this_type = read_type_die (die, cu);
15489   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15490     {
15491       int nparams = TYPE_NFIELDS (this_type);
15492
15493       /* TYPE is the domain of this method, and THIS_TYPE is the type
15494            of the method itself (TYPE_CODE_METHOD).  */
15495       smash_to_method_type (fnp->type, type,
15496                             TYPE_TARGET_TYPE (this_type),
15497                             TYPE_FIELDS (this_type),
15498                             TYPE_NFIELDS (this_type),
15499                             TYPE_VARARGS (this_type));
15500
15501       /* Handle static member functions.
15502          Dwarf2 has no clean way to discern C++ static and non-static
15503          member functions.  G++ helps GDB by marking the first
15504          parameter for non-static member functions (which is the this
15505          pointer) as artificial.  We obtain this information from
15506          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15507       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15508         fnp->voffset = VOFFSET_STATIC;
15509     }
15510   else
15511     complaint (_("member function type missing for '%s'"),
15512                dwarf2_full_name (fieldname, die, cu));
15513
15514   /* Get fcontext from DW_AT_containing_type if present.  */
15515   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15516     fnp->fcontext = die_containing_type (die, cu);
15517
15518   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15519      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15520
15521   /* Get accessibility.  */
15522   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15523   if (attr)
15524     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15525   else
15526     accessibility = dwarf2_default_access_attribute (die, cu);
15527   switch (accessibility)
15528     {
15529     case DW_ACCESS_private:
15530       fnp->is_private = 1;
15531       break;
15532     case DW_ACCESS_protected:
15533       fnp->is_protected = 1;
15534       break;
15535     }
15536
15537   /* Check for artificial methods.  */
15538   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15539   if (attr && DW_UNSND (attr) != 0)
15540     fnp->is_artificial = 1;
15541
15542   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15543
15544   /* Get index in virtual function table if it is a virtual member
15545      function.  For older versions of GCC, this is an offset in the
15546      appropriate virtual table, as specified by DW_AT_containing_type.
15547      For everyone else, it is an expression to be evaluated relative
15548      to the object address.  */
15549
15550   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15551   if (attr)
15552     {
15553       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15554         {
15555           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15556             {
15557               /* Old-style GCC.  */
15558               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15559             }
15560           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15561                    || (DW_BLOCK (attr)->size > 1
15562                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15563                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15564             {
15565               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15566               if ((fnp->voffset % cu->header.addr_size) != 0)
15567                 dwarf2_complex_location_expr_complaint ();
15568               else
15569                 fnp->voffset /= cu->header.addr_size;
15570               fnp->voffset += 2;
15571             }
15572           else
15573             dwarf2_complex_location_expr_complaint ();
15574
15575           if (!fnp->fcontext)
15576             {
15577               /* If there is no `this' field and no DW_AT_containing_type,
15578                  we cannot actually find a base class context for the
15579                  vtable!  */
15580               if (TYPE_NFIELDS (this_type) == 0
15581                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15582                 {
15583                   complaint (_("cannot determine context for virtual member "
15584                                "function \"%s\" (offset %s)"),
15585                              fieldname, sect_offset_str (die->sect_off));
15586                 }
15587               else
15588                 {
15589                   fnp->fcontext
15590                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15591                 }
15592             }
15593         }
15594       else if (attr_form_is_section_offset (attr))
15595         {
15596           dwarf2_complex_location_expr_complaint ();
15597         }
15598       else
15599         {
15600           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15601                                                  fieldname);
15602         }
15603     }
15604   else
15605     {
15606       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15607       if (attr && DW_UNSND (attr))
15608         {
15609           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15610           complaint (_("Member function \"%s\" (offset %s) is virtual "
15611                        "but the vtable offset is not specified"),
15612                      fieldname, sect_offset_str (die->sect_off));
15613           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15614           TYPE_CPLUS_DYNAMIC (type) = 1;
15615         }
15616     }
15617 }
15618
15619 /* Create the vector of member function fields, and attach it to the type.  */
15620
15621 static void
15622 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15623                                  struct dwarf2_cu *cu)
15624 {
15625   if (cu->language == language_ada)
15626     error (_("unexpected member functions in Ada type"));
15627
15628   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15629   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15630     TYPE_ALLOC (type,
15631                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15632
15633   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15634     {
15635       struct fnfieldlist &nf = fip->fnfieldlists[i];
15636       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15637
15638       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15639       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15640       fn_flp->fn_fields = (struct fn_field *)
15641         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15642
15643       for (int k = 0; k < nf.fnfields.size (); ++k)
15644         fn_flp->fn_fields[k] = nf.fnfields[k];
15645     }
15646
15647   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15648 }
15649
15650 /* Returns non-zero if NAME is the name of a vtable member in CU's
15651    language, zero otherwise.  */
15652 static int
15653 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15654 {
15655   static const char vptr[] = "_vptr";
15656
15657   /* Look for the C++ form of the vtable.  */
15658   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15659     return 1;
15660
15661   return 0;
15662 }
15663
15664 /* GCC outputs unnamed structures that are really pointers to member
15665    functions, with the ABI-specified layout.  If TYPE describes
15666    such a structure, smash it into a member function type.
15667
15668    GCC shouldn't do this; it should just output pointer to member DIEs.
15669    This is GCC PR debug/28767.  */
15670
15671 static void
15672 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15673 {
15674   struct type *pfn_type, *self_type, *new_type;
15675
15676   /* Check for a structure with no name and two children.  */
15677   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15678     return;
15679
15680   /* Check for __pfn and __delta members.  */
15681   if (TYPE_FIELD_NAME (type, 0) == NULL
15682       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15683       || TYPE_FIELD_NAME (type, 1) == NULL
15684       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15685     return;
15686
15687   /* Find the type of the method.  */
15688   pfn_type = TYPE_FIELD_TYPE (type, 0);
15689   if (pfn_type == NULL
15690       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15691       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15692     return;
15693
15694   /* Look for the "this" argument.  */
15695   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15696   if (TYPE_NFIELDS (pfn_type) == 0
15697       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15698       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15699     return;
15700
15701   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15702   new_type = alloc_type (objfile);
15703   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15704                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15705                         TYPE_VARARGS (pfn_type));
15706   smash_to_methodptr_type (type, new_type);
15707 }
15708
15709 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15710    appropriate error checking and issuing complaints if there is a
15711    problem.  */
15712
15713 static ULONGEST
15714 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15715 {
15716   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15717
15718   if (attr == nullptr)
15719     return 0;
15720
15721   if (!attr_form_is_constant (attr))
15722     {
15723       complaint (_("DW_AT_alignment must have constant form"
15724                    " - DIE at %s [in module %s]"),
15725                  sect_offset_str (die->sect_off),
15726                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15727       return 0;
15728     }
15729
15730   ULONGEST align;
15731   if (attr->form == DW_FORM_sdata)
15732     {
15733       LONGEST val = DW_SND (attr);
15734       if (val < 0)
15735         {
15736           complaint (_("DW_AT_alignment value must not be negative"
15737                        " - DIE at %s [in module %s]"),
15738                      sect_offset_str (die->sect_off),
15739                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15740           return 0;
15741         }
15742       align = val;
15743     }
15744   else
15745     align = DW_UNSND (attr);
15746
15747   if (align == 0)
15748     {
15749       complaint (_("DW_AT_alignment value must not be zero"
15750                    " - DIE at %s [in module %s]"),
15751                  sect_offset_str (die->sect_off),
15752                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15753       return 0;
15754     }
15755   if ((align & (align - 1)) != 0)
15756     {
15757       complaint (_("DW_AT_alignment value must be a power of 2"
15758                    " - DIE at %s [in module %s]"),
15759                  sect_offset_str (die->sect_off),
15760                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15761       return 0;
15762     }
15763
15764   return align;
15765 }
15766
15767 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15768    the alignment for TYPE.  */
15769
15770 static void
15771 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15772                      struct type *type)
15773 {
15774   if (!set_type_align (type, get_alignment (cu, die)))
15775     complaint (_("DW_AT_alignment value too large"
15776                  " - DIE at %s [in module %s]"),
15777                sect_offset_str (die->sect_off),
15778                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15779 }
15780
15781 /* Called when we find the DIE that starts a structure or union scope
15782    (definition) to create a type for the structure or union.  Fill in
15783    the type's name and general properties; the members will not be
15784    processed until process_structure_scope.  A symbol table entry for
15785    the type will also not be done until process_structure_scope (assuming
15786    the type has a name).
15787
15788    NOTE: we need to call these functions regardless of whether or not the
15789    DIE has a DW_AT_name attribute, since it might be an anonymous
15790    structure or union.  This gets the type entered into our set of
15791    user defined types.  */
15792
15793 static struct type *
15794 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15795 {
15796   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15797   struct type *type;
15798   struct attribute *attr;
15799   const char *name;
15800
15801   /* If the definition of this type lives in .debug_types, read that type.
15802      Don't follow DW_AT_specification though, that will take us back up
15803      the chain and we want to go down.  */
15804   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15805   if (attr)
15806     {
15807       type = get_DW_AT_signature_type (die, attr, cu);
15808
15809       /* The type's CU may not be the same as CU.
15810          Ensure TYPE is recorded with CU in die_type_hash.  */
15811       return set_die_type (die, type, cu);
15812     }
15813
15814   type = alloc_type (objfile);
15815   INIT_CPLUS_SPECIFIC (type);
15816
15817   name = dwarf2_name (die, cu);
15818   if (name != NULL)
15819     {
15820       if (cu->language == language_cplus
15821           || cu->language == language_d
15822           || cu->language == language_rust)
15823         {
15824           const char *full_name = dwarf2_full_name (name, die, cu);
15825
15826           /* dwarf2_full_name might have already finished building the DIE's
15827              type.  If so, there is no need to continue.  */
15828           if (get_die_type (die, cu) != NULL)
15829             return get_die_type (die, cu);
15830
15831           TYPE_NAME (type) = full_name;
15832         }
15833       else
15834         {
15835           /* The name is already allocated along with this objfile, so
15836              we don't need to duplicate it for the type.  */
15837           TYPE_NAME (type) = name;
15838         }
15839     }
15840
15841   if (die->tag == DW_TAG_structure_type)
15842     {
15843       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15844     }
15845   else if (die->tag == DW_TAG_union_type)
15846     {
15847       TYPE_CODE (type) = TYPE_CODE_UNION;
15848     }
15849   else if (die->tag == DW_TAG_variant_part)
15850     {
15851       TYPE_CODE (type) = TYPE_CODE_UNION;
15852       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15853     }
15854   else
15855     {
15856       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15857     }
15858
15859   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15860     TYPE_DECLARED_CLASS (type) = 1;
15861
15862   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15863   if (attr)
15864     {
15865       if (attr_form_is_constant (attr))
15866         TYPE_LENGTH (type) = DW_UNSND (attr);
15867       else
15868         {
15869           /* For the moment, dynamic type sizes are not supported
15870              by GDB's struct type.  The actual size is determined
15871              on-demand when resolving the type of a given object,
15872              so set the type's length to zero for now.  Otherwise,
15873              we record an expression as the length, and that expression
15874              could lead to a very large value, which could eventually
15875              lead to us trying to allocate that much memory when creating
15876              a value of that type.  */
15877           TYPE_LENGTH (type) = 0;
15878         }
15879     }
15880   else
15881     {
15882       TYPE_LENGTH (type) = 0;
15883     }
15884
15885   maybe_set_alignment (cu, die, type);
15886
15887   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15888     {
15889       /* ICC<14 does not output the required DW_AT_declaration on
15890          incomplete types, but gives them a size of zero.  */
15891       TYPE_STUB (type) = 1;
15892     }
15893   else
15894     TYPE_STUB_SUPPORTED (type) = 1;
15895
15896   if (die_is_declaration (die, cu))
15897     TYPE_STUB (type) = 1;
15898   else if (attr == NULL && die->child == NULL
15899            && producer_is_realview (cu->producer))
15900     /* RealView does not output the required DW_AT_declaration
15901        on incomplete types.  */
15902     TYPE_STUB (type) = 1;
15903
15904   /* We need to add the type field to the die immediately so we don't
15905      infinitely recurse when dealing with pointers to the structure
15906      type within the structure itself.  */
15907   set_die_type (die, type, cu);
15908
15909   /* set_die_type should be already done.  */
15910   set_descriptive_type (type, die, cu);
15911
15912   return type;
15913 }
15914
15915 /* A helper for process_structure_scope that handles a single member
15916    DIE.  */
15917
15918 static void
15919 handle_struct_member_die (struct die_info *child_die, struct type *type,
15920                           struct field_info *fi,
15921                           std::vector<struct symbol *> *template_args,
15922                           struct dwarf2_cu *cu)
15923 {
15924   if (child_die->tag == DW_TAG_member
15925       || child_die->tag == DW_TAG_variable
15926       || child_die->tag == DW_TAG_variant_part)
15927     {
15928       /* NOTE: carlton/2002-11-05: A C++ static data member
15929          should be a DW_TAG_member that is a declaration, but
15930          all versions of G++ as of this writing (so through at
15931          least 3.2.1) incorrectly generate DW_TAG_variable
15932          tags for them instead.  */
15933       dwarf2_add_field (fi, child_die, cu);
15934     }
15935   else if (child_die->tag == DW_TAG_subprogram)
15936     {
15937       /* Rust doesn't have member functions in the C++ sense.
15938          However, it does emit ordinary functions as children
15939          of a struct DIE.  */
15940       if (cu->language == language_rust)
15941         read_func_scope (child_die, cu);
15942       else
15943         {
15944           /* C++ member function.  */
15945           dwarf2_add_member_fn (fi, child_die, type, cu);
15946         }
15947     }
15948   else if (child_die->tag == DW_TAG_inheritance)
15949     {
15950       /* C++ base class field.  */
15951       dwarf2_add_field (fi, child_die, cu);
15952     }
15953   else if (type_can_define_types (child_die))
15954     dwarf2_add_type_defn (fi, child_die, cu);
15955   else if (child_die->tag == DW_TAG_template_type_param
15956            || child_die->tag == DW_TAG_template_value_param)
15957     {
15958       struct symbol *arg = new_symbol (child_die, NULL, cu);
15959
15960       if (arg != NULL)
15961         template_args->push_back (arg);
15962     }
15963   else if (child_die->tag == DW_TAG_variant)
15964     {
15965       /* In a variant we want to get the discriminant and also add a
15966          field for our sole member child.  */
15967       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15968
15969       for (struct die_info *variant_child = child_die->child;
15970            variant_child != NULL;
15971            variant_child = sibling_die (variant_child))
15972         {
15973           if (variant_child->tag == DW_TAG_member)
15974             {
15975               handle_struct_member_die (variant_child, type, fi,
15976                                         template_args, cu);
15977               /* Only handle the one.  */
15978               break;
15979             }
15980         }
15981
15982       /* We don't handle this but we might as well report it if we see
15983          it.  */
15984       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15985           complaint (_("DW_AT_discr_list is not supported yet"
15986                        " - DIE at %s [in module %s]"),
15987                      sect_offset_str (child_die->sect_off),
15988                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15989
15990       /* The first field was just added, so we can stash the
15991          discriminant there.  */
15992       gdb_assert (!fi->fields.empty ());
15993       if (discr == NULL)
15994         fi->fields.back ().variant.default_branch = true;
15995       else
15996         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15997     }
15998 }
15999
16000 /* Finish creating a structure or union type, including filling in
16001    its members and creating a symbol for it.  */
16002
16003 static void
16004 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
16005 {
16006   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16007   struct die_info *child_die;
16008   struct type *type;
16009
16010   type = get_die_type (die, cu);
16011   if (type == NULL)
16012     type = read_structure_type (die, cu);
16013
16014   /* When reading a DW_TAG_variant_part, we need to notice when we
16015      read the discriminant member, so we can record it later in the
16016      discriminant_info.  */
16017   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16018   sect_offset discr_offset;
16019   bool has_template_parameters = false;
16020
16021   if (is_variant_part)
16022     {
16023       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16024       if (discr == NULL)
16025         {
16026           /* Maybe it's a univariant form, an extension we support.
16027              In this case arrange not to check the offset.  */
16028           is_variant_part = false;
16029         }
16030       else if (attr_form_is_ref (discr))
16031         {
16032           struct dwarf2_cu *target_cu = cu;
16033           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16034
16035           discr_offset = target_die->sect_off;
16036         }
16037       else
16038         {
16039           complaint (_("DW_AT_discr does not have DIE reference form"
16040                        " - DIE at %s [in module %s]"),
16041                      sect_offset_str (die->sect_off),
16042                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16043           is_variant_part = false;
16044         }
16045     }
16046
16047   if (die->child != NULL && ! die_is_declaration (die, cu))
16048     {
16049       struct field_info fi;
16050       std::vector<struct symbol *> template_args;
16051
16052       child_die = die->child;
16053
16054       while (child_die && child_die->tag)
16055         {
16056           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16057
16058           if (is_variant_part && discr_offset == child_die->sect_off)
16059             fi.fields.back ().variant.is_discriminant = true;
16060
16061           child_die = sibling_die (child_die);
16062         }
16063
16064       /* Attach template arguments to type.  */
16065       if (!template_args.empty ())
16066         {
16067           has_template_parameters = true;
16068           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16069           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16070           TYPE_TEMPLATE_ARGUMENTS (type)
16071             = XOBNEWVEC (&objfile->objfile_obstack,
16072                          struct symbol *,
16073                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16074           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16075                   template_args.data (),
16076                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16077                    * sizeof (struct symbol *)));
16078         }
16079
16080       /* Attach fields and member functions to the type.  */
16081       if (fi.nfields)
16082         dwarf2_attach_fields_to_type (&fi, type, cu);
16083       if (!fi.fnfieldlists.empty ())
16084         {
16085           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16086
16087           /* Get the type which refers to the base class (possibly this
16088              class itself) which contains the vtable pointer for the current
16089              class from the DW_AT_containing_type attribute.  This use of
16090              DW_AT_containing_type is a GNU extension.  */
16091
16092           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16093             {
16094               struct type *t = die_containing_type (die, cu);
16095
16096               set_type_vptr_basetype (type, t);
16097               if (type == t)
16098                 {
16099                   int i;
16100
16101                   /* Our own class provides vtbl ptr.  */
16102                   for (i = TYPE_NFIELDS (t) - 1;
16103                        i >= TYPE_N_BASECLASSES (t);
16104                        --i)
16105                     {
16106                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16107
16108                       if (is_vtable_name (fieldname, cu))
16109                         {
16110                           set_type_vptr_fieldno (type, i);
16111                           break;
16112                         }
16113                     }
16114
16115                   /* Complain if virtual function table field not found.  */
16116                   if (i < TYPE_N_BASECLASSES (t))
16117                     complaint (_("virtual function table pointer "
16118                                  "not found when defining class '%s'"),
16119                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16120                 }
16121               else
16122                 {
16123                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16124                 }
16125             }
16126           else if (cu->producer
16127                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16128             {
16129               /* The IBM XLC compiler does not provide direct indication
16130                  of the containing type, but the vtable pointer is
16131                  always named __vfp.  */
16132
16133               int i;
16134
16135               for (i = TYPE_NFIELDS (type) - 1;
16136                    i >= TYPE_N_BASECLASSES (type);
16137                    --i)
16138                 {
16139                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16140                     {
16141                       set_type_vptr_fieldno (type, i);
16142                       set_type_vptr_basetype (type, type);
16143                       break;
16144                     }
16145                 }
16146             }
16147         }
16148
16149       /* Copy fi.typedef_field_list linked list elements content into the
16150          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16151       if (!fi.typedef_field_list.empty ())
16152         {
16153           int count = fi.typedef_field_list.size ();
16154
16155           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16156           TYPE_TYPEDEF_FIELD_ARRAY (type)
16157             = ((struct decl_field *)
16158                TYPE_ALLOC (type,
16159                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16160           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16161
16162           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16163             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16164         }
16165
16166       /* Copy fi.nested_types_list linked list elements content into the
16167          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16168       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16169         {
16170           int count = fi.nested_types_list.size ();
16171
16172           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16173           TYPE_NESTED_TYPES_ARRAY (type)
16174             = ((struct decl_field *)
16175                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16176           TYPE_NESTED_TYPES_COUNT (type) = count;
16177
16178           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16179             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16180         }
16181     }
16182
16183   quirk_gcc_member_function_pointer (type, objfile);
16184   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16185     cu->rust_unions.push_back (type);
16186
16187   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16188      snapshots) has been known to create a die giving a declaration
16189      for a class that has, as a child, a die giving a definition for a
16190      nested class.  So we have to process our children even if the
16191      current die is a declaration.  Normally, of course, a declaration
16192      won't have any children at all.  */
16193
16194   child_die = die->child;
16195
16196   while (child_die != NULL && child_die->tag)
16197     {
16198       if (child_die->tag == DW_TAG_member
16199           || child_die->tag == DW_TAG_variable
16200           || child_die->tag == DW_TAG_inheritance
16201           || child_die->tag == DW_TAG_template_value_param
16202           || child_die->tag == DW_TAG_template_type_param)
16203         {
16204           /* Do nothing.  */
16205         }
16206       else
16207         process_die (child_die, cu);
16208
16209       child_die = sibling_die (child_die);
16210     }
16211
16212   /* Do not consider external references.  According to the DWARF standard,
16213      these DIEs are identified by the fact that they have no byte_size
16214      attribute, and a declaration attribute.  */
16215   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16216       || !die_is_declaration (die, cu))
16217     {
16218       struct symbol *sym = new_symbol (die, type, cu);
16219
16220       if (has_template_parameters)
16221         {
16222           /* Make sure that the symtab is set on the new symbols.
16223              Even though they don't appear in this symtab directly,
16224              other parts of gdb assume that symbols do, and this is
16225              reasonably true.  */
16226           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16227             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16228                                symbol_symtab (sym));
16229         }
16230     }
16231 }
16232
16233 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16234    update TYPE using some information only available in DIE's children.  */
16235
16236 static void
16237 update_enumeration_type_from_children (struct die_info *die,
16238                                        struct type *type,
16239                                        struct dwarf2_cu *cu)
16240 {
16241   struct die_info *child_die;
16242   int unsigned_enum = 1;
16243   int flag_enum = 1;
16244   ULONGEST mask = 0;
16245
16246   auto_obstack obstack;
16247
16248   for (child_die = die->child;
16249        child_die != NULL && child_die->tag;
16250        child_die = sibling_die (child_die))
16251     {
16252       struct attribute *attr;
16253       LONGEST value;
16254       const gdb_byte *bytes;
16255       struct dwarf2_locexpr_baton *baton;
16256       const char *name;
16257
16258       if (child_die->tag != DW_TAG_enumerator)
16259         continue;
16260
16261       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16262       if (attr == NULL)
16263         continue;
16264
16265       name = dwarf2_name (child_die, cu);
16266       if (name == NULL)
16267         name = "<anonymous enumerator>";
16268
16269       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16270                                &value, &bytes, &baton);
16271       if (value < 0)
16272         {
16273           unsigned_enum = 0;
16274           flag_enum = 0;
16275         }
16276       else if ((mask & value) != 0)
16277         flag_enum = 0;
16278       else
16279         mask |= value;
16280
16281       /* If we already know that the enum type is neither unsigned, nor
16282          a flag type, no need to look at the rest of the enumerates.  */
16283       if (!unsigned_enum && !flag_enum)
16284         break;
16285     }
16286
16287   if (unsigned_enum)
16288     TYPE_UNSIGNED (type) = 1;
16289   if (flag_enum)
16290     TYPE_FLAG_ENUM (type) = 1;
16291 }
16292
16293 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16294    complete the type's fields yet, or create any symbols.  */
16295
16296 static struct type *
16297 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16298 {
16299   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16300   struct type *type;
16301   struct attribute *attr;
16302   const char *name;
16303
16304   /* If the definition of this type lives in .debug_types, read that type.
16305      Don't follow DW_AT_specification though, that will take us back up
16306      the chain and we want to go down.  */
16307   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16308   if (attr)
16309     {
16310       type = get_DW_AT_signature_type (die, attr, cu);
16311
16312       /* The type's CU may not be the same as CU.
16313          Ensure TYPE is recorded with CU in die_type_hash.  */
16314       return set_die_type (die, type, cu);
16315     }
16316
16317   type = alloc_type (objfile);
16318
16319   TYPE_CODE (type) = TYPE_CODE_ENUM;
16320   name = dwarf2_full_name (NULL, die, cu);
16321   if (name != NULL)
16322     TYPE_NAME (type) = name;
16323
16324   attr = dwarf2_attr (die, DW_AT_type, cu);
16325   if (attr != NULL)
16326     {
16327       struct type *underlying_type = die_type (die, cu);
16328
16329       TYPE_TARGET_TYPE (type) = underlying_type;
16330     }
16331
16332   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16333   if (attr)
16334     {
16335       TYPE_LENGTH (type) = DW_UNSND (attr);
16336     }
16337   else
16338     {
16339       TYPE_LENGTH (type) = 0;
16340     }
16341
16342   maybe_set_alignment (cu, die, type);
16343
16344   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16345      declared as private in the package spec, and then defined only
16346      inside the package body.  Such types are known as Taft Amendment
16347      Types.  When another package uses such a type, an incomplete DIE
16348      may be generated by the compiler.  */
16349   if (die_is_declaration (die, cu))
16350     TYPE_STUB (type) = 1;
16351
16352   /* Finish the creation of this type by using the enum's children.
16353      We must call this even when the underlying type has been provided
16354      so that we can determine if we're looking at a "flag" enum.  */
16355   update_enumeration_type_from_children (die, type, cu);
16356
16357   /* If this type has an underlying type that is not a stub, then we
16358      may use its attributes.  We always use the "unsigned" attribute
16359      in this situation, because ordinarily we guess whether the type
16360      is unsigned -- but the guess can be wrong and the underlying type
16361      can tell us the reality.  However, we defer to a local size
16362      attribute if one exists, because this lets the compiler override
16363      the underlying type if needed.  */
16364   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16365     {
16366       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16367       if (TYPE_LENGTH (type) == 0)
16368         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16369       if (TYPE_RAW_ALIGN (type) == 0
16370           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16371         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16372     }
16373
16374   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16375
16376   return set_die_type (die, type, cu);
16377 }
16378
16379 /* Given a pointer to a die which begins an enumeration, process all
16380    the dies that define the members of the enumeration, and create the
16381    symbol for the enumeration type.
16382
16383    NOTE: We reverse the order of the element list.  */
16384
16385 static void
16386 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16387 {
16388   struct type *this_type;
16389
16390   this_type = get_die_type (die, cu);
16391   if (this_type == NULL)
16392     this_type = read_enumeration_type (die, cu);
16393
16394   if (die->child != NULL)
16395     {
16396       struct die_info *child_die;
16397       struct symbol *sym;
16398       struct field *fields = NULL;
16399       int num_fields = 0;
16400       const char *name;
16401
16402       child_die = die->child;
16403       while (child_die && child_die->tag)
16404         {
16405           if (child_die->tag != DW_TAG_enumerator)
16406             {
16407               process_die (child_die, cu);
16408             }
16409           else
16410             {
16411               name = dwarf2_name (child_die, cu);
16412               if (name)
16413                 {
16414                   sym = new_symbol (child_die, this_type, cu);
16415
16416                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16417                     {
16418                       fields = (struct field *)
16419                         xrealloc (fields,
16420                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16421                                   * sizeof (struct field));
16422                     }
16423
16424                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16425                   FIELD_TYPE (fields[num_fields]) = NULL;
16426                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16427                   FIELD_BITSIZE (fields[num_fields]) = 0;
16428
16429                   num_fields++;
16430                 }
16431             }
16432
16433           child_die = sibling_die (child_die);
16434         }
16435
16436       if (num_fields)
16437         {
16438           TYPE_NFIELDS (this_type) = num_fields;
16439           TYPE_FIELDS (this_type) = (struct field *)
16440             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16441           memcpy (TYPE_FIELDS (this_type), fields,
16442                   sizeof (struct field) * num_fields);
16443           xfree (fields);
16444         }
16445     }
16446
16447   /* If we are reading an enum from a .debug_types unit, and the enum
16448      is a declaration, and the enum is not the signatured type in the
16449      unit, then we do not want to add a symbol for it.  Adding a
16450      symbol would in some cases obscure the true definition of the
16451      enum, giving users an incomplete type when the definition is
16452      actually available.  Note that we do not want to do this for all
16453      enums which are just declarations, because C++0x allows forward
16454      enum declarations.  */
16455   if (cu->per_cu->is_debug_types
16456       && die_is_declaration (die, cu))
16457     {
16458       struct signatured_type *sig_type;
16459
16460       sig_type = (struct signatured_type *) cu->per_cu;
16461       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16462       if (sig_type->type_offset_in_section != die->sect_off)
16463         return;
16464     }
16465
16466   new_symbol (die, this_type, cu);
16467 }
16468
16469 /* Extract all information from a DW_TAG_array_type DIE and put it in
16470    the DIE's type field.  For now, this only handles one dimensional
16471    arrays.  */
16472
16473 static struct type *
16474 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16475 {
16476   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16477   struct die_info *child_die;
16478   struct type *type;
16479   struct type *element_type, *range_type, *index_type;
16480   struct attribute *attr;
16481   const char *name;
16482   struct dynamic_prop *byte_stride_prop = NULL;
16483   unsigned int bit_stride = 0;
16484
16485   element_type = die_type (die, cu);
16486
16487   /* The die_type call above may have already set the type for this DIE.  */
16488   type = get_die_type (die, cu);
16489   if (type)
16490     return type;
16491
16492   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16493   if (attr != NULL)
16494     {
16495       int stride_ok;
16496
16497       byte_stride_prop
16498         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16499       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16500       if (!stride_ok)
16501         {
16502           complaint (_("unable to read array DW_AT_byte_stride "
16503                        " - DIE at %s [in module %s]"),
16504                      sect_offset_str (die->sect_off),
16505                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16506           /* Ignore this attribute.  We will likely not be able to print
16507              arrays of this type correctly, but there is little we can do
16508              to help if we cannot read the attribute's value.  */
16509           byte_stride_prop = NULL;
16510         }
16511     }
16512
16513   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16514   if (attr != NULL)
16515     bit_stride = DW_UNSND (attr);
16516
16517   /* Irix 6.2 native cc creates array types without children for
16518      arrays with unspecified length.  */
16519   if (die->child == NULL)
16520     {
16521       index_type = objfile_type (objfile)->builtin_int;
16522       range_type = create_static_range_type (NULL, index_type, 0, -1);
16523       type = create_array_type_with_stride (NULL, element_type, range_type,
16524                                             byte_stride_prop, bit_stride);
16525       return set_die_type (die, type, cu);
16526     }
16527
16528   std::vector<struct type *> range_types;
16529   child_die = die->child;
16530   while (child_die && child_die->tag)
16531     {
16532       if (child_die->tag == DW_TAG_subrange_type)
16533         {
16534           struct type *child_type = read_type_die (child_die, cu);
16535
16536           if (child_type != NULL)
16537             {
16538               /* The range type was succesfully read.  Save it for the
16539                  array type creation.  */
16540               range_types.push_back (child_type);
16541             }
16542         }
16543       child_die = sibling_die (child_die);
16544     }
16545
16546   /* Dwarf2 dimensions are output from left to right, create the
16547      necessary array types in backwards order.  */
16548
16549   type = element_type;
16550
16551   if (read_array_order (die, cu) == DW_ORD_col_major)
16552     {
16553       int i = 0;
16554
16555       while (i < range_types.size ())
16556         type = create_array_type_with_stride (NULL, type, range_types[i++],
16557                                               byte_stride_prop, bit_stride);
16558     }
16559   else
16560     {
16561       size_t ndim = range_types.size ();
16562       while (ndim-- > 0)
16563         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16564                                               byte_stride_prop, bit_stride);
16565     }
16566
16567   /* Understand Dwarf2 support for vector types (like they occur on
16568      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16569      array type.  This is not part of the Dwarf2/3 standard yet, but a
16570      custom vendor extension.  The main difference between a regular
16571      array and the vector variant is that vectors are passed by value
16572      to functions.  */
16573   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16574   if (attr)
16575     make_vector_type (type);
16576
16577   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16578      implementation may choose to implement triple vectors using this
16579      attribute.  */
16580   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16581   if (attr)
16582     {
16583       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16584         TYPE_LENGTH (type) = DW_UNSND (attr);
16585       else
16586         complaint (_("DW_AT_byte_size for array type smaller "
16587                      "than the total size of elements"));
16588     }
16589
16590   name = dwarf2_name (die, cu);
16591   if (name)
16592     TYPE_NAME (type) = name;
16593
16594   maybe_set_alignment (cu, die, type);
16595
16596   /* Install the type in the die.  */
16597   set_die_type (die, type, cu);
16598
16599   /* set_die_type should be already done.  */
16600   set_descriptive_type (type, die, cu);
16601
16602   return type;
16603 }
16604
16605 static enum dwarf_array_dim_ordering
16606 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16607 {
16608   struct attribute *attr;
16609
16610   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16611
16612   if (attr)
16613     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16614
16615   /* GNU F77 is a special case, as at 08/2004 array type info is the
16616      opposite order to the dwarf2 specification, but data is still
16617      laid out as per normal fortran.
16618
16619      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16620      version checking.  */
16621
16622   if (cu->language == language_fortran
16623       && cu->producer && strstr (cu->producer, "GNU F77"))
16624     {
16625       return DW_ORD_row_major;
16626     }
16627
16628   switch (cu->language_defn->la_array_ordering)
16629     {
16630     case array_column_major:
16631       return DW_ORD_col_major;
16632     case array_row_major:
16633     default:
16634       return DW_ORD_row_major;
16635     };
16636 }
16637
16638 /* Extract all information from a DW_TAG_set_type DIE and put it in
16639    the DIE's type field.  */
16640
16641 static struct type *
16642 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16643 {
16644   struct type *domain_type, *set_type;
16645   struct attribute *attr;
16646
16647   domain_type = die_type (die, cu);
16648
16649   /* The die_type call above may have already set the type for this DIE.  */
16650   set_type = get_die_type (die, cu);
16651   if (set_type)
16652     return set_type;
16653
16654   set_type = create_set_type (NULL, domain_type);
16655
16656   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16657   if (attr)
16658     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16659
16660   maybe_set_alignment (cu, die, set_type);
16661
16662   return set_die_type (die, set_type, cu);
16663 }
16664
16665 /* A helper for read_common_block that creates a locexpr baton.
16666    SYM is the symbol which we are marking as computed.
16667    COMMON_DIE is the DIE for the common block.
16668    COMMON_LOC is the location expression attribute for the common
16669    block itself.
16670    MEMBER_LOC is the location expression attribute for the particular
16671    member of the common block that we are processing.
16672    CU is the CU from which the above come.  */
16673
16674 static void
16675 mark_common_block_symbol_computed (struct symbol *sym,
16676                                    struct die_info *common_die,
16677                                    struct attribute *common_loc,
16678                                    struct attribute *member_loc,
16679                                    struct dwarf2_cu *cu)
16680 {
16681   struct dwarf2_per_objfile *dwarf2_per_objfile
16682     = cu->per_cu->dwarf2_per_objfile;
16683   struct objfile *objfile = dwarf2_per_objfile->objfile;
16684   struct dwarf2_locexpr_baton *baton;
16685   gdb_byte *ptr;
16686   unsigned int cu_off;
16687   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16688   LONGEST offset = 0;
16689
16690   gdb_assert (common_loc && member_loc);
16691   gdb_assert (attr_form_is_block (common_loc));
16692   gdb_assert (attr_form_is_block (member_loc)
16693               || attr_form_is_constant (member_loc));
16694
16695   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16696   baton->per_cu = cu->per_cu;
16697   gdb_assert (baton->per_cu);
16698
16699   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16700
16701   if (attr_form_is_constant (member_loc))
16702     {
16703       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16704       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16705     }
16706   else
16707     baton->size += DW_BLOCK (member_loc)->size;
16708
16709   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16710   baton->data = ptr;
16711
16712   *ptr++ = DW_OP_call4;
16713   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16714   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16715   ptr += 4;
16716
16717   if (attr_form_is_constant (member_loc))
16718     {
16719       *ptr++ = DW_OP_addr;
16720       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16721       ptr += cu->header.addr_size;
16722     }
16723   else
16724     {
16725       /* We have to copy the data here, because DW_OP_call4 will only
16726          use a DW_AT_location attribute.  */
16727       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16728       ptr += DW_BLOCK (member_loc)->size;
16729     }
16730
16731   *ptr++ = DW_OP_plus;
16732   gdb_assert (ptr - baton->data == baton->size);
16733
16734   SYMBOL_LOCATION_BATON (sym) = baton;
16735   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16736 }
16737
16738 /* Create appropriate locally-scoped variables for all the
16739    DW_TAG_common_block entries.  Also create a struct common_block
16740    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16741    is used to sepate the common blocks name namespace from regular
16742    variable names.  */
16743
16744 static void
16745 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16746 {
16747   struct attribute *attr;
16748
16749   attr = dwarf2_attr (die, DW_AT_location, cu);
16750   if (attr)
16751     {
16752       /* Support the .debug_loc offsets.  */
16753       if (attr_form_is_block (attr))
16754         {
16755           /* Ok.  */
16756         }
16757       else if (attr_form_is_section_offset (attr))
16758         {
16759           dwarf2_complex_location_expr_complaint ();
16760           attr = NULL;
16761         }
16762       else
16763         {
16764           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16765                                                  "common block member");
16766           attr = NULL;
16767         }
16768     }
16769
16770   if (die->child != NULL)
16771     {
16772       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16773       struct die_info *child_die;
16774       size_t n_entries = 0, size;
16775       struct common_block *common_block;
16776       struct symbol *sym;
16777
16778       for (child_die = die->child;
16779            child_die && child_die->tag;
16780            child_die = sibling_die (child_die))
16781         ++n_entries;
16782
16783       size = (sizeof (struct common_block)
16784               + (n_entries - 1) * sizeof (struct symbol *));
16785       common_block
16786         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16787                                                  size);
16788       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16789       common_block->n_entries = 0;
16790
16791       for (child_die = die->child;
16792            child_die && child_die->tag;
16793            child_die = sibling_die (child_die))
16794         {
16795           /* Create the symbol in the DW_TAG_common_block block in the current
16796              symbol scope.  */
16797           sym = new_symbol (child_die, NULL, cu);
16798           if (sym != NULL)
16799             {
16800               struct attribute *member_loc;
16801
16802               common_block->contents[common_block->n_entries++] = sym;
16803
16804               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16805                                         cu);
16806               if (member_loc)
16807                 {
16808                   /* GDB has handled this for a long time, but it is
16809                      not specified by DWARF.  It seems to have been
16810                      emitted by gfortran at least as recently as:
16811                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16812                   complaint (_("Variable in common block has "
16813                                "DW_AT_data_member_location "
16814                                "- DIE at %s [in module %s]"),
16815                                sect_offset_str (child_die->sect_off),
16816                              objfile_name (objfile));
16817
16818                   if (attr_form_is_section_offset (member_loc))
16819                     dwarf2_complex_location_expr_complaint ();
16820                   else if (attr_form_is_constant (member_loc)
16821                            || attr_form_is_block (member_loc))
16822                     {
16823                       if (attr)
16824                         mark_common_block_symbol_computed (sym, die, attr,
16825                                                            member_loc, cu);
16826                     }
16827                   else
16828                     dwarf2_complex_location_expr_complaint ();
16829                 }
16830             }
16831         }
16832
16833       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16834       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16835     }
16836 }
16837
16838 /* Create a type for a C++ namespace.  */
16839
16840 static struct type *
16841 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16842 {
16843   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16844   const char *previous_prefix, *name;
16845   int is_anonymous;
16846   struct type *type;
16847
16848   /* For extensions, reuse the type of the original namespace.  */
16849   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16850     {
16851       struct die_info *ext_die;
16852       struct dwarf2_cu *ext_cu = cu;
16853
16854       ext_die = dwarf2_extension (die, &ext_cu);
16855       type = read_type_die (ext_die, ext_cu);
16856
16857       /* EXT_CU may not be the same as CU.
16858          Ensure TYPE is recorded with CU in die_type_hash.  */
16859       return set_die_type (die, type, cu);
16860     }
16861
16862   name = namespace_name (die, &is_anonymous, cu);
16863
16864   /* Now build the name of the current namespace.  */
16865
16866   previous_prefix = determine_prefix (die, cu);
16867   if (previous_prefix[0] != '\0')
16868     name = typename_concat (&objfile->objfile_obstack,
16869                             previous_prefix, name, 0, cu);
16870
16871   /* Create the type.  */
16872   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16873
16874   return set_die_type (die, type, cu);
16875 }
16876
16877 /* Read a namespace scope.  */
16878
16879 static void
16880 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16881 {
16882   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16883   int is_anonymous;
16884
16885   /* Add a symbol associated to this if we haven't seen the namespace
16886      before.  Also, add a using directive if it's an anonymous
16887      namespace.  */
16888
16889   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16890     {
16891       struct type *type;
16892
16893       type = read_type_die (die, cu);
16894       new_symbol (die, type, cu);
16895
16896       namespace_name (die, &is_anonymous, cu);
16897       if (is_anonymous)
16898         {
16899           const char *previous_prefix = determine_prefix (die, cu);
16900
16901           std::vector<const char *> excludes;
16902           add_using_directive (using_directives (cu),
16903                                previous_prefix, TYPE_NAME (type), NULL,
16904                                NULL, excludes, 0, &objfile->objfile_obstack);
16905         }
16906     }
16907
16908   if (die->child != NULL)
16909     {
16910       struct die_info *child_die = die->child;
16911
16912       while (child_die && child_die->tag)
16913         {
16914           process_die (child_die, cu);
16915           child_die = sibling_die (child_die);
16916         }
16917     }
16918 }
16919
16920 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16921    imported module.  Still we need that type as local Fortran "use ... only"
16922    declaration imports depend on the created type in determine_prefix.  */
16923
16924 static struct type *
16925 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16926 {
16927   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16928   const char *module_name;
16929   struct type *type;
16930
16931   module_name = dwarf2_name (die, cu);
16932   if (!module_name)
16933     complaint (_("DW_TAG_module has no name, offset %s"),
16934                sect_offset_str (die->sect_off));
16935   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16936
16937   return set_die_type (die, type, cu);
16938 }
16939
16940 /* Read a Fortran module.  */
16941
16942 static void
16943 read_module (struct die_info *die, struct dwarf2_cu *cu)
16944 {
16945   struct die_info *child_die = die->child;
16946   struct type *type;
16947
16948   type = read_type_die (die, cu);
16949   new_symbol (die, type, cu);
16950
16951   while (child_die && child_die->tag)
16952     {
16953       process_die (child_die, cu);
16954       child_die = sibling_die (child_die);
16955     }
16956 }
16957
16958 /* Return the name of the namespace represented by DIE.  Set
16959    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16960    namespace.  */
16961
16962 static const char *
16963 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16964 {
16965   struct die_info *current_die;
16966   const char *name = NULL;
16967
16968   /* Loop through the extensions until we find a name.  */
16969
16970   for (current_die = die;
16971        current_die != NULL;
16972        current_die = dwarf2_extension (die, &cu))
16973     {
16974       /* We don't use dwarf2_name here so that we can detect the absence
16975          of a name -> anonymous namespace.  */
16976       name = dwarf2_string_attr (die, DW_AT_name, cu);
16977
16978       if (name != NULL)
16979         break;
16980     }
16981
16982   /* Is it an anonymous namespace?  */
16983
16984   *is_anonymous = (name == NULL);
16985   if (*is_anonymous)
16986     name = CP_ANONYMOUS_NAMESPACE_STR;
16987
16988   return name;
16989 }
16990
16991 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16992    the user defined type vector.  */
16993
16994 static struct type *
16995 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16996 {
16997   struct gdbarch *gdbarch
16998     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16999   struct comp_unit_head *cu_header = &cu->header;
17000   struct type *type;
17001   struct attribute *attr_byte_size;
17002   struct attribute *attr_address_class;
17003   int byte_size, addr_class;
17004   struct type *target_type;
17005
17006   target_type = die_type (die, cu);
17007
17008   /* The die_type call above may have already set the type for this DIE.  */
17009   type = get_die_type (die, cu);
17010   if (type)
17011     return type;
17012
17013   type = lookup_pointer_type (target_type);
17014
17015   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17016   if (attr_byte_size)
17017     byte_size = DW_UNSND (attr_byte_size);
17018   else
17019     byte_size = cu_header->addr_size;
17020
17021   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17022   if (attr_address_class)
17023     addr_class = DW_UNSND (attr_address_class);
17024   else
17025     addr_class = DW_ADDR_none;
17026
17027   ULONGEST alignment = get_alignment (cu, die);
17028
17029   /* If the pointer size, alignment, or address class is different
17030      than the default, create a type variant marked as such and set
17031      the length accordingly.  */
17032   if (TYPE_LENGTH (type) != byte_size
17033       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17034           && alignment != TYPE_RAW_ALIGN (type))
17035       || addr_class != DW_ADDR_none)
17036     {
17037       if (gdbarch_address_class_type_flags_p (gdbarch))
17038         {
17039           int type_flags;
17040
17041           type_flags = gdbarch_address_class_type_flags
17042                          (gdbarch, byte_size, addr_class);
17043           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17044                       == 0);
17045           type = make_type_with_address_space (type, type_flags);
17046         }
17047       else if (TYPE_LENGTH (type) != byte_size)
17048         {
17049           complaint (_("invalid pointer size %d"), byte_size);
17050         }
17051       else if (TYPE_RAW_ALIGN (type) != alignment)
17052         {
17053           complaint (_("Invalid DW_AT_alignment"
17054                        " - DIE at %s [in module %s]"),
17055                      sect_offset_str (die->sect_off),
17056                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17057         }
17058       else
17059         {
17060           /* Should we also complain about unhandled address classes?  */
17061         }
17062     }
17063
17064   TYPE_LENGTH (type) = byte_size;
17065   set_type_align (type, alignment);
17066   return set_die_type (die, type, cu);
17067 }
17068
17069 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17070    the user defined type vector.  */
17071
17072 static struct type *
17073 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17074 {
17075   struct type *type;
17076   struct type *to_type;
17077   struct type *domain;
17078
17079   to_type = die_type (die, cu);
17080   domain = die_containing_type (die, cu);
17081
17082   /* The calls above may have already set the type for this DIE.  */
17083   type = get_die_type (die, cu);
17084   if (type)
17085     return type;
17086
17087   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17088     type = lookup_methodptr_type (to_type);
17089   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17090     {
17091       struct type *new_type
17092         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17093
17094       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17095                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17096                             TYPE_VARARGS (to_type));
17097       type = lookup_methodptr_type (new_type);
17098     }
17099   else
17100     type = lookup_memberptr_type (to_type, domain);
17101
17102   return set_die_type (die, type, cu);
17103 }
17104
17105 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17106    the user defined type vector.  */
17107
17108 static struct type *
17109 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17110                           enum type_code refcode)
17111 {
17112   struct comp_unit_head *cu_header = &cu->header;
17113   struct type *type, *target_type;
17114   struct attribute *attr;
17115
17116   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17117
17118   target_type = die_type (die, cu);
17119
17120   /* The die_type call above may have already set the type for this DIE.  */
17121   type = get_die_type (die, cu);
17122   if (type)
17123     return type;
17124
17125   type = lookup_reference_type (target_type, refcode);
17126   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17127   if (attr)
17128     {
17129       TYPE_LENGTH (type) = DW_UNSND (attr);
17130     }
17131   else
17132     {
17133       TYPE_LENGTH (type) = cu_header->addr_size;
17134     }
17135   maybe_set_alignment (cu, die, type);
17136   return set_die_type (die, type, cu);
17137 }
17138
17139 /* Add the given cv-qualifiers to the element type of the array.  GCC
17140    outputs DWARF type qualifiers that apply to an array, not the
17141    element type.  But GDB relies on the array element type to carry
17142    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17143    specification.  */
17144
17145 static struct type *
17146 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17147                    struct type *base_type, int cnst, int voltl)
17148 {
17149   struct type *el_type, *inner_array;
17150
17151   base_type = copy_type (base_type);
17152   inner_array = base_type;
17153
17154   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17155     {
17156       TYPE_TARGET_TYPE (inner_array) =
17157         copy_type (TYPE_TARGET_TYPE (inner_array));
17158       inner_array = TYPE_TARGET_TYPE (inner_array);
17159     }
17160
17161   el_type = TYPE_TARGET_TYPE (inner_array);
17162   cnst |= TYPE_CONST (el_type);
17163   voltl |= TYPE_VOLATILE (el_type);
17164   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17165
17166   return set_die_type (die, base_type, cu);
17167 }
17168
17169 static struct type *
17170 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17171 {
17172   struct type *base_type, *cv_type;
17173
17174   base_type = die_type (die, cu);
17175
17176   /* The die_type call above may have already set the type for this DIE.  */
17177   cv_type = get_die_type (die, cu);
17178   if (cv_type)
17179     return cv_type;
17180
17181   /* In case the const qualifier is applied to an array type, the element type
17182      is so qualified, not the array type (section 6.7.3 of C99).  */
17183   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17184     return add_array_cv_type (die, cu, base_type, 1, 0);
17185
17186   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17187   return set_die_type (die, cv_type, cu);
17188 }
17189
17190 static struct type *
17191 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17192 {
17193   struct type *base_type, *cv_type;
17194
17195   base_type = die_type (die, cu);
17196
17197   /* The die_type call above may have already set the type for this DIE.  */
17198   cv_type = get_die_type (die, cu);
17199   if (cv_type)
17200     return cv_type;
17201
17202   /* In case the volatile qualifier is applied to an array type, the
17203      element type is so qualified, not the array type (section 6.7.3
17204      of C99).  */
17205   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17206     return add_array_cv_type (die, cu, base_type, 0, 1);
17207
17208   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17209   return set_die_type (die, cv_type, cu);
17210 }
17211
17212 /* Handle DW_TAG_restrict_type.  */
17213
17214 static struct type *
17215 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17216 {
17217   struct type *base_type, *cv_type;
17218
17219   base_type = die_type (die, cu);
17220
17221   /* The die_type call above may have already set the type for this DIE.  */
17222   cv_type = get_die_type (die, cu);
17223   if (cv_type)
17224     return cv_type;
17225
17226   cv_type = make_restrict_type (base_type);
17227   return set_die_type (die, cv_type, cu);
17228 }
17229
17230 /* Handle DW_TAG_atomic_type.  */
17231
17232 static struct type *
17233 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17234 {
17235   struct type *base_type, *cv_type;
17236
17237   base_type = die_type (die, cu);
17238
17239   /* The die_type call above may have already set the type for this DIE.  */
17240   cv_type = get_die_type (die, cu);
17241   if (cv_type)
17242     return cv_type;
17243
17244   cv_type = make_atomic_type (base_type);
17245   return set_die_type (die, cv_type, cu);
17246 }
17247
17248 /* Extract all information from a DW_TAG_string_type DIE and add to
17249    the user defined type vector.  It isn't really a user defined type,
17250    but it behaves like one, with other DIE's using an AT_user_def_type
17251    attribute to reference it.  */
17252
17253 static struct type *
17254 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17255 {
17256   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17257   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17258   struct type *type, *range_type, *index_type, *char_type;
17259   struct attribute *attr;
17260   unsigned int length;
17261
17262   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17263   if (attr)
17264     {
17265       length = DW_UNSND (attr);
17266     }
17267   else
17268     {
17269       /* Check for the DW_AT_byte_size attribute.  */
17270       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17271       if (attr)
17272         {
17273           length = DW_UNSND (attr);
17274         }
17275       else
17276         {
17277           length = 1;
17278         }
17279     }
17280
17281   index_type = objfile_type (objfile)->builtin_int;
17282   range_type = create_static_range_type (NULL, index_type, 1, length);
17283   char_type = language_string_char_type (cu->language_defn, gdbarch);
17284   type = create_string_type (NULL, char_type, range_type);
17285
17286   return set_die_type (die, type, cu);
17287 }
17288
17289 /* Assuming that DIE corresponds to a function, returns nonzero
17290    if the function is prototyped.  */
17291
17292 static int
17293 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17294 {
17295   struct attribute *attr;
17296
17297   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17298   if (attr && (DW_UNSND (attr) != 0))
17299     return 1;
17300
17301   /* The DWARF standard implies that the DW_AT_prototyped attribute
17302      is only meaninful for C, but the concept also extends to other
17303      languages that allow unprototyped functions (Eg: Objective C).
17304      For all other languages, assume that functions are always
17305      prototyped.  */
17306   if (cu->language != language_c
17307       && cu->language != language_objc
17308       && cu->language != language_opencl)
17309     return 1;
17310
17311   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17312      prototyped and unprototyped functions; default to prototyped,
17313      since that is more common in modern code (and RealView warns
17314      about unprototyped functions).  */
17315   if (producer_is_realview (cu->producer))
17316     return 1;
17317
17318   return 0;
17319 }
17320
17321 /* Handle DIES due to C code like:
17322
17323    struct foo
17324    {
17325    int (*funcp)(int a, long l);
17326    int b;
17327    };
17328
17329    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17330
17331 static struct type *
17332 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17333 {
17334   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17335   struct type *type;            /* Type that this function returns.  */
17336   struct type *ftype;           /* Function that returns above type.  */
17337   struct attribute *attr;
17338
17339   type = die_type (die, cu);
17340
17341   /* The die_type call above may have already set the type for this DIE.  */
17342   ftype = get_die_type (die, cu);
17343   if (ftype)
17344     return ftype;
17345
17346   ftype = lookup_function_type (type);
17347
17348   if (prototyped_function_p (die, cu))
17349     TYPE_PROTOTYPED (ftype) = 1;
17350
17351   /* Store the calling convention in the type if it's available in
17352      the subroutine die.  Otherwise set the calling convention to
17353      the default value DW_CC_normal.  */
17354   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17355   if (attr)
17356     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17357   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17358     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17359   else
17360     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17361
17362   /* Record whether the function returns normally to its caller or not
17363      if the DWARF producer set that information.  */
17364   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17365   if (attr && (DW_UNSND (attr) != 0))
17366     TYPE_NO_RETURN (ftype) = 1;
17367
17368   /* We need to add the subroutine type to the die immediately so
17369      we don't infinitely recurse when dealing with parameters
17370      declared as the same subroutine type.  */
17371   set_die_type (die, ftype, cu);
17372
17373   if (die->child != NULL)
17374     {
17375       struct type *void_type = objfile_type (objfile)->builtin_void;
17376       struct die_info *child_die;
17377       int nparams, iparams;
17378
17379       /* Count the number of parameters.
17380          FIXME: GDB currently ignores vararg functions, but knows about
17381          vararg member functions.  */
17382       nparams = 0;
17383       child_die = die->child;
17384       while (child_die && child_die->tag)
17385         {
17386           if (child_die->tag == DW_TAG_formal_parameter)
17387             nparams++;
17388           else if (child_die->tag == DW_TAG_unspecified_parameters)
17389             TYPE_VARARGS (ftype) = 1;
17390           child_die = sibling_die (child_die);
17391         }
17392
17393       /* Allocate storage for parameters and fill them in.  */
17394       TYPE_NFIELDS (ftype) = nparams;
17395       TYPE_FIELDS (ftype) = (struct field *)
17396         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17397
17398       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17399          even if we error out during the parameters reading below.  */
17400       for (iparams = 0; iparams < nparams; iparams++)
17401         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17402
17403       iparams = 0;
17404       child_die = die->child;
17405       while (child_die && child_die->tag)
17406         {
17407           if (child_die->tag == DW_TAG_formal_parameter)
17408             {
17409               struct type *arg_type;
17410
17411               /* DWARF version 2 has no clean way to discern C++
17412                  static and non-static member functions.  G++ helps
17413                  GDB by marking the first parameter for non-static
17414                  member functions (which is the this pointer) as
17415                  artificial.  We pass this information to
17416                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17417
17418                  DWARF version 3 added DW_AT_object_pointer, which GCC
17419                  4.5 does not yet generate.  */
17420               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17421               if (attr)
17422                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17423               else
17424                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17425               arg_type = die_type (child_die, cu);
17426
17427               /* RealView does not mark THIS as const, which the testsuite
17428                  expects.  GCC marks THIS as const in method definitions,
17429                  but not in the class specifications (GCC PR 43053).  */
17430               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17431                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17432                 {
17433                   int is_this = 0;
17434                   struct dwarf2_cu *arg_cu = cu;
17435                   const char *name = dwarf2_name (child_die, cu);
17436
17437                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17438                   if (attr)
17439                     {
17440                       /* If the compiler emits this, use it.  */
17441                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17442                         is_this = 1;
17443                     }
17444                   else if (name && strcmp (name, "this") == 0)
17445                     /* Function definitions will have the argument names.  */
17446                     is_this = 1;
17447                   else if (name == NULL && iparams == 0)
17448                     /* Declarations may not have the names, so like
17449                        elsewhere in GDB, assume an artificial first
17450                        argument is "this".  */
17451                     is_this = 1;
17452
17453                   if (is_this)
17454                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17455                                              arg_type, 0);
17456                 }
17457
17458               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17459               iparams++;
17460             }
17461           child_die = sibling_die (child_die);
17462         }
17463     }
17464
17465   return ftype;
17466 }
17467
17468 static struct type *
17469 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17470 {
17471   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17472   const char *name = NULL;
17473   struct type *this_type, *target_type;
17474
17475   name = dwarf2_full_name (NULL, die, cu);
17476   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17477   TYPE_TARGET_STUB (this_type) = 1;
17478   set_die_type (die, this_type, cu);
17479   target_type = die_type (die, cu);
17480   if (target_type != this_type)
17481     TYPE_TARGET_TYPE (this_type) = target_type;
17482   else
17483     {
17484       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17485          spec and cause infinite loops in GDB.  */
17486       complaint (_("Self-referential DW_TAG_typedef "
17487                    "- DIE at %s [in module %s]"),
17488                  sect_offset_str (die->sect_off), objfile_name (objfile));
17489       TYPE_TARGET_TYPE (this_type) = NULL;
17490     }
17491   return this_type;
17492 }
17493
17494 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17495    (which may be different from NAME) to the architecture back-end to allow
17496    it to guess the correct format if necessary.  */
17497
17498 static struct type *
17499 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17500                         const char *name_hint)
17501 {
17502   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17503   const struct floatformat **format;
17504   struct type *type;
17505
17506   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17507   if (format)
17508     type = init_float_type (objfile, bits, name, format);
17509   else
17510     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17511
17512   return type;
17513 }
17514
17515 /* Allocate an integer type of size BITS and name NAME.  */
17516
17517 static struct type *
17518 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17519                           int bits, int unsigned_p, const char *name)
17520 {
17521   struct type *type;
17522
17523   /* Versions of Intel's C Compiler generate an integer type called "void"
17524      instead of using DW_TAG_unspecified_type.  This has been seen on
17525      at least versions 14, 17, and 18.  */
17526   if (bits == 0 && producer_is_icc (cu) && name != nullptr
17527       && strcmp (name, "void") == 0)
17528     type = objfile_type (objfile)->builtin_void;
17529   else
17530     type = init_integer_type (objfile, bits, unsigned_p, name);
17531
17532   return type;
17533 }
17534
17535 /* Initialise and return a floating point type of size BITS suitable for
17536    use as a component of a complex number.  The NAME_HINT is passed through
17537    when initialising the floating point type and is the name of the complex
17538    type.
17539
17540    As DWARF doesn't currently provide an explicit name for the components
17541    of a complex number, but it can be helpful to have these components
17542    named, we try to select a suitable name based on the size of the
17543    component.  */
17544 static struct type *
17545 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17546                                  struct objfile *objfile,
17547                                  int bits, const char *name_hint)
17548 {
17549   gdbarch *gdbarch = get_objfile_arch (objfile);
17550   struct type *tt = nullptr;
17551
17552   /* Try to find a suitable floating point builtin type of size BITS.
17553      We're going to use the name of this type as the name for the complex
17554      target type that we are about to create.  */
17555   switch (bits)
17556     {
17557     case 32:
17558       tt = builtin_type (gdbarch)->builtin_float;
17559       break;
17560     case 64:
17561       tt = builtin_type (gdbarch)->builtin_double;
17562       break;
17563     case 96:    /* The x86-32 ABI specifies 96-bit long double.  */
17564     case 128:
17565       tt = builtin_type (gdbarch)->builtin_long_double;
17566       break;
17567     }
17568
17569   /* If the type we found doesn't match the size we were looking for, then
17570      pretend we didn't find a type at all, the complex target type we
17571      create will then be nameless.  */
17572   if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17573     tt = nullptr;
17574
17575   const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17576   return dwarf2_init_float_type (objfile, bits, name, name_hint);
17577 }
17578
17579 /* Find a representation of a given base type and install
17580    it in the TYPE field of the die.  */
17581
17582 static struct type *
17583 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17584 {
17585   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17586   struct type *type;
17587   struct attribute *attr;
17588   int encoding = 0, bits = 0;
17589   const char *name;
17590
17591   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17592   if (attr)
17593     {
17594       encoding = DW_UNSND (attr);
17595     }
17596   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17597   if (attr)
17598     {
17599       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17600     }
17601   name = dwarf2_name (die, cu);
17602   if (!name)
17603     {
17604       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17605     }
17606
17607   switch (encoding)
17608     {
17609       case DW_ATE_address:
17610         /* Turn DW_ATE_address into a void * pointer.  */
17611         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17612         type = init_pointer_type (objfile, bits, name, type);
17613         break;
17614       case DW_ATE_boolean:
17615         type = init_boolean_type (objfile, bits, 1, name);
17616         break;
17617       case DW_ATE_complex_float:
17618         type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name);
17619         type = init_complex_type (objfile, name, type);
17620         break;
17621       case DW_ATE_decimal_float:
17622         type = init_decfloat_type (objfile, bits, name);
17623         break;
17624       case DW_ATE_float:
17625         type = dwarf2_init_float_type (objfile, bits, name, name);
17626         break;
17627       case DW_ATE_signed:
17628         type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17629         break;
17630       case DW_ATE_unsigned:
17631         if (cu->language == language_fortran
17632             && name
17633             && startswith (name, "character("))
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_signed_char:
17639         if (cu->language == language_ada || cu->language == language_m2
17640             || cu->language == language_pascal
17641             || cu->language == language_fortran)
17642           type = init_character_type (objfile, bits, 0, name);
17643         else
17644           type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17645         break;
17646       case DW_ATE_unsigned_char:
17647         if (cu->language == language_ada || cu->language == language_m2
17648             || cu->language == language_pascal
17649             || cu->language == language_fortran
17650             || cu->language == language_rust)
17651           type = init_character_type (objfile, bits, 1, name);
17652         else
17653           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17654         break;
17655       case DW_ATE_UTF:
17656         {
17657           gdbarch *arch = get_objfile_arch (objfile);
17658
17659           if (bits == 16)
17660             type = builtin_type (arch)->builtin_char16;
17661           else if (bits == 32)
17662             type = builtin_type (arch)->builtin_char32;
17663           else
17664             {
17665               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17666                          bits);
17667               type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17668             }
17669           return set_die_type (die, type, cu);
17670         }
17671         break;
17672
17673       default:
17674         complaint (_("unsupported DW_AT_encoding: '%s'"),
17675                    dwarf_type_encoding_name (encoding));
17676         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17677         break;
17678     }
17679
17680   if (name && strcmp (name, "char") == 0)
17681     TYPE_NOSIGN (type) = 1;
17682
17683   maybe_set_alignment (cu, die, type);
17684
17685   return set_die_type (die, type, cu);
17686 }
17687
17688 /* Parse dwarf attribute if it's a block, reference or constant and put the
17689    resulting value of the attribute into struct bound_prop.
17690    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17691
17692 static int
17693 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17694                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17695 {
17696   struct dwarf2_property_baton *baton;
17697   struct obstack *obstack
17698     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17699
17700   if (attr == NULL || prop == NULL)
17701     return 0;
17702
17703   if (attr_form_is_block (attr))
17704     {
17705       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17706       baton->referenced_type = NULL;
17707       baton->locexpr.per_cu = cu->per_cu;
17708       baton->locexpr.size = DW_BLOCK (attr)->size;
17709       baton->locexpr.data = DW_BLOCK (attr)->data;
17710       prop->data.baton = baton;
17711       prop->kind = PROP_LOCEXPR;
17712       gdb_assert (prop->data.baton != NULL);
17713     }
17714   else if (attr_form_is_ref (attr))
17715     {
17716       struct dwarf2_cu *target_cu = cu;
17717       struct die_info *target_die;
17718       struct attribute *target_attr;
17719
17720       target_die = follow_die_ref (die, attr, &target_cu);
17721       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17722       if (target_attr == NULL)
17723         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17724                                    target_cu);
17725       if (target_attr == NULL)
17726         return 0;
17727
17728       switch (target_attr->name)
17729         {
17730           case DW_AT_location:
17731             if (attr_form_is_section_offset (target_attr))
17732               {
17733                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17734                 baton->referenced_type = die_type (target_die, target_cu);
17735                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17736                 prop->data.baton = baton;
17737                 prop->kind = PROP_LOCLIST;
17738                 gdb_assert (prop->data.baton != NULL);
17739               }
17740             else if (attr_form_is_block (target_attr))
17741               {
17742                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17743                 baton->referenced_type = die_type (target_die, target_cu);
17744                 baton->locexpr.per_cu = cu->per_cu;
17745                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17746                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17747                 prop->data.baton = baton;
17748                 prop->kind = PROP_LOCEXPR;
17749                 gdb_assert (prop->data.baton != NULL);
17750               }
17751             else
17752               {
17753                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17754                                                        "dynamic property");
17755                 return 0;
17756               }
17757             break;
17758           case DW_AT_data_member_location:
17759             {
17760               LONGEST offset;
17761
17762               if (!handle_data_member_location (target_die, target_cu,
17763                                                 &offset))
17764                 return 0;
17765
17766               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17767               baton->referenced_type = read_type_die (target_die->parent,
17768                                                       target_cu);
17769               baton->offset_info.offset = offset;
17770               baton->offset_info.type = die_type (target_die, target_cu);
17771               prop->data.baton = baton;
17772               prop->kind = PROP_ADDR_OFFSET;
17773               break;
17774             }
17775         }
17776     }
17777   else if (attr_form_is_constant (attr))
17778     {
17779       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17780       prop->kind = PROP_CONST;
17781     }
17782   else
17783     {
17784       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17785                                              dwarf2_name (die, cu));
17786       return 0;
17787     }
17788
17789   return 1;
17790 }
17791
17792 /* Read the given DW_AT_subrange DIE.  */
17793
17794 static struct type *
17795 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17796 {
17797   struct type *base_type, *orig_base_type;
17798   struct type *range_type;
17799   struct attribute *attr;
17800   struct dynamic_prop low, high;
17801   int low_default_is_valid;
17802   int high_bound_is_count = 0;
17803   const char *name;
17804   ULONGEST negative_mask;
17805
17806   orig_base_type = die_type (die, cu);
17807   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17808      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17809      creating the range type, but we use the result of check_typedef
17810      when examining properties of the type.  */
17811   base_type = check_typedef (orig_base_type);
17812
17813   /* The die_type call above may have already set the type for this DIE.  */
17814   range_type = get_die_type (die, cu);
17815   if (range_type)
17816     return range_type;
17817
17818   low.kind = PROP_CONST;
17819   high.kind = PROP_CONST;
17820   high.data.const_val = 0;
17821
17822   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17823      omitting DW_AT_lower_bound.  */
17824   switch (cu->language)
17825     {
17826     case language_c:
17827     case language_cplus:
17828       low.data.const_val = 0;
17829       low_default_is_valid = 1;
17830       break;
17831     case language_fortran:
17832       low.data.const_val = 1;
17833       low_default_is_valid = 1;
17834       break;
17835     case language_d:
17836     case language_objc:
17837     case language_rust:
17838       low.data.const_val = 0;
17839       low_default_is_valid = (cu->header.version >= 4);
17840       break;
17841     case language_ada:
17842     case language_m2:
17843     case language_pascal:
17844       low.data.const_val = 1;
17845       low_default_is_valid = (cu->header.version >= 4);
17846       break;
17847     default:
17848       low.data.const_val = 0;
17849       low_default_is_valid = 0;
17850       break;
17851     }
17852
17853   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17854   if (attr)
17855     attr_to_dynamic_prop (attr, die, cu, &low);
17856   else if (!low_default_is_valid)
17857     complaint (_("Missing DW_AT_lower_bound "
17858                                       "- DIE at %s [in module %s]"),
17859                sect_offset_str (die->sect_off),
17860                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17861
17862   struct attribute *attr_ub, *attr_count;
17863   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17864   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17865     {
17866       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17867       if (attr_to_dynamic_prop (attr, die, cu, &high))
17868         {
17869           /* If bounds are constant do the final calculation here.  */
17870           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17871             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17872           else
17873             high_bound_is_count = 1;
17874         }
17875       else
17876         {
17877           if (attr_ub != NULL)
17878             complaint (_("Unresolved DW_AT_upper_bound "
17879                          "- DIE at %s [in module %s]"),
17880                        sect_offset_str (die->sect_off),
17881                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17882           if (attr_count != NULL)
17883             complaint (_("Unresolved DW_AT_count "
17884                          "- DIE at %s [in module %s]"),
17885                        sect_offset_str (die->sect_off),
17886                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17887         }
17888         
17889     }
17890
17891   /* Dwarf-2 specifications explicitly allows to create subrange types
17892      without specifying a base type.
17893      In that case, the base type must be set to the type of
17894      the lower bound, upper bound or count, in that order, if any of these
17895      three attributes references an object that has a type.
17896      If no base type is found, the Dwarf-2 specifications say that
17897      a signed integer type of size equal to the size of an address should
17898      be used.
17899      For the following C code: `extern char gdb_int [];'
17900      GCC produces an empty range DIE.
17901      FIXME: muller/2010-05-28: Possible references to object for low bound,
17902      high bound or count are not yet handled by this code.  */
17903   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17904     {
17905       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17906       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17907       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17908       struct type *int_type = objfile_type (objfile)->builtin_int;
17909
17910       /* Test "int", "long int", and "long long int" objfile types,
17911          and select the first one having a size above or equal to the
17912          architecture address size.  */
17913       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17914         base_type = int_type;
17915       else
17916         {
17917           int_type = objfile_type (objfile)->builtin_long;
17918           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17919             base_type = int_type;
17920           else
17921             {
17922               int_type = objfile_type (objfile)->builtin_long_long;
17923               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17924                 base_type = int_type;
17925             }
17926         }
17927     }
17928
17929   /* Normally, the DWARF producers are expected to use a signed
17930      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17931      But this is unfortunately not always the case, as witnessed
17932      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17933      is used instead.  To work around that ambiguity, we treat
17934      the bounds as signed, and thus sign-extend their values, when
17935      the base type is signed.  */
17936   negative_mask =
17937     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17938   if (low.kind == PROP_CONST
17939       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17940     low.data.const_val |= negative_mask;
17941   if (high.kind == PROP_CONST
17942       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17943     high.data.const_val |= negative_mask;
17944
17945   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17946
17947   if (high_bound_is_count)
17948     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17949
17950   /* Ada expects an empty array on no boundary attributes.  */
17951   if (attr == NULL && cu->language != language_ada)
17952     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17953
17954   name = dwarf2_name (die, cu);
17955   if (name)
17956     TYPE_NAME (range_type) = name;
17957
17958   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17959   if (attr)
17960     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17961
17962   maybe_set_alignment (cu, die, range_type);
17963
17964   set_die_type (die, range_type, cu);
17965
17966   /* set_die_type should be already done.  */
17967   set_descriptive_type (range_type, die, cu);
17968
17969   return range_type;
17970 }
17971
17972 static struct type *
17973 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17974 {
17975   struct type *type;
17976
17977   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17978                     NULL);
17979   TYPE_NAME (type) = dwarf2_name (die, cu);
17980
17981   /* In Ada, an unspecified type is typically used when the description
17982      of the type is defered to a different unit.  When encountering
17983      such a type, we treat it as a stub, and try to resolve it later on,
17984      when needed.  */
17985   if (cu->language == language_ada)
17986     TYPE_STUB (type) = 1;
17987
17988   return set_die_type (die, type, cu);
17989 }
17990
17991 /* Read a single die and all its descendents.  Set the die's sibling
17992    field to NULL; set other fields in the die correctly, and set all
17993    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17994    location of the info_ptr after reading all of those dies.  PARENT
17995    is the parent of the die in question.  */
17996
17997 static struct die_info *
17998 read_die_and_children (const struct die_reader_specs *reader,
17999                        const gdb_byte *info_ptr,
18000                        const gdb_byte **new_info_ptr,
18001                        struct die_info *parent)
18002 {
18003   struct die_info *die;
18004   const gdb_byte *cur_ptr;
18005   int has_children;
18006
18007   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
18008   if (die == NULL)
18009     {
18010       *new_info_ptr = cur_ptr;
18011       return NULL;
18012     }
18013   store_in_ref_table (die, reader->cu);
18014
18015   if (has_children)
18016     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
18017   else
18018     {
18019       die->child = NULL;
18020       *new_info_ptr = cur_ptr;
18021     }
18022
18023   die->sibling = NULL;
18024   die->parent = parent;
18025   return die;
18026 }
18027
18028 /* Read a die, all of its descendents, and all of its siblings; set
18029    all of the fields of all of the dies correctly.  Arguments are as
18030    in read_die_and_children.  */
18031
18032 static struct die_info *
18033 read_die_and_siblings_1 (const struct die_reader_specs *reader,
18034                          const gdb_byte *info_ptr,
18035                          const gdb_byte **new_info_ptr,
18036                          struct die_info *parent)
18037 {
18038   struct die_info *first_die, *last_sibling;
18039   const gdb_byte *cur_ptr;
18040
18041   cur_ptr = info_ptr;
18042   first_die = last_sibling = NULL;
18043
18044   while (1)
18045     {
18046       struct die_info *die
18047         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
18048
18049       if (die == NULL)
18050         {
18051           *new_info_ptr = cur_ptr;
18052           return first_die;
18053         }
18054
18055       if (!first_die)
18056         first_die = die;
18057       else
18058         last_sibling->sibling = die;
18059
18060       last_sibling = die;
18061     }
18062 }
18063
18064 /* Read a die, all of its descendents, and all of its siblings; set
18065    all of the fields of all of the dies correctly.  Arguments are as
18066    in read_die_and_children.
18067    This the main entry point for reading a DIE and all its children.  */
18068
18069 static struct die_info *
18070 read_die_and_siblings (const struct die_reader_specs *reader,
18071                        const gdb_byte *info_ptr,
18072                        const gdb_byte **new_info_ptr,
18073                        struct die_info *parent)
18074 {
18075   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18076                                                   new_info_ptr, parent);
18077
18078   if (dwarf_die_debug)
18079     {
18080       fprintf_unfiltered (gdb_stdlog,
18081                           "Read die from %s@0x%x of %s:\n",
18082                           get_section_name (reader->die_section),
18083                           (unsigned) (info_ptr - reader->die_section->buffer),
18084                           bfd_get_filename (reader->abfd));
18085       dump_die (die, dwarf_die_debug);
18086     }
18087
18088   return die;
18089 }
18090
18091 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18092    attributes.
18093    The caller is responsible for filling in the extra attributes
18094    and updating (*DIEP)->num_attrs.
18095    Set DIEP to point to a newly allocated die with its information,
18096    except for its child, sibling, and parent fields.
18097    Set HAS_CHILDREN to tell whether the die has children or not.  */
18098
18099 static const gdb_byte *
18100 read_full_die_1 (const struct die_reader_specs *reader,
18101                  struct die_info **diep, const gdb_byte *info_ptr,
18102                  int *has_children, int num_extra_attrs)
18103 {
18104   unsigned int abbrev_number, bytes_read, i;
18105   struct abbrev_info *abbrev;
18106   struct die_info *die;
18107   struct dwarf2_cu *cu = reader->cu;
18108   bfd *abfd = reader->abfd;
18109
18110   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18111   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18112   info_ptr += bytes_read;
18113   if (!abbrev_number)
18114     {
18115       *diep = NULL;
18116       *has_children = 0;
18117       return info_ptr;
18118     }
18119
18120   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18121   if (!abbrev)
18122     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18123            abbrev_number,
18124            bfd_get_filename (abfd));
18125
18126   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18127   die->sect_off = sect_off;
18128   die->tag = abbrev->tag;
18129   die->abbrev = abbrev_number;
18130
18131   /* Make the result usable.
18132      The caller needs to update num_attrs after adding the extra
18133      attributes.  */
18134   die->num_attrs = abbrev->num_attrs;
18135
18136   for (i = 0; i < abbrev->num_attrs; ++i)
18137     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18138                                info_ptr);
18139
18140   *diep = die;
18141   *has_children = abbrev->has_children;
18142   return info_ptr;
18143 }
18144
18145 /* Read a die and all its attributes.
18146    Set DIEP to point to a newly allocated die with its information,
18147    except for its child, sibling, and parent fields.
18148    Set HAS_CHILDREN to tell whether the die has children or not.  */
18149
18150 static const gdb_byte *
18151 read_full_die (const struct die_reader_specs *reader,
18152                struct die_info **diep, const gdb_byte *info_ptr,
18153                int *has_children)
18154 {
18155   const gdb_byte *result;
18156
18157   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18158
18159   if (dwarf_die_debug)
18160     {
18161       fprintf_unfiltered (gdb_stdlog,
18162                           "Read die from %s@0x%x of %s:\n",
18163                           get_section_name (reader->die_section),
18164                           (unsigned) (info_ptr - reader->die_section->buffer),
18165                           bfd_get_filename (reader->abfd));
18166       dump_die (*diep, dwarf_die_debug);
18167     }
18168
18169   return result;
18170 }
18171 \f
18172 /* Abbreviation tables.
18173
18174    In DWARF version 2, the description of the debugging information is
18175    stored in a separate .debug_abbrev section.  Before we read any
18176    dies from a section we read in all abbreviations and install them
18177    in a hash table.  */
18178
18179 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18180
18181 struct abbrev_info *
18182 abbrev_table::alloc_abbrev ()
18183 {
18184   struct abbrev_info *abbrev;
18185
18186   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18187   memset (abbrev, 0, sizeof (struct abbrev_info));
18188
18189   return abbrev;
18190 }
18191
18192 /* Add an abbreviation to the table.  */
18193
18194 void
18195 abbrev_table::add_abbrev (unsigned int abbrev_number,
18196                           struct abbrev_info *abbrev)
18197 {
18198   unsigned int hash_number;
18199
18200   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18201   abbrev->next = m_abbrevs[hash_number];
18202   m_abbrevs[hash_number] = abbrev;
18203 }
18204
18205 /* Look up an abbrev in the table.
18206    Returns NULL if the abbrev is not found.  */
18207
18208 struct abbrev_info *
18209 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18210 {
18211   unsigned int hash_number;
18212   struct abbrev_info *abbrev;
18213
18214   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18215   abbrev = m_abbrevs[hash_number];
18216
18217   while (abbrev)
18218     {
18219       if (abbrev->number == abbrev_number)
18220         return abbrev;
18221       abbrev = abbrev->next;
18222     }
18223   return NULL;
18224 }
18225
18226 /* Read in an abbrev table.  */
18227
18228 static abbrev_table_up
18229 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18230                          struct dwarf2_section_info *section,
18231                          sect_offset sect_off)
18232 {
18233   struct objfile *objfile = dwarf2_per_objfile->objfile;
18234   bfd *abfd = get_section_bfd_owner (section);
18235   const gdb_byte *abbrev_ptr;
18236   struct abbrev_info *cur_abbrev;
18237   unsigned int abbrev_number, bytes_read, abbrev_name;
18238   unsigned int abbrev_form;
18239   struct attr_abbrev *cur_attrs;
18240   unsigned int allocated_attrs;
18241
18242   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18243
18244   dwarf2_read_section (objfile, section);
18245   abbrev_ptr = section->buffer + to_underlying (sect_off);
18246   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18247   abbrev_ptr += bytes_read;
18248
18249   allocated_attrs = ATTR_ALLOC_CHUNK;
18250   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18251
18252   /* Loop until we reach an abbrev number of 0.  */
18253   while (abbrev_number)
18254     {
18255       cur_abbrev = abbrev_table->alloc_abbrev ();
18256
18257       /* read in abbrev header */
18258       cur_abbrev->number = abbrev_number;
18259       cur_abbrev->tag
18260         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18261       abbrev_ptr += bytes_read;
18262       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18263       abbrev_ptr += 1;
18264
18265       /* now read in declarations */
18266       for (;;)
18267         {
18268           LONGEST implicit_const;
18269
18270           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18271           abbrev_ptr += bytes_read;
18272           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18273           abbrev_ptr += bytes_read;
18274           if (abbrev_form == DW_FORM_implicit_const)
18275             {
18276               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18277                                                    &bytes_read);
18278               abbrev_ptr += bytes_read;
18279             }
18280           else
18281             {
18282               /* Initialize it due to a false compiler warning.  */
18283               implicit_const = -1;
18284             }
18285
18286           if (abbrev_name == 0)
18287             break;
18288
18289           if (cur_abbrev->num_attrs == allocated_attrs)
18290             {
18291               allocated_attrs += ATTR_ALLOC_CHUNK;
18292               cur_attrs
18293                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18294             }
18295
18296           cur_attrs[cur_abbrev->num_attrs].name
18297             = (enum dwarf_attribute) abbrev_name;
18298           cur_attrs[cur_abbrev->num_attrs].form
18299             = (enum dwarf_form) abbrev_form;
18300           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18301           ++cur_abbrev->num_attrs;
18302         }
18303
18304       cur_abbrev->attrs =
18305         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18306                    cur_abbrev->num_attrs);
18307       memcpy (cur_abbrev->attrs, cur_attrs,
18308               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18309
18310       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18311
18312       /* Get next abbreviation.
18313          Under Irix6 the abbreviations for a compilation unit are not
18314          always properly terminated with an abbrev number of 0.
18315          Exit loop if we encounter an abbreviation which we have
18316          already read (which means we are about to read the abbreviations
18317          for the next compile unit) or if the end of the abbreviation
18318          table is reached.  */
18319       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18320         break;
18321       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18322       abbrev_ptr += bytes_read;
18323       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18324         break;
18325     }
18326
18327   xfree (cur_attrs);
18328   return abbrev_table;
18329 }
18330
18331 /* Returns nonzero if TAG represents a type that we might generate a partial
18332    symbol for.  */
18333
18334 static int
18335 is_type_tag_for_partial (int tag)
18336 {
18337   switch (tag)
18338     {
18339 #if 0
18340     /* Some types that would be reasonable to generate partial symbols for,
18341        that we don't at present.  */
18342     case DW_TAG_array_type:
18343     case DW_TAG_file_type:
18344     case DW_TAG_ptr_to_member_type:
18345     case DW_TAG_set_type:
18346     case DW_TAG_string_type:
18347     case DW_TAG_subroutine_type:
18348 #endif
18349     case DW_TAG_base_type:
18350     case DW_TAG_class_type:
18351     case DW_TAG_interface_type:
18352     case DW_TAG_enumeration_type:
18353     case DW_TAG_structure_type:
18354     case DW_TAG_subrange_type:
18355     case DW_TAG_typedef:
18356     case DW_TAG_union_type:
18357       return 1;
18358     default:
18359       return 0;
18360     }
18361 }
18362
18363 /* Load all DIEs that are interesting for partial symbols into memory.  */
18364
18365 static struct partial_die_info *
18366 load_partial_dies (const struct die_reader_specs *reader,
18367                    const gdb_byte *info_ptr, int building_psymtab)
18368 {
18369   struct dwarf2_cu *cu = reader->cu;
18370   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18371   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18372   unsigned int bytes_read;
18373   unsigned int load_all = 0;
18374   int nesting_level = 1;
18375
18376   parent_die = NULL;
18377   last_die = NULL;
18378
18379   gdb_assert (cu->per_cu != NULL);
18380   if (cu->per_cu->load_all_dies)
18381     load_all = 1;
18382
18383   cu->partial_dies
18384     = htab_create_alloc_ex (cu->header.length / 12,
18385                             partial_die_hash,
18386                             partial_die_eq,
18387                             NULL,
18388                             &cu->comp_unit_obstack,
18389                             hashtab_obstack_allocate,
18390                             dummy_obstack_deallocate);
18391
18392   while (1)
18393     {
18394       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18395
18396       /* A NULL abbrev means the end of a series of children.  */
18397       if (abbrev == NULL)
18398         {
18399           if (--nesting_level == 0)
18400             return first_die;
18401
18402           info_ptr += bytes_read;
18403           last_die = parent_die;
18404           parent_die = parent_die->die_parent;
18405           continue;
18406         }
18407
18408       /* Check for template arguments.  We never save these; if
18409          they're seen, we just mark the parent, and go on our way.  */
18410       if (parent_die != NULL
18411           && cu->language == language_cplus
18412           && (abbrev->tag == DW_TAG_template_type_param
18413               || abbrev->tag == DW_TAG_template_value_param))
18414         {
18415           parent_die->has_template_arguments = 1;
18416
18417           if (!load_all)
18418             {
18419               /* We don't need a partial DIE for the template argument.  */
18420               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18421               continue;
18422             }
18423         }
18424
18425       /* We only recurse into c++ subprograms looking for template arguments.
18426          Skip their other children.  */
18427       if (!load_all
18428           && cu->language == language_cplus
18429           && parent_die != NULL
18430           && parent_die->tag == DW_TAG_subprogram)
18431         {
18432           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18433           continue;
18434         }
18435
18436       /* Check whether this DIE is interesting enough to save.  Normally
18437          we would not be interested in members here, but there may be
18438          later variables referencing them via DW_AT_specification (for
18439          static members).  */
18440       if (!load_all
18441           && !is_type_tag_for_partial (abbrev->tag)
18442           && abbrev->tag != DW_TAG_constant
18443           && abbrev->tag != DW_TAG_enumerator
18444           && abbrev->tag != DW_TAG_subprogram
18445           && abbrev->tag != DW_TAG_inlined_subroutine
18446           && abbrev->tag != DW_TAG_lexical_block
18447           && abbrev->tag != DW_TAG_variable
18448           && abbrev->tag != DW_TAG_namespace
18449           && abbrev->tag != DW_TAG_module
18450           && abbrev->tag != DW_TAG_member
18451           && abbrev->tag != DW_TAG_imported_unit
18452           && abbrev->tag != DW_TAG_imported_declaration)
18453         {
18454           /* Otherwise we skip to the next sibling, if any.  */
18455           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18456           continue;
18457         }
18458
18459       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18460                                    abbrev);
18461
18462       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18463
18464       /* This two-pass algorithm for processing partial symbols has a
18465          high cost in cache pressure.  Thus, handle some simple cases
18466          here which cover the majority of C partial symbols.  DIEs
18467          which neither have specification tags in them, nor could have
18468          specification tags elsewhere pointing at them, can simply be
18469          processed and discarded.
18470
18471          This segment is also optional; scan_partial_symbols and
18472          add_partial_symbol will handle these DIEs if we chain
18473          them in normally.  When compilers which do not emit large
18474          quantities of duplicate debug information are more common,
18475          this code can probably be removed.  */
18476
18477       /* Any complete simple types at the top level (pretty much all
18478          of them, for a language without namespaces), can be processed
18479          directly.  */
18480       if (parent_die == NULL
18481           && pdi.has_specification == 0
18482           && pdi.is_declaration == 0
18483           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18484               || pdi.tag == DW_TAG_base_type
18485               || pdi.tag == DW_TAG_subrange_type))
18486         {
18487           if (building_psymtab && pdi.name != NULL)
18488             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18489                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18490                                  psymbol_placement::STATIC,
18491                                  0, cu->language, objfile);
18492           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18493           continue;
18494         }
18495
18496       /* The exception for DW_TAG_typedef with has_children above is
18497          a workaround of GCC PR debug/47510.  In the case of this complaint
18498          type_name_or_error will error on such types later.
18499
18500          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18501          it could not find the child DIEs referenced later, this is checked
18502          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18503
18504       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18505         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18506                      "- DIE at %s [in module %s]"),
18507                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18508
18509       /* If we're at the second level, and we're an enumerator, and
18510          our parent has no specification (meaning possibly lives in a
18511          namespace elsewhere), then we can add the partial symbol now
18512          instead of queueing it.  */
18513       if (pdi.tag == DW_TAG_enumerator
18514           && parent_die != NULL
18515           && parent_die->die_parent == NULL
18516           && parent_die->tag == DW_TAG_enumeration_type
18517           && parent_die->has_specification == 0)
18518         {
18519           if (pdi.name == NULL)
18520             complaint (_("malformed enumerator DIE ignored"));
18521           else if (building_psymtab)
18522             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18523                                  VAR_DOMAIN, LOC_CONST, -1,
18524                                  cu->language == language_cplus
18525                                  ? psymbol_placement::GLOBAL
18526                                  : psymbol_placement::STATIC,
18527                                  0, cu->language, objfile);
18528
18529           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18530           continue;
18531         }
18532
18533       struct partial_die_info *part_die
18534         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18535
18536       /* We'll save this DIE so link it in.  */
18537       part_die->die_parent = parent_die;
18538       part_die->die_sibling = NULL;
18539       part_die->die_child = NULL;
18540
18541       if (last_die && last_die == parent_die)
18542         last_die->die_child = part_die;
18543       else if (last_die)
18544         last_die->die_sibling = part_die;
18545
18546       last_die = part_die;
18547
18548       if (first_die == NULL)
18549         first_die = part_die;
18550
18551       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18552          find interesting need to be in the hash table, because we
18553          also have the parent/sibling/child chains; only those that we
18554          might refer to by offset later during partial symbol reading.
18555
18556          For now this means things that might have be the target of a
18557          DW_AT_specification, DW_AT_abstract_origin, or
18558          DW_AT_extension.  DW_AT_extension will refer only to
18559          namespaces; DW_AT_abstract_origin refers to functions (and
18560          many things under the function DIE, but we do not recurse
18561          into function DIEs during partial symbol reading) and
18562          possibly variables as well; DW_AT_specification refers to
18563          declarations.  Declarations ought to have the DW_AT_declaration
18564          flag.  It happens that GCC forgets to put it in sometimes, but
18565          only for functions, not for types.
18566
18567          Adding more things than necessary to the hash table is harmless
18568          except for the performance cost.  Adding too few will result in
18569          wasted time in find_partial_die, when we reread the compilation
18570          unit with load_all_dies set.  */
18571
18572       if (load_all
18573           || abbrev->tag == DW_TAG_constant
18574           || abbrev->tag == DW_TAG_subprogram
18575           || abbrev->tag == DW_TAG_variable
18576           || abbrev->tag == DW_TAG_namespace
18577           || part_die->is_declaration)
18578         {
18579           void **slot;
18580
18581           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18582                                            to_underlying (part_die->sect_off),
18583                                            INSERT);
18584           *slot = part_die;
18585         }
18586
18587       /* For some DIEs we want to follow their children (if any).  For C
18588          we have no reason to follow the children of structures; for other
18589          languages we have to, so that we can get at method physnames
18590          to infer fully qualified class names, for DW_AT_specification,
18591          and for C++ template arguments.  For C++, we also look one level
18592          inside functions to find template arguments (if the name of the
18593          function does not already contain the template arguments).
18594
18595          For Ada, we need to scan the children of subprograms and lexical
18596          blocks as well because Ada allows the definition of nested
18597          entities that could be interesting for the debugger, such as
18598          nested subprograms for instance.  */
18599       if (last_die->has_children
18600           && (load_all
18601               || last_die->tag == DW_TAG_namespace
18602               || last_die->tag == DW_TAG_module
18603               || last_die->tag == DW_TAG_enumeration_type
18604               || (cu->language == language_cplus
18605                   && last_die->tag == DW_TAG_subprogram
18606                   && (last_die->name == NULL
18607                       || strchr (last_die->name, '<') == NULL))
18608               || (cu->language != language_c
18609                   && (last_die->tag == DW_TAG_class_type
18610                       || last_die->tag == DW_TAG_interface_type
18611                       || last_die->tag == DW_TAG_structure_type
18612                       || last_die->tag == DW_TAG_union_type))
18613               || (cu->language == language_ada
18614                   && (last_die->tag == DW_TAG_subprogram
18615                       || last_die->tag == DW_TAG_lexical_block))))
18616         {
18617           nesting_level++;
18618           parent_die = last_die;
18619           continue;
18620         }
18621
18622       /* Otherwise we skip to the next sibling, if any.  */
18623       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18624
18625       /* Back to the top, do it again.  */
18626     }
18627 }
18628
18629 partial_die_info::partial_die_info (sect_offset sect_off_,
18630                                     struct abbrev_info *abbrev)
18631   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18632 {
18633 }
18634
18635 /* Read a minimal amount of information into the minimal die structure.
18636    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18637
18638 const gdb_byte *
18639 partial_die_info::read (const struct die_reader_specs *reader,
18640                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18641 {
18642   struct dwarf2_cu *cu = reader->cu;
18643   struct dwarf2_per_objfile *dwarf2_per_objfile
18644     = cu->per_cu->dwarf2_per_objfile;
18645   unsigned int i;
18646   int has_low_pc_attr = 0;
18647   int has_high_pc_attr = 0;
18648   int high_pc_relative = 0;
18649
18650   for (i = 0; i < abbrev.num_attrs; ++i)
18651     {
18652       struct attribute attr;
18653
18654       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18655
18656       /* Store the data if it is of an attribute we want to keep in a
18657          partial symbol table.  */
18658       switch (attr.name)
18659         {
18660         case DW_AT_name:
18661           switch (tag)
18662             {
18663             case DW_TAG_compile_unit:
18664             case DW_TAG_partial_unit:
18665             case DW_TAG_type_unit:
18666               /* Compilation units have a DW_AT_name that is a filename, not
18667                  a source language identifier.  */
18668             case DW_TAG_enumeration_type:
18669             case DW_TAG_enumerator:
18670               /* These tags always have simple identifiers already; no need
18671                  to canonicalize them.  */
18672               name = DW_STRING (&attr);
18673               break;
18674             default:
18675               {
18676                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18677
18678                 name
18679                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18680                                               &objfile->per_bfd->storage_obstack);
18681               }
18682               break;
18683             }
18684           break;
18685         case DW_AT_linkage_name:
18686         case DW_AT_MIPS_linkage_name:
18687           /* Note that both forms of linkage name might appear.  We
18688              assume they will be the same, and we only store the last
18689              one we see.  */
18690           if (cu->language == language_ada)
18691             name = DW_STRING (&attr);
18692           linkage_name = DW_STRING (&attr);
18693           break;
18694         case DW_AT_low_pc:
18695           has_low_pc_attr = 1;
18696           lowpc = attr_value_as_address (&attr);
18697           break;
18698         case DW_AT_high_pc:
18699           has_high_pc_attr = 1;
18700           highpc = attr_value_as_address (&attr);
18701           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18702                 high_pc_relative = 1;
18703           break;
18704         case DW_AT_location:
18705           /* Support the .debug_loc offsets.  */
18706           if (attr_form_is_block (&attr))
18707             {
18708                d.locdesc = DW_BLOCK (&attr);
18709             }
18710           else if (attr_form_is_section_offset (&attr))
18711             {
18712               dwarf2_complex_location_expr_complaint ();
18713             }
18714           else
18715             {
18716               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18717                                                      "partial symbol information");
18718             }
18719           break;
18720         case DW_AT_external:
18721           is_external = DW_UNSND (&attr);
18722           break;
18723         case DW_AT_declaration:
18724           is_declaration = DW_UNSND (&attr);
18725           break;
18726         case DW_AT_type:
18727           has_type = 1;
18728           break;
18729         case DW_AT_abstract_origin:
18730         case DW_AT_specification:
18731         case DW_AT_extension:
18732           has_specification = 1;
18733           spec_offset = dwarf2_get_ref_die_offset (&attr);
18734           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18735                                    || cu->per_cu->is_dwz);
18736           break;
18737         case DW_AT_sibling:
18738           /* Ignore absolute siblings, they might point outside of
18739              the current compile unit.  */
18740           if (attr.form == DW_FORM_ref_addr)
18741             complaint (_("ignoring absolute DW_AT_sibling"));
18742           else
18743             {
18744               const gdb_byte *buffer = reader->buffer;
18745               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18746               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18747
18748               if (sibling_ptr < info_ptr)
18749                 complaint (_("DW_AT_sibling points backwards"));
18750               else if (sibling_ptr > reader->buffer_end)
18751                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18752               else
18753                 sibling = sibling_ptr;
18754             }
18755           break;
18756         case DW_AT_byte_size:
18757           has_byte_size = 1;
18758           break;
18759         case DW_AT_const_value:
18760           has_const_value = 1;
18761           break;
18762         case DW_AT_calling_convention:
18763           /* DWARF doesn't provide a way to identify a program's source-level
18764              entry point.  DW_AT_calling_convention attributes are only meant
18765              to describe functions' calling conventions.
18766
18767              However, because it's a necessary piece of information in
18768              Fortran, and before DWARF 4 DW_CC_program was the only
18769              piece of debugging information whose definition refers to
18770              a 'main program' at all, several compilers marked Fortran
18771              main programs with DW_CC_program --- even when those
18772              functions use the standard calling conventions.
18773
18774              Although DWARF now specifies a way to provide this
18775              information, we support this practice for backward
18776              compatibility.  */
18777           if (DW_UNSND (&attr) == DW_CC_program
18778               && cu->language == language_fortran)
18779             main_subprogram = 1;
18780           break;
18781         case DW_AT_inline:
18782           if (DW_UNSND (&attr) == DW_INL_inlined
18783               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18784             may_be_inlined = 1;
18785           break;
18786
18787         case DW_AT_import:
18788           if (tag == DW_TAG_imported_unit)
18789             {
18790               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18791               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18792                                   || cu->per_cu->is_dwz);
18793             }
18794           break;
18795
18796         case DW_AT_main_subprogram:
18797           main_subprogram = DW_UNSND (&attr);
18798           break;
18799
18800         case DW_AT_ranges:
18801           {
18802             /* It would be nice to reuse dwarf2_get_pc_bounds here,
18803                but that requires a full DIE, so instead we just
18804                reimplement it.  */
18805             int need_ranges_base = tag != DW_TAG_compile_unit;
18806             unsigned int ranges_offset = (DW_UNSND (&attr)
18807                                           + (need_ranges_base
18808                                              ? cu->ranges_base
18809                                              : 0));
18810
18811             /* Value of the DW_AT_ranges attribute is the offset in the
18812                .debug_ranges section.  */
18813             if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18814                                     nullptr))
18815               has_pc_info = 1;
18816           }
18817           break;
18818
18819         default:
18820           break;
18821         }
18822     }
18823
18824   if (high_pc_relative)
18825     highpc += lowpc;
18826
18827   if (has_low_pc_attr && has_high_pc_attr)
18828     {
18829       /* When using the GNU linker, .gnu.linkonce. sections are used to
18830          eliminate duplicate copies of functions and vtables and such.
18831          The linker will arbitrarily choose one and discard the others.
18832          The AT_*_pc values for such functions refer to local labels in
18833          these sections.  If the section from that file was discarded, the
18834          labels are not in the output, so the relocs get a value of 0.
18835          If this is a discarded function, mark the pc bounds as invalid,
18836          so that GDB will ignore it.  */
18837       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18838         {
18839           struct objfile *objfile = dwarf2_per_objfile->objfile;
18840           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18841
18842           complaint (_("DW_AT_low_pc %s is zero "
18843                        "for DIE at %s [in module %s]"),
18844                      paddress (gdbarch, lowpc),
18845                      sect_offset_str (sect_off),
18846                      objfile_name (objfile));
18847         }
18848       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18849       else if (lowpc >= highpc)
18850         {
18851           struct objfile *objfile = dwarf2_per_objfile->objfile;
18852           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18853
18854           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18855                        "for DIE at %s [in module %s]"),
18856                      paddress (gdbarch, lowpc),
18857                      paddress (gdbarch, highpc),
18858                      sect_offset_str (sect_off),
18859                      objfile_name (objfile));
18860         }
18861       else
18862         has_pc_info = 1;
18863     }
18864
18865   return info_ptr;
18866 }
18867
18868 /* Find a cached partial DIE at OFFSET in CU.  */
18869
18870 struct partial_die_info *
18871 dwarf2_cu::find_partial_die (sect_offset sect_off)
18872 {
18873   struct partial_die_info *lookup_die = NULL;
18874   struct partial_die_info part_die (sect_off);
18875
18876   lookup_die = ((struct partial_die_info *)
18877                 htab_find_with_hash (partial_dies, &part_die,
18878                                      to_underlying (sect_off)));
18879
18880   return lookup_die;
18881 }
18882
18883 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18884    except in the case of .debug_types DIEs which do not reference
18885    outside their CU (they do however referencing other types via
18886    DW_FORM_ref_sig8).  */
18887
18888 static struct partial_die_info *
18889 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18890 {
18891   struct dwarf2_per_objfile *dwarf2_per_objfile
18892     = cu->per_cu->dwarf2_per_objfile;
18893   struct objfile *objfile = dwarf2_per_objfile->objfile;
18894   struct dwarf2_per_cu_data *per_cu = NULL;
18895   struct partial_die_info *pd = NULL;
18896
18897   if (offset_in_dwz == cu->per_cu->is_dwz
18898       && offset_in_cu_p (&cu->header, sect_off))
18899     {
18900       pd = cu->find_partial_die (sect_off);
18901       if (pd != NULL)
18902         return pd;
18903       /* We missed recording what we needed.
18904          Load all dies and try again.  */
18905       per_cu = cu->per_cu;
18906     }
18907   else
18908     {
18909       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18910       if (cu->per_cu->is_debug_types)
18911         {
18912           error (_("Dwarf Error: Type Unit at offset %s contains"
18913                    " external reference to offset %s [in module %s].\n"),
18914                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18915                  bfd_get_filename (objfile->obfd));
18916         }
18917       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18918                                                  dwarf2_per_objfile);
18919
18920       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18921         load_partial_comp_unit (per_cu);
18922
18923       per_cu->cu->last_used = 0;
18924       pd = per_cu->cu->find_partial_die (sect_off);
18925     }
18926
18927   /* If we didn't find it, and not all dies have been loaded,
18928      load them all and try again.  */
18929
18930   if (pd == NULL && per_cu->load_all_dies == 0)
18931     {
18932       per_cu->load_all_dies = 1;
18933
18934       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18935          THIS_CU->cu may already be in use.  So we can't just free it and
18936          replace its DIEs with the ones we read in.  Instead, we leave those
18937          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18938          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18939          set.  */
18940       load_partial_comp_unit (per_cu);
18941
18942       pd = per_cu->cu->find_partial_die (sect_off);
18943     }
18944
18945   if (pd == NULL)
18946     internal_error (__FILE__, __LINE__,
18947                     _("could not find partial DIE %s "
18948                       "in cache [from module %s]\n"),
18949                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18950   return pd;
18951 }
18952
18953 /* See if we can figure out if the class lives in a namespace.  We do
18954    this by looking for a member function; its demangled name will
18955    contain namespace info, if there is any.  */
18956
18957 static void
18958 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18959                                   struct dwarf2_cu *cu)
18960 {
18961   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18962      what template types look like, because the demangler
18963      frequently doesn't give the same name as the debug info.  We
18964      could fix this by only using the demangled name to get the
18965      prefix (but see comment in read_structure_type).  */
18966
18967   struct partial_die_info *real_pdi;
18968   struct partial_die_info *child_pdi;
18969
18970   /* If this DIE (this DIE's specification, if any) has a parent, then
18971      we should not do this.  We'll prepend the parent's fully qualified
18972      name when we create the partial symbol.  */
18973
18974   real_pdi = struct_pdi;
18975   while (real_pdi->has_specification)
18976     real_pdi = find_partial_die (real_pdi->spec_offset,
18977                                  real_pdi->spec_is_dwz, cu);
18978
18979   if (real_pdi->die_parent != NULL)
18980     return;
18981
18982   for (child_pdi = struct_pdi->die_child;
18983        child_pdi != NULL;
18984        child_pdi = child_pdi->die_sibling)
18985     {
18986       if (child_pdi->tag == DW_TAG_subprogram
18987           && child_pdi->linkage_name != NULL)
18988         {
18989           char *actual_class_name
18990             = language_class_name_from_physname (cu->language_defn,
18991                                                  child_pdi->linkage_name);
18992           if (actual_class_name != NULL)
18993             {
18994               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18995               struct_pdi->name
18996                 = ((const char *)
18997                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18998                                   actual_class_name,
18999                                   strlen (actual_class_name)));
19000               xfree (actual_class_name);
19001             }
19002           break;
19003         }
19004     }
19005 }
19006
19007 void
19008 partial_die_info::fixup (struct dwarf2_cu *cu)
19009 {
19010   /* Once we've fixed up a die, there's no point in doing so again.
19011      This also avoids a memory leak if we were to call
19012      guess_partial_die_structure_name multiple times.  */
19013   if (fixup_called)
19014     return;
19015
19016   /* If we found a reference attribute and the DIE has no name, try
19017      to find a name in the referred to DIE.  */
19018
19019   if (name == NULL && has_specification)
19020     {
19021       struct partial_die_info *spec_die;
19022
19023       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
19024
19025       spec_die->fixup (cu);
19026
19027       if (spec_die->name)
19028         {
19029           name = spec_die->name;
19030
19031           /* Copy DW_AT_external attribute if it is set.  */
19032           if (spec_die->is_external)
19033             is_external = spec_die->is_external;
19034         }
19035     }
19036
19037   /* Set default names for some unnamed DIEs.  */
19038
19039   if (name == NULL && tag == DW_TAG_namespace)
19040     name = CP_ANONYMOUS_NAMESPACE_STR;
19041
19042   /* If there is no parent die to provide a namespace, and there are
19043      children, see if we can determine the namespace from their linkage
19044      name.  */
19045   if (cu->language == language_cplus
19046       && !VEC_empty (dwarf2_section_info_def,
19047                      cu->per_cu->dwarf2_per_objfile->types)
19048       && die_parent == NULL
19049       && has_children
19050       && (tag == DW_TAG_class_type
19051           || tag == DW_TAG_structure_type
19052           || tag == DW_TAG_union_type))
19053     guess_partial_die_structure_name (this, cu);
19054
19055   /* GCC might emit a nameless struct or union that has a linkage
19056      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19057   if (name == NULL
19058       && (tag == DW_TAG_class_type
19059           || tag == DW_TAG_interface_type
19060           || tag == DW_TAG_structure_type
19061           || tag == DW_TAG_union_type)
19062       && linkage_name != NULL)
19063     {
19064       char *demangled;
19065
19066       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
19067       if (demangled)
19068         {
19069           const char *base;
19070
19071           /* Strip any leading namespaces/classes, keep only the base name.
19072              DW_AT_name for named DIEs does not contain the prefixes.  */
19073           base = strrchr (demangled, ':');
19074           if (base && base > demangled && base[-1] == ':')
19075             base++;
19076           else
19077             base = demangled;
19078
19079           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19080           name
19081             = ((const char *)
19082                obstack_copy0 (&objfile->per_bfd->storage_obstack,
19083                               base, strlen (base)));
19084           xfree (demangled);
19085         }
19086     }
19087
19088   fixup_called = 1;
19089 }
19090
19091 /* Read an attribute value described by an attribute form.  */
19092
19093 static const gdb_byte *
19094 read_attribute_value (const struct die_reader_specs *reader,
19095                       struct attribute *attr, unsigned form,
19096                       LONGEST implicit_const, const gdb_byte *info_ptr)
19097 {
19098   struct dwarf2_cu *cu = reader->cu;
19099   struct dwarf2_per_objfile *dwarf2_per_objfile
19100     = cu->per_cu->dwarf2_per_objfile;
19101   struct objfile *objfile = dwarf2_per_objfile->objfile;
19102   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19103   bfd *abfd = reader->abfd;
19104   struct comp_unit_head *cu_header = &cu->header;
19105   unsigned int bytes_read;
19106   struct dwarf_block *blk;
19107
19108   attr->form = (enum dwarf_form) form;
19109   switch (form)
19110     {
19111     case DW_FORM_ref_addr:
19112       if (cu->header.version == 2)
19113         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19114       else
19115         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19116                                        &cu->header, &bytes_read);
19117       info_ptr += bytes_read;
19118       break;
19119     case DW_FORM_GNU_ref_alt:
19120       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19121       info_ptr += bytes_read;
19122       break;
19123     case DW_FORM_addr:
19124       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19125       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19126       info_ptr += bytes_read;
19127       break;
19128     case DW_FORM_block2:
19129       blk = dwarf_alloc_block (cu);
19130       blk->size = read_2_bytes (abfd, info_ptr);
19131       info_ptr += 2;
19132       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19133       info_ptr += blk->size;
19134       DW_BLOCK (attr) = blk;
19135       break;
19136     case DW_FORM_block4:
19137       blk = dwarf_alloc_block (cu);
19138       blk->size = read_4_bytes (abfd, info_ptr);
19139       info_ptr += 4;
19140       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19141       info_ptr += blk->size;
19142       DW_BLOCK (attr) = blk;
19143       break;
19144     case DW_FORM_data2:
19145       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19146       info_ptr += 2;
19147       break;
19148     case DW_FORM_data4:
19149       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19150       info_ptr += 4;
19151       break;
19152     case DW_FORM_data8:
19153       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19154       info_ptr += 8;
19155       break;
19156     case DW_FORM_data16:
19157       blk = dwarf_alloc_block (cu);
19158       blk->size = 16;
19159       blk->data = read_n_bytes (abfd, info_ptr, 16);
19160       info_ptr += 16;
19161       DW_BLOCK (attr) = blk;
19162       break;
19163     case DW_FORM_sec_offset:
19164       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19165       info_ptr += bytes_read;
19166       break;
19167     case DW_FORM_string:
19168       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19169       DW_STRING_IS_CANONICAL (attr) = 0;
19170       info_ptr += bytes_read;
19171       break;
19172     case DW_FORM_strp:
19173       if (!cu->per_cu->is_dwz)
19174         {
19175           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19176                                                    abfd, info_ptr, cu_header,
19177                                                    &bytes_read);
19178           DW_STRING_IS_CANONICAL (attr) = 0;
19179           info_ptr += bytes_read;
19180           break;
19181         }
19182       /* FALLTHROUGH */
19183     case DW_FORM_line_strp:
19184       if (!cu->per_cu->is_dwz)
19185         {
19186           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19187                                                         abfd, info_ptr,
19188                                                         cu_header, &bytes_read);
19189           DW_STRING_IS_CANONICAL (attr) = 0;
19190           info_ptr += bytes_read;
19191           break;
19192         }
19193       /* FALLTHROUGH */
19194     case DW_FORM_GNU_strp_alt:
19195       {
19196         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19197         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19198                                           &bytes_read);
19199
19200         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19201                                                           dwz, str_offset);
19202         DW_STRING_IS_CANONICAL (attr) = 0;
19203         info_ptr += bytes_read;
19204       }
19205       break;
19206     case DW_FORM_exprloc:
19207     case DW_FORM_block:
19208       blk = dwarf_alloc_block (cu);
19209       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19210       info_ptr += bytes_read;
19211       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19212       info_ptr += blk->size;
19213       DW_BLOCK (attr) = blk;
19214       break;
19215     case DW_FORM_block1:
19216       blk = dwarf_alloc_block (cu);
19217       blk->size = read_1_byte (abfd, info_ptr);
19218       info_ptr += 1;
19219       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19220       info_ptr += blk->size;
19221       DW_BLOCK (attr) = blk;
19222       break;
19223     case DW_FORM_data1:
19224       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19225       info_ptr += 1;
19226       break;
19227     case DW_FORM_flag:
19228       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19229       info_ptr += 1;
19230       break;
19231     case DW_FORM_flag_present:
19232       DW_UNSND (attr) = 1;
19233       break;
19234     case DW_FORM_sdata:
19235       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19236       info_ptr += bytes_read;
19237       break;
19238     case DW_FORM_udata:
19239       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19240       info_ptr += bytes_read;
19241       break;
19242     case DW_FORM_ref1:
19243       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19244                          + read_1_byte (abfd, info_ptr));
19245       info_ptr += 1;
19246       break;
19247     case DW_FORM_ref2:
19248       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19249                          + read_2_bytes (abfd, info_ptr));
19250       info_ptr += 2;
19251       break;
19252     case DW_FORM_ref4:
19253       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19254                          + read_4_bytes (abfd, info_ptr));
19255       info_ptr += 4;
19256       break;
19257     case DW_FORM_ref8:
19258       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19259                          + read_8_bytes (abfd, info_ptr));
19260       info_ptr += 8;
19261       break;
19262     case DW_FORM_ref_sig8:
19263       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19264       info_ptr += 8;
19265       break;
19266     case DW_FORM_ref_udata:
19267       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19268                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19269       info_ptr += bytes_read;
19270       break;
19271     case DW_FORM_indirect:
19272       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19273       info_ptr += bytes_read;
19274       if (form == DW_FORM_implicit_const)
19275         {
19276           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19277           info_ptr += bytes_read;
19278         }
19279       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19280                                        info_ptr);
19281       break;
19282     case DW_FORM_implicit_const:
19283       DW_SND (attr) = implicit_const;
19284       break;
19285     case DW_FORM_addrx:
19286     case DW_FORM_GNU_addr_index:
19287       if (reader->dwo_file == NULL)
19288         {
19289           /* For now flag a hard error.
19290              Later we can turn this into a complaint.  */
19291           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19292                  dwarf_form_name (form),
19293                  bfd_get_filename (abfd));
19294         }
19295       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19296       info_ptr += bytes_read;
19297       break;
19298     case DW_FORM_GNU_str_index:
19299       if (reader->dwo_file == NULL)
19300         {
19301           /* For now flag a hard error.
19302              Later we can turn this into a complaint if warranted.  */
19303           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19304                  dwarf_form_name (form),
19305                  bfd_get_filename (abfd));
19306         }
19307       {
19308         ULONGEST str_index =
19309           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19310
19311         DW_STRING (attr) = read_str_index (reader, str_index);
19312         DW_STRING_IS_CANONICAL (attr) = 0;
19313         info_ptr += bytes_read;
19314       }
19315       break;
19316     default:
19317       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19318              dwarf_form_name (form),
19319              bfd_get_filename (abfd));
19320     }
19321
19322   /* Super hack.  */
19323   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19324     attr->form = DW_FORM_GNU_ref_alt;
19325
19326   /* We have seen instances where the compiler tried to emit a byte
19327      size attribute of -1 which ended up being encoded as an unsigned
19328      0xffffffff.  Although 0xffffffff is technically a valid size value,
19329      an object of this size seems pretty unlikely so we can relatively
19330      safely treat these cases as if the size attribute was invalid and
19331      treat them as zero by default.  */
19332   if (attr->name == DW_AT_byte_size
19333       && form == DW_FORM_data4
19334       && DW_UNSND (attr) >= 0xffffffff)
19335     {
19336       complaint
19337         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19338          hex_string (DW_UNSND (attr)));
19339       DW_UNSND (attr) = 0;
19340     }
19341
19342   return info_ptr;
19343 }
19344
19345 /* Read an attribute described by an abbreviated attribute.  */
19346
19347 static const gdb_byte *
19348 read_attribute (const struct die_reader_specs *reader,
19349                 struct attribute *attr, struct attr_abbrev *abbrev,
19350                 const gdb_byte *info_ptr)
19351 {
19352   attr->name = abbrev->name;
19353   return read_attribute_value (reader, attr, abbrev->form,
19354                                abbrev->implicit_const, info_ptr);
19355 }
19356
19357 /* Read dwarf information from a buffer.  */
19358
19359 static unsigned int
19360 read_1_byte (bfd *abfd, const gdb_byte *buf)
19361 {
19362   return bfd_get_8 (abfd, buf);
19363 }
19364
19365 static int
19366 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19367 {
19368   return bfd_get_signed_8 (abfd, buf);
19369 }
19370
19371 static unsigned int
19372 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19373 {
19374   return bfd_get_16 (abfd, buf);
19375 }
19376
19377 static int
19378 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19379 {
19380   return bfd_get_signed_16 (abfd, buf);
19381 }
19382
19383 static unsigned int
19384 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19385 {
19386   return bfd_get_32 (abfd, buf);
19387 }
19388
19389 static int
19390 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19391 {
19392   return bfd_get_signed_32 (abfd, buf);
19393 }
19394
19395 static ULONGEST
19396 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19397 {
19398   return bfd_get_64 (abfd, buf);
19399 }
19400
19401 static CORE_ADDR
19402 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19403               unsigned int *bytes_read)
19404 {
19405   struct comp_unit_head *cu_header = &cu->header;
19406   CORE_ADDR retval = 0;
19407
19408   if (cu_header->signed_addr_p)
19409     {
19410       switch (cu_header->addr_size)
19411         {
19412         case 2:
19413           retval = bfd_get_signed_16 (abfd, buf);
19414           break;
19415         case 4:
19416           retval = bfd_get_signed_32 (abfd, buf);
19417           break;
19418         case 8:
19419           retval = bfd_get_signed_64 (abfd, buf);
19420           break;
19421         default:
19422           internal_error (__FILE__, __LINE__,
19423                           _("read_address: bad switch, signed [in module %s]"),
19424                           bfd_get_filename (abfd));
19425         }
19426     }
19427   else
19428     {
19429       switch (cu_header->addr_size)
19430         {
19431         case 2:
19432           retval = bfd_get_16 (abfd, buf);
19433           break;
19434         case 4:
19435           retval = bfd_get_32 (abfd, buf);
19436           break;
19437         case 8:
19438           retval = bfd_get_64 (abfd, buf);
19439           break;
19440         default:
19441           internal_error (__FILE__, __LINE__,
19442                           _("read_address: bad switch, "
19443                             "unsigned [in module %s]"),
19444                           bfd_get_filename (abfd));
19445         }
19446     }
19447
19448   *bytes_read = cu_header->addr_size;
19449   return retval;
19450 }
19451
19452 /* Read the initial length from a section.  The (draft) DWARF 3
19453    specification allows the initial length to take up either 4 bytes
19454    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19455    bytes describe the length and all offsets will be 8 bytes in length
19456    instead of 4.
19457
19458    An older, non-standard 64-bit format is also handled by this
19459    function.  The older format in question stores the initial length
19460    as an 8-byte quantity without an escape value.  Lengths greater
19461    than 2^32 aren't very common which means that the initial 4 bytes
19462    is almost always zero.  Since a length value of zero doesn't make
19463    sense for the 32-bit format, this initial zero can be considered to
19464    be an escape value which indicates the presence of the older 64-bit
19465    format.  As written, the code can't detect (old format) lengths
19466    greater than 4GB.  If it becomes necessary to handle lengths
19467    somewhat larger than 4GB, we could allow other small values (such
19468    as the non-sensical values of 1, 2, and 3) to also be used as
19469    escape values indicating the presence of the old format.
19470
19471    The value returned via bytes_read should be used to increment the
19472    relevant pointer after calling read_initial_length().
19473
19474    [ Note:  read_initial_length() and read_offset() are based on the
19475      document entitled "DWARF Debugging Information Format", revision
19476      3, draft 8, dated November 19, 2001.  This document was obtained
19477      from:
19478
19479         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19480
19481      This document is only a draft and is subject to change.  (So beware.)
19482
19483      Details regarding the older, non-standard 64-bit format were
19484      determined empirically by examining 64-bit ELF files produced by
19485      the SGI toolchain on an IRIX 6.5 machine.
19486
19487      - Kevin, July 16, 2002
19488    ] */
19489
19490 static LONGEST
19491 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19492 {
19493   LONGEST length = bfd_get_32 (abfd, buf);
19494
19495   if (length == 0xffffffff)
19496     {
19497       length = bfd_get_64 (abfd, buf + 4);
19498       *bytes_read = 12;
19499     }
19500   else if (length == 0)
19501     {
19502       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19503       length = bfd_get_64 (abfd, buf);
19504       *bytes_read = 8;
19505     }
19506   else
19507     {
19508       *bytes_read = 4;
19509     }
19510
19511   return length;
19512 }
19513
19514 /* Cover function for read_initial_length.
19515    Returns the length of the object at BUF, and stores the size of the
19516    initial length in *BYTES_READ and stores the size that offsets will be in
19517    *OFFSET_SIZE.
19518    If the initial length size is not equivalent to that specified in
19519    CU_HEADER then issue a complaint.
19520    This is useful when reading non-comp-unit headers.  */
19521
19522 static LONGEST
19523 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19524                                         const struct comp_unit_head *cu_header,
19525                                         unsigned int *bytes_read,
19526                                         unsigned int *offset_size)
19527 {
19528   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19529
19530   gdb_assert (cu_header->initial_length_size == 4
19531               || cu_header->initial_length_size == 8
19532               || cu_header->initial_length_size == 12);
19533
19534   if (cu_header->initial_length_size != *bytes_read)
19535     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19536
19537   *offset_size = (*bytes_read == 4) ? 4 : 8;
19538   return length;
19539 }
19540
19541 /* Read an offset from the data stream.  The size of the offset is
19542    given by cu_header->offset_size.  */
19543
19544 static LONGEST
19545 read_offset (bfd *abfd, const gdb_byte *buf,
19546              const struct comp_unit_head *cu_header,
19547              unsigned int *bytes_read)
19548 {
19549   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19550
19551   *bytes_read = cu_header->offset_size;
19552   return offset;
19553 }
19554
19555 /* Read an offset from the data stream.  */
19556
19557 static LONGEST
19558 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19559 {
19560   LONGEST retval = 0;
19561
19562   switch (offset_size)
19563     {
19564     case 4:
19565       retval = bfd_get_32 (abfd, buf);
19566       break;
19567     case 8:
19568       retval = bfd_get_64 (abfd, buf);
19569       break;
19570     default:
19571       internal_error (__FILE__, __LINE__,
19572                       _("read_offset_1: bad switch [in module %s]"),
19573                       bfd_get_filename (abfd));
19574     }
19575
19576   return retval;
19577 }
19578
19579 static const gdb_byte *
19580 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19581 {
19582   /* If the size of a host char is 8 bits, we can return a pointer
19583      to the buffer, otherwise we have to copy the data to a buffer
19584      allocated on the temporary obstack.  */
19585   gdb_assert (HOST_CHAR_BIT == 8);
19586   return buf;
19587 }
19588
19589 static const char *
19590 read_direct_string (bfd *abfd, const gdb_byte *buf,
19591                     unsigned int *bytes_read_ptr)
19592 {
19593   /* If the size of a host char is 8 bits, we can return a pointer
19594      to the string, otherwise we have to copy the string to a buffer
19595      allocated on the temporary obstack.  */
19596   gdb_assert (HOST_CHAR_BIT == 8);
19597   if (*buf == '\0')
19598     {
19599       *bytes_read_ptr = 1;
19600       return NULL;
19601     }
19602   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19603   return (const char *) buf;
19604 }
19605
19606 /* Return pointer to string at section SECT offset STR_OFFSET with error
19607    reporting strings FORM_NAME and SECT_NAME.  */
19608
19609 static const char *
19610 read_indirect_string_at_offset_from (struct objfile *objfile,
19611                                      bfd *abfd, LONGEST str_offset,
19612                                      struct dwarf2_section_info *sect,
19613                                      const char *form_name,
19614                                      const char *sect_name)
19615 {
19616   dwarf2_read_section (objfile, sect);
19617   if (sect->buffer == NULL)
19618     error (_("%s used without %s section [in module %s]"),
19619            form_name, sect_name, bfd_get_filename (abfd));
19620   if (str_offset >= sect->size)
19621     error (_("%s pointing outside of %s section [in module %s]"),
19622            form_name, sect_name, bfd_get_filename (abfd));
19623   gdb_assert (HOST_CHAR_BIT == 8);
19624   if (sect->buffer[str_offset] == '\0')
19625     return NULL;
19626   return (const char *) (sect->buffer + str_offset);
19627 }
19628
19629 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19630
19631 static const char *
19632 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19633                                 bfd *abfd, LONGEST str_offset)
19634 {
19635   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19636                                               abfd, str_offset,
19637                                               &dwarf2_per_objfile->str,
19638                                               "DW_FORM_strp", ".debug_str");
19639 }
19640
19641 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19642
19643 static const char *
19644 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19645                                      bfd *abfd, LONGEST str_offset)
19646 {
19647   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19648                                               abfd, str_offset,
19649                                               &dwarf2_per_objfile->line_str,
19650                                               "DW_FORM_line_strp",
19651                                               ".debug_line_str");
19652 }
19653
19654 /* Read a string at offset STR_OFFSET in the .debug_str section from
19655    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19656    the string consists of a single NUL byte, return NULL; otherwise
19657    return a pointer to the string.  */
19658
19659 static const char *
19660 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19661                                LONGEST str_offset)
19662 {
19663   dwarf2_read_section (objfile, &dwz->str);
19664
19665   if (dwz->str.buffer == NULL)
19666     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19667              "section [in module %s]"),
19668            bfd_get_filename (dwz->dwz_bfd));
19669   if (str_offset >= dwz->str.size)
19670     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19671              ".debug_str section [in module %s]"),
19672            bfd_get_filename (dwz->dwz_bfd));
19673   gdb_assert (HOST_CHAR_BIT == 8);
19674   if (dwz->str.buffer[str_offset] == '\0')
19675     return NULL;
19676   return (const char *) (dwz->str.buffer + str_offset);
19677 }
19678
19679 /* Return pointer to string at .debug_str offset as read from BUF.
19680    BUF is assumed to be in a compilation unit described by CU_HEADER.
19681    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19682
19683 static const char *
19684 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19685                       const gdb_byte *buf,
19686                       const struct comp_unit_head *cu_header,
19687                       unsigned int *bytes_read_ptr)
19688 {
19689   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19690
19691   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19692 }
19693
19694 /* Return pointer to string at .debug_line_str offset as read from BUF.
19695    BUF is assumed to be in a compilation unit described by CU_HEADER.
19696    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19697
19698 static const char *
19699 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19700                            bfd *abfd, const gdb_byte *buf,
19701                            const struct comp_unit_head *cu_header,
19702                            unsigned int *bytes_read_ptr)
19703 {
19704   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19705
19706   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19707                                               str_offset);
19708 }
19709
19710 ULONGEST
19711 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19712                           unsigned int *bytes_read_ptr)
19713 {
19714   ULONGEST result;
19715   unsigned int num_read;
19716   int shift;
19717   unsigned char byte;
19718
19719   result = 0;
19720   shift = 0;
19721   num_read = 0;
19722   while (1)
19723     {
19724       byte = bfd_get_8 (abfd, buf);
19725       buf++;
19726       num_read++;
19727       result |= ((ULONGEST) (byte & 127) << shift);
19728       if ((byte & 128) == 0)
19729         {
19730           break;
19731         }
19732       shift += 7;
19733     }
19734   *bytes_read_ptr = num_read;
19735   return result;
19736 }
19737
19738 static LONGEST
19739 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19740                     unsigned int *bytes_read_ptr)
19741 {
19742   ULONGEST result;
19743   int shift, num_read;
19744   unsigned char byte;
19745
19746   result = 0;
19747   shift = 0;
19748   num_read = 0;
19749   while (1)
19750     {
19751       byte = bfd_get_8 (abfd, buf);
19752       buf++;
19753       num_read++;
19754       result |= ((ULONGEST) (byte & 127) << shift);
19755       shift += 7;
19756       if ((byte & 128) == 0)
19757         {
19758           break;
19759         }
19760     }
19761   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19762     result |= -(((ULONGEST) 1) << shift);
19763   *bytes_read_ptr = num_read;
19764   return result;
19765 }
19766
19767 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19768    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19769    ADDR_SIZE is the size of addresses from the CU header.  */
19770
19771 static CORE_ADDR
19772 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19773                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19774 {
19775   struct objfile *objfile = dwarf2_per_objfile->objfile;
19776   bfd *abfd = objfile->obfd;
19777   const gdb_byte *info_ptr;
19778
19779   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19780   if (dwarf2_per_objfile->addr.buffer == NULL)
19781     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19782            objfile_name (objfile));
19783   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19784     error (_("DW_FORM_addr_index pointing outside of "
19785              ".debug_addr section [in module %s]"),
19786            objfile_name (objfile));
19787   info_ptr = (dwarf2_per_objfile->addr.buffer
19788               + addr_base + addr_index * addr_size);
19789   if (addr_size == 4)
19790     return bfd_get_32 (abfd, info_ptr);
19791   else
19792     return bfd_get_64 (abfd, info_ptr);
19793 }
19794
19795 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19796
19797 static CORE_ADDR
19798 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19799 {
19800   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19801                             cu->addr_base, cu->header.addr_size);
19802 }
19803
19804 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19805
19806 static CORE_ADDR
19807 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19808                              unsigned int *bytes_read)
19809 {
19810   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19811   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19812
19813   return read_addr_index (cu, addr_index);
19814 }
19815
19816 /* Data structure to pass results from dwarf2_read_addr_index_reader
19817    back to dwarf2_read_addr_index.  */
19818
19819 struct dwarf2_read_addr_index_data
19820 {
19821   ULONGEST addr_base;
19822   int addr_size;
19823 };
19824
19825 /* die_reader_func for dwarf2_read_addr_index.  */
19826
19827 static void
19828 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19829                                const gdb_byte *info_ptr,
19830                                struct die_info *comp_unit_die,
19831                                int has_children,
19832                                void *data)
19833 {
19834   struct dwarf2_cu *cu = reader->cu;
19835   struct dwarf2_read_addr_index_data *aidata =
19836     (struct dwarf2_read_addr_index_data *) data;
19837
19838   aidata->addr_base = cu->addr_base;
19839   aidata->addr_size = cu->header.addr_size;
19840 }
19841
19842 /* Given an index in .debug_addr, fetch the value.
19843    NOTE: This can be called during dwarf expression evaluation,
19844    long after the debug information has been read, and thus per_cu->cu
19845    may no longer exist.  */
19846
19847 CORE_ADDR
19848 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19849                         unsigned int addr_index)
19850 {
19851   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19852   struct dwarf2_cu *cu = per_cu->cu;
19853   ULONGEST addr_base;
19854   int addr_size;
19855
19856   /* We need addr_base and addr_size.
19857      If we don't have PER_CU->cu, we have to get it.
19858      Nasty, but the alternative is storing the needed info in PER_CU,
19859      which at this point doesn't seem justified: it's not clear how frequently
19860      it would get used and it would increase the size of every PER_CU.
19861      Entry points like dwarf2_per_cu_addr_size do a similar thing
19862      so we're not in uncharted territory here.
19863      Alas we need to be a bit more complicated as addr_base is contained
19864      in the DIE.
19865
19866      We don't need to read the entire CU(/TU).
19867      We just need the header and top level die.
19868
19869      IWBN to use the aging mechanism to let us lazily later discard the CU.
19870      For now we skip this optimization.  */
19871
19872   if (cu != NULL)
19873     {
19874       addr_base = cu->addr_base;
19875       addr_size = cu->header.addr_size;
19876     }
19877   else
19878     {
19879       struct dwarf2_read_addr_index_data aidata;
19880
19881       /* Note: We can't use init_cutu_and_read_dies_simple here,
19882          we need addr_base.  */
19883       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19884                                dwarf2_read_addr_index_reader, &aidata);
19885       addr_base = aidata.addr_base;
19886       addr_size = aidata.addr_size;
19887     }
19888
19889   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19890                             addr_size);
19891 }
19892
19893 /* Given a DW_FORM_GNU_str_index, fetch the string.
19894    This is only used by the Fission support.  */
19895
19896 static const char *
19897 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19898 {
19899   struct dwarf2_cu *cu = reader->cu;
19900   struct dwarf2_per_objfile *dwarf2_per_objfile
19901     = cu->per_cu->dwarf2_per_objfile;
19902   struct objfile *objfile = dwarf2_per_objfile->objfile;
19903   const char *objf_name = objfile_name (objfile);
19904   bfd *abfd = objfile->obfd;
19905   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19906   struct dwarf2_section_info *str_offsets_section =
19907     &reader->dwo_file->sections.str_offsets;
19908   const gdb_byte *info_ptr;
19909   ULONGEST str_offset;
19910   static const char form_name[] = "DW_FORM_GNU_str_index";
19911
19912   dwarf2_read_section (objfile, str_section);
19913   dwarf2_read_section (objfile, str_offsets_section);
19914   if (str_section->buffer == NULL)
19915     error (_("%s used without .debug_str.dwo section"
19916              " in CU at offset %s [in module %s]"),
19917            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19918   if (str_offsets_section->buffer == NULL)
19919     error (_("%s used without .debug_str_offsets.dwo section"
19920              " in CU at offset %s [in module %s]"),
19921            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19922   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19923     error (_("%s pointing outside of .debug_str_offsets.dwo"
19924              " section in CU at offset %s [in module %s]"),
19925            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19926   info_ptr = (str_offsets_section->buffer
19927               + str_index * cu->header.offset_size);
19928   if (cu->header.offset_size == 4)
19929     str_offset = bfd_get_32 (abfd, info_ptr);
19930   else
19931     str_offset = bfd_get_64 (abfd, info_ptr);
19932   if (str_offset >= str_section->size)
19933     error (_("Offset from %s pointing outside of"
19934              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19935            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19936   return (const char *) (str_section->buffer + str_offset);
19937 }
19938
19939 /* Return the length of an LEB128 number in BUF.  */
19940
19941 static int
19942 leb128_size (const gdb_byte *buf)
19943 {
19944   const gdb_byte *begin = buf;
19945   gdb_byte byte;
19946
19947   while (1)
19948     {
19949       byte = *buf++;
19950       if ((byte & 128) == 0)
19951         return buf - begin;
19952     }
19953 }
19954
19955 static void
19956 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19957 {
19958   switch (lang)
19959     {
19960     case DW_LANG_C89:
19961     case DW_LANG_C99:
19962     case DW_LANG_C11:
19963     case DW_LANG_C:
19964     case DW_LANG_UPC:
19965       cu->language = language_c;
19966       break;
19967     case DW_LANG_Java:
19968     case DW_LANG_C_plus_plus:
19969     case DW_LANG_C_plus_plus_11:
19970     case DW_LANG_C_plus_plus_14:
19971       cu->language = language_cplus;
19972       break;
19973     case DW_LANG_D:
19974       cu->language = language_d;
19975       break;
19976     case DW_LANG_Fortran77:
19977     case DW_LANG_Fortran90:
19978     case DW_LANG_Fortran95:
19979     case DW_LANG_Fortran03:
19980     case DW_LANG_Fortran08:
19981       cu->language = language_fortran;
19982       break;
19983     case DW_LANG_Go:
19984       cu->language = language_go;
19985       break;
19986     case DW_LANG_Mips_Assembler:
19987       cu->language = language_asm;
19988       break;
19989     case DW_LANG_Ada83:
19990     case DW_LANG_Ada95:
19991       cu->language = language_ada;
19992       break;
19993     case DW_LANG_Modula2:
19994       cu->language = language_m2;
19995       break;
19996     case DW_LANG_Pascal83:
19997       cu->language = language_pascal;
19998       break;
19999     case DW_LANG_ObjC:
20000       cu->language = language_objc;
20001       break;
20002     case DW_LANG_Rust:
20003     case DW_LANG_Rust_old:
20004       cu->language = language_rust;
20005       break;
20006     case DW_LANG_Cobol74:
20007     case DW_LANG_Cobol85:
20008     default:
20009       cu->language = language_minimal;
20010       break;
20011     }
20012   cu->language_defn = language_def (cu->language);
20013 }
20014
20015 /* Return the named attribute or NULL if not there.  */
20016
20017 static struct attribute *
20018 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20019 {
20020   for (;;)
20021     {
20022       unsigned int i;
20023       struct attribute *spec = NULL;
20024
20025       for (i = 0; i < die->num_attrs; ++i)
20026         {
20027           if (die->attrs[i].name == name)
20028             return &die->attrs[i];
20029           if (die->attrs[i].name == DW_AT_specification
20030               || die->attrs[i].name == DW_AT_abstract_origin)
20031             spec = &die->attrs[i];
20032         }
20033
20034       if (!spec)
20035         break;
20036
20037       die = follow_die_ref (die, spec, &cu);
20038     }
20039
20040   return NULL;
20041 }
20042
20043 /* Return the named attribute or NULL if not there,
20044    but do not follow DW_AT_specification, etc.
20045    This is for use in contexts where we're reading .debug_types dies.
20046    Following DW_AT_specification, DW_AT_abstract_origin will take us
20047    back up the chain, and we want to go down.  */
20048
20049 static struct attribute *
20050 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20051 {
20052   unsigned int i;
20053
20054   for (i = 0; i < die->num_attrs; ++i)
20055     if (die->attrs[i].name == name)
20056       return &die->attrs[i];
20057
20058   return NULL;
20059 }
20060
20061 /* Return the string associated with a string-typed attribute, or NULL if it
20062    is either not found or is of an incorrect type.  */
20063
20064 static const char *
20065 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20066 {
20067   struct attribute *attr;
20068   const char *str = NULL;
20069
20070   attr = dwarf2_attr (die, name, cu);
20071
20072   if (attr != NULL)
20073     {
20074       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20075           || attr->form == DW_FORM_string
20076           || attr->form == DW_FORM_GNU_str_index
20077           || attr->form == DW_FORM_GNU_strp_alt)
20078         str = DW_STRING (attr);
20079       else
20080         complaint (_("string type expected for attribute %s for "
20081                      "DIE at %s in module %s"),
20082                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
20083                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20084     }
20085
20086   return str;
20087 }
20088
20089 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20090    and holds a non-zero value.  This function should only be used for
20091    DW_FORM_flag or DW_FORM_flag_present attributes.  */
20092
20093 static int
20094 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20095 {
20096   struct attribute *attr = dwarf2_attr (die, name, cu);
20097
20098   return (attr && DW_UNSND (attr));
20099 }
20100
20101 static int
20102 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20103 {
20104   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20105      which value is non-zero.  However, we have to be careful with
20106      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20107      (via dwarf2_flag_true_p) follows this attribute.  So we may
20108      end up accidently finding a declaration attribute that belongs
20109      to a different DIE referenced by the specification attribute,
20110      even though the given DIE does not have a declaration attribute.  */
20111   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20112           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20113 }
20114
20115 /* Return the die giving the specification for DIE, if there is
20116    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20117    containing the return value on output.  If there is no
20118    specification, but there is an abstract origin, that is
20119    returned.  */
20120
20121 static struct die_info *
20122 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20123 {
20124   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20125                                              *spec_cu);
20126
20127   if (spec_attr == NULL)
20128     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20129
20130   if (spec_attr == NULL)
20131     return NULL;
20132   else
20133     return follow_die_ref (die, spec_attr, spec_cu);
20134 }
20135
20136 /* Stub for free_line_header to match void * callback types.  */
20137
20138 static void
20139 free_line_header_voidp (void *arg)
20140 {
20141   struct line_header *lh = (struct line_header *) arg;
20142
20143   delete lh;
20144 }
20145
20146 void
20147 line_header::add_include_dir (const char *include_dir)
20148 {
20149   if (dwarf_line_debug >= 2)
20150     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20151                         include_dirs.size () + 1, include_dir);
20152
20153   include_dirs.push_back (include_dir);
20154 }
20155
20156 void
20157 line_header::add_file_name (const char *name,
20158                             dir_index d_index,
20159                             unsigned int mod_time,
20160                             unsigned int length)
20161 {
20162   if (dwarf_line_debug >= 2)
20163     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20164                         (unsigned) file_names.size () + 1, name);
20165
20166   file_names.emplace_back (name, d_index, mod_time, length);
20167 }
20168
20169 /* A convenience function to find the proper .debug_line section for a CU.  */
20170
20171 static struct dwarf2_section_info *
20172 get_debug_line_section (struct dwarf2_cu *cu)
20173 {
20174   struct dwarf2_section_info *section;
20175   struct dwarf2_per_objfile *dwarf2_per_objfile
20176     = cu->per_cu->dwarf2_per_objfile;
20177
20178   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20179      DWO file.  */
20180   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20181     section = &cu->dwo_unit->dwo_file->sections.line;
20182   else if (cu->per_cu->is_dwz)
20183     {
20184       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20185
20186       section = &dwz->line;
20187     }
20188   else
20189     section = &dwarf2_per_objfile->line;
20190
20191   return section;
20192 }
20193
20194 /* Read directory or file name entry format, starting with byte of
20195    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20196    entries count and the entries themselves in the described entry
20197    format.  */
20198
20199 static void
20200 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20201                         bfd *abfd, const gdb_byte **bufp,
20202                         struct line_header *lh,
20203                         const struct comp_unit_head *cu_header,
20204                         void (*callback) (struct line_header *lh,
20205                                           const char *name,
20206                                           dir_index d_index,
20207                                           unsigned int mod_time,
20208                                           unsigned int length))
20209 {
20210   gdb_byte format_count, formati;
20211   ULONGEST data_count, datai;
20212   const gdb_byte *buf = *bufp;
20213   const gdb_byte *format_header_data;
20214   unsigned int bytes_read;
20215
20216   format_count = read_1_byte (abfd, buf);
20217   buf += 1;
20218   format_header_data = buf;
20219   for (formati = 0; formati < format_count; formati++)
20220     {
20221       read_unsigned_leb128 (abfd, buf, &bytes_read);
20222       buf += bytes_read;
20223       read_unsigned_leb128 (abfd, buf, &bytes_read);
20224       buf += bytes_read;
20225     }
20226
20227   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20228   buf += bytes_read;
20229   for (datai = 0; datai < data_count; datai++)
20230     {
20231       const gdb_byte *format = format_header_data;
20232       struct file_entry fe;
20233
20234       for (formati = 0; formati < format_count; formati++)
20235         {
20236           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20237           format += bytes_read;
20238
20239           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20240           format += bytes_read;
20241
20242           gdb::optional<const char *> string;
20243           gdb::optional<unsigned int> uint;
20244
20245           switch (form)
20246             {
20247             case DW_FORM_string:
20248               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20249               buf += bytes_read;
20250               break;
20251
20252             case DW_FORM_line_strp:
20253               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20254                                                          abfd, buf,
20255                                                          cu_header,
20256                                                          &bytes_read));
20257               buf += bytes_read;
20258               break;
20259
20260             case DW_FORM_data1:
20261               uint.emplace (read_1_byte (abfd, buf));
20262               buf += 1;
20263               break;
20264
20265             case DW_FORM_data2:
20266               uint.emplace (read_2_bytes (abfd, buf));
20267               buf += 2;
20268               break;
20269
20270             case DW_FORM_data4:
20271               uint.emplace (read_4_bytes (abfd, buf));
20272               buf += 4;
20273               break;
20274
20275             case DW_FORM_data8:
20276               uint.emplace (read_8_bytes (abfd, buf));
20277               buf += 8;
20278               break;
20279
20280             case DW_FORM_udata:
20281               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20282               buf += bytes_read;
20283               break;
20284
20285             case DW_FORM_block:
20286               /* It is valid only for DW_LNCT_timestamp which is ignored by
20287                  current GDB.  */
20288               break;
20289             }
20290
20291           switch (content_type)
20292             {
20293             case DW_LNCT_path:
20294               if (string.has_value ())
20295                 fe.name = *string;
20296               break;
20297             case DW_LNCT_directory_index:
20298               if (uint.has_value ())
20299                 fe.d_index = (dir_index) *uint;
20300               break;
20301             case DW_LNCT_timestamp:
20302               if (uint.has_value ())
20303                 fe.mod_time = *uint;
20304               break;
20305             case DW_LNCT_size:
20306               if (uint.has_value ())
20307                 fe.length = *uint;
20308               break;
20309             case DW_LNCT_MD5:
20310               break;
20311             default:
20312               complaint (_("Unknown format content type %s"),
20313                          pulongest (content_type));
20314             }
20315         }
20316
20317       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20318     }
20319
20320   *bufp = buf;
20321 }
20322
20323 /* Read the statement program header starting at OFFSET in
20324    .debug_line, or .debug_line.dwo.  Return a pointer
20325    to a struct line_header, allocated using xmalloc.
20326    Returns NULL if there is a problem reading the header, e.g., if it
20327    has a version we don't understand.
20328
20329    NOTE: the strings in the include directory and file name tables of
20330    the returned object point into the dwarf line section buffer,
20331    and must not be freed.  */
20332
20333 static line_header_up
20334 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20335 {
20336   const gdb_byte *line_ptr;
20337   unsigned int bytes_read, offset_size;
20338   int i;
20339   const char *cur_dir, *cur_file;
20340   struct dwarf2_section_info *section;
20341   bfd *abfd;
20342   struct dwarf2_per_objfile *dwarf2_per_objfile
20343     = cu->per_cu->dwarf2_per_objfile;
20344
20345   section = get_debug_line_section (cu);
20346   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20347   if (section->buffer == NULL)
20348     {
20349       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20350         complaint (_("missing .debug_line.dwo section"));
20351       else
20352         complaint (_("missing .debug_line section"));
20353       return 0;
20354     }
20355
20356   /* We can't do this until we know the section is non-empty.
20357      Only then do we know we have such a section.  */
20358   abfd = get_section_bfd_owner (section);
20359
20360   /* Make sure that at least there's room for the total_length field.
20361      That could be 12 bytes long, but we're just going to fudge that.  */
20362   if (to_underlying (sect_off) + 4 >= section->size)
20363     {
20364       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20365       return 0;
20366     }
20367
20368   line_header_up lh (new line_header ());
20369
20370   lh->sect_off = sect_off;
20371   lh->offset_in_dwz = cu->per_cu->is_dwz;
20372
20373   line_ptr = section->buffer + to_underlying (sect_off);
20374
20375   /* Read in the header.  */
20376   lh->total_length =
20377     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20378                                             &bytes_read, &offset_size);
20379   line_ptr += bytes_read;
20380   if (line_ptr + lh->total_length > (section->buffer + section->size))
20381     {
20382       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20383       return 0;
20384     }
20385   lh->statement_program_end = line_ptr + lh->total_length;
20386   lh->version = read_2_bytes (abfd, line_ptr);
20387   line_ptr += 2;
20388   if (lh->version > 5)
20389     {
20390       /* This is a version we don't understand.  The format could have
20391          changed in ways we don't handle properly so just punt.  */
20392       complaint (_("unsupported version in .debug_line section"));
20393       return NULL;
20394     }
20395   if (lh->version >= 5)
20396     {
20397       gdb_byte segment_selector_size;
20398
20399       /* Skip address size.  */
20400       read_1_byte (abfd, line_ptr);
20401       line_ptr += 1;
20402
20403       segment_selector_size = read_1_byte (abfd, line_ptr);
20404       line_ptr += 1;
20405       if (segment_selector_size != 0)
20406         {
20407           complaint (_("unsupported segment selector size %u "
20408                        "in .debug_line section"),
20409                      segment_selector_size);
20410           return NULL;
20411         }
20412     }
20413   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20414   line_ptr += offset_size;
20415   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20416   line_ptr += 1;
20417   if (lh->version >= 4)
20418     {
20419       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20420       line_ptr += 1;
20421     }
20422   else
20423     lh->maximum_ops_per_instruction = 1;
20424
20425   if (lh->maximum_ops_per_instruction == 0)
20426     {
20427       lh->maximum_ops_per_instruction = 1;
20428       complaint (_("invalid maximum_ops_per_instruction "
20429                    "in `.debug_line' section"));
20430     }
20431
20432   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20433   line_ptr += 1;
20434   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20435   line_ptr += 1;
20436   lh->line_range = read_1_byte (abfd, line_ptr);
20437   line_ptr += 1;
20438   lh->opcode_base = read_1_byte (abfd, line_ptr);
20439   line_ptr += 1;
20440   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20441
20442   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20443   for (i = 1; i < lh->opcode_base; ++i)
20444     {
20445       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20446       line_ptr += 1;
20447     }
20448
20449   if (lh->version >= 5)
20450     {
20451       /* Read directory table.  */
20452       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20453                               &cu->header,
20454                               [] (struct line_header *header, const char *name,
20455                                   dir_index d_index, unsigned int mod_time,
20456                                   unsigned int length)
20457         {
20458           header->add_include_dir (name);
20459         });
20460
20461       /* Read file name table.  */
20462       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20463                               &cu->header,
20464                               [] (struct line_header *header, const char *name,
20465                                   dir_index d_index, unsigned int mod_time,
20466                                   unsigned int length)
20467         {
20468           header->add_file_name (name, d_index, mod_time, length);
20469         });
20470     }
20471   else
20472     {
20473       /* Read directory table.  */
20474       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20475         {
20476           line_ptr += bytes_read;
20477           lh->add_include_dir (cur_dir);
20478         }
20479       line_ptr += bytes_read;
20480
20481       /* Read file name table.  */
20482       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20483         {
20484           unsigned int mod_time, length;
20485           dir_index d_index;
20486
20487           line_ptr += bytes_read;
20488           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20489           line_ptr += bytes_read;
20490           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20491           line_ptr += bytes_read;
20492           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20493           line_ptr += bytes_read;
20494
20495           lh->add_file_name (cur_file, d_index, mod_time, length);
20496         }
20497       line_ptr += bytes_read;
20498     }
20499   lh->statement_program_start = line_ptr;
20500
20501   if (line_ptr > (section->buffer + section->size))
20502     complaint (_("line number info header doesn't "
20503                  "fit in `.debug_line' section"));
20504
20505   return lh;
20506 }
20507
20508 /* Subroutine of dwarf_decode_lines to simplify it.
20509    Return the file name of the psymtab for included file FILE_INDEX
20510    in line header LH of PST.
20511    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20512    If space for the result is malloc'd, *NAME_HOLDER will be set.
20513    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20514
20515 static const char *
20516 psymtab_include_file_name (const struct line_header *lh, int file_index,
20517                            const struct partial_symtab *pst,
20518                            const char *comp_dir,
20519                            gdb::unique_xmalloc_ptr<char> *name_holder)
20520 {
20521   const file_entry &fe = lh->file_names[file_index];
20522   const char *include_name = fe.name;
20523   const char *include_name_to_compare = include_name;
20524   const char *pst_filename;
20525   int file_is_pst;
20526
20527   const char *dir_name = fe.include_dir (lh);
20528
20529   gdb::unique_xmalloc_ptr<char> hold_compare;
20530   if (!IS_ABSOLUTE_PATH (include_name)
20531       && (dir_name != NULL || comp_dir != NULL))
20532     {
20533       /* Avoid creating a duplicate psymtab for PST.
20534          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20535          Before we do the comparison, however, we need to account
20536          for DIR_NAME and COMP_DIR.
20537          First prepend dir_name (if non-NULL).  If we still don't
20538          have an absolute path prepend comp_dir (if non-NULL).
20539          However, the directory we record in the include-file's
20540          psymtab does not contain COMP_DIR (to match the
20541          corresponding symtab(s)).
20542
20543          Example:
20544
20545          bash$ cd /tmp
20546          bash$ gcc -g ./hello.c
20547          include_name = "hello.c"
20548          dir_name = "."
20549          DW_AT_comp_dir = comp_dir = "/tmp"
20550          DW_AT_name = "./hello.c"
20551
20552       */
20553
20554       if (dir_name != NULL)
20555         {
20556           name_holder->reset (concat (dir_name, SLASH_STRING,
20557                                       include_name, (char *) NULL));
20558           include_name = name_holder->get ();
20559           include_name_to_compare = include_name;
20560         }
20561       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20562         {
20563           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20564                                       include_name, (char *) NULL));
20565           include_name_to_compare = hold_compare.get ();
20566         }
20567     }
20568
20569   pst_filename = pst->filename;
20570   gdb::unique_xmalloc_ptr<char> copied_name;
20571   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20572     {
20573       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20574                                  pst_filename, (char *) NULL));
20575       pst_filename = copied_name.get ();
20576     }
20577
20578   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20579
20580   if (file_is_pst)
20581     return NULL;
20582   return include_name;
20583 }
20584
20585 /* State machine to track the state of the line number program.  */
20586
20587 class lnp_state_machine
20588 {
20589 public:
20590   /* Initialize a machine state for the start of a line number
20591      program.  */
20592   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20593                      bool record_lines_p);
20594
20595   file_entry *current_file ()
20596   {
20597     /* lh->file_names is 0-based, but the file name numbers in the
20598        statement program are 1-based.  */
20599     return m_line_header->file_name_at (m_file);
20600   }
20601
20602   /* Record the line in the state machine.  END_SEQUENCE is true if
20603      we're processing the end of a sequence.  */
20604   void record_line (bool end_sequence);
20605
20606   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20607      nop-out rest of the lines in this sequence.  */
20608   void check_line_address (struct dwarf2_cu *cu,
20609                            const gdb_byte *line_ptr,
20610                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20611
20612   void handle_set_discriminator (unsigned int discriminator)
20613   {
20614     m_discriminator = discriminator;
20615     m_line_has_non_zero_discriminator |= discriminator != 0;
20616   }
20617
20618   /* Handle DW_LNE_set_address.  */
20619   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20620   {
20621     m_op_index = 0;
20622     address += baseaddr;
20623     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20624   }
20625
20626   /* Handle DW_LNS_advance_pc.  */
20627   void handle_advance_pc (CORE_ADDR adjust);
20628
20629   /* Handle a special opcode.  */
20630   void handle_special_opcode (unsigned char op_code);
20631
20632   /* Handle DW_LNS_advance_line.  */
20633   void handle_advance_line (int line_delta)
20634   {
20635     advance_line (line_delta);
20636   }
20637
20638   /* Handle DW_LNS_set_file.  */
20639   void handle_set_file (file_name_index file);
20640
20641   /* Handle DW_LNS_negate_stmt.  */
20642   void handle_negate_stmt ()
20643   {
20644     m_is_stmt = !m_is_stmt;
20645   }
20646
20647   /* Handle DW_LNS_const_add_pc.  */
20648   void handle_const_add_pc ();
20649
20650   /* Handle DW_LNS_fixed_advance_pc.  */
20651   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20652   {
20653     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20654     m_op_index = 0;
20655   }
20656
20657   /* Handle DW_LNS_copy.  */
20658   void handle_copy ()
20659   {
20660     record_line (false);
20661     m_discriminator = 0;
20662   }
20663
20664   /* Handle DW_LNE_end_sequence.  */
20665   void handle_end_sequence ()
20666   {
20667     m_currently_recording_lines = true;
20668   }
20669
20670 private:
20671   /* Advance the line by LINE_DELTA.  */
20672   void advance_line (int line_delta)
20673   {
20674     m_line += line_delta;
20675
20676     if (line_delta != 0)
20677       m_line_has_non_zero_discriminator = m_discriminator != 0;
20678   }
20679
20680   struct dwarf2_cu *m_cu;
20681
20682   gdbarch *m_gdbarch;
20683
20684   /* True if we're recording lines.
20685      Otherwise we're building partial symtabs and are just interested in
20686      finding include files mentioned by the line number program.  */
20687   bool m_record_lines_p;
20688
20689   /* The line number header.  */
20690   line_header *m_line_header;
20691
20692   /* These are part of the standard DWARF line number state machine,
20693      and initialized according to the DWARF spec.  */
20694
20695   unsigned char m_op_index = 0;
20696   /* The line table index (1-based) of the current file.  */
20697   file_name_index m_file = (file_name_index) 1;
20698   unsigned int m_line = 1;
20699
20700   /* These are initialized in the constructor.  */
20701
20702   CORE_ADDR m_address;
20703   bool m_is_stmt;
20704   unsigned int m_discriminator;
20705
20706   /* Additional bits of state we need to track.  */
20707
20708   /* The last file that we called dwarf2_start_subfile for.
20709      This is only used for TLLs.  */
20710   unsigned int m_last_file = 0;
20711   /* The last file a line number was recorded for.  */
20712   struct subfile *m_last_subfile = NULL;
20713
20714   /* When true, record the lines we decode.  */
20715   bool m_currently_recording_lines = false;
20716
20717   /* The last line number that was recorded, used to coalesce
20718      consecutive entries for the same line.  This can happen, for
20719      example, when discriminators are present.  PR 17276.  */
20720   unsigned int m_last_line = 0;
20721   bool m_line_has_non_zero_discriminator = false;
20722 };
20723
20724 void
20725 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20726 {
20727   CORE_ADDR addr_adj = (((m_op_index + adjust)
20728                          / m_line_header->maximum_ops_per_instruction)
20729                         * m_line_header->minimum_instruction_length);
20730   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20731   m_op_index = ((m_op_index + adjust)
20732                 % m_line_header->maximum_ops_per_instruction);
20733 }
20734
20735 void
20736 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20737 {
20738   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20739   CORE_ADDR addr_adj = (((m_op_index
20740                           + (adj_opcode / m_line_header->line_range))
20741                          / m_line_header->maximum_ops_per_instruction)
20742                         * m_line_header->minimum_instruction_length);
20743   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20744   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20745                 % m_line_header->maximum_ops_per_instruction);
20746
20747   int line_delta = (m_line_header->line_base
20748                     + (adj_opcode % m_line_header->line_range));
20749   advance_line (line_delta);
20750   record_line (false);
20751   m_discriminator = 0;
20752 }
20753
20754 void
20755 lnp_state_machine::handle_set_file (file_name_index file)
20756 {
20757   m_file = file;
20758
20759   const file_entry *fe = current_file ();
20760   if (fe == NULL)
20761     dwarf2_debug_line_missing_file_complaint ();
20762   else if (m_record_lines_p)
20763     {
20764       const char *dir = fe->include_dir (m_line_header);
20765
20766       m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20767       m_line_has_non_zero_discriminator = m_discriminator != 0;
20768       dwarf2_start_subfile (m_cu, fe->name, dir);
20769     }
20770 }
20771
20772 void
20773 lnp_state_machine::handle_const_add_pc ()
20774 {
20775   CORE_ADDR adjust
20776     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20777
20778   CORE_ADDR addr_adj
20779     = (((m_op_index + adjust)
20780         / m_line_header->maximum_ops_per_instruction)
20781        * m_line_header->minimum_instruction_length);
20782
20783   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20784   m_op_index = ((m_op_index + adjust)
20785                 % m_line_header->maximum_ops_per_instruction);
20786 }
20787
20788 /* Return non-zero if we should add LINE to the line number table.
20789    LINE is the line to add, LAST_LINE is the last line that was added,
20790    LAST_SUBFILE is the subfile for LAST_LINE.
20791    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20792    had a non-zero discriminator.
20793
20794    We have to be careful in the presence of discriminators.
20795    E.g., for this line:
20796
20797      for (i = 0; i < 100000; i++);
20798
20799    clang can emit four line number entries for that one line,
20800    each with a different discriminator.
20801    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20802
20803    However, we want gdb to coalesce all four entries into one.
20804    Otherwise the user could stepi into the middle of the line and
20805    gdb would get confused about whether the pc really was in the
20806    middle of the line.
20807
20808    Things are further complicated by the fact that two consecutive
20809    line number entries for the same line is a heuristic used by gcc
20810    to denote the end of the prologue.  So we can't just discard duplicate
20811    entries, we have to be selective about it.  The heuristic we use is
20812    that we only collapse consecutive entries for the same line if at least
20813    one of those entries has a non-zero discriminator.  PR 17276.
20814
20815    Note: Addresses in the line number state machine can never go backwards
20816    within one sequence, thus this coalescing is ok.  */
20817
20818 static int
20819 dwarf_record_line_p (struct dwarf2_cu *cu,
20820                      unsigned int line, unsigned int last_line,
20821                      int line_has_non_zero_discriminator,
20822                      struct subfile *last_subfile)
20823 {
20824   if (cu->get_builder ()->get_current_subfile () != last_subfile)
20825     return 1;
20826   if (line != last_line)
20827     return 1;
20828   /* Same line for the same file that we've seen already.
20829      As a last check, for pr 17276, only record the line if the line
20830      has never had a non-zero discriminator.  */
20831   if (!line_has_non_zero_discriminator)
20832     return 1;
20833   return 0;
20834 }
20835
20836 /* Use the CU's builder to record line number LINE beginning at
20837    address ADDRESS in the line table of subfile SUBFILE.  */
20838
20839 static void
20840 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20841                      unsigned int line, CORE_ADDR address,
20842                      struct dwarf2_cu *cu)
20843 {
20844   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20845
20846   if (dwarf_line_debug)
20847     {
20848       fprintf_unfiltered (gdb_stdlog,
20849                           "Recording line %u, file %s, address %s\n",
20850                           line, lbasename (subfile->name),
20851                           paddress (gdbarch, address));
20852     }
20853
20854   if (cu != nullptr)
20855     cu->get_builder ()->record_line (subfile, line, addr);
20856 }
20857
20858 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20859    Mark the end of a set of line number records.
20860    The arguments are the same as for dwarf_record_line_1.
20861    If SUBFILE is NULL the request is ignored.  */
20862
20863 static void
20864 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20865                    CORE_ADDR address, struct dwarf2_cu *cu)
20866 {
20867   if (subfile == NULL)
20868     return;
20869
20870   if (dwarf_line_debug)
20871     {
20872       fprintf_unfiltered (gdb_stdlog,
20873                           "Finishing current line, file %s, address %s\n",
20874                           lbasename (subfile->name),
20875                           paddress (gdbarch, address));
20876     }
20877
20878   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20879 }
20880
20881 void
20882 lnp_state_machine::record_line (bool end_sequence)
20883 {
20884   if (dwarf_line_debug)
20885     {
20886       fprintf_unfiltered (gdb_stdlog,
20887                           "Processing actual line %u: file %u,"
20888                           " address %s, is_stmt %u, discrim %u\n",
20889                           m_line, to_underlying (m_file),
20890                           paddress (m_gdbarch, m_address),
20891                           m_is_stmt, m_discriminator);
20892     }
20893
20894   file_entry *fe = current_file ();
20895
20896   if (fe == NULL)
20897     dwarf2_debug_line_missing_file_complaint ();
20898   /* For now we ignore lines not starting on an instruction boundary.
20899      But not when processing end_sequence for compatibility with the
20900      previous version of the code.  */
20901   else if (m_op_index == 0 || end_sequence)
20902     {
20903       fe->included_p = 1;
20904       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20905         {
20906           if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
20907               || end_sequence)
20908             {
20909               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20910                                  m_currently_recording_lines ? m_cu : nullptr);
20911             }
20912
20913           if (!end_sequence)
20914             {
20915               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20916                                        m_line_has_non_zero_discriminator,
20917                                        m_last_subfile))
20918                 {
20919                   buildsym_compunit *builder = m_cu->get_builder ();
20920                   dwarf_record_line_1 (m_gdbarch,
20921                                        builder->get_current_subfile (),
20922                                        m_line, m_address,
20923                                        m_currently_recording_lines ? m_cu : nullptr);
20924                 }
20925               m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20926               m_last_line = m_line;
20927             }
20928         }
20929     }
20930 }
20931
20932 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20933                                       line_header *lh, bool record_lines_p)
20934 {
20935   m_cu = cu;
20936   m_gdbarch = arch;
20937   m_record_lines_p = record_lines_p;
20938   m_line_header = lh;
20939
20940   m_currently_recording_lines = true;
20941
20942   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20943      was a line entry for it so that the backend has a chance to adjust it
20944      and also record it in case it needs it.  This is currently used by MIPS
20945      code, cf. `mips_adjust_dwarf2_line'.  */
20946   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20947   m_is_stmt = lh->default_is_stmt;
20948   m_discriminator = 0;
20949 }
20950
20951 void
20952 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20953                                        const gdb_byte *line_ptr,
20954                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20955 {
20956   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20957      the pc range of the CU.  However, we restrict the test to only ADDRESS
20958      values of zero to preserve GDB's previous behaviour which is to handle
20959      the specific case of a function being GC'd by the linker.  */
20960
20961   if (address == 0 && address < unrelocated_lowpc)
20962     {
20963       /* This line table is for a function which has been
20964          GCd by the linker.  Ignore it.  PR gdb/12528 */
20965
20966       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20967       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20968
20969       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20970                  line_offset, objfile_name (objfile));
20971       m_currently_recording_lines = false;
20972       /* Note: m_currently_recording_lines is left as false until we see
20973          DW_LNE_end_sequence.  */
20974     }
20975 }
20976
20977 /* Subroutine of dwarf_decode_lines to simplify it.
20978    Process the line number information in LH.
20979    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20980    program in order to set included_p for every referenced header.  */
20981
20982 static void
20983 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20984                       const int decode_for_pst_p, CORE_ADDR lowpc)
20985 {
20986   const gdb_byte *line_ptr, *extended_end;
20987   const gdb_byte *line_end;
20988   unsigned int bytes_read, extended_len;
20989   unsigned char op_code, extended_op;
20990   CORE_ADDR baseaddr;
20991   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20992   bfd *abfd = objfile->obfd;
20993   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20994   /* True if we're recording line info (as opposed to building partial
20995      symtabs and just interested in finding include files mentioned by
20996      the line number program).  */
20997   bool record_lines_p = !decode_for_pst_p;
20998
20999   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21000
21001   line_ptr = lh->statement_program_start;
21002   line_end = lh->statement_program_end;
21003
21004   /* Read the statement sequences until there's nothing left.  */
21005   while (line_ptr < line_end)
21006     {
21007       /* The DWARF line number program state machine.  Reset the state
21008          machine at the start of each sequence.  */
21009       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21010       bool end_sequence = false;
21011
21012       if (record_lines_p)
21013         {
21014           /* Start a subfile for the current file of the state
21015              machine.  */
21016           const file_entry *fe = state_machine.current_file ();
21017
21018           if (fe != NULL)
21019             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21020         }
21021
21022       /* Decode the table.  */
21023       while (line_ptr < line_end && !end_sequence)
21024         {
21025           op_code = read_1_byte (abfd, line_ptr);
21026           line_ptr += 1;
21027
21028           if (op_code >= lh->opcode_base)
21029             {
21030               /* Special opcode.  */
21031               state_machine.handle_special_opcode (op_code);
21032             }
21033           else switch (op_code)
21034             {
21035             case DW_LNS_extended_op:
21036               extended_len = read_unsigned_leb128 (abfd, line_ptr,
21037                                                    &bytes_read);
21038               line_ptr += bytes_read;
21039               extended_end = line_ptr + extended_len;
21040               extended_op = read_1_byte (abfd, line_ptr);
21041               line_ptr += 1;
21042               switch (extended_op)
21043                 {
21044                 case DW_LNE_end_sequence:
21045                   state_machine.handle_end_sequence ();
21046                   end_sequence = true;
21047                   break;
21048                 case DW_LNE_set_address:
21049                   {
21050                     CORE_ADDR address
21051                       = read_address (abfd, line_ptr, cu, &bytes_read);
21052                     line_ptr += bytes_read;
21053
21054                     state_machine.check_line_address (cu, line_ptr,
21055                                                       lowpc - baseaddr, address);
21056                     state_machine.handle_set_address (baseaddr, address);
21057                   }
21058                   break;
21059                 case DW_LNE_define_file:
21060                   {
21061                     const char *cur_file;
21062                     unsigned int mod_time, length;
21063                     dir_index dindex;
21064
21065                     cur_file = read_direct_string (abfd, line_ptr,
21066                                                    &bytes_read);
21067                     line_ptr += bytes_read;
21068                     dindex = (dir_index)
21069                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21070                     line_ptr += bytes_read;
21071                     mod_time =
21072                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21073                     line_ptr += bytes_read;
21074                     length =
21075                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21076                     line_ptr += bytes_read;
21077                     lh->add_file_name (cur_file, dindex, mod_time, length);
21078                   }
21079                   break;
21080                 case DW_LNE_set_discriminator:
21081                   {
21082                     /* The discriminator is not interesting to the
21083                        debugger; just ignore it.  We still need to
21084                        check its value though:
21085                        if there are consecutive entries for the same
21086                        (non-prologue) line we want to coalesce them.
21087                        PR 17276.  */
21088                     unsigned int discr
21089                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21090                     line_ptr += bytes_read;
21091
21092                     state_machine.handle_set_discriminator (discr);
21093                   }
21094                   break;
21095                 default:
21096                   complaint (_("mangled .debug_line section"));
21097                   return;
21098                 }
21099               /* Make sure that we parsed the extended op correctly.  If e.g.
21100                  we expected a different address size than the producer used,
21101                  we may have read the wrong number of bytes.  */
21102               if (line_ptr != extended_end)
21103                 {
21104                   complaint (_("mangled .debug_line section"));
21105                   return;
21106                 }
21107               break;
21108             case DW_LNS_copy:
21109               state_machine.handle_copy ();
21110               break;
21111             case DW_LNS_advance_pc:
21112               {
21113                 CORE_ADDR adjust
21114                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21115                 line_ptr += bytes_read;
21116
21117                 state_machine.handle_advance_pc (adjust);
21118               }
21119               break;
21120             case DW_LNS_advance_line:
21121               {
21122                 int line_delta
21123                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21124                 line_ptr += bytes_read;
21125
21126                 state_machine.handle_advance_line (line_delta);
21127               }
21128               break;
21129             case DW_LNS_set_file:
21130               {
21131                 file_name_index file
21132                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21133                                                             &bytes_read);
21134                 line_ptr += bytes_read;
21135
21136                 state_machine.handle_set_file (file);
21137               }
21138               break;
21139             case DW_LNS_set_column:
21140               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21141               line_ptr += bytes_read;
21142               break;
21143             case DW_LNS_negate_stmt:
21144               state_machine.handle_negate_stmt ();
21145               break;
21146             case DW_LNS_set_basic_block:
21147               break;
21148             /* Add to the address register of the state machine the
21149                address increment value corresponding to special opcode
21150                255.  I.e., this value is scaled by the minimum
21151                instruction length since special opcode 255 would have
21152                scaled the increment.  */
21153             case DW_LNS_const_add_pc:
21154               state_machine.handle_const_add_pc ();
21155               break;
21156             case DW_LNS_fixed_advance_pc:
21157               {
21158                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21159                 line_ptr += 2;
21160
21161                 state_machine.handle_fixed_advance_pc (addr_adj);
21162               }
21163               break;
21164             default:
21165               {
21166                 /* Unknown standard opcode, ignore it.  */
21167                 int i;
21168
21169                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21170                   {
21171                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21172                     line_ptr += bytes_read;
21173                   }
21174               }
21175             }
21176         }
21177
21178       if (!end_sequence)
21179         dwarf2_debug_line_missing_end_sequence_complaint ();
21180
21181       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21182          in which case we still finish recording the last line).  */
21183       state_machine.record_line (true);
21184     }
21185 }
21186
21187 /* Decode the Line Number Program (LNP) for the given line_header
21188    structure and CU.  The actual information extracted and the type
21189    of structures created from the LNP depends on the value of PST.
21190
21191    1. If PST is NULL, then this procedure uses the data from the program
21192       to create all necessary symbol tables, and their linetables.
21193
21194    2. If PST is not NULL, this procedure reads the program to determine
21195       the list of files included by the unit represented by PST, and
21196       builds all the associated partial symbol tables.
21197
21198    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21199    It is used for relative paths in the line table.
21200    NOTE: When processing partial symtabs (pst != NULL),
21201    comp_dir == pst->dirname.
21202
21203    NOTE: It is important that psymtabs have the same file name (via strcmp)
21204    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21205    symtab we don't use it in the name of the psymtabs we create.
21206    E.g. expand_line_sal requires this when finding psymtabs to expand.
21207    A good testcase for this is mb-inline.exp.
21208
21209    LOWPC is the lowest address in CU (or 0 if not known).
21210
21211    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21212    for its PC<->lines mapping information.  Otherwise only the filename
21213    table is read in.  */
21214
21215 static void
21216 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21217                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21218                     CORE_ADDR lowpc, int decode_mapping)
21219 {
21220   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21221   const int decode_for_pst_p = (pst != NULL);
21222
21223   if (decode_mapping)
21224     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21225
21226   if (decode_for_pst_p)
21227     {
21228       int file_index;
21229
21230       /* Now that we're done scanning the Line Header Program, we can
21231          create the psymtab of each included file.  */
21232       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21233         if (lh->file_names[file_index].included_p == 1)
21234           {
21235             gdb::unique_xmalloc_ptr<char> name_holder;
21236             const char *include_name =
21237               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21238                                          &name_holder);
21239             if (include_name != NULL)
21240               dwarf2_create_include_psymtab (include_name, pst, objfile);
21241           }
21242     }
21243   else
21244     {
21245       /* Make sure a symtab is created for every file, even files
21246          which contain only variables (i.e. no code with associated
21247          line numbers).  */
21248       buildsym_compunit *builder = cu->get_builder ();
21249       struct compunit_symtab *cust = builder->get_compunit_symtab ();
21250       int i;
21251
21252       for (i = 0; i < lh->file_names.size (); i++)
21253         {
21254           file_entry &fe = lh->file_names[i];
21255
21256           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21257
21258           if (builder->get_current_subfile ()->symtab == NULL)
21259             {
21260               builder->get_current_subfile ()->symtab
21261                 = allocate_symtab (cust,
21262                                    builder->get_current_subfile ()->name);
21263             }
21264           fe.symtab = builder->get_current_subfile ()->symtab;
21265         }
21266     }
21267 }
21268
21269 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21270    DIRNAME the name of the source directory which contains FILENAME
21271    or NULL if not known.
21272    This routine tries to keep line numbers from identical absolute and
21273    relative file names in a common subfile.
21274
21275    Using the `list' example from the GDB testsuite, which resides in
21276    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21277    of /srcdir/list0.c yields the following debugging information for list0.c:
21278
21279    DW_AT_name:          /srcdir/list0.c
21280    DW_AT_comp_dir:      /compdir
21281    files.files[0].name: list0.h
21282    files.files[0].dir:  /srcdir
21283    files.files[1].name: list0.c
21284    files.files[1].dir:  /srcdir
21285
21286    The line number information for list0.c has to end up in a single
21287    subfile, so that `break /srcdir/list0.c:1' works as expected.
21288    start_subfile will ensure that this happens provided that we pass the
21289    concatenation of files.files[1].dir and files.files[1].name as the
21290    subfile's name.  */
21291
21292 static void
21293 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21294                       const char *dirname)
21295 {
21296   char *copy = NULL;
21297
21298   /* In order not to lose the line information directory,
21299      we concatenate it to the filename when it makes sense.
21300      Note that the Dwarf3 standard says (speaking of filenames in line
21301      information): ``The directory index is ignored for file names
21302      that represent full path names''.  Thus ignoring dirname in the
21303      `else' branch below isn't an issue.  */
21304
21305   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21306     {
21307       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21308       filename = copy;
21309     }
21310
21311   cu->get_builder ()->start_subfile (filename);
21312
21313   if (copy != NULL)
21314     xfree (copy);
21315 }
21316
21317 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21318    buildsym_compunit constructor.  */
21319
21320 struct compunit_symtab *
21321 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21322                          CORE_ADDR low_pc)
21323 {
21324   gdb_assert (m_builder == nullptr);
21325
21326   m_builder.reset (new struct buildsym_compunit
21327                    (per_cu->dwarf2_per_objfile->objfile,
21328                     name, comp_dir, language, low_pc));
21329
21330   list_in_scope = get_builder ()->get_file_symbols ();
21331
21332   get_builder ()->record_debugformat ("DWARF 2");
21333   get_builder ()->record_producer (producer);
21334
21335   processing_has_namespace_info = false;
21336
21337   return get_builder ()->get_compunit_symtab ();
21338 }
21339
21340 static void
21341 var_decode_location (struct attribute *attr, struct symbol *sym,
21342                      struct dwarf2_cu *cu)
21343 {
21344   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21345   struct comp_unit_head *cu_header = &cu->header;
21346
21347   /* NOTE drow/2003-01-30: There used to be a comment and some special
21348      code here to turn a symbol with DW_AT_external and a
21349      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21350      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21351      with some versions of binutils) where shared libraries could have
21352      relocations against symbols in their debug information - the
21353      minimal symbol would have the right address, but the debug info
21354      would not.  It's no longer necessary, because we will explicitly
21355      apply relocations when we read in the debug information now.  */
21356
21357   /* A DW_AT_location attribute with no contents indicates that a
21358      variable has been optimized away.  */
21359   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21360     {
21361       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21362       return;
21363     }
21364
21365   /* Handle one degenerate form of location expression specially, to
21366      preserve GDB's previous behavior when section offsets are
21367      specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
21368      DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
21369
21370   if (attr_form_is_block (attr)
21371       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21372            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21373           || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21374                || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
21375               && (DW_BLOCK (attr)->size
21376                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21377     {
21378       unsigned int dummy;
21379
21380       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21381         SYMBOL_VALUE_ADDRESS (sym) =
21382           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21383       else
21384         SYMBOL_VALUE_ADDRESS (sym) =
21385           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21386       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21387       fixup_symbol_section (sym, objfile);
21388       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21389                                               SYMBOL_SECTION (sym));
21390       return;
21391     }
21392
21393   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21394      expression evaluator, and use LOC_COMPUTED only when necessary
21395      (i.e. when the value of a register or memory location is
21396      referenced, or a thread-local block, etc.).  Then again, it might
21397      not be worthwhile.  I'm assuming that it isn't unless performance
21398      or memory numbers show me otherwise.  */
21399
21400   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21401
21402   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21403     cu->has_loclist = true;
21404 }
21405
21406 /* Given a pointer to a DWARF information entry, figure out if we need
21407    to make a symbol table entry for it, and if so, create a new entry
21408    and return a pointer to it.
21409    If TYPE is NULL, determine symbol type from the die, otherwise
21410    used the passed type.
21411    If SPACE is not NULL, use it to hold the new symbol.  If it is
21412    NULL, allocate a new symbol on the objfile's obstack.  */
21413
21414 static struct symbol *
21415 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21416             struct symbol *space)
21417 {
21418   struct dwarf2_per_objfile *dwarf2_per_objfile
21419     = cu->per_cu->dwarf2_per_objfile;
21420   struct objfile *objfile = dwarf2_per_objfile->objfile;
21421   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21422   struct symbol *sym = NULL;
21423   const char *name;
21424   struct attribute *attr = NULL;
21425   struct attribute *attr2 = NULL;
21426   CORE_ADDR baseaddr;
21427   struct pending **list_to_add = NULL;
21428
21429   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21430
21431   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21432
21433   name = dwarf2_name (die, cu);
21434   if (name)
21435     {
21436       const char *linkagename;
21437       int suppress_add = 0;
21438
21439       if (space)
21440         sym = space;
21441       else
21442         sym = allocate_symbol (objfile);
21443       OBJSTAT (objfile, n_syms++);
21444
21445       /* Cache this symbol's name and the name's demangled form (if any).  */
21446       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21447       linkagename = dwarf2_physname (name, die, cu);
21448       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21449
21450       /* Fortran does not have mangling standard and the mangling does differ
21451          between gfortran, iFort etc.  */
21452       if (cu->language == language_fortran
21453           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21454         symbol_set_demangled_name (&(sym->ginfo),
21455                                    dwarf2_full_name (name, die, cu),
21456                                    NULL);
21457
21458       /* Default assumptions.
21459          Use the passed type or decode it from the die.  */
21460       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21461       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21462       if (type != NULL)
21463         SYMBOL_TYPE (sym) = type;
21464       else
21465         SYMBOL_TYPE (sym) = die_type (die, cu);
21466       attr = dwarf2_attr (die,
21467                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21468                           cu);
21469       if (attr)
21470         {
21471           SYMBOL_LINE (sym) = DW_UNSND (attr);
21472         }
21473
21474       attr = dwarf2_attr (die,
21475                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21476                           cu);
21477       if (attr)
21478         {
21479           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21480           struct file_entry *fe;
21481
21482           if (cu->line_header != NULL)
21483             fe = cu->line_header->file_name_at (file_index);
21484           else
21485             fe = NULL;
21486
21487           if (fe == NULL)
21488             complaint (_("file index out of range"));
21489           else
21490             symbol_set_symtab (sym, fe->symtab);
21491         }
21492
21493       switch (die->tag)
21494         {
21495         case DW_TAG_label:
21496           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21497           if (attr)
21498             {
21499               CORE_ADDR addr;
21500
21501               addr = attr_value_as_address (attr);
21502               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21503               SYMBOL_VALUE_ADDRESS (sym) = addr;
21504             }
21505           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21506           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21507           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21508           add_symbol_to_list (sym, cu->list_in_scope);
21509           break;
21510         case DW_TAG_subprogram:
21511           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21512              finish_block.  */
21513           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21514           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21515           if ((attr2 && (DW_UNSND (attr2) != 0))
21516               || cu->language == language_ada)
21517             {
21518               /* Subprograms marked external are stored as a global symbol.
21519                  Ada subprograms, whether marked external or not, are always
21520                  stored as a global symbol, because we want to be able to
21521                  access them globally.  For instance, we want to be able
21522                  to break on a nested subprogram without having to
21523                  specify the context.  */
21524               list_to_add = cu->get_builder ()->get_global_symbols ();
21525             }
21526           else
21527             {
21528               list_to_add = cu->list_in_scope;
21529             }
21530           break;
21531         case DW_TAG_inlined_subroutine:
21532           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21533              finish_block.  */
21534           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21535           SYMBOL_INLINED (sym) = 1;
21536           list_to_add = cu->list_in_scope;
21537           break;
21538         case DW_TAG_template_value_param:
21539           suppress_add = 1;
21540           /* Fall through.  */
21541         case DW_TAG_constant:
21542         case DW_TAG_variable:
21543         case DW_TAG_member:
21544           /* Compilation with minimal debug info may result in
21545              variables with missing type entries.  Change the
21546              misleading `void' type to something sensible.  */
21547           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21548             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21549
21550           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21551           /* In the case of DW_TAG_member, we should only be called for
21552              static const members.  */
21553           if (die->tag == DW_TAG_member)
21554             {
21555               /* dwarf2_add_field uses die_is_declaration,
21556                  so we do the same.  */
21557               gdb_assert (die_is_declaration (die, cu));
21558               gdb_assert (attr);
21559             }
21560           if (attr)
21561             {
21562               dwarf2_const_value (attr, sym, cu);
21563               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21564               if (!suppress_add)
21565                 {
21566                   if (attr2 && (DW_UNSND (attr2) != 0))
21567                     list_to_add = cu->get_builder ()->get_global_symbols ();
21568                   else
21569                     list_to_add = cu->list_in_scope;
21570                 }
21571               break;
21572             }
21573           attr = dwarf2_attr (die, DW_AT_location, cu);
21574           if (attr)
21575             {
21576               var_decode_location (attr, sym, cu);
21577               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21578
21579               /* Fortran explicitly imports any global symbols to the local
21580                  scope by DW_TAG_common_block.  */
21581               if (cu->language == language_fortran && die->parent
21582                   && die->parent->tag == DW_TAG_common_block)
21583                 attr2 = NULL;
21584
21585               if (SYMBOL_CLASS (sym) == LOC_STATIC
21586                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21587                   && !dwarf2_per_objfile->has_section_at_zero)
21588                 {
21589                   /* When a static variable is eliminated by the linker,
21590                      the corresponding debug information is not stripped
21591                      out, but the variable address is set to null;
21592                      do not add such variables into symbol table.  */
21593                 }
21594               else if (attr2 && (DW_UNSND (attr2) != 0))
21595                 {
21596                   /* Workaround gfortran PR debug/40040 - it uses
21597                      DW_AT_location for variables in -fPIC libraries which may
21598                      get overriden by other libraries/executable and get
21599                      a different address.  Resolve it by the minimal symbol
21600                      which may come from inferior's executable using copy
21601                      relocation.  Make this workaround only for gfortran as for
21602                      other compilers GDB cannot guess the minimal symbol
21603                      Fortran mangling kind.  */
21604                   if (cu->language == language_fortran && die->parent
21605                       && die->parent->tag == DW_TAG_module
21606                       && cu->producer
21607                       && startswith (cu->producer, "GNU Fortran"))
21608                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21609
21610                   /* A variable with DW_AT_external is never static,
21611                      but it may be block-scoped.  */
21612                   list_to_add
21613                     = ((cu->list_in_scope
21614                         == cu->get_builder ()->get_file_symbols ())
21615                        ? cu->get_builder ()->get_global_symbols ()
21616                        : cu->list_in_scope);
21617                 }
21618               else
21619                 list_to_add = cu->list_in_scope;
21620             }
21621           else
21622             {
21623               /* We do not know the address of this symbol.
21624                  If it is an external symbol and we have type information
21625                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21626                  The address of the variable will then be determined from
21627                  the minimal symbol table whenever the variable is
21628                  referenced.  */
21629               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21630
21631               /* Fortran explicitly imports any global symbols to the local
21632                  scope by DW_TAG_common_block.  */
21633               if (cu->language == language_fortran && die->parent
21634                   && die->parent->tag == DW_TAG_common_block)
21635                 {
21636                   /* SYMBOL_CLASS doesn't matter here because
21637                      read_common_block is going to reset it.  */
21638                   if (!suppress_add)
21639                     list_to_add = cu->list_in_scope;
21640                 }
21641               else if (attr2 && (DW_UNSND (attr2) != 0)
21642                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21643                 {
21644                   /* A variable with DW_AT_external is never static, but it
21645                      may be block-scoped.  */
21646                   list_to_add
21647                     = ((cu->list_in_scope
21648                         == cu->get_builder ()->get_file_symbols ())
21649                        ? cu->get_builder ()->get_global_symbols ()
21650                        : cu->list_in_scope);
21651
21652                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21653                 }
21654               else if (!die_is_declaration (die, cu))
21655                 {
21656                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21657                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21658                   if (!suppress_add)
21659                     list_to_add = cu->list_in_scope;
21660                 }
21661             }
21662           break;
21663         case DW_TAG_formal_parameter:
21664           {
21665             /* If we are inside a function, mark this as an argument.  If
21666                not, we might be looking at an argument to an inlined function
21667                when we do not have enough information to show inlined frames;
21668                pretend it's a local variable in that case so that the user can
21669                still see it.  */
21670             struct context_stack *curr
21671               = cu->get_builder ()->get_current_context_stack ();
21672             if (curr != nullptr && curr->name != nullptr)
21673               SYMBOL_IS_ARGUMENT (sym) = 1;
21674             attr = dwarf2_attr (die, DW_AT_location, cu);
21675             if (attr)
21676               {
21677                 var_decode_location (attr, sym, cu);
21678               }
21679             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21680             if (attr)
21681               {
21682                 dwarf2_const_value (attr, sym, cu);
21683               }
21684
21685             list_to_add = cu->list_in_scope;
21686           }
21687           break;
21688         case DW_TAG_unspecified_parameters:
21689           /* From varargs functions; gdb doesn't seem to have any
21690              interest in this information, so just ignore it for now.
21691              (FIXME?) */
21692           break;
21693         case DW_TAG_template_type_param:
21694           suppress_add = 1;
21695           /* Fall through.  */
21696         case DW_TAG_class_type:
21697         case DW_TAG_interface_type:
21698         case DW_TAG_structure_type:
21699         case DW_TAG_union_type:
21700         case DW_TAG_set_type:
21701         case DW_TAG_enumeration_type:
21702           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21703           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21704
21705           {
21706             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21707                really ever be static objects: otherwise, if you try
21708                to, say, break of a class's method and you're in a file
21709                which doesn't mention that class, it won't work unless
21710                the check for all static symbols in lookup_symbol_aux
21711                saves you.  See the OtherFileClass tests in
21712                gdb.c++/namespace.exp.  */
21713
21714             if (!suppress_add)
21715               {
21716                 buildsym_compunit *builder = cu->get_builder ();
21717                 list_to_add
21718                   = (cu->list_in_scope == builder->get_file_symbols ()
21719                      && cu->language == language_cplus
21720                      ? builder->get_global_symbols ()
21721                      : cu->list_in_scope);
21722
21723                 /* The semantics of C++ state that "struct foo {
21724                    ... }" also defines a typedef for "foo".  */
21725                 if (cu->language == language_cplus
21726                     || cu->language == language_ada
21727                     || cu->language == language_d
21728                     || cu->language == language_rust)
21729                   {
21730                     /* The symbol's name is already allocated along
21731                        with this objfile, so we don't need to
21732                        duplicate it for the type.  */
21733                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21734                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21735                   }
21736               }
21737           }
21738           break;
21739         case DW_TAG_typedef:
21740           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21741           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21742           list_to_add = cu->list_in_scope;
21743           break;
21744         case DW_TAG_base_type:
21745         case DW_TAG_subrange_type:
21746           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21747           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21748           list_to_add = cu->list_in_scope;
21749           break;
21750         case DW_TAG_enumerator:
21751           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21752           if (attr)
21753             {
21754               dwarf2_const_value (attr, sym, cu);
21755             }
21756           {
21757             /* NOTE: carlton/2003-11-10: See comment above in the
21758                DW_TAG_class_type, etc. block.  */
21759
21760             list_to_add
21761               = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21762                  && cu->language == language_cplus
21763                  ? cu->get_builder ()->get_global_symbols ()
21764                  : cu->list_in_scope);
21765           }
21766           break;
21767         case DW_TAG_imported_declaration:
21768         case DW_TAG_namespace:
21769           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21770           list_to_add = cu->get_builder ()->get_global_symbols ();
21771           break;
21772         case DW_TAG_module:
21773           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21774           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21775           list_to_add = cu->get_builder ()->get_global_symbols ();
21776           break;
21777         case DW_TAG_common_block:
21778           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21779           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21780           add_symbol_to_list (sym, cu->list_in_scope);
21781           break;
21782         default:
21783           /* Not a tag we recognize.  Hopefully we aren't processing
21784              trash data, but since we must specifically ignore things
21785              we don't recognize, there is nothing else we should do at
21786              this point.  */
21787           complaint (_("unsupported tag: '%s'"),
21788                      dwarf_tag_name (die->tag));
21789           break;
21790         }
21791
21792       if (suppress_add)
21793         {
21794           sym->hash_next = objfile->template_symbols;
21795           objfile->template_symbols = sym;
21796           list_to_add = NULL;
21797         }
21798
21799       if (list_to_add != NULL)
21800         add_symbol_to_list (sym, list_to_add);
21801
21802       /* For the benefit of old versions of GCC, check for anonymous
21803          namespaces based on the demangled name.  */
21804       if (!cu->processing_has_namespace_info
21805           && cu->language == language_cplus)
21806         cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21807     }
21808   return (sym);
21809 }
21810
21811 /* Given an attr with a DW_FORM_dataN value in host byte order,
21812    zero-extend it as appropriate for the symbol's type.  The DWARF
21813    standard (v4) is not entirely clear about the meaning of using
21814    DW_FORM_dataN for a constant with a signed type, where the type is
21815    wider than the data.  The conclusion of a discussion on the DWARF
21816    list was that this is unspecified.  We choose to always zero-extend
21817    because that is the interpretation long in use by GCC.  */
21818
21819 static gdb_byte *
21820 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21821                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21822 {
21823   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21824   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21825                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21826   LONGEST l = DW_UNSND (attr);
21827
21828   if (bits < sizeof (*value) * 8)
21829     {
21830       l &= ((LONGEST) 1 << bits) - 1;
21831       *value = l;
21832     }
21833   else if (bits == sizeof (*value) * 8)
21834     *value = l;
21835   else
21836     {
21837       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21838       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21839       return bytes;
21840     }
21841
21842   return NULL;
21843 }
21844
21845 /* Read a constant value from an attribute.  Either set *VALUE, or if
21846    the value does not fit in *VALUE, set *BYTES - either already
21847    allocated on the objfile obstack, or newly allocated on OBSTACK,
21848    or, set *BATON, if we translated the constant to a location
21849    expression.  */
21850
21851 static void
21852 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21853                          const char *name, struct obstack *obstack,
21854                          struct dwarf2_cu *cu,
21855                          LONGEST *value, const gdb_byte **bytes,
21856                          struct dwarf2_locexpr_baton **baton)
21857 {
21858   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21859   struct comp_unit_head *cu_header = &cu->header;
21860   struct dwarf_block *blk;
21861   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21862                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21863
21864   *value = 0;
21865   *bytes = NULL;
21866   *baton = NULL;
21867
21868   switch (attr->form)
21869     {
21870     case DW_FORM_addr:
21871     case DW_FORM_addrx:
21872     case DW_FORM_GNU_addr_index:
21873       {
21874         gdb_byte *data;
21875
21876         if (TYPE_LENGTH (type) != cu_header->addr_size)
21877           dwarf2_const_value_length_mismatch_complaint (name,
21878                                                         cu_header->addr_size,
21879                                                         TYPE_LENGTH (type));
21880         /* Symbols of this form are reasonably rare, so we just
21881            piggyback on the existing location code rather than writing
21882            a new implementation of symbol_computed_ops.  */
21883         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21884         (*baton)->per_cu = cu->per_cu;
21885         gdb_assert ((*baton)->per_cu);
21886
21887         (*baton)->size = 2 + cu_header->addr_size;
21888         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21889         (*baton)->data = data;
21890
21891         data[0] = DW_OP_addr;
21892         store_unsigned_integer (&data[1], cu_header->addr_size,
21893                                 byte_order, DW_ADDR (attr));
21894         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21895       }
21896       break;
21897     case DW_FORM_string:
21898     case DW_FORM_strp:
21899     case DW_FORM_GNU_str_index:
21900     case DW_FORM_GNU_strp_alt:
21901       /* DW_STRING is already allocated on the objfile obstack, point
21902          directly to it.  */
21903       *bytes = (const gdb_byte *) DW_STRING (attr);
21904       break;
21905     case DW_FORM_block1:
21906     case DW_FORM_block2:
21907     case DW_FORM_block4:
21908     case DW_FORM_block:
21909     case DW_FORM_exprloc:
21910     case DW_FORM_data16:
21911       blk = DW_BLOCK (attr);
21912       if (TYPE_LENGTH (type) != blk->size)
21913         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21914                                                       TYPE_LENGTH (type));
21915       *bytes = blk->data;
21916       break;
21917
21918       /* The DW_AT_const_value attributes are supposed to carry the
21919          symbol's value "represented as it would be on the target
21920          architecture."  By the time we get here, it's already been
21921          converted to host endianness, so we just need to sign- or
21922          zero-extend it as appropriate.  */
21923     case DW_FORM_data1:
21924       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21925       break;
21926     case DW_FORM_data2:
21927       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21928       break;
21929     case DW_FORM_data4:
21930       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21931       break;
21932     case DW_FORM_data8:
21933       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21934       break;
21935
21936     case DW_FORM_sdata:
21937     case DW_FORM_implicit_const:
21938       *value = DW_SND (attr);
21939       break;
21940
21941     case DW_FORM_udata:
21942       *value = DW_UNSND (attr);
21943       break;
21944
21945     default:
21946       complaint (_("unsupported const value attribute form: '%s'"),
21947                  dwarf_form_name (attr->form));
21948       *value = 0;
21949       break;
21950     }
21951 }
21952
21953
21954 /* Copy constant value from an attribute to a symbol.  */
21955
21956 static void
21957 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21958                     struct dwarf2_cu *cu)
21959 {
21960   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21961   LONGEST value;
21962   const gdb_byte *bytes;
21963   struct dwarf2_locexpr_baton *baton;
21964
21965   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21966                            SYMBOL_PRINT_NAME (sym),
21967                            &objfile->objfile_obstack, cu,
21968                            &value, &bytes, &baton);
21969
21970   if (baton != NULL)
21971     {
21972       SYMBOL_LOCATION_BATON (sym) = baton;
21973       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21974     }
21975   else if (bytes != NULL)
21976      {
21977       SYMBOL_VALUE_BYTES (sym) = bytes;
21978       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21979     }
21980   else
21981     {
21982       SYMBOL_VALUE (sym) = value;
21983       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21984     }
21985 }
21986
21987 /* Return the type of the die in question using its DW_AT_type attribute.  */
21988
21989 static struct type *
21990 die_type (struct die_info *die, struct dwarf2_cu *cu)
21991 {
21992   struct attribute *type_attr;
21993
21994   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21995   if (!type_attr)
21996     {
21997       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21998       /* A missing DW_AT_type represents a void type.  */
21999       return objfile_type (objfile)->builtin_void;
22000     }
22001
22002   return lookup_die_type (die, type_attr, cu);
22003 }
22004
22005 /* True iff CU's producer generates GNAT Ada auxiliary information
22006    that allows to find parallel types through that information instead
22007    of having to do expensive parallel lookups by type name.  */
22008
22009 static int
22010 need_gnat_info (struct dwarf2_cu *cu)
22011 {
22012   /* Assume that the Ada compiler was GNAT, which always produces
22013      the auxiliary information.  */
22014   return (cu->language == language_ada);
22015 }
22016
22017 /* Return the auxiliary type of the die in question using its
22018    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
22019    attribute is not present.  */
22020
22021 static struct type *
22022 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22023 {
22024   struct attribute *type_attr;
22025
22026   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22027   if (!type_attr)
22028     return NULL;
22029
22030   return lookup_die_type (die, type_attr, cu);
22031 }
22032
22033 /* If DIE has a descriptive_type attribute, then set the TYPE's
22034    descriptive type accordingly.  */
22035
22036 static void
22037 set_descriptive_type (struct type *type, struct die_info *die,
22038                       struct dwarf2_cu *cu)
22039 {
22040   struct type *descriptive_type = die_descriptive_type (die, cu);
22041
22042   if (descriptive_type)
22043     {
22044       ALLOCATE_GNAT_AUX_TYPE (type);
22045       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22046     }
22047 }
22048
22049 /* Return the containing type of the die in question using its
22050    DW_AT_containing_type attribute.  */
22051
22052 static struct type *
22053 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22054 {
22055   struct attribute *type_attr;
22056   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22057
22058   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22059   if (!type_attr)
22060     error (_("Dwarf Error: Problem turning containing type into gdb type "
22061              "[in module %s]"), objfile_name (objfile));
22062
22063   return lookup_die_type (die, type_attr, cu);
22064 }
22065
22066 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
22067
22068 static struct type *
22069 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22070 {
22071   struct dwarf2_per_objfile *dwarf2_per_objfile
22072     = cu->per_cu->dwarf2_per_objfile;
22073   struct objfile *objfile = dwarf2_per_objfile->objfile;
22074   char *saved;
22075
22076   std::string message
22077     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22078                      objfile_name (objfile),
22079                      sect_offset_str (cu->header.sect_off),
22080                      sect_offset_str (die->sect_off));
22081   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22082                                   message.c_str (), message.length ());
22083
22084   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22085 }
22086
22087 /* Look up the type of DIE in CU using its type attribute ATTR.
22088    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22089    DW_AT_containing_type.
22090    If there is no type substitute an error marker.  */
22091
22092 static struct type *
22093 lookup_die_type (struct die_info *die, const struct attribute *attr,
22094                  struct dwarf2_cu *cu)
22095 {
22096   struct dwarf2_per_objfile *dwarf2_per_objfile
22097     = cu->per_cu->dwarf2_per_objfile;
22098   struct objfile *objfile = dwarf2_per_objfile->objfile;
22099   struct type *this_type;
22100
22101   gdb_assert (attr->name == DW_AT_type
22102               || attr->name == DW_AT_GNAT_descriptive_type
22103               || attr->name == DW_AT_containing_type);
22104
22105   /* First see if we have it cached.  */
22106
22107   if (attr->form == DW_FORM_GNU_ref_alt)
22108     {
22109       struct dwarf2_per_cu_data *per_cu;
22110       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22111
22112       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22113                                                  dwarf2_per_objfile);
22114       this_type = get_die_type_at_offset (sect_off, per_cu);
22115     }
22116   else if (attr_form_is_ref (attr))
22117     {
22118       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22119
22120       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22121     }
22122   else if (attr->form == DW_FORM_ref_sig8)
22123     {
22124       ULONGEST signature = DW_SIGNATURE (attr);
22125
22126       return get_signatured_type (die, signature, cu);
22127     }
22128   else
22129     {
22130       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22131                    " at %s [in module %s]"),
22132                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22133                  objfile_name (objfile));
22134       return build_error_marker_type (cu, die);
22135     }
22136
22137   /* If not cached we need to read it in.  */
22138
22139   if (this_type == NULL)
22140     {
22141       struct die_info *type_die = NULL;
22142       struct dwarf2_cu *type_cu = cu;
22143
22144       if (attr_form_is_ref (attr))
22145         type_die = follow_die_ref (die, attr, &type_cu);
22146       if (type_die == NULL)
22147         return build_error_marker_type (cu, die);
22148       /* If we find the type now, it's probably because the type came
22149          from an inter-CU reference and the type's CU got expanded before
22150          ours.  */
22151       this_type = read_type_die (type_die, type_cu);
22152     }
22153
22154   /* If we still don't have a type use an error marker.  */
22155
22156   if (this_type == NULL)
22157     return build_error_marker_type (cu, die);
22158
22159   return this_type;
22160 }
22161
22162 /* Return the type in DIE, CU.
22163    Returns NULL for invalid types.
22164
22165    This first does a lookup in die_type_hash,
22166    and only reads the die in if necessary.
22167
22168    NOTE: This can be called when reading in partial or full symbols.  */
22169
22170 static struct type *
22171 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22172 {
22173   struct type *this_type;
22174
22175   this_type = get_die_type (die, cu);
22176   if (this_type)
22177     return this_type;
22178
22179   return read_type_die_1 (die, cu);
22180 }
22181
22182 /* Read the type in DIE, CU.
22183    Returns NULL for invalid types.  */
22184
22185 static struct type *
22186 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22187 {
22188   struct type *this_type = NULL;
22189
22190   switch (die->tag)
22191     {
22192     case DW_TAG_class_type:
22193     case DW_TAG_interface_type:
22194     case DW_TAG_structure_type:
22195     case DW_TAG_union_type:
22196       this_type = read_structure_type (die, cu);
22197       break;
22198     case DW_TAG_enumeration_type:
22199       this_type = read_enumeration_type (die, cu);
22200       break;
22201     case DW_TAG_subprogram:
22202     case DW_TAG_subroutine_type:
22203     case DW_TAG_inlined_subroutine:
22204       this_type = read_subroutine_type (die, cu);
22205       break;
22206     case DW_TAG_array_type:
22207       this_type = read_array_type (die, cu);
22208       break;
22209     case DW_TAG_set_type:
22210       this_type = read_set_type (die, cu);
22211       break;
22212     case DW_TAG_pointer_type:
22213       this_type = read_tag_pointer_type (die, cu);
22214       break;
22215     case DW_TAG_ptr_to_member_type:
22216       this_type = read_tag_ptr_to_member_type (die, cu);
22217       break;
22218     case DW_TAG_reference_type:
22219       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22220       break;
22221     case DW_TAG_rvalue_reference_type:
22222       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22223       break;
22224     case DW_TAG_const_type:
22225       this_type = read_tag_const_type (die, cu);
22226       break;
22227     case DW_TAG_volatile_type:
22228       this_type = read_tag_volatile_type (die, cu);
22229       break;
22230     case DW_TAG_restrict_type:
22231       this_type = read_tag_restrict_type (die, cu);
22232       break;
22233     case DW_TAG_string_type:
22234       this_type = read_tag_string_type (die, cu);
22235       break;
22236     case DW_TAG_typedef:
22237       this_type = read_typedef (die, cu);
22238       break;
22239     case DW_TAG_subrange_type:
22240       this_type = read_subrange_type (die, cu);
22241       break;
22242     case DW_TAG_base_type:
22243       this_type = read_base_type (die, cu);
22244       break;
22245     case DW_TAG_unspecified_type:
22246       this_type = read_unspecified_type (die, cu);
22247       break;
22248     case DW_TAG_namespace:
22249       this_type = read_namespace_type (die, cu);
22250       break;
22251     case DW_TAG_module:
22252       this_type = read_module_type (die, cu);
22253       break;
22254     case DW_TAG_atomic_type:
22255       this_type = read_tag_atomic_type (die, cu);
22256       break;
22257     default:
22258       complaint (_("unexpected tag in read_type_die: '%s'"),
22259                  dwarf_tag_name (die->tag));
22260       break;
22261     }
22262
22263   return this_type;
22264 }
22265
22266 /* See if we can figure out if the class lives in a namespace.  We do
22267    this by looking for a member function; its demangled name will
22268    contain namespace info, if there is any.
22269    Return the computed name or NULL.
22270    Space for the result is allocated on the objfile's obstack.
22271    This is the full-die version of guess_partial_die_structure_name.
22272    In this case we know DIE has no useful parent.  */
22273
22274 static char *
22275 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22276 {
22277   struct die_info *spec_die;
22278   struct dwarf2_cu *spec_cu;
22279   struct die_info *child;
22280   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22281
22282   spec_cu = cu;
22283   spec_die = die_specification (die, &spec_cu);
22284   if (spec_die != NULL)
22285     {
22286       die = spec_die;
22287       cu = spec_cu;
22288     }
22289
22290   for (child = die->child;
22291        child != NULL;
22292        child = child->sibling)
22293     {
22294       if (child->tag == DW_TAG_subprogram)
22295         {
22296           const char *linkage_name = dw2_linkage_name (child, cu);
22297
22298           if (linkage_name != NULL)
22299             {
22300               char *actual_name
22301                 = language_class_name_from_physname (cu->language_defn,
22302                                                      linkage_name);
22303               char *name = NULL;
22304
22305               if (actual_name != NULL)
22306                 {
22307                   const char *die_name = dwarf2_name (die, cu);
22308
22309                   if (die_name != NULL
22310                       && strcmp (die_name, actual_name) != 0)
22311                     {
22312                       /* Strip off the class name from the full name.
22313                          We want the prefix.  */
22314                       int die_name_len = strlen (die_name);
22315                       int actual_name_len = strlen (actual_name);
22316
22317                       /* Test for '::' as a sanity check.  */
22318                       if (actual_name_len > die_name_len + 2
22319                           && actual_name[actual_name_len
22320                                          - die_name_len - 1] == ':')
22321                         name = (char *) obstack_copy0 (
22322                           &objfile->per_bfd->storage_obstack,
22323                           actual_name, actual_name_len - die_name_len - 2);
22324                     }
22325                 }
22326               xfree (actual_name);
22327               return name;
22328             }
22329         }
22330     }
22331
22332   return NULL;
22333 }
22334
22335 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22336    prefix part in such case.  See
22337    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22338
22339 static const char *
22340 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22341 {
22342   struct attribute *attr;
22343   const char *base;
22344
22345   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22346       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22347     return NULL;
22348
22349   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22350     return NULL;
22351
22352   attr = dw2_linkage_name_attr (die, cu);
22353   if (attr == NULL || DW_STRING (attr) == NULL)
22354     return NULL;
22355
22356   /* dwarf2_name had to be already called.  */
22357   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22358
22359   /* Strip the base name, keep any leading namespaces/classes.  */
22360   base = strrchr (DW_STRING (attr), ':');
22361   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22362     return "";
22363
22364   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22365   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22366                                  DW_STRING (attr),
22367                                  &base[-1] - DW_STRING (attr));
22368 }
22369
22370 /* Return the name of the namespace/class that DIE is defined within,
22371    or "" if we can't tell.  The caller should not xfree the result.
22372
22373    For example, if we're within the method foo() in the following
22374    code:
22375
22376    namespace N {
22377      class C {
22378        void foo () {
22379        }
22380      };
22381    }
22382
22383    then determine_prefix on foo's die will return "N::C".  */
22384
22385 static const char *
22386 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22387 {
22388   struct dwarf2_per_objfile *dwarf2_per_objfile
22389     = cu->per_cu->dwarf2_per_objfile;
22390   struct die_info *parent, *spec_die;
22391   struct dwarf2_cu *spec_cu;
22392   struct type *parent_type;
22393   const char *retval;
22394
22395   if (cu->language != language_cplus
22396       && cu->language != language_fortran && cu->language != language_d
22397       && cu->language != language_rust)
22398     return "";
22399
22400   retval = anonymous_struct_prefix (die, cu);
22401   if (retval)
22402     return retval;
22403
22404   /* We have to be careful in the presence of DW_AT_specification.
22405      For example, with GCC 3.4, given the code
22406
22407      namespace N {
22408        void foo() {
22409          // Definition of N::foo.
22410        }
22411      }
22412
22413      then we'll have a tree of DIEs like this:
22414
22415      1: DW_TAG_compile_unit
22416        2: DW_TAG_namespace        // N
22417          3: DW_TAG_subprogram     // declaration of N::foo
22418        4: DW_TAG_subprogram       // definition of N::foo
22419             DW_AT_specification   // refers to die #3
22420
22421      Thus, when processing die #4, we have to pretend that we're in
22422      the context of its DW_AT_specification, namely the contex of die
22423      #3.  */
22424   spec_cu = cu;
22425   spec_die = die_specification (die, &spec_cu);
22426   if (spec_die == NULL)
22427     parent = die->parent;
22428   else
22429     {
22430       parent = spec_die->parent;
22431       cu = spec_cu;
22432     }
22433
22434   if (parent == NULL)
22435     return "";
22436   else if (parent->building_fullname)
22437     {
22438       const char *name;
22439       const char *parent_name;
22440
22441       /* It has been seen on RealView 2.2 built binaries,
22442          DW_TAG_template_type_param types actually _defined_ as
22443          children of the parent class:
22444
22445          enum E {};
22446          template class <class Enum> Class{};
22447          Class<enum E> class_e;
22448
22449          1: DW_TAG_class_type (Class)
22450            2: DW_TAG_enumeration_type (E)
22451              3: DW_TAG_enumerator (enum1:0)
22452              3: DW_TAG_enumerator (enum2:1)
22453              ...
22454            2: DW_TAG_template_type_param
22455               DW_AT_type  DW_FORM_ref_udata (E)
22456
22457          Besides being broken debug info, it can put GDB into an
22458          infinite loop.  Consider:
22459
22460          When we're building the full name for Class<E>, we'll start
22461          at Class, and go look over its template type parameters,
22462          finding E.  We'll then try to build the full name of E, and
22463          reach here.  We're now trying to build the full name of E,
22464          and look over the parent DIE for containing scope.  In the
22465          broken case, if we followed the parent DIE of E, we'd again
22466          find Class, and once again go look at its template type
22467          arguments, etc., etc.  Simply don't consider such parent die
22468          as source-level parent of this die (it can't be, the language
22469          doesn't allow it), and break the loop here.  */
22470       name = dwarf2_name (die, cu);
22471       parent_name = dwarf2_name (parent, cu);
22472       complaint (_("template param type '%s' defined within parent '%s'"),
22473                  name ? name : "<unknown>",
22474                  parent_name ? parent_name : "<unknown>");
22475       return "";
22476     }
22477   else
22478     switch (parent->tag)
22479       {
22480       case DW_TAG_namespace:
22481         parent_type = read_type_die (parent, cu);
22482         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22483            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22484            Work around this problem here.  */
22485         if (cu->language == language_cplus
22486             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22487           return "";
22488         /* We give a name to even anonymous namespaces.  */
22489         return TYPE_NAME (parent_type);
22490       case DW_TAG_class_type:
22491       case DW_TAG_interface_type:
22492       case DW_TAG_structure_type:
22493       case DW_TAG_union_type:
22494       case DW_TAG_module:
22495         parent_type = read_type_die (parent, cu);
22496         if (TYPE_NAME (parent_type) != NULL)
22497           return TYPE_NAME (parent_type);
22498         else
22499           /* An anonymous structure is only allowed non-static data
22500              members; no typedefs, no member functions, et cetera.
22501              So it does not need a prefix.  */
22502           return "";
22503       case DW_TAG_compile_unit:
22504       case DW_TAG_partial_unit:
22505         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22506         if (cu->language == language_cplus
22507             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22508             && die->child != NULL
22509             && (die->tag == DW_TAG_class_type
22510                 || die->tag == DW_TAG_structure_type
22511                 || die->tag == DW_TAG_union_type))
22512           {
22513             char *name = guess_full_die_structure_name (die, cu);
22514             if (name != NULL)
22515               return name;
22516           }
22517         return "";
22518       case DW_TAG_enumeration_type:
22519         parent_type = read_type_die (parent, cu);
22520         if (TYPE_DECLARED_CLASS (parent_type))
22521           {
22522             if (TYPE_NAME (parent_type) != NULL)
22523               return TYPE_NAME (parent_type);
22524             return "";
22525           }
22526         /* Fall through.  */
22527       default:
22528         return determine_prefix (parent, cu);
22529       }
22530 }
22531
22532 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22533    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22534    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22535    an obconcat, otherwise allocate storage for the result.  The CU argument is
22536    used to determine the language and hence, the appropriate separator.  */
22537
22538 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22539
22540 static char *
22541 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22542                  int physname, struct dwarf2_cu *cu)
22543 {
22544   const char *lead = "";
22545   const char *sep;
22546
22547   if (suffix == NULL || suffix[0] == '\0'
22548       || prefix == NULL || prefix[0] == '\0')
22549     sep = "";
22550   else if (cu->language == language_d)
22551     {
22552       /* For D, the 'main' function could be defined in any module, but it
22553          should never be prefixed.  */
22554       if (strcmp (suffix, "D main") == 0)
22555         {
22556           prefix = "";
22557           sep = "";
22558         }
22559       else
22560         sep = ".";
22561     }
22562   else if (cu->language == language_fortran && physname)
22563     {
22564       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22565          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22566
22567       lead = "__";
22568       sep = "_MOD_";
22569     }
22570   else
22571     sep = "::";
22572
22573   if (prefix == NULL)
22574     prefix = "";
22575   if (suffix == NULL)
22576     suffix = "";
22577
22578   if (obs == NULL)
22579     {
22580       char *retval
22581         = ((char *)
22582            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22583
22584       strcpy (retval, lead);
22585       strcat (retval, prefix);
22586       strcat (retval, sep);
22587       strcat (retval, suffix);
22588       return retval;
22589     }
22590   else
22591     {
22592       /* We have an obstack.  */
22593       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22594     }
22595 }
22596
22597 /* Return sibling of die, NULL if no sibling.  */
22598
22599 static struct die_info *
22600 sibling_die (struct die_info *die)
22601 {
22602   return die->sibling;
22603 }
22604
22605 /* Get name of a die, return NULL if not found.  */
22606
22607 static const char *
22608 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22609                           struct obstack *obstack)
22610 {
22611   if (name && cu->language == language_cplus)
22612     {
22613       std::string canon_name = cp_canonicalize_string (name);
22614
22615       if (!canon_name.empty ())
22616         {
22617           if (canon_name != name)
22618             name = (const char *) obstack_copy0 (obstack,
22619                                                  canon_name.c_str (),
22620                                                  canon_name.length ());
22621         }
22622     }
22623
22624   return name;
22625 }
22626
22627 /* Get name of a die, return NULL if not found.
22628    Anonymous namespaces are converted to their magic string.  */
22629
22630 static const char *
22631 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22632 {
22633   struct attribute *attr;
22634   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22635
22636   attr = dwarf2_attr (die, DW_AT_name, cu);
22637   if ((!attr || !DW_STRING (attr))
22638       && die->tag != DW_TAG_namespace
22639       && die->tag != DW_TAG_class_type
22640       && die->tag != DW_TAG_interface_type
22641       && die->tag != DW_TAG_structure_type
22642       && die->tag != DW_TAG_union_type)
22643     return NULL;
22644
22645   switch (die->tag)
22646     {
22647     case DW_TAG_compile_unit:
22648     case DW_TAG_partial_unit:
22649       /* Compilation units have a DW_AT_name that is a filename, not
22650          a source language identifier.  */
22651     case DW_TAG_enumeration_type:
22652     case DW_TAG_enumerator:
22653       /* These tags always have simple identifiers already; no need
22654          to canonicalize them.  */
22655       return DW_STRING (attr);
22656
22657     case DW_TAG_namespace:
22658       if (attr != NULL && DW_STRING (attr) != NULL)
22659         return DW_STRING (attr);
22660       return CP_ANONYMOUS_NAMESPACE_STR;
22661
22662     case DW_TAG_class_type:
22663     case DW_TAG_interface_type:
22664     case DW_TAG_structure_type:
22665     case DW_TAG_union_type:
22666       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22667          structures or unions.  These were of the form "._%d" in GCC 4.1,
22668          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22669          and GCC 4.4.  We work around this problem by ignoring these.  */
22670       if (attr && DW_STRING (attr)
22671           && (startswith (DW_STRING (attr), "._")
22672               || startswith (DW_STRING (attr), "<anonymous")))
22673         return NULL;
22674
22675       /* GCC might emit a nameless typedef that has a linkage name.  See
22676          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22677       if (!attr || DW_STRING (attr) == NULL)
22678         {
22679           char *demangled = NULL;
22680
22681           attr = dw2_linkage_name_attr (die, cu);
22682           if (attr == NULL || DW_STRING (attr) == NULL)
22683             return NULL;
22684
22685           /* Avoid demangling DW_STRING (attr) the second time on a second
22686              call for the same DIE.  */
22687           if (!DW_STRING_IS_CANONICAL (attr))
22688             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22689
22690           if (demangled)
22691             {
22692               const char *base;
22693
22694               /* FIXME: we already did this for the partial symbol... */
22695               DW_STRING (attr)
22696                 = ((const char *)
22697                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22698                                   demangled, strlen (demangled)));
22699               DW_STRING_IS_CANONICAL (attr) = 1;
22700               xfree (demangled);
22701
22702               /* Strip any leading namespaces/classes, keep only the base name.
22703                  DW_AT_name for named DIEs does not contain the prefixes.  */
22704               base = strrchr (DW_STRING (attr), ':');
22705               if (base && base > DW_STRING (attr) && base[-1] == ':')
22706                 return &base[1];
22707               else
22708                 return DW_STRING (attr);
22709             }
22710         }
22711       break;
22712
22713     default:
22714       break;
22715     }
22716
22717   if (!DW_STRING_IS_CANONICAL (attr))
22718     {
22719       DW_STRING (attr)
22720         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22721                                     &objfile->per_bfd->storage_obstack);
22722       DW_STRING_IS_CANONICAL (attr) = 1;
22723     }
22724   return DW_STRING (attr);
22725 }
22726
22727 /* Return the die that this die in an extension of, or NULL if there
22728    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22729    containing the return value on output.  */
22730
22731 static struct die_info *
22732 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22733 {
22734   struct attribute *attr;
22735
22736   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22737   if (attr == NULL)
22738     return NULL;
22739
22740   return follow_die_ref (die, attr, ext_cu);
22741 }
22742
22743 /* Convert a DIE tag into its string name.  */
22744
22745 static const char *
22746 dwarf_tag_name (unsigned tag)
22747 {
22748   const char *name = get_DW_TAG_name (tag);
22749
22750   if (name == NULL)
22751     return "DW_TAG_<unknown>";
22752
22753   return name;
22754 }
22755
22756 /* Convert a DWARF attribute code into its string name.  */
22757
22758 static const char *
22759 dwarf_attr_name (unsigned attr)
22760 {
22761   const char *name;
22762
22763 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22764   if (attr == DW_AT_MIPS_fde)
22765     return "DW_AT_MIPS_fde";
22766 #else
22767   if (attr == DW_AT_HP_block_index)
22768     return "DW_AT_HP_block_index";
22769 #endif
22770
22771   name = get_DW_AT_name (attr);
22772
22773   if (name == NULL)
22774     return "DW_AT_<unknown>";
22775
22776   return name;
22777 }
22778
22779 /* Convert a DWARF value form code into its string name.  */
22780
22781 static const char *
22782 dwarf_form_name (unsigned form)
22783 {
22784   const char *name = get_DW_FORM_name (form);
22785
22786   if (name == NULL)
22787     return "DW_FORM_<unknown>";
22788
22789   return name;
22790 }
22791
22792 static const char *
22793 dwarf_bool_name (unsigned mybool)
22794 {
22795   if (mybool)
22796     return "TRUE";
22797   else
22798     return "FALSE";
22799 }
22800
22801 /* Convert a DWARF type code into its string name.  */
22802
22803 static const char *
22804 dwarf_type_encoding_name (unsigned enc)
22805 {
22806   const char *name = get_DW_ATE_name (enc);
22807
22808   if (name == NULL)
22809     return "DW_ATE_<unknown>";
22810
22811   return name;
22812 }
22813
22814 static void
22815 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22816 {
22817   unsigned int i;
22818
22819   print_spaces (indent, f);
22820   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22821                       dwarf_tag_name (die->tag), die->abbrev,
22822                       sect_offset_str (die->sect_off));
22823
22824   if (die->parent != NULL)
22825     {
22826       print_spaces (indent, f);
22827       fprintf_unfiltered (f, "  parent at offset: %s\n",
22828                           sect_offset_str (die->parent->sect_off));
22829     }
22830
22831   print_spaces (indent, f);
22832   fprintf_unfiltered (f, "  has children: %s\n",
22833            dwarf_bool_name (die->child != NULL));
22834
22835   print_spaces (indent, f);
22836   fprintf_unfiltered (f, "  attributes:\n");
22837
22838   for (i = 0; i < die->num_attrs; ++i)
22839     {
22840       print_spaces (indent, f);
22841       fprintf_unfiltered (f, "    %s (%s) ",
22842                dwarf_attr_name (die->attrs[i].name),
22843                dwarf_form_name (die->attrs[i].form));
22844
22845       switch (die->attrs[i].form)
22846         {
22847         case DW_FORM_addr:
22848         case DW_FORM_addrx:
22849         case DW_FORM_GNU_addr_index:
22850           fprintf_unfiltered (f, "address: ");
22851           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22852           break;
22853         case DW_FORM_block2:
22854         case DW_FORM_block4:
22855         case DW_FORM_block:
22856         case DW_FORM_block1:
22857           fprintf_unfiltered (f, "block: size %s",
22858                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22859           break;
22860         case DW_FORM_exprloc:
22861           fprintf_unfiltered (f, "expression: size %s",
22862                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22863           break;
22864         case DW_FORM_data16:
22865           fprintf_unfiltered (f, "constant of 16 bytes");
22866           break;
22867         case DW_FORM_ref_addr:
22868           fprintf_unfiltered (f, "ref address: ");
22869           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22870           break;
22871         case DW_FORM_GNU_ref_alt:
22872           fprintf_unfiltered (f, "alt ref address: ");
22873           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22874           break;
22875         case DW_FORM_ref1:
22876         case DW_FORM_ref2:
22877         case DW_FORM_ref4:
22878         case DW_FORM_ref8:
22879         case DW_FORM_ref_udata:
22880           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22881                               (long) (DW_UNSND (&die->attrs[i])));
22882           break;
22883         case DW_FORM_data1:
22884         case DW_FORM_data2:
22885         case DW_FORM_data4:
22886         case DW_FORM_data8:
22887         case DW_FORM_udata:
22888         case DW_FORM_sdata:
22889           fprintf_unfiltered (f, "constant: %s",
22890                               pulongest (DW_UNSND (&die->attrs[i])));
22891           break;
22892         case DW_FORM_sec_offset:
22893           fprintf_unfiltered (f, "section offset: %s",
22894                               pulongest (DW_UNSND (&die->attrs[i])));
22895           break;
22896         case DW_FORM_ref_sig8:
22897           fprintf_unfiltered (f, "signature: %s",
22898                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22899           break;
22900         case DW_FORM_string:
22901         case DW_FORM_strp:
22902         case DW_FORM_line_strp:
22903         case DW_FORM_GNU_str_index:
22904         case DW_FORM_GNU_strp_alt:
22905           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22906                    DW_STRING (&die->attrs[i])
22907                    ? DW_STRING (&die->attrs[i]) : "",
22908                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22909           break;
22910         case DW_FORM_flag:
22911           if (DW_UNSND (&die->attrs[i]))
22912             fprintf_unfiltered (f, "flag: TRUE");
22913           else
22914             fprintf_unfiltered (f, "flag: FALSE");
22915           break;
22916         case DW_FORM_flag_present:
22917           fprintf_unfiltered (f, "flag: TRUE");
22918           break;
22919         case DW_FORM_indirect:
22920           /* The reader will have reduced the indirect form to
22921              the "base form" so this form should not occur.  */
22922           fprintf_unfiltered (f, 
22923                               "unexpected attribute form: DW_FORM_indirect");
22924           break;
22925         case DW_FORM_implicit_const:
22926           fprintf_unfiltered (f, "constant: %s",
22927                               plongest (DW_SND (&die->attrs[i])));
22928           break;
22929         default:
22930           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22931                    die->attrs[i].form);
22932           break;
22933         }
22934       fprintf_unfiltered (f, "\n");
22935     }
22936 }
22937
22938 static void
22939 dump_die_for_error (struct die_info *die)
22940 {
22941   dump_die_shallow (gdb_stderr, 0, die);
22942 }
22943
22944 static void
22945 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22946 {
22947   int indent = level * 4;
22948
22949   gdb_assert (die != NULL);
22950
22951   if (level >= max_level)
22952     return;
22953
22954   dump_die_shallow (f, indent, die);
22955
22956   if (die->child != NULL)
22957     {
22958       print_spaces (indent, f);
22959       fprintf_unfiltered (f, "  Children:");
22960       if (level + 1 < max_level)
22961         {
22962           fprintf_unfiltered (f, "\n");
22963           dump_die_1 (f, level + 1, max_level, die->child);
22964         }
22965       else
22966         {
22967           fprintf_unfiltered (f,
22968                               " [not printed, max nesting level reached]\n");
22969         }
22970     }
22971
22972   if (die->sibling != NULL && level > 0)
22973     {
22974       dump_die_1 (f, level, max_level, die->sibling);
22975     }
22976 }
22977
22978 /* This is called from the pdie macro in gdbinit.in.
22979    It's not static so gcc will keep a copy callable from gdb.  */
22980
22981 void
22982 dump_die (struct die_info *die, int max_level)
22983 {
22984   dump_die_1 (gdb_stdlog, 0, max_level, die);
22985 }
22986
22987 static void
22988 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22989 {
22990   void **slot;
22991
22992   slot = htab_find_slot_with_hash (cu->die_hash, die,
22993                                    to_underlying (die->sect_off),
22994                                    INSERT);
22995
22996   *slot = die;
22997 }
22998
22999 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
23000    required kind.  */
23001
23002 static sect_offset
23003 dwarf2_get_ref_die_offset (const struct attribute *attr)
23004 {
23005   if (attr_form_is_ref (attr))
23006     return (sect_offset) DW_UNSND (attr);
23007
23008   complaint (_("unsupported die ref attribute form: '%s'"),
23009              dwarf_form_name (attr->form));
23010   return {};
23011 }
23012
23013 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
23014  * the value held by the attribute is not constant.  */
23015
23016 static LONGEST
23017 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
23018 {
23019   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
23020     return DW_SND (attr);
23021   else if (attr->form == DW_FORM_udata
23022            || attr->form == DW_FORM_data1
23023            || attr->form == DW_FORM_data2
23024            || attr->form == DW_FORM_data4
23025            || attr->form == DW_FORM_data8)
23026     return DW_UNSND (attr);
23027   else
23028     {
23029       /* For DW_FORM_data16 see attr_form_is_constant.  */
23030       complaint (_("Attribute value is not a constant (%s)"),
23031                  dwarf_form_name (attr->form));
23032       return default_value;
23033     }
23034 }
23035
23036 /* Follow reference or signature attribute ATTR of SRC_DIE.
23037    On entry *REF_CU is the CU of SRC_DIE.
23038    On exit *REF_CU is the CU of the result.  */
23039
23040 static struct die_info *
23041 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23042                        struct dwarf2_cu **ref_cu)
23043 {
23044   struct die_info *die;
23045
23046   if (attr_form_is_ref (attr))
23047     die = follow_die_ref (src_die, attr, ref_cu);
23048   else if (attr->form == DW_FORM_ref_sig8)
23049     die = follow_die_sig (src_die, attr, ref_cu);
23050   else
23051     {
23052       dump_die_for_error (src_die);
23053       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23054              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23055     }
23056
23057   return die;
23058 }
23059
23060 /* Follow reference OFFSET.
23061    On entry *REF_CU is the CU of the source die referencing OFFSET.
23062    On exit *REF_CU is the CU of the result.
23063    Returns NULL if OFFSET is invalid.  */
23064
23065 static struct die_info *
23066 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23067                    struct dwarf2_cu **ref_cu)
23068 {
23069   struct die_info temp_die;
23070   struct dwarf2_cu *target_cu, *cu = *ref_cu;
23071   struct dwarf2_per_objfile *dwarf2_per_objfile
23072     = cu->per_cu->dwarf2_per_objfile;
23073
23074   gdb_assert (cu->per_cu != NULL);
23075
23076   target_cu = cu;
23077
23078   if (cu->per_cu->is_debug_types)
23079     {
23080       /* .debug_types CUs cannot reference anything outside their CU.
23081          If they need to, they have to reference a signatured type via
23082          DW_FORM_ref_sig8.  */
23083       if (!offset_in_cu_p (&cu->header, sect_off))
23084         return NULL;
23085     }
23086   else if (offset_in_dwz != cu->per_cu->is_dwz
23087            || !offset_in_cu_p (&cu->header, sect_off))
23088     {
23089       struct dwarf2_per_cu_data *per_cu;
23090
23091       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23092                                                  dwarf2_per_objfile);
23093
23094       /* If necessary, add it to the queue and load its DIEs.  */
23095       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23096         load_full_comp_unit (per_cu, false, cu->language);
23097
23098       target_cu = per_cu->cu;
23099     }
23100   else if (cu->dies == NULL)
23101     {
23102       /* We're loading full DIEs during partial symbol reading.  */
23103       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23104       load_full_comp_unit (cu->per_cu, false, language_minimal);
23105     }
23106
23107   *ref_cu = target_cu;
23108   temp_die.sect_off = sect_off;
23109
23110   if (target_cu != cu)
23111     target_cu->ancestor = cu;
23112
23113   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23114                                                   &temp_die,
23115                                                   to_underlying (sect_off));
23116 }
23117
23118 /* Follow reference attribute ATTR of SRC_DIE.
23119    On entry *REF_CU is the CU of SRC_DIE.
23120    On exit *REF_CU is the CU of the result.  */
23121
23122 static struct die_info *
23123 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23124                 struct dwarf2_cu **ref_cu)
23125 {
23126   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23127   struct dwarf2_cu *cu = *ref_cu;
23128   struct die_info *die;
23129
23130   die = follow_die_offset (sect_off,
23131                            (attr->form == DW_FORM_GNU_ref_alt
23132                             || cu->per_cu->is_dwz),
23133                            ref_cu);
23134   if (!die)
23135     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23136            "at %s [in module %s]"),
23137            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23138            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23139
23140   return die;
23141 }
23142
23143 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23144    Returned value is intended for DW_OP_call*.  Returned
23145    dwarf2_locexpr_baton->data has lifetime of
23146    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23147
23148 struct dwarf2_locexpr_baton
23149 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23150                                struct dwarf2_per_cu_data *per_cu,
23151                                CORE_ADDR (*get_frame_pc) (void *baton),
23152                                void *baton, bool resolve_abstract_p)
23153 {
23154   struct dwarf2_cu *cu;
23155   struct die_info *die;
23156   struct attribute *attr;
23157   struct dwarf2_locexpr_baton retval;
23158   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23159   struct objfile *objfile = dwarf2_per_objfile->objfile;
23160
23161   if (per_cu->cu == NULL)
23162     load_cu (per_cu, false);
23163   cu = per_cu->cu;
23164   if (cu == NULL)
23165     {
23166       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23167          Instead just throw an error, not much else we can do.  */
23168       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23169              sect_offset_str (sect_off), objfile_name (objfile));
23170     }
23171
23172   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23173   if (!die)
23174     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23175            sect_offset_str (sect_off), objfile_name (objfile));
23176
23177   attr = dwarf2_attr (die, DW_AT_location, cu);
23178   if (!attr && resolve_abstract_p
23179       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23180           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23181     {
23182       CORE_ADDR pc = (*get_frame_pc) (baton);
23183
23184       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23185         {
23186           if (!cand->parent
23187               || cand->parent->tag != DW_TAG_subprogram)
23188             continue;
23189
23190           CORE_ADDR pc_low, pc_high;
23191           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23192           if (pc_low == ((CORE_ADDR) -1)
23193               || !(pc_low <= pc && pc < pc_high))
23194             continue;
23195
23196           die = cand;
23197           attr = dwarf2_attr (die, DW_AT_location, cu);
23198           break;
23199         }
23200     }
23201
23202   if (!attr)
23203     {
23204       /* DWARF: "If there is no such attribute, then there is no effect.".
23205          DATA is ignored if SIZE is 0.  */
23206
23207       retval.data = NULL;
23208       retval.size = 0;
23209     }
23210   else if (attr_form_is_section_offset (attr))
23211     {
23212       struct dwarf2_loclist_baton loclist_baton;
23213       CORE_ADDR pc = (*get_frame_pc) (baton);
23214       size_t size;
23215
23216       fill_in_loclist_baton (cu, &loclist_baton, attr);
23217
23218       retval.data = dwarf2_find_location_expression (&loclist_baton,
23219                                                      &size, pc);
23220       retval.size = size;
23221     }
23222   else
23223     {
23224       if (!attr_form_is_block (attr))
23225         error (_("Dwarf Error: DIE at %s referenced in module %s "
23226                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23227                sect_offset_str (sect_off), objfile_name (objfile));
23228
23229       retval.data = DW_BLOCK (attr)->data;
23230       retval.size = DW_BLOCK (attr)->size;
23231     }
23232   retval.per_cu = cu->per_cu;
23233
23234   age_cached_comp_units (dwarf2_per_objfile);
23235
23236   return retval;
23237 }
23238
23239 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23240    offset.  */
23241
23242 struct dwarf2_locexpr_baton
23243 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23244                              struct dwarf2_per_cu_data *per_cu,
23245                              CORE_ADDR (*get_frame_pc) (void *baton),
23246                              void *baton)
23247 {
23248   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23249
23250   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23251 }
23252
23253 /* Write a constant of a given type as target-ordered bytes into
23254    OBSTACK.  */
23255
23256 static const gdb_byte *
23257 write_constant_as_bytes (struct obstack *obstack,
23258                          enum bfd_endian byte_order,
23259                          struct type *type,
23260                          ULONGEST value,
23261                          LONGEST *len)
23262 {
23263   gdb_byte *result;
23264
23265   *len = TYPE_LENGTH (type);
23266   result = (gdb_byte *) obstack_alloc (obstack, *len);
23267   store_unsigned_integer (result, *len, byte_order, value);
23268
23269   return result;
23270 }
23271
23272 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23273    pointer to the constant bytes and set LEN to the length of the
23274    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23275    does not have a DW_AT_const_value, return NULL.  */
23276
23277 const gdb_byte *
23278 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23279                              struct dwarf2_per_cu_data *per_cu,
23280                              struct obstack *obstack,
23281                              LONGEST *len)
23282 {
23283   struct dwarf2_cu *cu;
23284   struct die_info *die;
23285   struct attribute *attr;
23286   const gdb_byte *result = NULL;
23287   struct type *type;
23288   LONGEST value;
23289   enum bfd_endian byte_order;
23290   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23291
23292   if (per_cu->cu == NULL)
23293     load_cu (per_cu, false);
23294   cu = per_cu->cu;
23295   if (cu == NULL)
23296     {
23297       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23298          Instead just throw an error, not much else we can do.  */
23299       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23300              sect_offset_str (sect_off), objfile_name (objfile));
23301     }
23302
23303   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23304   if (!die)
23305     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23306            sect_offset_str (sect_off), objfile_name (objfile));
23307
23308   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23309   if (attr == NULL)
23310     return NULL;
23311
23312   byte_order = (bfd_big_endian (objfile->obfd)
23313                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23314
23315   switch (attr->form)
23316     {
23317     case DW_FORM_addr:
23318     case DW_FORM_addrx:
23319     case DW_FORM_GNU_addr_index:
23320       {
23321         gdb_byte *tem;
23322
23323         *len = cu->header.addr_size;
23324         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23325         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23326         result = tem;
23327       }
23328       break;
23329     case DW_FORM_string:
23330     case DW_FORM_strp:
23331     case DW_FORM_GNU_str_index:
23332     case DW_FORM_GNU_strp_alt:
23333       /* DW_STRING is already allocated on the objfile obstack, point
23334          directly to it.  */
23335       result = (const gdb_byte *) DW_STRING (attr);
23336       *len = strlen (DW_STRING (attr));
23337       break;
23338     case DW_FORM_block1:
23339     case DW_FORM_block2:
23340     case DW_FORM_block4:
23341     case DW_FORM_block:
23342     case DW_FORM_exprloc:
23343     case DW_FORM_data16:
23344       result = DW_BLOCK (attr)->data;
23345       *len = DW_BLOCK (attr)->size;
23346       break;
23347
23348       /* The DW_AT_const_value attributes are supposed to carry the
23349          symbol's value "represented as it would be on the target
23350          architecture."  By the time we get here, it's already been
23351          converted to host endianness, so we just need to sign- or
23352          zero-extend it as appropriate.  */
23353     case DW_FORM_data1:
23354       type = die_type (die, cu);
23355       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23356       if (result == NULL)
23357         result = write_constant_as_bytes (obstack, byte_order,
23358                                           type, value, len);
23359       break;
23360     case DW_FORM_data2:
23361       type = die_type (die, cu);
23362       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23363       if (result == NULL)
23364         result = write_constant_as_bytes (obstack, byte_order,
23365                                           type, value, len);
23366       break;
23367     case DW_FORM_data4:
23368       type = die_type (die, cu);
23369       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23370       if (result == NULL)
23371         result = write_constant_as_bytes (obstack, byte_order,
23372                                           type, value, len);
23373       break;
23374     case DW_FORM_data8:
23375       type = die_type (die, cu);
23376       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23377       if (result == NULL)
23378         result = write_constant_as_bytes (obstack, byte_order,
23379                                           type, value, len);
23380       break;
23381
23382     case DW_FORM_sdata:
23383     case DW_FORM_implicit_const:
23384       type = die_type (die, cu);
23385       result = write_constant_as_bytes (obstack, byte_order,
23386                                         type, DW_SND (attr), len);
23387       break;
23388
23389     case DW_FORM_udata:
23390       type = die_type (die, cu);
23391       result = write_constant_as_bytes (obstack, byte_order,
23392                                         type, DW_UNSND (attr), len);
23393       break;
23394
23395     default:
23396       complaint (_("unsupported const value attribute form: '%s'"),
23397                  dwarf_form_name (attr->form));
23398       break;
23399     }
23400
23401   return result;
23402 }
23403
23404 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23405    valid type for this die is found.  */
23406
23407 struct type *
23408 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23409                                 struct dwarf2_per_cu_data *per_cu)
23410 {
23411   struct dwarf2_cu *cu;
23412   struct die_info *die;
23413
23414   if (per_cu->cu == NULL)
23415     load_cu (per_cu, false);
23416   cu = per_cu->cu;
23417   if (!cu)
23418     return NULL;
23419
23420   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23421   if (!die)
23422     return NULL;
23423
23424   return die_type (die, cu);
23425 }
23426
23427 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23428    PER_CU.  */
23429
23430 struct type *
23431 dwarf2_get_die_type (cu_offset die_offset,
23432                      struct dwarf2_per_cu_data *per_cu)
23433 {
23434   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23435   return get_die_type_at_offset (die_offset_sect, per_cu);
23436 }
23437
23438 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23439    On entry *REF_CU is the CU of SRC_DIE.
23440    On exit *REF_CU is the CU of the result.
23441    Returns NULL if the referenced DIE isn't found.  */
23442
23443 static struct die_info *
23444 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23445                   struct dwarf2_cu **ref_cu)
23446 {
23447   struct die_info temp_die;
23448   struct dwarf2_cu *sig_cu, *cu = *ref_cu;
23449   struct die_info *die;
23450
23451   /* While it might be nice to assert sig_type->type == NULL here,
23452      we can get here for DW_AT_imported_declaration where we need
23453      the DIE not the type.  */
23454
23455   /* If necessary, add it to the queue and load its DIEs.  */
23456
23457   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23458     read_signatured_type (sig_type);
23459
23460   sig_cu = sig_type->per_cu.cu;
23461   gdb_assert (sig_cu != NULL);
23462   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23463   temp_die.sect_off = sig_type->type_offset_in_section;
23464   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23465                                                  to_underlying (temp_die.sect_off));
23466   if (die)
23467     {
23468       struct dwarf2_per_objfile *dwarf2_per_objfile
23469         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23470
23471       /* For .gdb_index version 7 keep track of included TUs.
23472          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23473       if (dwarf2_per_objfile->index_table != NULL
23474           && dwarf2_per_objfile->index_table->version <= 7)
23475         {
23476           VEC_safe_push (dwarf2_per_cu_ptr,
23477                          (*ref_cu)->per_cu->imported_symtabs,
23478                          sig_cu->per_cu);
23479         }
23480
23481       *ref_cu = sig_cu;
23482       if (sig_cu != cu)
23483         sig_cu->ancestor = cu;
23484
23485       return die;
23486     }
23487
23488   return NULL;
23489 }
23490
23491 /* Follow signatured type referenced by ATTR in SRC_DIE.
23492    On entry *REF_CU is the CU of SRC_DIE.
23493    On exit *REF_CU is the CU of the result.
23494    The result is the DIE of the type.
23495    If the referenced type cannot be found an error is thrown.  */
23496
23497 static struct die_info *
23498 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23499                 struct dwarf2_cu **ref_cu)
23500 {
23501   ULONGEST signature = DW_SIGNATURE (attr);
23502   struct signatured_type *sig_type;
23503   struct die_info *die;
23504
23505   gdb_assert (attr->form == DW_FORM_ref_sig8);
23506
23507   sig_type = lookup_signatured_type (*ref_cu, signature);
23508   /* sig_type will be NULL if the signatured type is missing from
23509      the debug info.  */
23510   if (sig_type == NULL)
23511     {
23512       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23513                " from DIE at %s [in module %s]"),
23514              hex_string (signature), sect_offset_str (src_die->sect_off),
23515              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23516     }
23517
23518   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23519   if (die == NULL)
23520     {
23521       dump_die_for_error (src_die);
23522       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23523                " from DIE at %s [in module %s]"),
23524              hex_string (signature), sect_offset_str (src_die->sect_off),
23525              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23526     }
23527
23528   return die;
23529 }
23530
23531 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23532    reading in and processing the type unit if necessary.  */
23533
23534 static struct type *
23535 get_signatured_type (struct die_info *die, ULONGEST signature,
23536                      struct dwarf2_cu *cu)
23537 {
23538   struct dwarf2_per_objfile *dwarf2_per_objfile
23539     = cu->per_cu->dwarf2_per_objfile;
23540   struct signatured_type *sig_type;
23541   struct dwarf2_cu *type_cu;
23542   struct die_info *type_die;
23543   struct type *type;
23544
23545   sig_type = lookup_signatured_type (cu, signature);
23546   /* sig_type will be NULL if the signatured type is missing from
23547      the debug info.  */
23548   if (sig_type == NULL)
23549     {
23550       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23551                    " from DIE at %s [in module %s]"),
23552                  hex_string (signature), sect_offset_str (die->sect_off),
23553                  objfile_name (dwarf2_per_objfile->objfile));
23554       return build_error_marker_type (cu, die);
23555     }
23556
23557   /* If we already know the type we're done.  */
23558   if (sig_type->type != NULL)
23559     return sig_type->type;
23560
23561   type_cu = cu;
23562   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23563   if (type_die != NULL)
23564     {
23565       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23566          is created.  This is important, for example, because for c++ classes
23567          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23568       type = read_type_die (type_die, type_cu);
23569       if (type == NULL)
23570         {
23571           complaint (_("Dwarf Error: Cannot build signatured type %s"
23572                        " referenced from DIE at %s [in module %s]"),
23573                      hex_string (signature), sect_offset_str (die->sect_off),
23574                      objfile_name (dwarf2_per_objfile->objfile));
23575           type = build_error_marker_type (cu, die);
23576         }
23577     }
23578   else
23579     {
23580       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23581                    " from DIE at %s [in module %s]"),
23582                  hex_string (signature), sect_offset_str (die->sect_off),
23583                  objfile_name (dwarf2_per_objfile->objfile));
23584       type = build_error_marker_type (cu, die);
23585     }
23586   sig_type->type = type;
23587
23588   return type;
23589 }
23590
23591 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23592    reading in and processing the type unit if necessary.  */
23593
23594 static struct type *
23595 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23596                           struct dwarf2_cu *cu) /* ARI: editCase function */
23597 {
23598   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23599   if (attr_form_is_ref (attr))
23600     {
23601       struct dwarf2_cu *type_cu = cu;
23602       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23603
23604       return read_type_die (type_die, type_cu);
23605     }
23606   else if (attr->form == DW_FORM_ref_sig8)
23607     {
23608       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23609     }
23610   else
23611     {
23612       struct dwarf2_per_objfile *dwarf2_per_objfile
23613         = cu->per_cu->dwarf2_per_objfile;
23614
23615       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23616                    " at %s [in module %s]"),
23617                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23618                  objfile_name (dwarf2_per_objfile->objfile));
23619       return build_error_marker_type (cu, die);
23620     }
23621 }
23622
23623 /* Load the DIEs associated with type unit PER_CU into memory.  */
23624
23625 static void
23626 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23627 {
23628   struct signatured_type *sig_type;
23629
23630   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23631   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23632
23633   /* We have the per_cu, but we need the signatured_type.
23634      Fortunately this is an easy translation.  */
23635   gdb_assert (per_cu->is_debug_types);
23636   sig_type = (struct signatured_type *) per_cu;
23637
23638   gdb_assert (per_cu->cu == NULL);
23639
23640   read_signatured_type (sig_type);
23641
23642   gdb_assert (per_cu->cu != NULL);
23643 }
23644
23645 /* die_reader_func for read_signatured_type.
23646    This is identical to load_full_comp_unit_reader,
23647    but is kept separate for now.  */
23648
23649 static void
23650 read_signatured_type_reader (const struct die_reader_specs *reader,
23651                              const gdb_byte *info_ptr,
23652                              struct die_info *comp_unit_die,
23653                              int has_children,
23654                              void *data)
23655 {
23656   struct dwarf2_cu *cu = reader->cu;
23657
23658   gdb_assert (cu->die_hash == NULL);
23659   cu->die_hash =
23660     htab_create_alloc_ex (cu->header.length / 12,
23661                           die_hash,
23662                           die_eq,
23663                           NULL,
23664                           &cu->comp_unit_obstack,
23665                           hashtab_obstack_allocate,
23666                           dummy_obstack_deallocate);
23667
23668   if (has_children)
23669     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23670                                                   &info_ptr, comp_unit_die);
23671   cu->dies = comp_unit_die;
23672   /* comp_unit_die is not stored in die_hash, no need.  */
23673
23674   /* We try not to read any attributes in this function, because not
23675      all CUs needed for references have been loaded yet, and symbol
23676      table processing isn't initialized.  But we have to set the CU language,
23677      or we won't be able to build types correctly.
23678      Similarly, if we do not read the producer, we can not apply
23679      producer-specific interpretation.  */
23680   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23681 }
23682
23683 /* Read in a signatured type and build its CU and DIEs.
23684    If the type is a stub for the real type in a DWO file,
23685    read in the real type from the DWO file as well.  */
23686
23687 static void
23688 read_signatured_type (struct signatured_type *sig_type)
23689 {
23690   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23691
23692   gdb_assert (per_cu->is_debug_types);
23693   gdb_assert (per_cu->cu == NULL);
23694
23695   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23696                            read_signatured_type_reader, NULL);
23697   sig_type->per_cu.tu_read = 1;
23698 }
23699
23700 /* Decode simple location descriptions.
23701    Given a pointer to a dwarf block that defines a location, compute
23702    the location and return the value.
23703
23704    NOTE drow/2003-11-18: This function is called in two situations
23705    now: for the address of static or global variables (partial symbols
23706    only) and for offsets into structures which are expected to be
23707    (more or less) constant.  The partial symbol case should go away,
23708    and only the constant case should remain.  That will let this
23709    function complain more accurately.  A few special modes are allowed
23710    without complaint for global variables (for instance, global
23711    register values and thread-local values).
23712
23713    A location description containing no operations indicates that the
23714    object is optimized out.  The return value is 0 for that case.
23715    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23716    callers will only want a very basic result and this can become a
23717    complaint.
23718
23719    Note that stack[0] is unused except as a default error return.  */
23720
23721 static CORE_ADDR
23722 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23723 {
23724   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23725   size_t i;
23726   size_t size = blk->size;
23727   const gdb_byte *data = blk->data;
23728   CORE_ADDR stack[64];
23729   int stacki;
23730   unsigned int bytes_read, unsnd;
23731   gdb_byte op;
23732
23733   i = 0;
23734   stacki = 0;
23735   stack[stacki] = 0;
23736   stack[++stacki] = 0;
23737
23738   while (i < size)
23739     {
23740       op = data[i++];
23741       switch (op)
23742         {
23743         case DW_OP_lit0:
23744         case DW_OP_lit1:
23745         case DW_OP_lit2:
23746         case DW_OP_lit3:
23747         case DW_OP_lit4:
23748         case DW_OP_lit5:
23749         case DW_OP_lit6:
23750         case DW_OP_lit7:
23751         case DW_OP_lit8:
23752         case DW_OP_lit9:
23753         case DW_OP_lit10:
23754         case DW_OP_lit11:
23755         case DW_OP_lit12:
23756         case DW_OP_lit13:
23757         case DW_OP_lit14:
23758         case DW_OP_lit15:
23759         case DW_OP_lit16:
23760         case DW_OP_lit17:
23761         case DW_OP_lit18:
23762         case DW_OP_lit19:
23763         case DW_OP_lit20:
23764         case DW_OP_lit21:
23765         case DW_OP_lit22:
23766         case DW_OP_lit23:
23767         case DW_OP_lit24:
23768         case DW_OP_lit25:
23769         case DW_OP_lit26:
23770         case DW_OP_lit27:
23771         case DW_OP_lit28:
23772         case DW_OP_lit29:
23773         case DW_OP_lit30:
23774         case DW_OP_lit31:
23775           stack[++stacki] = op - DW_OP_lit0;
23776           break;
23777
23778         case DW_OP_reg0:
23779         case DW_OP_reg1:
23780         case DW_OP_reg2:
23781         case DW_OP_reg3:
23782         case DW_OP_reg4:
23783         case DW_OP_reg5:
23784         case DW_OP_reg6:
23785         case DW_OP_reg7:
23786         case DW_OP_reg8:
23787         case DW_OP_reg9:
23788         case DW_OP_reg10:
23789         case DW_OP_reg11:
23790         case DW_OP_reg12:
23791         case DW_OP_reg13:
23792         case DW_OP_reg14:
23793         case DW_OP_reg15:
23794         case DW_OP_reg16:
23795         case DW_OP_reg17:
23796         case DW_OP_reg18:
23797         case DW_OP_reg19:
23798         case DW_OP_reg20:
23799         case DW_OP_reg21:
23800         case DW_OP_reg22:
23801         case DW_OP_reg23:
23802         case DW_OP_reg24:
23803         case DW_OP_reg25:
23804         case DW_OP_reg26:
23805         case DW_OP_reg27:
23806         case DW_OP_reg28:
23807         case DW_OP_reg29:
23808         case DW_OP_reg30:
23809         case DW_OP_reg31:
23810           stack[++stacki] = op - DW_OP_reg0;
23811           if (i < size)
23812             dwarf2_complex_location_expr_complaint ();
23813           break;
23814
23815         case DW_OP_regx:
23816           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23817           i += bytes_read;
23818           stack[++stacki] = unsnd;
23819           if (i < size)
23820             dwarf2_complex_location_expr_complaint ();
23821           break;
23822
23823         case DW_OP_addr:
23824           stack[++stacki] = read_address (objfile->obfd, &data[i],
23825                                           cu, &bytes_read);
23826           i += bytes_read;
23827           break;
23828
23829         case DW_OP_const1u:
23830           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23831           i += 1;
23832           break;
23833
23834         case DW_OP_const1s:
23835           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23836           i += 1;
23837           break;
23838
23839         case DW_OP_const2u:
23840           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23841           i += 2;
23842           break;
23843
23844         case DW_OP_const2s:
23845           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23846           i += 2;
23847           break;
23848
23849         case DW_OP_const4u:
23850           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23851           i += 4;
23852           break;
23853
23854         case DW_OP_const4s:
23855           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23856           i += 4;
23857           break;
23858
23859         case DW_OP_const8u:
23860           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23861           i += 8;
23862           break;
23863
23864         case DW_OP_constu:
23865           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23866                                                   &bytes_read);
23867           i += bytes_read;
23868           break;
23869
23870         case DW_OP_consts:
23871           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23872           i += bytes_read;
23873           break;
23874
23875         case DW_OP_dup:
23876           stack[stacki + 1] = stack[stacki];
23877           stacki++;
23878           break;
23879
23880         case DW_OP_plus:
23881           stack[stacki - 1] += stack[stacki];
23882           stacki--;
23883           break;
23884
23885         case DW_OP_plus_uconst:
23886           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23887                                                  &bytes_read);
23888           i += bytes_read;
23889           break;
23890
23891         case DW_OP_minus:
23892           stack[stacki - 1] -= stack[stacki];
23893           stacki--;
23894           break;
23895
23896         case DW_OP_deref:
23897           /* If we're not the last op, then we definitely can't encode
23898              this using GDB's address_class enum.  This is valid for partial
23899              global symbols, although the variable's address will be bogus
23900              in the psymtab.  */
23901           if (i < size)
23902             dwarf2_complex_location_expr_complaint ();
23903           break;
23904
23905         case DW_OP_GNU_push_tls_address:
23906         case DW_OP_form_tls_address:
23907           /* The top of the stack has the offset from the beginning
23908              of the thread control block at which the variable is located.  */
23909           /* Nothing should follow this operator, so the top of stack would
23910              be returned.  */
23911           /* This is valid for partial global symbols, but the variable's
23912              address will be bogus in the psymtab.  Make it always at least
23913              non-zero to not look as a variable garbage collected by linker
23914              which have DW_OP_addr 0.  */
23915           if (i < size)
23916             dwarf2_complex_location_expr_complaint ();
23917           stack[stacki]++;
23918           break;
23919
23920         case DW_OP_GNU_uninit:
23921           break;
23922
23923         case DW_OP_addrx:
23924         case DW_OP_GNU_addr_index:
23925         case DW_OP_GNU_const_index:
23926           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23927                                                          &bytes_read);
23928           i += bytes_read;
23929           break;
23930
23931         default:
23932           {
23933             const char *name = get_DW_OP_name (op);
23934
23935             if (name)
23936               complaint (_("unsupported stack op: '%s'"),
23937                          name);
23938             else
23939               complaint (_("unsupported stack op: '%02x'"),
23940                          op);
23941           }
23942
23943           return (stack[stacki]);
23944         }
23945
23946       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23947          outside of the allocated space.  Also enforce minimum>0.  */
23948       if (stacki >= ARRAY_SIZE (stack) - 1)
23949         {
23950           complaint (_("location description stack overflow"));
23951           return 0;
23952         }
23953
23954       if (stacki <= 0)
23955         {
23956           complaint (_("location description stack underflow"));
23957           return 0;
23958         }
23959     }
23960   return (stack[stacki]);
23961 }
23962
23963 /* memory allocation interface */
23964
23965 static struct dwarf_block *
23966 dwarf_alloc_block (struct dwarf2_cu *cu)
23967 {
23968   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23969 }
23970
23971 static struct die_info *
23972 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23973 {
23974   struct die_info *die;
23975   size_t size = sizeof (struct die_info);
23976
23977   if (num_attrs > 1)
23978     size += (num_attrs - 1) * sizeof (struct attribute);
23979
23980   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23981   memset (die, 0, sizeof (struct die_info));
23982   return (die);
23983 }
23984
23985 \f
23986 /* Macro support.  */
23987
23988 /* Return file name relative to the compilation directory of file number I in
23989    *LH's file name table.  The result is allocated using xmalloc; the caller is
23990    responsible for freeing it.  */
23991
23992 static char *
23993 file_file_name (int file, struct line_header *lh)
23994 {
23995   /* Is the file number a valid index into the line header's file name
23996      table?  Remember that file numbers start with one, not zero.  */
23997   if (1 <= file && file <= lh->file_names.size ())
23998     {
23999       const file_entry &fe = lh->file_names[file - 1];
24000
24001       if (!IS_ABSOLUTE_PATH (fe.name))
24002         {
24003           const char *dir = fe.include_dir (lh);
24004           if (dir != NULL)
24005             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
24006         }
24007       return xstrdup (fe.name);
24008     }
24009   else
24010     {
24011       /* The compiler produced a bogus file number.  We can at least
24012          record the macro definitions made in the file, even if we
24013          won't be able to find the file by name.  */
24014       char fake_name[80];
24015
24016       xsnprintf (fake_name, sizeof (fake_name),
24017                  "<bad macro file number %d>", file);
24018
24019       complaint (_("bad file number in macro information (%d)"),
24020                  file);
24021
24022       return xstrdup (fake_name);
24023     }
24024 }
24025
24026 /* Return the full name of file number I in *LH's file name table.
24027    Use COMP_DIR as the name of the current directory of the
24028    compilation.  The result is allocated using xmalloc; the caller is
24029    responsible for freeing it.  */
24030 static char *
24031 file_full_name (int file, struct line_header *lh, const char *comp_dir)
24032 {
24033   /* Is the file number a valid index into the line header's file name
24034      table?  Remember that file numbers start with one, not zero.  */
24035   if (1 <= file && file <= lh->file_names.size ())
24036     {
24037       char *relative = file_file_name (file, lh);
24038
24039       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
24040         return relative;
24041       return reconcat (relative, comp_dir, SLASH_STRING,
24042                        relative, (char *) NULL);
24043     }
24044   else
24045     return file_file_name (file, lh);
24046 }
24047
24048
24049 static struct macro_source_file *
24050 macro_start_file (struct dwarf2_cu *cu,
24051                   int file, int line,
24052                   struct macro_source_file *current_file,
24053                   struct line_header *lh)
24054 {
24055   /* File name relative to the compilation directory of this source file.  */
24056   char *file_name = file_file_name (file, lh);
24057
24058   if (! current_file)
24059     {
24060       /* Note: We don't create a macro table for this compilation unit
24061          at all until we actually get a filename.  */
24062       struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
24063
24064       /* If we have no current file, then this must be the start_file
24065          directive for the compilation unit's main source file.  */
24066       current_file = macro_set_main (macro_table, file_name);
24067       macro_define_special (macro_table);
24068     }
24069   else
24070     current_file = macro_include (current_file, line, file_name);
24071
24072   xfree (file_name);
24073
24074   return current_file;
24075 }
24076
24077 static const char *
24078 consume_improper_spaces (const char *p, const char *body)
24079 {
24080   if (*p == ' ')
24081     {
24082       complaint (_("macro definition contains spaces "
24083                    "in formal argument list:\n`%s'"),
24084                  body);
24085
24086       while (*p == ' ')
24087         p++;
24088     }
24089
24090   return p;
24091 }
24092
24093
24094 static void
24095 parse_macro_definition (struct macro_source_file *file, int line,
24096                         const char *body)
24097 {
24098   const char *p;
24099
24100   /* The body string takes one of two forms.  For object-like macro
24101      definitions, it should be:
24102
24103         <macro name> " " <definition>
24104
24105      For function-like macro definitions, it should be:
24106
24107         <macro name> "() " <definition>
24108      or
24109         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24110
24111      Spaces may appear only where explicitly indicated, and in the
24112      <definition>.
24113
24114      The Dwarf 2 spec says that an object-like macro's name is always
24115      followed by a space, but versions of GCC around March 2002 omit
24116      the space when the macro's definition is the empty string.
24117
24118      The Dwarf 2 spec says that there should be no spaces between the
24119      formal arguments in a function-like macro's formal argument list,
24120      but versions of GCC around March 2002 include spaces after the
24121      commas.  */
24122
24123
24124   /* Find the extent of the macro name.  The macro name is terminated
24125      by either a space or null character (for an object-like macro) or
24126      an opening paren (for a function-like macro).  */
24127   for (p = body; *p; p++)
24128     if (*p == ' ' || *p == '(')
24129       break;
24130
24131   if (*p == ' ' || *p == '\0')
24132     {
24133       /* It's an object-like macro.  */
24134       int name_len = p - body;
24135       char *name = savestring (body, name_len);
24136       const char *replacement;
24137
24138       if (*p == ' ')
24139         replacement = body + name_len + 1;
24140       else
24141         {
24142           dwarf2_macro_malformed_definition_complaint (body);
24143           replacement = body + name_len;
24144         }
24145
24146       macro_define_object (file, line, name, replacement);
24147
24148       xfree (name);
24149     }
24150   else if (*p == '(')
24151     {
24152       /* It's a function-like macro.  */
24153       char *name = savestring (body, p - body);
24154       int argc = 0;
24155       int argv_size = 1;
24156       char **argv = XNEWVEC (char *, argv_size);
24157
24158       p++;
24159
24160       p = consume_improper_spaces (p, body);
24161
24162       /* Parse the formal argument list.  */
24163       while (*p && *p != ')')
24164         {
24165           /* Find the extent of the current argument name.  */
24166           const char *arg_start = p;
24167
24168           while (*p && *p != ',' && *p != ')' && *p != ' ')
24169             p++;
24170
24171           if (! *p || p == arg_start)
24172             dwarf2_macro_malformed_definition_complaint (body);
24173           else
24174             {
24175               /* Make sure argv has room for the new argument.  */
24176               if (argc >= argv_size)
24177                 {
24178                   argv_size *= 2;
24179                   argv = XRESIZEVEC (char *, argv, argv_size);
24180                 }
24181
24182               argv[argc++] = savestring (arg_start, p - arg_start);
24183             }
24184
24185           p = consume_improper_spaces (p, body);
24186
24187           /* Consume the comma, if present.  */
24188           if (*p == ',')
24189             {
24190               p++;
24191
24192               p = consume_improper_spaces (p, body);
24193             }
24194         }
24195
24196       if (*p == ')')
24197         {
24198           p++;
24199
24200           if (*p == ' ')
24201             /* Perfectly formed definition, no complaints.  */
24202             macro_define_function (file, line, name,
24203                                    argc, (const char **) argv,
24204                                    p + 1);
24205           else if (*p == '\0')
24206             {
24207               /* Complain, but do define it.  */
24208               dwarf2_macro_malformed_definition_complaint (body);
24209               macro_define_function (file, line, name,
24210                                      argc, (const char **) argv,
24211                                      p);
24212             }
24213           else
24214             /* Just complain.  */
24215             dwarf2_macro_malformed_definition_complaint (body);
24216         }
24217       else
24218         /* Just complain.  */
24219         dwarf2_macro_malformed_definition_complaint (body);
24220
24221       xfree (name);
24222       {
24223         int i;
24224
24225         for (i = 0; i < argc; i++)
24226           xfree (argv[i]);
24227       }
24228       xfree (argv);
24229     }
24230   else
24231     dwarf2_macro_malformed_definition_complaint (body);
24232 }
24233
24234 /* Skip some bytes from BYTES according to the form given in FORM.
24235    Returns the new pointer.  */
24236
24237 static const gdb_byte *
24238 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24239                  enum dwarf_form form,
24240                  unsigned int offset_size,
24241                  struct dwarf2_section_info *section)
24242 {
24243   unsigned int bytes_read;
24244
24245   switch (form)
24246     {
24247     case DW_FORM_data1:
24248     case DW_FORM_flag:
24249       ++bytes;
24250       break;
24251
24252     case DW_FORM_data2:
24253       bytes += 2;
24254       break;
24255
24256     case DW_FORM_data4:
24257       bytes += 4;
24258       break;
24259
24260     case DW_FORM_data8:
24261       bytes += 8;
24262       break;
24263
24264     case DW_FORM_data16:
24265       bytes += 16;
24266       break;
24267
24268     case DW_FORM_string:
24269       read_direct_string (abfd, bytes, &bytes_read);
24270       bytes += bytes_read;
24271       break;
24272
24273     case DW_FORM_sec_offset:
24274     case DW_FORM_strp:
24275     case DW_FORM_GNU_strp_alt:
24276       bytes += offset_size;
24277       break;
24278
24279     case DW_FORM_block:
24280       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24281       bytes += bytes_read;
24282       break;
24283
24284     case DW_FORM_block1:
24285       bytes += 1 + read_1_byte (abfd, bytes);
24286       break;
24287     case DW_FORM_block2:
24288       bytes += 2 + read_2_bytes (abfd, bytes);
24289       break;
24290     case DW_FORM_block4:
24291       bytes += 4 + read_4_bytes (abfd, bytes);
24292       break;
24293
24294     case DW_FORM_addrx:
24295     case DW_FORM_sdata:
24296     case DW_FORM_udata:
24297     case DW_FORM_GNU_addr_index:
24298     case DW_FORM_GNU_str_index:
24299       bytes = gdb_skip_leb128 (bytes, buffer_end);
24300       if (bytes == NULL)
24301         {
24302           dwarf2_section_buffer_overflow_complaint (section);
24303           return NULL;
24304         }
24305       break;
24306
24307     case DW_FORM_implicit_const:
24308       break;
24309
24310     default:
24311       {
24312         complaint (_("invalid form 0x%x in `%s'"),
24313                    form, get_section_name (section));
24314         return NULL;
24315       }
24316     }
24317
24318   return bytes;
24319 }
24320
24321 /* A helper for dwarf_decode_macros that handles skipping an unknown
24322    opcode.  Returns an updated pointer to the macro data buffer; or,
24323    on error, issues a complaint and returns NULL.  */
24324
24325 static const gdb_byte *
24326 skip_unknown_opcode (unsigned int opcode,
24327                      const gdb_byte **opcode_definitions,
24328                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24329                      bfd *abfd,
24330                      unsigned int offset_size,
24331                      struct dwarf2_section_info *section)
24332 {
24333   unsigned int bytes_read, i;
24334   unsigned long arg;
24335   const gdb_byte *defn;
24336
24337   if (opcode_definitions[opcode] == NULL)
24338     {
24339       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24340                  opcode);
24341       return NULL;
24342     }
24343
24344   defn = opcode_definitions[opcode];
24345   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24346   defn += bytes_read;
24347
24348   for (i = 0; i < arg; ++i)
24349     {
24350       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24351                                  (enum dwarf_form) defn[i], offset_size,
24352                                  section);
24353       if (mac_ptr == NULL)
24354         {
24355           /* skip_form_bytes already issued the complaint.  */
24356           return NULL;
24357         }
24358     }
24359
24360   return mac_ptr;
24361 }
24362
24363 /* A helper function which parses the header of a macro section.
24364    If the macro section is the extended (for now called "GNU") type,
24365    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24366    the header, or issues a complaint and returns NULL on error.  */
24367
24368 static const gdb_byte *
24369 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24370                           bfd *abfd,
24371                           const gdb_byte *mac_ptr,
24372                           unsigned int *offset_size,
24373                           int section_is_gnu)
24374 {
24375   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24376
24377   if (section_is_gnu)
24378     {
24379       unsigned int version, flags;
24380
24381       version = read_2_bytes (abfd, mac_ptr);
24382       if (version != 4 && version != 5)
24383         {
24384           complaint (_("unrecognized version `%d' in .debug_macro section"),
24385                      version);
24386           return NULL;
24387         }
24388       mac_ptr += 2;
24389
24390       flags = read_1_byte (abfd, mac_ptr);
24391       ++mac_ptr;
24392       *offset_size = (flags & 1) ? 8 : 4;
24393
24394       if ((flags & 2) != 0)
24395         /* We don't need the line table offset.  */
24396         mac_ptr += *offset_size;
24397
24398       /* Vendor opcode descriptions.  */
24399       if ((flags & 4) != 0)
24400         {
24401           unsigned int i, count;
24402
24403           count = read_1_byte (abfd, mac_ptr);
24404           ++mac_ptr;
24405           for (i = 0; i < count; ++i)
24406             {
24407               unsigned int opcode, bytes_read;
24408               unsigned long arg;
24409
24410               opcode = read_1_byte (abfd, mac_ptr);
24411               ++mac_ptr;
24412               opcode_definitions[opcode] = mac_ptr;
24413               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24414               mac_ptr += bytes_read;
24415               mac_ptr += arg;
24416             }
24417         }
24418     }
24419
24420   return mac_ptr;
24421 }
24422
24423 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24424    including DW_MACRO_import.  */
24425
24426 static void
24427 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24428                           bfd *abfd,
24429                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24430                           struct macro_source_file *current_file,
24431                           struct line_header *lh,
24432                           struct dwarf2_section_info *section,
24433                           int section_is_gnu, int section_is_dwz,
24434                           unsigned int offset_size,
24435                           htab_t include_hash)
24436 {
24437   struct dwarf2_per_objfile *dwarf2_per_objfile
24438     = cu->per_cu->dwarf2_per_objfile;
24439   struct objfile *objfile = dwarf2_per_objfile->objfile;
24440   enum dwarf_macro_record_type macinfo_type;
24441   int at_commandline;
24442   const gdb_byte *opcode_definitions[256];
24443
24444   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24445                                       &offset_size, section_is_gnu);
24446   if (mac_ptr == NULL)
24447     {
24448       /* We already issued a complaint.  */
24449       return;
24450     }
24451
24452   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24453      GDB is still reading the definitions from command line.  First
24454      DW_MACINFO_start_file will need to be ignored as it was already executed
24455      to create CURRENT_FILE for the main source holding also the command line
24456      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24457      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24458
24459   at_commandline = 1;
24460
24461   do
24462     {
24463       /* Do we at least have room for a macinfo type byte?  */
24464       if (mac_ptr >= mac_end)
24465         {
24466           dwarf2_section_buffer_overflow_complaint (section);
24467           break;
24468         }
24469
24470       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24471       mac_ptr++;
24472
24473       /* Note that we rely on the fact that the corresponding GNU and
24474          DWARF constants are the same.  */
24475       DIAGNOSTIC_PUSH
24476       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24477       switch (macinfo_type)
24478         {
24479           /* A zero macinfo type indicates the end of the macro
24480              information.  */
24481         case 0:
24482           break;
24483
24484         case DW_MACRO_define:
24485         case DW_MACRO_undef:
24486         case DW_MACRO_define_strp:
24487         case DW_MACRO_undef_strp:
24488         case DW_MACRO_define_sup:
24489         case DW_MACRO_undef_sup:
24490           {
24491             unsigned int bytes_read;
24492             int line;
24493             const char *body;
24494             int is_define;
24495
24496             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24497             mac_ptr += bytes_read;
24498
24499             if (macinfo_type == DW_MACRO_define
24500                 || macinfo_type == DW_MACRO_undef)
24501               {
24502                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24503                 mac_ptr += bytes_read;
24504               }
24505             else
24506               {
24507                 LONGEST str_offset;
24508
24509                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24510                 mac_ptr += offset_size;
24511
24512                 if (macinfo_type == DW_MACRO_define_sup
24513                     || macinfo_type == DW_MACRO_undef_sup
24514                     || section_is_dwz)
24515                   {
24516                     struct dwz_file *dwz
24517                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24518
24519                     body = read_indirect_string_from_dwz (objfile,
24520                                                           dwz, str_offset);
24521                   }
24522                 else
24523                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24524                                                          abfd, str_offset);
24525               }
24526
24527             is_define = (macinfo_type == DW_MACRO_define
24528                          || macinfo_type == DW_MACRO_define_strp
24529                          || macinfo_type == DW_MACRO_define_sup);
24530             if (! current_file)
24531               {
24532                 /* DWARF violation as no main source is present.  */
24533                 complaint (_("debug info with no main source gives macro %s "
24534                              "on line %d: %s"),
24535                            is_define ? _("definition") : _("undefinition"),
24536                            line, body);
24537                 break;
24538               }
24539             if ((line == 0 && !at_commandline)
24540                 || (line != 0 && at_commandline))
24541               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24542                          at_commandline ? _("command-line") : _("in-file"),
24543                          is_define ? _("definition") : _("undefinition"),
24544                          line == 0 ? _("zero") : _("non-zero"), line, body);
24545
24546             if (is_define)
24547               parse_macro_definition (current_file, line, body);
24548             else
24549               {
24550                 gdb_assert (macinfo_type == DW_MACRO_undef
24551                             || macinfo_type == DW_MACRO_undef_strp
24552                             || macinfo_type == DW_MACRO_undef_sup);
24553                 macro_undef (current_file, line, body);
24554               }
24555           }
24556           break;
24557
24558         case DW_MACRO_start_file:
24559           {
24560             unsigned int bytes_read;
24561             int line, file;
24562
24563             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24564             mac_ptr += bytes_read;
24565             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24566             mac_ptr += bytes_read;
24567
24568             if ((line == 0 && !at_commandline)
24569                 || (line != 0 && at_commandline))
24570               complaint (_("debug info gives source %d included "
24571                            "from %s at %s line %d"),
24572                          file, at_commandline ? _("command-line") : _("file"),
24573                          line == 0 ? _("zero") : _("non-zero"), line);
24574
24575             if (at_commandline)
24576               {
24577                 /* This DW_MACRO_start_file was executed in the
24578                    pass one.  */
24579                 at_commandline = 0;
24580               }
24581             else
24582               current_file = macro_start_file (cu, file, line, current_file,
24583                                                lh);
24584           }
24585           break;
24586
24587         case DW_MACRO_end_file:
24588           if (! current_file)
24589             complaint (_("macro debug info has an unmatched "
24590                          "`close_file' directive"));
24591           else
24592             {
24593               current_file = current_file->included_by;
24594               if (! current_file)
24595                 {
24596                   enum dwarf_macro_record_type next_type;
24597
24598                   /* GCC circa March 2002 doesn't produce the zero
24599                      type byte marking the end of the compilation
24600                      unit.  Complain if it's not there, but exit no
24601                      matter what.  */
24602
24603                   /* Do we at least have room for a macinfo type byte?  */
24604                   if (mac_ptr >= mac_end)
24605                     {
24606                       dwarf2_section_buffer_overflow_complaint (section);
24607                       return;
24608                     }
24609
24610                   /* We don't increment mac_ptr here, so this is just
24611                      a look-ahead.  */
24612                   next_type
24613                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24614                                                                   mac_ptr);
24615                   if (next_type != 0)
24616                     complaint (_("no terminating 0-type entry for "
24617                                  "macros in `.debug_macinfo' section"));
24618
24619                   return;
24620                 }
24621             }
24622           break;
24623
24624         case DW_MACRO_import:
24625         case DW_MACRO_import_sup:
24626           {
24627             LONGEST offset;
24628             void **slot;
24629             bfd *include_bfd = abfd;
24630             struct dwarf2_section_info *include_section = section;
24631             const gdb_byte *include_mac_end = mac_end;
24632             int is_dwz = section_is_dwz;
24633             const gdb_byte *new_mac_ptr;
24634
24635             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24636             mac_ptr += offset_size;
24637
24638             if (macinfo_type == DW_MACRO_import_sup)
24639               {
24640                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24641
24642                 dwarf2_read_section (objfile, &dwz->macro);
24643
24644                 include_section = &dwz->macro;
24645                 include_bfd = get_section_bfd_owner (include_section);
24646                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24647                 is_dwz = 1;
24648               }
24649
24650             new_mac_ptr = include_section->buffer + offset;
24651             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24652
24653             if (*slot != NULL)
24654               {
24655                 /* This has actually happened; see
24656                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24657                 complaint (_("recursive DW_MACRO_import in "
24658                              ".debug_macro section"));
24659               }
24660             else
24661               {
24662                 *slot = (void *) new_mac_ptr;
24663
24664                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24665                                           include_mac_end, current_file, lh,
24666                                           section, section_is_gnu, is_dwz,
24667                                           offset_size, include_hash);
24668
24669                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24670               }
24671           }
24672           break;
24673
24674         case DW_MACINFO_vendor_ext:
24675           if (!section_is_gnu)
24676             {
24677               unsigned int bytes_read;
24678
24679               /* This reads the constant, but since we don't recognize
24680                  any vendor extensions, we ignore it.  */
24681               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24682               mac_ptr += bytes_read;
24683               read_direct_string (abfd, mac_ptr, &bytes_read);
24684               mac_ptr += bytes_read;
24685
24686               /* We don't recognize any vendor extensions.  */
24687               break;
24688             }
24689           /* FALLTHROUGH */
24690
24691         default:
24692           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24693                                          mac_ptr, mac_end, abfd, offset_size,
24694                                          section);
24695           if (mac_ptr == NULL)
24696             return;
24697           break;
24698         }
24699       DIAGNOSTIC_POP
24700     } while (macinfo_type != 0);
24701 }
24702
24703 static void
24704 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24705                      int section_is_gnu)
24706 {
24707   struct dwarf2_per_objfile *dwarf2_per_objfile
24708     = cu->per_cu->dwarf2_per_objfile;
24709   struct objfile *objfile = dwarf2_per_objfile->objfile;
24710   struct line_header *lh = cu->line_header;
24711   bfd *abfd;
24712   const gdb_byte *mac_ptr, *mac_end;
24713   struct macro_source_file *current_file = 0;
24714   enum dwarf_macro_record_type macinfo_type;
24715   unsigned int offset_size = cu->header.offset_size;
24716   const gdb_byte *opcode_definitions[256];
24717   void **slot;
24718   struct dwarf2_section_info *section;
24719   const char *section_name;
24720
24721   if (cu->dwo_unit != NULL)
24722     {
24723       if (section_is_gnu)
24724         {
24725           section = &cu->dwo_unit->dwo_file->sections.macro;
24726           section_name = ".debug_macro.dwo";
24727         }
24728       else
24729         {
24730           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24731           section_name = ".debug_macinfo.dwo";
24732         }
24733     }
24734   else
24735     {
24736       if (section_is_gnu)
24737         {
24738           section = &dwarf2_per_objfile->macro;
24739           section_name = ".debug_macro";
24740         }
24741       else
24742         {
24743           section = &dwarf2_per_objfile->macinfo;
24744           section_name = ".debug_macinfo";
24745         }
24746     }
24747
24748   dwarf2_read_section (objfile, section);
24749   if (section->buffer == NULL)
24750     {
24751       complaint (_("missing %s section"), section_name);
24752       return;
24753     }
24754   abfd = get_section_bfd_owner (section);
24755
24756   /* First pass: Find the name of the base filename.
24757      This filename is needed in order to process all macros whose definition
24758      (or undefinition) comes from the command line.  These macros are defined
24759      before the first DW_MACINFO_start_file entry, and yet still need to be
24760      associated to the base file.
24761
24762      To determine the base file name, we scan the macro definitions until we
24763      reach the first DW_MACINFO_start_file entry.  We then initialize
24764      CURRENT_FILE accordingly so that any macro definition found before the
24765      first DW_MACINFO_start_file can still be associated to the base file.  */
24766
24767   mac_ptr = section->buffer + offset;
24768   mac_end = section->buffer + section->size;
24769
24770   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24771                                       &offset_size, section_is_gnu);
24772   if (mac_ptr == NULL)
24773     {
24774       /* We already issued a complaint.  */
24775       return;
24776     }
24777
24778   do
24779     {
24780       /* Do we at least have room for a macinfo type byte?  */
24781       if (mac_ptr >= mac_end)
24782         {
24783           /* Complaint is printed during the second pass as GDB will probably
24784              stop the first pass earlier upon finding
24785              DW_MACINFO_start_file.  */
24786           break;
24787         }
24788
24789       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24790       mac_ptr++;
24791
24792       /* Note that we rely on the fact that the corresponding GNU and
24793          DWARF constants are the same.  */
24794       DIAGNOSTIC_PUSH
24795       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24796       switch (macinfo_type)
24797         {
24798           /* A zero macinfo type indicates the end of the macro
24799              information.  */
24800         case 0:
24801           break;
24802
24803         case DW_MACRO_define:
24804         case DW_MACRO_undef:
24805           /* Only skip the data by MAC_PTR.  */
24806           {
24807             unsigned int bytes_read;
24808
24809             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24810             mac_ptr += bytes_read;
24811             read_direct_string (abfd, mac_ptr, &bytes_read);
24812             mac_ptr += bytes_read;
24813           }
24814           break;
24815
24816         case DW_MACRO_start_file:
24817           {
24818             unsigned int bytes_read;
24819             int line, file;
24820
24821             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24822             mac_ptr += bytes_read;
24823             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24824             mac_ptr += bytes_read;
24825
24826             current_file = macro_start_file (cu, file, line, current_file, lh);
24827           }
24828           break;
24829
24830         case DW_MACRO_end_file:
24831           /* No data to skip by MAC_PTR.  */
24832           break;
24833
24834         case DW_MACRO_define_strp:
24835         case DW_MACRO_undef_strp:
24836         case DW_MACRO_define_sup:
24837         case DW_MACRO_undef_sup:
24838           {
24839             unsigned int bytes_read;
24840
24841             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24842             mac_ptr += bytes_read;
24843             mac_ptr += offset_size;
24844           }
24845           break;
24846
24847         case DW_MACRO_import:
24848         case DW_MACRO_import_sup:
24849           /* Note that, according to the spec, a transparent include
24850              chain cannot call DW_MACRO_start_file.  So, we can just
24851              skip this opcode.  */
24852           mac_ptr += offset_size;
24853           break;
24854
24855         case DW_MACINFO_vendor_ext:
24856           /* Only skip the data by MAC_PTR.  */
24857           if (!section_is_gnu)
24858             {
24859               unsigned int bytes_read;
24860
24861               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24862               mac_ptr += bytes_read;
24863               read_direct_string (abfd, mac_ptr, &bytes_read);
24864               mac_ptr += bytes_read;
24865             }
24866           /* FALLTHROUGH */
24867
24868         default:
24869           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24870                                          mac_ptr, mac_end, abfd, offset_size,
24871                                          section);
24872           if (mac_ptr == NULL)
24873             return;
24874           break;
24875         }
24876       DIAGNOSTIC_POP
24877     } while (macinfo_type != 0 && current_file == NULL);
24878
24879   /* Second pass: Process all entries.
24880
24881      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24882      command-line macro definitions/undefinitions.  This flag is unset when we
24883      reach the first DW_MACINFO_start_file entry.  */
24884
24885   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24886                                            htab_eq_pointer,
24887                                            NULL, xcalloc, xfree));
24888   mac_ptr = section->buffer + offset;
24889   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24890   *slot = (void *) mac_ptr;
24891   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24892                             current_file, lh, section,
24893                             section_is_gnu, 0, offset_size,
24894                             include_hash.get ());
24895 }
24896
24897 /* Check if the attribute's form is a DW_FORM_block*
24898    if so return true else false.  */
24899
24900 static int
24901 attr_form_is_block (const struct attribute *attr)
24902 {
24903   return (attr == NULL ? 0 :
24904       attr->form == DW_FORM_block1
24905       || attr->form == DW_FORM_block2
24906       || attr->form == DW_FORM_block4
24907       || attr->form == DW_FORM_block
24908       || attr->form == DW_FORM_exprloc);
24909 }
24910
24911 /* Return non-zero if ATTR's value is a section offset --- classes
24912    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24913    You may use DW_UNSND (attr) to retrieve such offsets.
24914
24915    Section 7.5.4, "Attribute Encodings", explains that no attribute
24916    may have a value that belongs to more than one of these classes; it
24917    would be ambiguous if we did, because we use the same forms for all
24918    of them.  */
24919
24920 static int
24921 attr_form_is_section_offset (const struct attribute *attr)
24922 {
24923   return (attr->form == DW_FORM_data4
24924           || attr->form == DW_FORM_data8
24925           || attr->form == DW_FORM_sec_offset);
24926 }
24927
24928 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24929    zero otherwise.  When this function returns true, you can apply
24930    dwarf2_get_attr_constant_value to it.
24931
24932    However, note that for some attributes you must check
24933    attr_form_is_section_offset before using this test.  DW_FORM_data4
24934    and DW_FORM_data8 are members of both the constant class, and of
24935    the classes that contain offsets into other debug sections
24936    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24937    that, if an attribute's can be either a constant or one of the
24938    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24939    taken as section offsets, not constants.
24940
24941    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24942    cannot handle that.  */
24943
24944 static int
24945 attr_form_is_constant (const struct attribute *attr)
24946 {
24947   switch (attr->form)
24948     {
24949     case DW_FORM_sdata:
24950     case DW_FORM_udata:
24951     case DW_FORM_data1:
24952     case DW_FORM_data2:
24953     case DW_FORM_data4:
24954     case DW_FORM_data8:
24955     case DW_FORM_implicit_const:
24956       return 1;
24957     default:
24958       return 0;
24959     }
24960 }
24961
24962
24963 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24964    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24965
24966 static int
24967 attr_form_is_ref (const struct attribute *attr)
24968 {
24969   switch (attr->form)
24970     {
24971     case DW_FORM_ref_addr:
24972     case DW_FORM_ref1:
24973     case DW_FORM_ref2:
24974     case DW_FORM_ref4:
24975     case DW_FORM_ref8:
24976     case DW_FORM_ref_udata:
24977     case DW_FORM_GNU_ref_alt:
24978       return 1;
24979     default:
24980       return 0;
24981     }
24982 }
24983
24984 /* Return the .debug_loc section to use for CU.
24985    For DWO files use .debug_loc.dwo.  */
24986
24987 static struct dwarf2_section_info *
24988 cu_debug_loc_section (struct dwarf2_cu *cu)
24989 {
24990   struct dwarf2_per_objfile *dwarf2_per_objfile
24991     = cu->per_cu->dwarf2_per_objfile;
24992
24993   if (cu->dwo_unit)
24994     {
24995       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24996       
24997       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24998     }
24999   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
25000                                   : &dwarf2_per_objfile->loc);
25001 }
25002
25003 /* A helper function that fills in a dwarf2_loclist_baton.  */
25004
25005 static void
25006 fill_in_loclist_baton (struct dwarf2_cu *cu,
25007                        struct dwarf2_loclist_baton *baton,
25008                        const struct attribute *attr)
25009 {
25010   struct dwarf2_per_objfile *dwarf2_per_objfile
25011     = cu->per_cu->dwarf2_per_objfile;
25012   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25013
25014   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
25015
25016   baton->per_cu = cu->per_cu;
25017   gdb_assert (baton->per_cu);
25018   /* We don't know how long the location list is, but make sure we
25019      don't run off the edge of the section.  */
25020   baton->size = section->size - DW_UNSND (attr);
25021   baton->data = section->buffer + DW_UNSND (attr);
25022   baton->base_address = cu->base_address;
25023   baton->from_dwo = cu->dwo_unit != NULL;
25024 }
25025
25026 static void
25027 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
25028                              struct dwarf2_cu *cu, int is_block)
25029 {
25030   struct dwarf2_per_objfile *dwarf2_per_objfile
25031     = cu->per_cu->dwarf2_per_objfile;
25032   struct objfile *objfile = dwarf2_per_objfile->objfile;
25033   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25034
25035   if (attr_form_is_section_offset (attr)
25036       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
25037          the section.  If so, fall through to the complaint in the
25038          other branch.  */
25039       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
25040     {
25041       struct dwarf2_loclist_baton *baton;
25042
25043       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25044
25045       fill_in_loclist_baton (cu, baton, attr);
25046
25047       if (cu->base_known == 0)
25048         complaint (_("Location list used without "
25049                      "specifying the CU base address."));
25050
25051       SYMBOL_ACLASS_INDEX (sym) = (is_block
25052                                    ? dwarf2_loclist_block_index
25053                                    : dwarf2_loclist_index);
25054       SYMBOL_LOCATION_BATON (sym) = baton;
25055     }
25056   else
25057     {
25058       struct dwarf2_locexpr_baton *baton;
25059
25060       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25061       baton->per_cu = cu->per_cu;
25062       gdb_assert (baton->per_cu);
25063
25064       if (attr_form_is_block (attr))
25065         {
25066           /* Note that we're just copying the block's data pointer
25067              here, not the actual data.  We're still pointing into the
25068              info_buffer for SYM's objfile; right now we never release
25069              that buffer, but when we do clean up properly this may
25070              need to change.  */
25071           baton->size = DW_BLOCK (attr)->size;
25072           baton->data = DW_BLOCK (attr)->data;
25073         }
25074       else
25075         {
25076           dwarf2_invalid_attrib_class_complaint ("location description",
25077                                                  SYMBOL_NATURAL_NAME (sym));
25078           baton->size = 0;
25079         }
25080
25081       SYMBOL_ACLASS_INDEX (sym) = (is_block
25082                                    ? dwarf2_locexpr_block_index
25083                                    : dwarf2_locexpr_index);
25084       SYMBOL_LOCATION_BATON (sym) = baton;
25085     }
25086 }
25087
25088 /* Return the OBJFILE associated with the compilation unit CU.  If CU
25089    came from a separate debuginfo file, then the master objfile is
25090    returned.  */
25091
25092 struct objfile *
25093 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25094 {
25095   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25096
25097   /* Return the master objfile, so that we can report and look up the
25098      correct file containing this variable.  */
25099   if (objfile->separate_debug_objfile_backlink)
25100     objfile = objfile->separate_debug_objfile_backlink;
25101
25102   return objfile;
25103 }
25104
25105 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25106    (CU_HEADERP is unused in such case) or prepare a temporary copy at
25107    CU_HEADERP first.  */
25108
25109 static const struct comp_unit_head *
25110 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25111                        struct dwarf2_per_cu_data *per_cu)
25112 {
25113   const gdb_byte *info_ptr;
25114
25115   if (per_cu->cu)
25116     return &per_cu->cu->header;
25117
25118   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25119
25120   memset (cu_headerp, 0, sizeof (*cu_headerp));
25121   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25122                        rcuh_kind::COMPILE);
25123
25124   return cu_headerp;
25125 }
25126
25127 /* Return the address size given in the compilation unit header for CU.  */
25128
25129 int
25130 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25131 {
25132   struct comp_unit_head cu_header_local;
25133   const struct comp_unit_head *cu_headerp;
25134
25135   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25136
25137   return cu_headerp->addr_size;
25138 }
25139
25140 /* Return the offset size given in the compilation unit header for CU.  */
25141
25142 int
25143 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25144 {
25145   struct comp_unit_head cu_header_local;
25146   const struct comp_unit_head *cu_headerp;
25147
25148   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25149
25150   return cu_headerp->offset_size;
25151 }
25152
25153 /* See its dwarf2loc.h declaration.  */
25154
25155 int
25156 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25157 {
25158   struct comp_unit_head cu_header_local;
25159   const struct comp_unit_head *cu_headerp;
25160
25161   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25162
25163   if (cu_headerp->version == 2)
25164     return cu_headerp->addr_size;
25165   else
25166     return cu_headerp->offset_size;
25167 }
25168
25169 /* Return the text offset of the CU.  The returned offset comes from
25170    this CU's objfile.  If this objfile came from a separate debuginfo
25171    file, then the offset may be different from the corresponding
25172    offset in the parent objfile.  */
25173
25174 CORE_ADDR
25175 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25176 {
25177   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25178
25179   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25180 }
25181
25182 /* Return DWARF version number of PER_CU.  */
25183
25184 short
25185 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25186 {
25187   return per_cu->dwarf_version;
25188 }
25189
25190 /* Locate the .debug_info compilation unit from CU's objfile which contains
25191    the DIE at OFFSET.  Raises an error on failure.  */
25192
25193 static struct dwarf2_per_cu_data *
25194 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25195                                   unsigned int offset_in_dwz,
25196                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25197 {
25198   struct dwarf2_per_cu_data *this_cu;
25199   int low, high;
25200
25201   low = 0;
25202   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25203   while (high > low)
25204     {
25205       struct dwarf2_per_cu_data *mid_cu;
25206       int mid = low + (high - low) / 2;
25207
25208       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25209       if (mid_cu->is_dwz > offset_in_dwz
25210           || (mid_cu->is_dwz == offset_in_dwz
25211               && mid_cu->sect_off + mid_cu->length >= sect_off))
25212         high = mid;
25213       else
25214         low = mid + 1;
25215     }
25216   gdb_assert (low == high);
25217   this_cu = dwarf2_per_objfile->all_comp_units[low];
25218   if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
25219     {
25220       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25221         error (_("Dwarf Error: could not find partial DIE containing "
25222                "offset %s [in module %s]"),
25223                sect_offset_str (sect_off),
25224                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25225
25226       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25227                   <= sect_off);
25228       return dwarf2_per_objfile->all_comp_units[low-1];
25229     }
25230   else
25231     {
25232       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25233           && sect_off >= this_cu->sect_off + this_cu->length)
25234         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25235       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25236       return this_cu;
25237     }
25238 }
25239
25240 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25241
25242 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25243   : per_cu (per_cu_),
25244     mark (false),
25245     has_loclist (false),
25246     checked_producer (false),
25247     producer_is_gxx_lt_4_6 (false),
25248     producer_is_gcc_lt_4_3 (false),
25249     producer_is_icc (false),
25250     producer_is_icc_lt_14 (false),
25251     producer_is_codewarrior (false),
25252     processing_has_namespace_info (false)
25253 {
25254   per_cu->cu = this;
25255 }
25256
25257 /* Destroy a dwarf2_cu.  */
25258
25259 dwarf2_cu::~dwarf2_cu ()
25260 {
25261   per_cu->cu = NULL;
25262 }
25263
25264 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25265
25266 static void
25267 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25268                        enum language pretend_language)
25269 {
25270   struct attribute *attr;
25271
25272   /* Set the language we're debugging.  */
25273   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25274   if (attr)
25275     set_cu_language (DW_UNSND (attr), cu);
25276   else
25277     {
25278       cu->language = pretend_language;
25279       cu->language_defn = language_def (cu->language);
25280     }
25281
25282   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25283 }
25284
25285 /* Increase the age counter on each cached compilation unit, and free
25286    any that are too old.  */
25287
25288 static void
25289 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25290 {
25291   struct dwarf2_per_cu_data *per_cu, **last_chain;
25292
25293   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25294   per_cu = dwarf2_per_objfile->read_in_chain;
25295   while (per_cu != NULL)
25296     {
25297       per_cu->cu->last_used ++;
25298       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25299         dwarf2_mark (per_cu->cu);
25300       per_cu = per_cu->cu->read_in_chain;
25301     }
25302
25303   per_cu = dwarf2_per_objfile->read_in_chain;
25304   last_chain = &dwarf2_per_objfile->read_in_chain;
25305   while (per_cu != NULL)
25306     {
25307       struct dwarf2_per_cu_data *next_cu;
25308
25309       next_cu = per_cu->cu->read_in_chain;
25310
25311       if (!per_cu->cu->mark)
25312         {
25313           delete per_cu->cu;
25314           *last_chain = next_cu;
25315         }
25316       else
25317         last_chain = &per_cu->cu->read_in_chain;
25318
25319       per_cu = next_cu;
25320     }
25321 }
25322
25323 /* Remove a single compilation unit from the cache.  */
25324
25325 static void
25326 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25327 {
25328   struct dwarf2_per_cu_data *per_cu, **last_chain;
25329   struct dwarf2_per_objfile *dwarf2_per_objfile
25330     = target_per_cu->dwarf2_per_objfile;
25331
25332   per_cu = dwarf2_per_objfile->read_in_chain;
25333   last_chain = &dwarf2_per_objfile->read_in_chain;
25334   while (per_cu != NULL)
25335     {
25336       struct dwarf2_per_cu_data *next_cu;
25337
25338       next_cu = per_cu->cu->read_in_chain;
25339
25340       if (per_cu == target_per_cu)
25341         {
25342           delete per_cu->cu;
25343           per_cu->cu = NULL;
25344           *last_chain = next_cu;
25345           break;
25346         }
25347       else
25348         last_chain = &per_cu->cu->read_in_chain;
25349
25350       per_cu = next_cu;
25351     }
25352 }
25353
25354 /* Cleanup function for the dwarf2_per_objfile data.  */
25355
25356 static void
25357 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25358 {
25359   struct dwarf2_per_objfile *dwarf2_per_objfile
25360     = static_cast<struct dwarf2_per_objfile *> (datum);
25361
25362   delete dwarf2_per_objfile;
25363 }
25364
25365 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25366    We store these in a hash table separate from the DIEs, and preserve them
25367    when the DIEs are flushed out of cache.
25368
25369    The CU "per_cu" pointer is needed because offset alone is not enough to
25370    uniquely identify the type.  A file may have multiple .debug_types sections,
25371    or the type may come from a DWO file.  Furthermore, while it's more logical
25372    to use per_cu->section+offset, with Fission the section with the data is in
25373    the DWO file but we don't know that section at the point we need it.
25374    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25375    because we can enter the lookup routine, get_die_type_at_offset, from
25376    outside this file, and thus won't necessarily have PER_CU->cu.
25377    Fortunately, PER_CU is stable for the life of the objfile.  */
25378
25379 struct dwarf2_per_cu_offset_and_type
25380 {
25381   const struct dwarf2_per_cu_data *per_cu;
25382   sect_offset sect_off;
25383   struct type *type;
25384 };
25385
25386 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25387
25388 static hashval_t
25389 per_cu_offset_and_type_hash (const void *item)
25390 {
25391   const struct dwarf2_per_cu_offset_and_type *ofs
25392     = (const struct dwarf2_per_cu_offset_and_type *) item;
25393
25394   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25395 }
25396
25397 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25398
25399 static int
25400 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25401 {
25402   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25403     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25404   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25405     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25406
25407   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25408           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25409 }
25410
25411 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25412    table if necessary.  For convenience, return TYPE.
25413
25414    The DIEs reading must have careful ordering to:
25415     * Not cause infite loops trying to read in DIEs as a prerequisite for
25416       reading current DIE.
25417     * Not trying to dereference contents of still incompletely read in types
25418       while reading in other DIEs.
25419     * Enable referencing still incompletely read in types just by a pointer to
25420       the type without accessing its fields.
25421
25422    Therefore caller should follow these rules:
25423      * Try to fetch any prerequisite types we may need to build this DIE type
25424        before building the type and calling set_die_type.
25425      * After building type call set_die_type for current DIE as soon as
25426        possible before fetching more types to complete the current type.
25427      * Make the type as complete as possible before fetching more types.  */
25428
25429 static struct type *
25430 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25431 {
25432   struct dwarf2_per_objfile *dwarf2_per_objfile
25433     = cu->per_cu->dwarf2_per_objfile;
25434   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25435   struct objfile *objfile = dwarf2_per_objfile->objfile;
25436   struct attribute *attr;
25437   struct dynamic_prop prop;
25438
25439   /* For Ada types, make sure that the gnat-specific data is always
25440      initialized (if not already set).  There are a few types where
25441      we should not be doing so, because the type-specific area is
25442      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25443      where the type-specific area is used to store the floatformat).
25444      But this is not a problem, because the gnat-specific information
25445      is actually not needed for these types.  */
25446   if (need_gnat_info (cu)
25447       && TYPE_CODE (type) != TYPE_CODE_FUNC
25448       && TYPE_CODE (type) != TYPE_CODE_FLT
25449       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25450       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25451       && TYPE_CODE (type) != TYPE_CODE_METHOD
25452       && !HAVE_GNAT_AUX_INFO (type))
25453     INIT_GNAT_SPECIFIC (type);
25454
25455   /* Read DW_AT_allocated and set in type.  */
25456   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25457   if (attr_form_is_block (attr))
25458     {
25459       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25460         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25461     }
25462   else if (attr != NULL)
25463     {
25464       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25465                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25466                  sect_offset_str (die->sect_off));
25467     }
25468
25469   /* Read DW_AT_associated and set in type.  */
25470   attr = dwarf2_attr (die, DW_AT_associated, cu);
25471   if (attr_form_is_block (attr))
25472     {
25473       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25474         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25475     }
25476   else if (attr != NULL)
25477     {
25478       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25479                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25480                  sect_offset_str (die->sect_off));
25481     }
25482
25483   /* Read DW_AT_data_location and set in type.  */
25484   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25485   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25486     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25487
25488   if (dwarf2_per_objfile->die_type_hash == NULL)
25489     {
25490       dwarf2_per_objfile->die_type_hash =
25491         htab_create_alloc_ex (127,
25492                               per_cu_offset_and_type_hash,
25493                               per_cu_offset_and_type_eq,
25494                               NULL,
25495                               &objfile->objfile_obstack,
25496                               hashtab_obstack_allocate,
25497                               dummy_obstack_deallocate);
25498     }
25499
25500   ofs.per_cu = cu->per_cu;
25501   ofs.sect_off = die->sect_off;
25502   ofs.type = type;
25503   slot = (struct dwarf2_per_cu_offset_and_type **)
25504     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25505   if (*slot)
25506     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25507                sect_offset_str (die->sect_off));
25508   *slot = XOBNEW (&objfile->objfile_obstack,
25509                   struct dwarf2_per_cu_offset_and_type);
25510   **slot = ofs;
25511   return type;
25512 }
25513
25514 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25515    or return NULL if the die does not have a saved type.  */
25516
25517 static struct type *
25518 get_die_type_at_offset (sect_offset sect_off,
25519                         struct dwarf2_per_cu_data *per_cu)
25520 {
25521   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25522   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25523
25524   if (dwarf2_per_objfile->die_type_hash == NULL)
25525     return NULL;
25526
25527   ofs.per_cu = per_cu;
25528   ofs.sect_off = sect_off;
25529   slot = ((struct dwarf2_per_cu_offset_and_type *)
25530           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25531   if (slot)
25532     return slot->type;
25533   else
25534     return NULL;
25535 }
25536
25537 /* Look up the type for DIE in CU in die_type_hash,
25538    or return NULL if DIE does not have a saved type.  */
25539
25540 static struct type *
25541 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25542 {
25543   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25544 }
25545
25546 /* Add a dependence relationship from CU to REF_PER_CU.  */
25547
25548 static void
25549 dwarf2_add_dependence (struct dwarf2_cu *cu,
25550                        struct dwarf2_per_cu_data *ref_per_cu)
25551 {
25552   void **slot;
25553
25554   if (cu->dependencies == NULL)
25555     cu->dependencies
25556       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25557                               NULL, &cu->comp_unit_obstack,
25558                               hashtab_obstack_allocate,
25559                               dummy_obstack_deallocate);
25560
25561   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25562   if (*slot == NULL)
25563     *slot = ref_per_cu;
25564 }
25565
25566 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25567    Set the mark field in every compilation unit in the
25568    cache that we must keep because we are keeping CU.  */
25569
25570 static int
25571 dwarf2_mark_helper (void **slot, void *data)
25572 {
25573   struct dwarf2_per_cu_data *per_cu;
25574
25575   per_cu = (struct dwarf2_per_cu_data *) *slot;
25576
25577   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25578      reading of the chain.  As such dependencies remain valid it is not much
25579      useful to track and undo them during QUIT cleanups.  */
25580   if (per_cu->cu == NULL)
25581     return 1;
25582
25583   if (per_cu->cu->mark)
25584     return 1;
25585   per_cu->cu->mark = true;
25586
25587   if (per_cu->cu->dependencies != NULL)
25588     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25589
25590   return 1;
25591 }
25592
25593 /* Set the mark field in CU and in every other compilation unit in the
25594    cache that we must keep because we are keeping CU.  */
25595
25596 static void
25597 dwarf2_mark (struct dwarf2_cu *cu)
25598 {
25599   if (cu->mark)
25600     return;
25601   cu->mark = true;
25602   if (cu->dependencies != NULL)
25603     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25604 }
25605
25606 static void
25607 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25608 {
25609   while (per_cu)
25610     {
25611       per_cu->cu->mark = false;
25612       per_cu = per_cu->cu->read_in_chain;
25613     }
25614 }
25615
25616 /* Trivial hash function for partial_die_info: the hash value of a DIE
25617    is its offset in .debug_info for this objfile.  */
25618
25619 static hashval_t
25620 partial_die_hash (const void *item)
25621 {
25622   const struct partial_die_info *part_die
25623     = (const struct partial_die_info *) item;
25624
25625   return to_underlying (part_die->sect_off);
25626 }
25627
25628 /* Trivial comparison function for partial_die_info structures: two DIEs
25629    are equal if they have the same offset.  */
25630
25631 static int
25632 partial_die_eq (const void *item_lhs, const void *item_rhs)
25633 {
25634   const struct partial_die_info *part_die_lhs
25635     = (const struct partial_die_info *) item_lhs;
25636   const struct partial_die_info *part_die_rhs
25637     = (const struct partial_die_info *) item_rhs;
25638
25639   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25640 }
25641
25642 struct cmd_list_element *set_dwarf_cmdlist;
25643 struct cmd_list_element *show_dwarf_cmdlist;
25644
25645 static void
25646 set_dwarf_cmd (const char *args, int from_tty)
25647 {
25648   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25649              gdb_stdout);
25650 }
25651
25652 static void
25653 show_dwarf_cmd (const char *args, int from_tty)
25654 {
25655   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25656 }
25657
25658 int dwarf_always_disassemble;
25659
25660 static void
25661 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25662                                struct cmd_list_element *c, const char *value)
25663 {
25664   fprintf_filtered (file,
25665                     _("Whether to always disassemble "
25666                       "DWARF expressions is %s.\n"),
25667                     value);
25668 }
25669
25670 static void
25671 show_check_physname (struct ui_file *file, int from_tty,
25672                      struct cmd_list_element *c, const char *value)
25673 {
25674   fprintf_filtered (file,
25675                     _("Whether to check \"physname\" is %s.\n"),
25676                     value);
25677 }
25678
25679 void
25680 _initialize_dwarf2_read (void)
25681 {
25682   dwarf2_objfile_data_key
25683     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25684
25685   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25686 Set DWARF specific variables.\n\
25687 Configure DWARF variables such as the cache size"),
25688                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25689                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25690
25691   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25692 Show DWARF specific variables\n\
25693 Show DWARF variables such as the cache size"),
25694                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25695                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25696
25697   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25698                             &dwarf_max_cache_age, _("\
25699 Set the upper bound on the age of cached DWARF compilation units."), _("\
25700 Show the upper bound on the age of cached DWARF compilation units."), _("\
25701 A higher limit means that cached compilation units will be stored\n\
25702 in memory longer, and more total memory will be used.  Zero disables\n\
25703 caching, which can slow down startup."),
25704                             NULL,
25705                             show_dwarf_max_cache_age,
25706                             &set_dwarf_cmdlist,
25707                             &show_dwarf_cmdlist);
25708
25709   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25710                            &dwarf_always_disassemble, _("\
25711 Set whether `info address' always disassembles DWARF expressions."), _("\
25712 Show whether `info address' always disassembles DWARF expressions."), _("\
25713 When enabled, DWARF expressions are always printed in an assembly-like\n\
25714 syntax.  When disabled, expressions will be printed in a more\n\
25715 conversational style, when possible."),
25716                            NULL,
25717                            show_dwarf_always_disassemble,
25718                            &set_dwarf_cmdlist,
25719                            &show_dwarf_cmdlist);
25720
25721   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25722 Set debugging of the DWARF reader."), _("\
25723 Show debugging of the DWARF reader."), _("\
25724 When enabled (non-zero), debugging messages are printed during DWARF\n\
25725 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25726 information.  A value greater than 1 provides more verbose information."),
25727                             NULL,
25728                             NULL,
25729                             &setdebuglist, &showdebuglist);
25730
25731   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25732 Set debugging of the DWARF DIE reader."), _("\
25733 Show debugging of the DWARF DIE reader."), _("\
25734 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25735 The value is the maximum depth to print."),
25736                              NULL,
25737                              NULL,
25738                              &setdebuglist, &showdebuglist);
25739
25740   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25741 Set debugging of the dwarf line reader."), _("\
25742 Show debugging of the dwarf line reader."), _("\
25743 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25744 A value of 1 (one) provides basic information.\n\
25745 A value greater than 1 provides more verbose information."),
25746                              NULL,
25747                              NULL,
25748                              &setdebuglist, &showdebuglist);
25749
25750   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25751 Set cross-checking of \"physname\" code against demangler."), _("\
25752 Show cross-checking of \"physname\" code against demangler."), _("\
25753 When enabled, GDB's internal \"physname\" code is checked against\n\
25754 the demangler."),
25755                            NULL, show_check_physname,
25756                            &setdebuglist, &showdebuglist);
25757
25758   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25759                            no_class, &use_deprecated_index_sections, _("\
25760 Set whether to use deprecated gdb_index sections."), _("\
25761 Show whether to use deprecated gdb_index sections."), _("\
25762 When enabled, deprecated .gdb_index sections are used anyway.\n\
25763 Normally they are ignored either because of a missing feature or\n\
25764 performance issue.\n\
25765 Warning: This option must be enabled before gdb reads the file."),
25766                            NULL,
25767                            NULL,
25768                            &setlist, &showlist);
25769
25770   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25771                                                         &dwarf2_locexpr_funcs);
25772   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25773                                                         &dwarf2_loclist_funcs);
25774
25775   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25776                                         &dwarf2_block_frame_base_locexpr_funcs);
25777   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25778                                         &dwarf2_block_frame_base_loclist_funcs);
25779
25780 #if GDB_SELF_TEST
25781   selftests::register_test ("dw2_expand_symtabs_matching",
25782                             selftests::dw2_expand_symtabs_matching::run_test);
25783 #endif
25784 }